是否有必要拥有有效的CSS?

时间:2012-10-30 01:04:58

标签: css

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

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

6 个答案:

答案 0 :(得分:7)

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

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

如果你有正确的CSS混入不正确的CSS,浏览器往往会忽略无效的部分(只是规范告诉他们),但每个浏览器的做法略有不同。同样地,虽然很多人建议使用CSS黑客,但出于上述原因我不愿意这样做。

答案 1 :(得分:3)

CSS无需有效工作。浏览器完全忽略了他们不理解的CSS。

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

答案 2 :(得分:3)

这真的是一个有争议的话题。 W3C工具当然很好用,但它们往往不会占用很多现代代码。当然,他们很难不仅提高标准,还要确保他们提供的工具对新的和创造性的代码负责。

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

答案 3 :(得分: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

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

是的,重要的是,大多数浏览器在加载html页面时都遵循w3c标准。如果您的页面没有有效的css,则在不同的浏览器中可能会出现不同的方式。旧的互联网浏览器没有遵循W3c标准,这些标准花费了很多开发人员的结果,开发人员总是需要额外的CSS来让IE正确显示页面。