我今天的问题一直是想在我的CSS中首先使用通配符,然后尝试使用“inherit”属性. IE7-都不支持这两种方式.
我真的,真的,想要拥有良好的,结构良好的,正确继承的CSS(面向对象的CSS,如果你喜欢这个流行语),但我的胃里有这种下沉的感觉,迟早会有这种感觉是自定义目的和基于位置的类.
这提出了一个问题:鉴于IE在处理许多CSS概念方面有多么糟糕,是否不可能在拥有结构良好的CSS文档的同时充分支持此浏览器?
只是为了澄清:我知道有很多方法(一些是合法的,一些不那么方式)来解决IE6和7中发现的缺陷和缺点.我真正要问的是“如果你想拥有一个,正确继承的精心编写的样式表,你必须在它之间做出选择并在所有浏览器中保持一致的外观吗?“希望有道理.
换句话说,我应该坚持我的原则并编写一个好的样式表,还是应该接受IE6仍然享有非常高的(最后一次计算的20%)市场份额并让我自己支持它?或者是否有一些快乐的媒介允许我最小化我的HTML和CSS上的frankenstein手术,同时仍然在IE中获得一些可观的结果?
公平地说,你不能责怪IE(尽管微软肯定是迄今为止最糟糕的违法者).这么大的一部分问题和快速发展的标准是,及时完美实施太多的移动目标.不幸的是,Web浏览器的发布周期与新Web规范的发布不一致.因此,所有浏览器开发人员都可以尝试从最新的W3C建议中实现尽可能多的功能,选择他们认为最先实现的最常用功能.然而,事情正在明显改善,并且可以支持IE6 / 7并且仍然使用适当的CSS设计.这只是……很难.看一下this comparison of layout engines & CSS support.如果你看一下整体趋势,你会发现大多数浏览器(甚至是IE)从长远来看都倾向于遵循既定的标准,它只需要一些浏览器比其他浏览器更长的时间来实现标准介绍之后.
有时并不是说一个浏览器比另一个浏览器“更少”符合标准.对于新标准,问题往往是不同的开发团队选择采用新规范的不同部分.因此,即使CSS3已经开始被大多数浏览器实现,我们可能必须等到CSS4发布之后才能看到所有主要渲染引擎的一致支持.如果您现在尝试使用最新的CSS3功能,那么您将很难在所有主流浏览器之间建立兼容性.但是如果你使用的是CSS1中引入的功能,那就没问题了.
因此,除了使用丑陋的CSS黑客外,唯一的选择就是坚持使用完善的旧规格.然后,问题不再是在支持特定浏览器时尝试符合Web标准.相反,问题只是试图抵制使用最新&最棒的CSS功能.
除此之外,我看到这种反复出现的情况的唯一永久解决方案是让W3C优先考虑新引入的规范的不同部分,以便可以在所有主要浏览器中同步的离散阶段实现新功能.因此,例如,语法规则可能被赋予最高优先级以及其实现的设定截止日期.之后将进入第二阶段,这可能是元素和属性选择器,依此类推.
这需要W3C和开发团队之间的巨大合作,但这是值得的.毕竟,用户和Web开发人员没有利用IE来实现CSS3的一个功能子集,而Firefox实现了不同的子集,而Webkit浏览器则是另一个子集.在所有主要渲染平台实际标准化之前,“标准”是没有用的.每个浏览器最好支持更少的新功能但是它们都具有相同的功能,而不是单独引入大量自己不受普遍支持的功能.