代码之家  ›  专栏  ›  技术社区  ›  Jeff

IE的替代CSS表?

  •  2
  • Jeff  · 技术社区  · 16 年前

    我有一个关于CSS编码实践的问题。IE通常需要黑客或变通方法才能使事情看起来正确,有两种不同的方法:

    1. 创建两个CSS文件并根据用户使用的浏览器加载

    我认为第二个更合理,但有什么理由不这样做呢?哪个更常见?

    7 回复  |  直到 16 年前
        1
  •  2
  •   Franci Penov    16 年前

    反对两个CSS文件的唯一理由是,在第一次打开页面时,它将生成一个额外的HTTP请求。

    另一方面,单独使用IE样式意味着其他浏览器上的用户不会加载它们。此外,在主要样式和hacks之间有明显的分离,这意味着随着IE9的采用,你将能够通过删除该文件而不是修改主CSS文件来轻松地反对hacks CSS。

        2
  •  2
  •   Chris J    16 年前

    作为所有项目的标准,我的偏好是使用一个CSS文件,以便以后更容易管理和修改(也只有一个HTTP请求)。然后使用条件来更改body类。

    <!--[if lt IE 7 ]> <body class="ie6"> <![endif]--> 
    <!--[if IE 7 ]>    <body class="ie7"> <![endif]--> 
    <!--[if IE 8 ]>    <body class="ie8"> <![endif]--> 
    <!--[if IE 9 ]>    <body class="ie9"> <![endif]--> 
    <!--[if (gt IE 9)|!(IE)]><!--> <body> <!--<![endif]-->
    

    不知道这有多普遍,但它也用于 HTML5Boilerplate

        3
  •  1
  •   subosito    16 年前

    我想没有理由不做第二件事。表达方式 <!--[if IE]> 在使用非ie浏览器时,值得确保加载了正确的css并节省带宽。

        4
  •  1
  •   Yi Jiang G-Man    16 年前

    对于单个样式表,唯一的参数是减少一个HTTP请求。考虑到平均而言,60%的网络流量将来自IE用户,这并不是一个微不足道的影响。

    完全分开的 样式表只适用于标准兼容和非标准兼容浏览器-覆盖少数有问题的属性就足够了。

        5
  •  1
  •   DaiYoukai    16 年前

    我使用这两种方法,这取决于在IE中需要多少更改才能使页面看起来正确。

    但是如果有很多更改,我用条件注释来加载一个独立的样式表,如果它是IE的话-但是这样我就没有两个相同样式表的副本,一个是为其他浏览器编码的,另一个是为IE编码的,我总是让它加载我的主样式表,然后如果需要的话加载IE样式表,只改变它需要的元素(因此样式表中没有必要的重复项以减少文件大小)

    基本上,我的做法是:

    有几个要素需要改变:坚持变通方法

        6
  •  0
  •   zzzzBov    16 年前

    你也许可以让事情正常工作,而无需浏览器“黑客”。

    尽可能避免使用浏览器特定的CSS。对于旧版本的IE,我更喜欢使用条件注释 <--[if IE...]> ... <[endif]--> .

    我知道他们会创建另一个对服务器的请求,但我的意见是,任何愚蠢到使用过时版本的ie(6或更低版本)的人都不值得花上几毫秒来下载另一个样式表。这也允许我集中修复。

        7
  •  0
  •   Davis Peixoto    16 年前

    放在IE CSS文件中,只是你需要修复IE上的布局,而不是一个全新的(可能是重复的)样式表。

    我还建议在导入javascript时使用这个脚本,比如让HTML5元素工作的快速脚本(如果我没有错的话,我在Remy Sharp的whatwg示例中看到了这个)。

    推荐文章