我观察到一些CSS属性,比如font-family
用引号声明,可能区分大小写,但所有其他都不是......但是 Web浏览器和“HTML渲染器”必须如何解释?在任何CSS上下文(XML,SVG等)和所有其他应用程序中是否相同? 标准的含义是什么?
示例: Adobe InDesign 导出了font-family:'Optima Bold'
和font-family:'optima bold'
。我可以“规范化为小写”(例如合并类似的类)吗?
参考文献不完整且存在冲突:
sitepoint.com/font-family说“请注意,某些操作系统上的字体系列名称可能区分大小写”...它对XHTML有效,是否使用HTML5更新? font-family
是否是唯一区分大小写的值?
Is it necessary to use lowercase for every Element and attribute , properties in css and xhtml ?间接地说“......每个属性使用小写字母......”,答案不能否定它。
与this question/answers相比,这里的要点或许可以转化为某些(个人)客观考虑因素:
这个答案有一个(目标!)规范(CSS3,CSS3,XHTML1或HTML5的W3C规范)来源?
“标准font-family
唯一名称”不能区分大小写(否则不再是标准的)...因此,区分大小写的唯一合理(通过合理的参数)属性是:
2.1。 X
处的url(X)
值,请参阅background
等属性;
2.2。 content
值,example;
2.3。 ...... 更多?? ......
答案 0 :(得分:14)
(更新@ÁlvaroG.Vicario的回答和评论,以及complementing this answer ...这是一个Wiki,请编辑以增强)
示例:对于CSS3(和HTML5),有新的显式规则,因为“font-face
属性必须不区分大小写”。[2]
W3C互操作标准,主要是XML,HTML,CSV和CSS。
CSS2 (2008年的W3C标准)修复了关于“角色和案例”的基本约定, CSS3 (2015年的W3C标准)增加了更多内容。
默认“所有CSS语法都不区分大小写(...)” [1]
有例外,“(...)除了不受CSS控制的部分”[1]
2.1。元素名称在HTML5(?)和XML中区分大小写,但在HTML4中不区分大小写。
2.2。标识符(包括选择器中的元素名称,类和ID)区分大小写。 HTML属性id
和class
,字体名称和URI的范围超出了CSS规范的范围。
...
例外和具体(在参考中明确)规则。 “YES”表示值 区分大小写。
属性值:
CSS property | Case-sens. | Reference and notes ------------------|------------|-------------------- %colorVals | NO | [3] font-family | NO | [2] %url | YES | ... content | YES | ... ---------------------------------------------------- %colorVals = color, background, etc. %url = background-image, etc. that use `url()`, see [7] and notes.
选择器值:
CSS selector | Case-sens. | Reference and notes ------------------|------------|-------------------- id | YES |... element | YES/NO | ... YES for XML... class name | YES | [5] (`~ i` operator) | NO | [6] ---------------------------------------------------- YES/NO = depends on the document language (see ref. and notes).
参考文献:
[1] W3C/CSS2/syndata, sec. 4.1.3 Characters and case。
[2] W3C/CSS3-fonts, sec. 5.1 Case sensitivity of font family names
[3] W3C/CSS3-color, sec. 4.1. Basic color keywords
[4] W3C/CSS3-values, sec. 3.1. Pre-defined Keywords
[5] W3C/Selectors, sec. 3. Case sensitivity
[6] W3C/Selectors4, sec. 6.3. Case-sensitivity
维基百科上的[7] RFC 3986和URL syntax illustration。
典型的网址以domain开头,不区分大小写,但在此之后(路径,查询或片段 syntatical components),区分大小写。见[7]。
“用户代理必须不区分大小写地匹配这些名称”。 [2]
答案 1 :(得分:6)
CSS 2的规范说:
CSS语法
在ASCII范围内不区分大小写(即[a-z]和 [A-Z]等效),除了不受控制的部件 CSS 。例如,HTML的值的区分大小写 属性“id”和“class”,字体名称和URI都在外面 本规范的范围。特别注意元素名称 在HTML中不区分大小写,但在XML中区分大小写。
...这很有道理:CSS本身同时接受background-image
和BACKGROUND-IMAGE
,但无法知道您的网络服务器是否将LOGO.PNG
和logo.png
视为相同或不同的资源。
(我一直无法找到CSS3的等效文档)