CSS中的主要连字符意味着什么?

Rub*_*ert 4 css hyphen

这篇博客文章中,我发现了以下CSS片段:

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;
}
Run Code Online (Sandbox Code Playgroud)

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

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

Rag*_*kkr 8

它们是供应商特定的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;
}
Run Code Online (Sandbox Code Playgroud)

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

CSS中经常使用的前缀是:

Android: -webkit-
Chrome: -webkit-
Firefox: -moz-
Internet Explorer: -ms-
iOS: -webkit-
Opera: -o-
Safari: -webkit-
Run Code Online (Sandbox Code Playgroud)

  • @ pythonforspss.org是的,它们是多余的,但你必须用不同的眼光看待它们.当浏览器读取CSS并找到它无法识别的属性时,只需忽略它,但会使用它支持的属性.例如,如果我使用你的例子并在Firefox中加载CSS,则不会识别前缀`-webkit -`和`-o-`,但是`-moz`是和将被使用.如果我指定这些前缀版本,不支持*standard*版本的浏览器可以回退到自己的自定义版本. (2认同)

Tch*_*upi 7

答案可以在CSS规范中找到:

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

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

和:

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

总而言之,具有初始破折号的属性名称不被视为有效,因此可以由特定于供应商的CSS规则使用它们.