2009-06-05 68 views
1

我相信这不是流行的立场,但我更喜欢在样式表中嵌入黑客,例如*和_,而不是使用单独的IE特定样式表。起初,我尝试了单独的样式表,但是我发现为相同元素设置样式的范围跨越多个文件,以致难以维护。改变主样式表中的样式并不明显,我在IE特定的样式表中也有相应的样式。通常情况下,这些样式会发生很大变化,例如对填充进行微小调整,以致在每个浏览器中测试它的额外时间似乎过多,因此并不总是会发生。嵌入式CSS hacks vs单独的级联样式表

如果黑客直接包含在主要样式表中,那么很明显IE6的样式也需要进行调整和测试。我可以听到有人说你应该在所有支持的浏览器中测试每个样式的变化,但在现实世界中,我发现这种立场是不现实的,我没有看到团队中的所有开发人员都跟随它。

我明白,包括黑客使得你的CSS无法验证,但我发现我可以快速扫描验证结果并忽略有关这些黑客的错误。在我看来,我更喜欢解释验证结果,而不是处理在IE 6中错误地渲染网站的工作。我还读过其他地方,人们不会做黑客或单独的样式表,而是调整/简化设计所以它适用于所有浏览器。不幸的是,实施设计的开发人员在他们不负责设计时并不总是有这个选项。再加上我为了避免黑客事后看起来非常浪费而努力争取在所有浏览器中使用小填充问题的时间。

我对其他人的想法和理由感兴趣,他们对这种范式的立场。

+0

你如何为IE6和IE7添加不同的黑客(他们需要不同的黑客) – elcuco 2009-06-05 23:12:40

回答

1

我已经做了一些CSS大量工作,渡阳光下几乎所有的浏览器,适用于小项目和大的。虽然总会对你写的任何代码都有美感,但我认为更值得关注的是可维护性......这对CSS来说就像其他类型的代码一样。

虽然举办黑客和那些通过条件逻辑加载其它CS“修复”成单独的文件是从asthetic角度不错...它实际上可以创建维护麻烦的道路。

根据我的经验,尽全力将你的黑客与它们固定对于任何给定的浏览器底座CSS。这使CSS样式是你的UI一起在同一个地方,这使得管理该CSS 显著容易,并且也明确了地方未来可能的(或可能)fiture浏览器的CSS错误的修复应放在一些特定的元素。

除了将黑客放在与它们相关的基本css之后,您还应该确保清楚黑客修复的内容以及黑客支持的浏览器是否包含注释。我曾经参与过一些大规模使用CSS的高级项目,但我们仍然需要支持IE6。从长远来看,我的团队和我(其中,顺便说一句,都是C#开发人员......在这个特定的工作中,开发人员不仅编码,还根据我们的图形设计师创建的UI模型做了所有的UI实现) CSS可以很好地设计任何网站,而不需要黑客(这可能很困难,并且需要一些关于CSS如何工作的广泛知识......但是它可以解决IE和Firefox中几乎所有的bug,而且不会受到攻击......只是聪明/正确地使用有效的CSS)。

之前我的团队了解了足够的CSS来实现这一目标,但是,我们有更多的黑客攻击,我们可以指望。保持我们的黑客与他们固定的基本css一起组合,同时用一个理由标记每个黑客,浏览器或支持黑客的浏览器为保持我们可怕的CSS文件的可维护性做出了很大的贡献。这不仅有助于提高可维护性......但是当您了解有关CSS的更多信息并找出避免黑客攻击的方法时......您可以在修复现有CSS以使用新技巧时将其逐个删除。由于你的黑客就在你的改进CSS旁边,所以它很容易摆脱不再需要的黑客。

1

那么,我有点陷入同一条船......如果我可以放入一个* html #id而不是做一个完整的条件注释和具体的ie6样式表,我会去做。它可能不那么优雅,但它保存了一个全新的CSS文件来保存。但是,如果我最终有很多* html*前缀,或超长IE7 hack(我现在不记得),我宁愿使用条件样式表。

我实在不明白* html作为一个真正的黑客......这是一个有效的选择(据我所知),它只是不应该工作,因为没有父元素HTML(除了一些原因在IE6中)。但是,使用下划线或特定字符作为属性前缀会使选择器属性无效。

另一个我不介意使用display: inline IE6来修复元素浮动时的双倍余量。我在我的主CSS中使用它,因为它不会影响其他浏览器(只有块级元素可以被浮动),并且它更容易维护。我通常留下一个小纸条,像

#my-div { 
    diplay: inline; /* ie6 */ 
    float: left; 
    margin-left: 20px; 
} 

所以我会说,如果这是一些黑客,我把它留在我的主要CSS。如果它变得笨拙(并且它通常不会像我知道IE失败的常见方式那样),我会创建一个额外的样式表并使用条件注释。

0

这些都是HACKS而不是CONDITIONALS。

不要误会我我也是这样做的:\有时它是基于案例的场景。如果你处理大型网站使用CONDITIONALS。

如果你做一些废话你不关心使用黑客。

区别如下:

HACKS - 暂时的工作,那就是直到有人将它们固定,他们probally不会 条件句 - 保证工作

0

我使用条件注释使用ID将DIV中的页面包装成目标正确的IE版本,如here所述。

这是更易于维护(像你说的),让你的CSS有效(没有错误被忽视),比黑客更稳定...

0

这可能是offtopic,我不是一个大师的CSS ......但是,你有没有试过SASS?

http://haml.hamptoncatlin.com/docs/

我觉得CSS比较差作为表达的语言风格。横向思考,如果你有一个主要风格的中心protoCSS,并且可以将它们转换为合适的浏览器版本,我认为你可以采用最好的方式:可维护并且易于使用。

萨斯是不完全是,但它不应该是很难将其更改为是。如果您不是开发人员,我相信您将能够说服汉普顿或其他人对其进行编码。