9

是否有必要拥有有效的 CSS?我正在使用 Twitter Bootstrap 进行快速 Web 开发,在通过 W3C CSS Validator 运行两个主要的 Bootstrap 样式表后,我注意到大约 600 个错误。

我的问题是,我的网站看起来不错,为什么 CSS 的有效性如此重要?

4

6 回答 6

7

是的,拥有有效的 CSS 是绝对必要的。CSS 是一种编程语言,因此,您必须遵循其语言规则。仅仅因为浏览器倾向于接受无效的 HTML 并尝试呈现它,它并不能使生成格式错误的 HTML 成为一种好习惯。CSS 也是如此,尽管 - 幸运的是 - CSS 规则比 HTML 规则要严格得多。

另一个原因是有效的 CSS 有保证的行为 - 如果您编写规则,您可以期望该规则以某种方式运行。(有缺陷的浏览器,除了所有版本的 IE。)如果您的 CSS 无效,您获得的任何行为都是未定义的,并且当您用于测试的任何浏览器发布补丁版本时,它可能会中断。您的 CSS 不一定会中断,但是当您编写无效的 CSS 时,您无法保证任何行为 - 您只是得到一些对您来说似乎正确但可能随时改变的行为。

如果您将正确的 CSS 与不正确的 CSS 混合在一起,浏览器往往会忽略无效部分(就像规范告诉它们的那样),但每个浏览器的处理方式略有不同。同样,虽然许多人建议使用 CSS hack,但出于上述原因,我会说不要。

于 2012-10-30T02:31:52.323 回答
3

CSS 不一定要有效才能工作。浏览器会简单地忽略它们不理解的 CSS。

验证 CSS 是一种测试它是否遵循规范的方法。如果是这样,任何与所用规范保持同步的浏览器都将理解 CSS。

于 2012-10-30T01:10:01.130 回答
3

这确实是一个有争议的话题。W3C 工具当然很好用,但它们往往无法解释很多现代代码。自然,他们不仅很难推进标准,而且很难确保他们提供的工具对新的和创造性的代码负责。

为了让网站在所有浏览器和所有平台上看起来都很好,要求人们可能会超出“有效”的规范。即使CSS不是100%一尘不染,也很难反对一个完美的跨浏览器和平台的网站。那是我的两分钱。

于 2012-10-30T01:11:52.130 回答
3

你的 CSS 不需要是有效的(取决于你问谁),但如果它是无效的,你应该有一个无效的原因:

audio,
canvas,
video {
  display: inline-block;
  *display: inline;
  *zoom: 1;
}

由于属性开头的星号,验证器在此处出现解析错误。这是针对 Internet Explorer 的一个晦涩但公认的黑客攻击。其他浏览器会忽略它无法识别的属性,但 IE6/7 会读取带有星号的属性。


input:-moz-placeholder,
textarea:-moz-placeholder {
  color: #999999;
}

input:-ms-input-placeholder,
textarea:-ms-input-placeholder {
  color: #999999;
}

input::-webkit-input-placeholder,
textarea::-webkit-input-placeholder {
  color: #999999;
}

这里的验证器错误是特定于供应商的伪类的结果。请注意,与无法识别的属性不同,如果浏览器无法识别选择器,则整个规则将被忽略,因此供应商占位符扩展需要是单独的规则。即使使用逗号运算符也会发生这种情况:

input::-moz-placeholder,
input::-ms-input-placeholder,
input::-webkit-input-placeholder, {
  color: #999999;
}

除非它们识别所有三个供应商前缀,否则在所有浏览器中都将被忽略。


  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);

这是用于渐变的老式 IE 扩展。即使 IE 跟随它并且其他浏览器不会悄悄地忽略它,它也会在验证器中产生涟漪并导致许多错误。


width: auto\9;

\9 是另一个针对 IE<=8 的 IE hack


最重要的是,如果您正在做一些非标准的事情,请确保您知道为什么要这样做。

于 2012-11-09T23:13:41.073 回答
0

现在有不同数量的浏览器有不同数量的版本。有些支持很多,但有些不支持。所以当你包含样式时,总是不可能100%完美。如果你的样式没有任何问题就可以了。但是当如果你遇到与 CSS 相关的问题,它会转到不同的浏览器,你必须小心,否则没问题。

于 2012-10-30T01:08:31.987 回答
0

是的,重要的是,大多数浏览器在加载 html 页面时都遵循 w3c 标准。如果您的页面没有有效的 css,在不同的浏览器中它可能会以不同的方式出现。旧的 Internet Explorer 没有遵循 W3c 标准,这对开发人员来说成本很高,导致开发人员总是需要额外的 css 来让 IE 正确显示页面。

于 2012-10-30T01:11:10.690 回答