【问题标题】:Are property values in CSS case-sensitive?CSS 中的属性值是否区分大小写?
【发布时间】:2013-07-31 19:13:20
【问题描述】:

我观察到一些 CSS 属性,例如用引号声明的 font-family,可能区分大小写,但所有其他属性都不区分...但是 网络浏览器和“HTML 渲染器”必须如何解释? 在任何 CSS 上下文(XML、SVG 等)和所有其他应用程序中是否相同? 标准说明了什么?

示例:Adobe InDesign 同时导出了font-family:'Optima Bold'font-family:'optima bold'。我可以“规范化为小写”(例如合并相似的类)吗?

注意事项

参考文献不完整且存在冲突:


this question/answers相比,这里的重点,或许可以转化为一些(个人)客观考虑:

  1. 这个答案有(客观的!)规范(CSS2、CSS3、XHTML1 或 HTML5 的 W3C 规范)来源吗?

  2. “标准font-family唯一名称”不能区分大小写(否则不再是标准)...因此,区分大小写的唯一合理(通过合理的参数)属性是:

    2.1。 X 的值位于url(X),参见background 等属性;

    2.2。 content 值,example;

    2.3。 ... 更多?? ...

【问题讨论】:

  • 这些引用没有冲突,因为它们引用了不同的元素。
  • 谢谢,我编辑了这个问题,也许我只需要更好的参考……关键是没有明显的 W3C 断言。

标签: html css properties case-sensitive


【解决方案1】:

(更新@ÁlvaroG.Vicario 答案和cmets,以及complementing this answer...这是一个Wiki,请编辑以增强

示例:对于 CSS3(和 HTML5),有新的明确规则,如“font-face 属性必须不区分大小写”。[2]


上下文

W3C 互操作标准,主要是 XML、HTML、CSV 和 CSS。

CSS 一般规则

CSS2(2008 年的 W3C 标准)修复了关于“字符和大小写”的基本约定,CSS3(2015 年的 W3C 标准)添加了更多内容。

  1. 默认情况下“所有 CSS 语法都不区分大小写 (...)” [1]

  2. 也有例外,“(...) 不受 CSS 控制的部分除外”[1]

2.1。元素名称在 HTML5 (?) 和 XML 中区分大小写,但在 HTML4 中不区分大小写。

2.2。标识符(包括选择器中的元素名称、类和 ID)区分大小写。字体名称和 URI 的 HTML 属性 idclass 超出了 CSS 规范的范围。

  1. ....

案例矩阵

例外和特定(在参考中明确)规则。 “YES”表示值区分大小写。

属性值:

CSS 属性 |案例感。 |参考和注释 ------------------|------------|------------------ -- %colorVals |否 | [3] 字体系列 |否 | [2] %网址 |是 | ... 内容 |是 | ... -------------------------------------------------- -- %colorVals = 颜色、背景等。 使用 `url()` 的 %url = 背景图像等,请参阅 [7] 和注释。

选择器值:

CSS 选择器 |案例感。 |参考和注释 ------------------|------------|------------------ -- 编号 |是的|... 元素 |是/否 | ... 是的 XML ... 班级名称 |是 | [5] (`~i` 运算符) |否 | [6] -------------------------------------------------- -- 是/否 = 取决于文档语言(参见参考文献和注释)。

参考:

[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 3986URL syntax illustration 在维基百科。


引文和注释

  • 典型的 URL 以 domain 开头,不区分大小写,但在它之后(pathqueryfragment 语法组件),区分大小写。见[7]。

  • “用户代理必须不区分大小写地匹配这些名称”。 [2]

【讨论】:

  • 几个不区分大小写的项目:CSS3 颜色名称 - w3.org/TR/css3-color/#html4, w3.org/TR/css3-color/#css2-system;预定义关键字 - w3.org/TR/css3-values/#keywords
  • background-image: url("adDressToImagE...") 不区分大小写。 (在 chrome 中更少)。
  • 嗨@JuanmaMenendez,请编辑,这是一个维基!但是看到问题,一个 URL 值有其正确的语法,第一部分,域,是不区分大小写的,但剩下的不是 (!)。我进行了编辑以避免混淆(并更正了表格错误)。
  • @PeterKrauss 你是对的。根据W3C“可能存在不区分大小写的 URL 或部分 URL,但识别这些可能并不容易。用户应始终考虑 URL 区分大小写”
  • 嗨@JuanmaMenendez,不需要评论,我同意并且文中的表格也同意,“'YES'表示值区分大小写”(见注释和参考文献[7])。
【解决方案2】:

CSS 2 的规范说:

CSS 语法在 ASCII 范围内不区分大小写(即 [a-z] 和 [A-Z] 等价),不受控制的部分除外 CSS。例如,HTML 值的大小写敏感 字体名称和 URI 的属性“id”和“class”位于外部 本规范的范围。特别注意元素名称 在 HTML 中不区分大小写,但在 XML 中区分大小写。

...这很有意义:CSS 本身接受 background-imageBACKGROUND-IMAGE,但它无法知道您的 Web 服务器是否将 LOGO.PNGlogo.png 视为相同或不同的资源。

(我一直无法找到 CSS3 的等效文档)

【讨论】:

  • 是的,您的回答类似于stackoverflow.com/a/12533957,没有提及属性值...偶尔会提到“字体名称”,但在哪里(?) 关于“OK、font-variant、font-weight、text-decoration、text-transform 等不区分大小写的属性”的断言。是的,URL 值(包含 logo.png 之类的东西是唯一的,唯一可以通过合理参数证明的
  • 您的问题是您链接的问题的概括。答案是一样的。不确定您是否还有其他问题... :-?
  • @PeterKrauss Er... 您是否要求在某些时候可以使用 CSS 值的每种语言和技术中的大小写敏感度提供参考?这是一项艰巨的任务。任何人都可以发明一个以供应商为前缀的属性来执行任务。我什至可以发明自己的语言并让它使用 CSS 进行样式设置。
  • 抱歉,这个问题受到 W3C 标准(CSS 兼容家族和最新标准,如 HTML4、XHTML1 等)的限制。我也可以对其进行编辑,或在问题中添加“HTML”标签。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-06
  • 2011-08-05
  • 2012-03-11
  • 2022-01-16
  • 1970-01-01
相关资源
最近更新 更多