CSS中的前导连字符是啥意思? [关闭]

Posted

技术标签:

【中文标题】CSS中的前导连字符是啥意思? [关闭]【英文标题】:What do leading hyphens mean in CSS? [closed]CSS中的前导连字符是什么意思? [关闭] 【发布时间】:2013-01-01 05:49:10 【问题描述】:

在this blog post我发现了以下CSS sn-p:

html  
    background: url(images/bg.jpg) no-repeat center center fixed; 
    -webkit-background-size: cover;
    -moz-background-size: cover;
    -o-background-size: cover;
    background-size: cover;

虽然我参加了一些基本的 CSS 课程,但我之前从未在 CSS 中看到过 -webkit-... 中的连字符。在这种情况下,它们似乎是指主要浏览器的布局引擎,但它们一般是什么意思?

当谷歌搜索时,所有结果都以浏览器中的文本连字符为目标:-/

【问题讨论】:

也可以查看***.com/questions/16291483/… 也相关:***.com/questions/8131846/… 【参考方案1】:

连字符用来代替空格来分隔连接的单词。其他语言为此使用 CamelCase/snake case/et al..。

注意:这特定于或仅限于浏览器前缀...

编辑:OP 已澄清 - 他不想知道 前导 连字符表示什么...See Mathieu's answer 它几乎涵盖了它。

【讨论】:

我看到这适用于border-width。但是-webkit--o- 呢?那些连字符呢? 关于连字符的问题通常不是前导连字符(明确地)。如果你问我,这些是语法糖。但我相信有人会对为什么浏览器前缀以连字符开头有更好的答案 Hypens 适合真正的编码人员,因为不涉及 shift 键。每个人都知道,真正的程序员是世上最懒惰的人。连字符将工作量减少了 50%! 哇-他们-真的-真的-做!-谢谢-空指针! @rlemon:顺便说一句,我会编辑问题标题。【参考方案2】:

答案在CSS specifications:

以 -' 或 '_' 开头的关键字和属性名称保留用于特定于供应商的扩展。此类特定于供应商的扩展应具有以下格式之一:

'-' + 供应商标识符 + '-' + 有意义的名称 '_' + 供应商标识符 + '-' + 有意义的名称

和:

保证任何当前或未来级别的 CSS 都不会在属性或关键字中使用初始短划线或下划线。因此,典型的 CSS 实现可能无法识别此类属性,并且可能会根据处理解析错误的规则忽略它们。但是,因为最初的破折号或下划线是语法的一部分,所以 CSS 2.1 实现者应该始终能够使用符合 CSS 的解析器,无论他们是否支持任何特定于供应商的扩展。

总而言之,带有初始破折号的属性名称被认为是无效的,因此它们可以被供应商特定的 CSS 规则使用。

【讨论】:

【参考方案3】:

它们是供应商特定的 CSS 属性。

html  
  background: url(images/bg.jpg) no-repeat center center fixed; 
  -webkit-background-size: cover; /* WEBKIT - Chrome, Safari */
  -moz-background-size: cover; /* MOZILLA - Firefox */
  -o-background-size: cover; /* OPERA */
  background-size: cover;

Hypens 用于引入 供应商特定 CSS 属性,这些属性供浏览器使用,但尚未被视为 CSS 的标准。

CSS 中常用的前缀有:

android: -webkit-
Chrome: -webkit-
Firefox: -moz-
Internet Explorer: -ms-
ios: -webkit-
Opera: -o-
Safari: -webkit-

【讨论】:

@Ragnaokkr:谢谢!但是在这个例子中它们是完全多余的,对吧?它们通常会覆盖非供应商特定属性(例如最终的background-size: cover;)吗? @pythonforspss.org 是的,它们是多余的,但你必须以不同的眼光看待它们。当浏览器读取 CSS 并找到它无法识别的属性时,只需忽略它,但会使用它支持的属性。例如,如果我使用您的示例并在 Firefox 中加载 CSS,则前缀 -webkit--o- 将无法识别,但 -moz 是并且将被使用。如果我指定这些前缀版本,不支持 standard 版本的浏览器可以回退到它自己的自定义版本。 有点奇怪,最不兼容的浏览器,IE是这个例子中唯一缺少的! 并非其他浏览器支持的所有属性都被 IE 支持(它使用过滤器代替),那么找到 IE 的缺失属性而不是其他浏览器的属性并不难。【参考方案4】:

这些就是所谓的“供应商前缀”。通向浏览器名称的连字符仅针对这些浏览器。这用于实验性 CSS 属性。

【讨论】:

【参考方案5】:

- 前缀表示它不是官方 CSS 规范的一部分,而是供应商特定的标签。它通常是为了让人们开始使用最终在 CSS 规范中但还没有准备好的特性。您应该避免在任何重要的事情上依赖它们。

所以 -moz- 例如意味着它特定于基于 Gecko 的浏览器(如 Mozilla Firefox)

【讨论】:

【参考方案6】:

破折号表示它特定于特定浏览器并被视为非标准扩展。

【讨论】:

以上是关于CSS中的前导连字符是啥意思? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

CSS字体速记中的正斜杠是啥意思?

CSS中的符号波浪号(〜)是啥意思[重复]

word中制表位是啥意思?

在 PATINDEX 中 = 0 是啥意思? [关闭]

Vim 中的 ^M 字符是啥意思?

css中的@是啥意思?