`
wsj123
  • 浏览: 154224 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Hack技术总结

阅读更多
Hack技术总结

1.1概述
        由于各大浏览器尤其IE浏览器对web标准支持情况不一,导致标准的网页在各个浏览器中的表现不一,因此,解决各浏览器兼容性问题成为了前端工程师最重要的工作之一,而所谓的hack技术则是前端开发中必用的。
1.2 hack常见形式
        CSS Hack常见的有三种形式:CSS属性Hack、CSS选择器Hack以及IE条件注释Hack, Hack主要针对IE浏览器。
        1、属性级Hack:在CSS属性前加上一些特殊的字符,不同浏览器识别不同的字符从而达到兼容的效果。
        2、选择符级Hack:在CSS选择器前加上一些只有特定浏览器能识别的选择器从而到达兼容的效果。
        3、IE条件注释Hack:IE条件注释是微软IE5开始就提供的一种非标准逻辑语句。这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都会生效。
        注意:条件注释只有在IE浏览器下才能执行,这个代码在非IE浏览下被当做注释视而不见。可以通过IE条件注释载入不同的CSS、JS、HTML和服务器代码等。
1.3 CSS属性hack——特殊字符
1.3.1反斜线(\)

        适用浏览器:IE/Mac。
        反斜线(\)hack利用了IE/Mac的一个bug。以\*/结束的css 注释在IE/Mac上是不正确关闭的,所以那些需要在IE/Mac上被忽略的语句可以放在这种注释后面。
        /* CSS注释:在IE Mac上忽略下面的语句 \*/
        selector { ...styles... }
        /* 忽略结束 */
        注释:亲测上述方法无用!
        其他用法:
        在CSS属性值后面加“\9”,“\0”等字符。“\9”只支持IE10(包括IE10)以下版本;“\0”只支持IE8(包括IE8)以上的版本。
1.3.2下划线(_)
        适用浏览器:IE6及其以下版本。
        IE 6 及以下的版本可以识别带有下划线前缀的属性,而其它浏览器会忽略它。
        注意:这个hack利用浏览器的bug使用了无效的CSS,因而不推荐使用。
1.3.3 星号(*)
        适用浏览器:IE7及以下版本
        IE7及以下的版本可以识别以非字母字符(常用的有:*、#、+、[)为前缀的属性,而其它浏览器会忽略。
        注意:这个hack利用浏览器的bug使用了无效的CSS,因而不推荐使用。
1.4 CSS选择符hack
1.4.1 :root选择符

        :root 除IE8(包括IE8)以外的IE浏览器及现代其他浏览器都支持此CSS选择符。
1.4.2星号HTML(* html)
        适用浏览器:IE4-6。
        HTML元素是W3C标准DOM的根元素,但是IE 4至6的版本中还有一个神秘的父元素。完全兼容的浏览器会忽略这个* html选择器,但IE4-6却会对它正常处理。
        Example:
* html p {font-size: 5em; }

        注意:这个hack使用了完全有效的CSS。
1.4.3星号加号(*+)
        适用浏览器:IE7
        Example:
*:first-child+html p { font-size: 5em;} 或者:*+html p {font-size: 5em; } 

        注意:只在IE7标准模型里工作正常,在怪异模式下不能用。同时,也被IE8的兼容模式(相当于IE7的标准模式)所支持。它也使用了有效的CSS。
1.4.4子选择器(>)
        适用浏览器: IE6以上版本及非IE浏览器
        IE6及以下版本不支持子选择器(>),可以利用这个为其它浏览器指定特别的规则。
        Example:
html > body p { color: blue; }

1.4.5子选择器加注释(>/**/)
        适用浏览器: IE7(不包含IE7)以上版本及非IE浏览器
        虽然IE7支持对子选择器,但通过以下hack方法也可以把IE7也排除。当一个空的注释紧跟在子选择器的后面时,IE7会不识别后面的规则,就和较早版本的浏览器一样。
        Example:
html >/**/ body p { color: blue; } 

1.5条件注释
1.5.1运算符

        html条件注释中的运算符都属于比较运算符,其返回值都是boolean值,其运算结果与Javascript的比较运算符一样。运算符都包括:NOT运算符(!)、小于运算符(lt)、小于或等于运算(lte)、大于运算符(gt)、大于或等于运算(gte)、子表达式(())、AND运算符(&)及OR运算符(|)。
        语法实例:
       
        <!--[if !IE]><!-->
            除IE外都可识别。
        <!--<![endif]-->
        <!--[if IE]>
            所有的IE可识别。
        <![endif]-->
        <!--[if IE 6]>
            仅IE6可识别。//6,一个整数或浮点标号对应于浏览器的版本
        <![endif]-->
        <!--[if lt IE 6]>
            IE6以下版本可识别。
        <![endif]-->
        <!--[if gte IE 6]>
            IE6以及IE6以上版本可识别。
        <![endif]-->

        实例:jQuery版本的兼容
<!--[if !IE]><!-->
    <script src="http://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<!--<![endif]-->
<!--[if lte IE 9]>
    <script src="https://cdn.bootcss.com/jquery/1.8.3/jquery.min.js"></script>
<![endif]-->

        注意:自IE10起,标准模式不再支持条件注释。
1.6总结
        CSS hack虽然可以解决个浏览器之间css显示的差异问题,但是毕竟不符合W3C规范,所以写CSS还是按照标准来,这样对以后维护也是大有好处的,实在不行再用。用的时候需要遵循以下三条原则:
        有效:能够通过Web标准的验证
        只针对太古老的/不再开发的/已被抛弃的浏览器,而不是目前的主流浏览器。
        代码要丑陋。让人记住这是一个不得已而为之的 Hack, 时刻记住要想办法去掉它。现在很多hacks已经抛弃了最初的原则,而滥用hack会导致浏览器更新之后产生更多的兼容性问题。
        利用html条件注释直接在html里面设定相应版本的浏览器所对应加载的样式表的方式就可以在保证CSS代码规范的基础上又实现CSS样式的差异化了。
        一个特殊的CSS hack,“[;background:#F00;];”只有webkit内核浏览器(Chrome[早期版本]、Safari)、IE7及以下版本浏览可以识别。值得注意的是该规则中的三个分号必须保留。

分享到:
评论

相关推荐

    可通过验证的hack

    本文将深入探讨一种特殊的hack技术——“可通过验证的hack”,它能够在通过W3C验证的同时,实现对IE6、IE7以及Firefox等浏览器的差异支持。 ### 可通过验证的hack技术 在早期的网页设计中,由于Internet Explorer ...

    IE各版本hack汇总

    这里的“hack”特指一种技术手段,用于绕过或利用浏览器的特定解析漏洞,使CSS样式能正确应用于目标浏览器,而被其他浏览器忽略。对于Internet Explorer(IE)系列浏览器,由于其在不同时期存在诸多解析差异和bug,...

    Css hack总结及其最佳用法

    CSS Hack,作为一种应对不同浏览器间样式解析差异的技术,是前端开发者在处理跨浏览器兼容性问题时经常需要用到的技能。在本文中,我们将深入探讨CSS Hack的原理、常见方法以及最佳实践,特别关注针对IE6、IE7和IE8...

    街机游戏HACK ROM的制作加教程

    随着技术的发展,许多经典街机游戏的爱好者们开始尝试对原始游戏进行修改,以创造个性化的游戏体验,这就是我们所说的HACK ROM。HACK ROM是指通过修改游戏的原始ROM芯片数据,改变游戏的规则、关卡、角色属性等,以...

    web前端规范之CSSHack[总结].pdf

    在Web开发中,CSS Hack是一种解决不同浏览器对CSS样式解析不一致问题的方法。由于历史原因和技术差异,各种浏览器,尤其是IE系列和基于Webkit内核的浏览器,对CSS的解析和渲染方式有所不同,导致页面在不同浏览器上...

    CSS Hack 浏览器兼容文档

    CSS Hack是一种针对不同浏览器之间解析CSS规则差异的技术,目的是确保CSS样式在各个浏览器中的一致性。在网页设计中,由于各个浏览器(尤其是Internet Explorer的早期版本)对CSS的实现存在差异,导致开发者需要采取...

    Google Hack V2.0

    **Google Hack V2.0详解** Google Hack,也被称为Google Hacking或...掌握和合理应用Google Hack技术,对于保护网络安全和个人隐私具有重要意义。然而,同时也需要意识到其潜在的滥用风险,遵循合法和道德的使用原则。

    针对firefox ie6 ie7 ie8的css样式hack

    为了确保网站能够在不同浏览器下正常显示,开发者需要使用特定的技术手段来解决这些问题,其中CSS Hack就是一种常用的方法。本文将详细介绍如何为Firefox以及IE6、IE7、IE8等浏览器编写CSS Hack。 ### CSS Hack定义...

    Hack Proofing Your Web Applications

    ### 知识点总结 #### 一、书籍概述与作者介绍 - **书籍名称**:“保护您的网络应用不受黑客攻击”(Hack Proofing Your Web Applications) - **书籍定位**:本书是畅销书《HACKPROOFING™ YOUR NETWORK》系列的...

    50 android hacks - hack5

    总结,《50个Android黑客技巧 - Hack5》主要围绕TextSwitcher和动画技术展开,通过理解和实践这些技巧,开发者可以更好地利用Android系统提供的工具,创造出更具吸引力和用户体验的移动应用。同时,对动画性能的优化...

    Laravel开发-hack

    **Laravel 开发黑客技术详解** 在Web开发领域,Laravel是一个备受推崇的PHP框架,以其优雅的语法、强大的功能和丰富的生态系统赢得了开发者们的喜爱。本文将深入探讨如何在Laravel开发过程中应用“黑客”技术,即...

    最新CSS hack技术(IE6/7/8)

    ### 最新CSS Hack技术(IE6/7/8) #### 概述 随着Web标准的发展与浏览器技术的进步,现代浏览器对CSS的支持越来越完善。然而,早期的一些浏览器如Internet Explorer 6、7、8等,由于其对CSS的支持存在诸多限制与不...

    css hack总结 图片整理版

    下面将详细阐述一些常用的和不太常见的CSS Hack技术。 ### 常用CSS Hack技术 1. **条件注释(Conditional Comments)** - 仅IE浏览器识别的HTML条件注释,如`&lt;!--[if IE 6]&gt;`用于针对IE6的样式。 2. **前缀...

    dsf.rar_hack

    总结来说,"dsf.rar_hack"可能是一个针对Swing应用的黑客技术学习资源,包括代码示例、教程、工具和案例,旨在帮助用户理解Swing框架中的安全弱点,并提供一种安全研究的娱乐方式。然而,重要的是要强调,任何涉及...

    网络 命令 一览 表(hack技术)

    ### 网络命令一览表:Windows内置网络工具详解 #### 概述 在日常的计算机操作中,我们经常依赖于各种外部下载的网络工具来完成特定任务,但很少有...此外,对于更高级的网络管理需求,还可以探索更多高级命令和技术。

    区别不同浏览器CSS hack

    为了确保网页能在各种浏览器中正常显示,开发者们创造了一种特殊的技术——CSS Hack。CSS Hack是一种特殊的语法技巧,用来向特定的浏览器提供定制化的样式规则,从而解决浏览器间的兼容性问题。 #### 不同浏览器的...

    各种类型 CSSHACK

    为了确保网站在多种浏览器下都能正常显示,开发者常常需要使用到CSS Hack技术,特别是针对那些在CSS支持上存在较大差异的浏览器版本,如Internet Explorer 6(IE6)、Internet Explorer 7(IE7)以及Mozilla Firefox...

    CSS样式hack,用于兼容多种浏览器

    ### CSS样式Hack详解:兼容多种浏览器的技术解析 #### 一、CSS Hack简介 CSS Hack是一种技术手段,旨在解决不同浏览器间CSS渲染差异的问题。由于各浏览器(如IE6、IE7、Firefox等)对CSS标准的支持程度不同,...

Global site tag (gtag.js) - Google Analytics