`
wsj123
  • 浏览: 148632 次
  • 性别: 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及以下版本浏览可以识别。值得注意的是该规则中的三个分号必须保留。

分享到:
评论

相关推荐

    css hack总结 图片整理版

    关于CSS hack,网上有很多总结了,在他们的基础上,谈谈我个人的一些总结。其实大多数hack技术都是针对IE各个版本。

    IE浏览器HTML Hack标签总结

    主要介绍了IE浏览器HTML Hack标签总结,写IE浏览器兼容CSS的时候会经常用到HTML Hack技术,本文总结到了IE9下的HTML Hack标签,需要的朋友可以参考下

    hack-and-tell-hyd:Hack-and-Tell 的讨论和总结,海得拉巴

    Hack and Tell, 海得拉巴这是海得拉巴 Hack-and-Tell 小组讨论和总结的存储库。 像一样,我们受到的启发。黑客和告诉在海得拉巴为黑客举办的“展示和讲述”聚会如果您曾经访问过 Hacker News,您几乎肯定看过“Show ...

    竞赛资料源码-2013西电hackday参赛作品《凑热闹》.zip

    教育部认可的大学生竞赛备赛资料代码,源码,竞赛总结,所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通 全国电子设计大赛、全国大学生智能汽车竞赛、蓝桥杯、集成电路...

    网络安全思维导图

    WEB2HACK.jpg Web安全.png Web安全技术点.jpg Web服务器入侵防御.jpg Web攻击及防御技术.png XSS利用架构图.jpg XSS攻击点汇总.png nmap.jpg pentest_method.jpg powershell语法.png web渗透.jpg web...

    Web安全深度剖析(张柄帅)

    《Web安全深度剖析》总结了当前流行的高危漏洞的形成原因、攻击手段及解决方案,并通过大量的示例代码复现漏洞原型,制作模拟环境,更好地帮助读者深入了解Web应用程序中存在的漏洞,防患于未然。...16.4 小结 345

    《CSS全程指南》随书光盘

    13.2.1 CSS hack技术 292 13.2.2 盒模型 298 13.2.3 浮动模型 303 13.2.4 IE 3px Bug 306 13.2.5 IE文字溢出现象 307 13.2.6 IE6 Peekaboo Bug(捉迷藏) 309 13.2.7 IE6 Guillotine Bug(断头台) 310 13.2.8 列表...

    无线网络入侵之旅作者: C.Z.Y

    在本文将详细介绍实用的HACK技术来打破无线安全。 建议读者应具备无线网基础知识及无线操作。 本文包含12 个章节,但实际内容是在10 个章节中,从0x02 到0x10。在0x02中,我们讨论无线网络的基本攻 击。章节0x03的...

    关于安全领域投资的8个问题.pdf

    王淮总结了黑客创业的优劣点,即典型的技术男创业路线:优势是Just hack it out;而劣势则为不喜沟通、不善言辞、最大的风险就是商业化。而解决之道有三:寻找合伙人、CTO+CFO组合、临时CEO。

    CSS网页布局:div垂直居中的各种方法

    即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中的确是有vertical-align属性,但是它只对(X)HTML元素中拥有valign特性的元素才生效,例如表格元素中的、、&lt;caption&gt;

    python灰帽子包含高清扫描和可复制两个版本.zip

    构建自己的调试工具,如何自动化实现烦琐的逆向分析任务,如何设计与构建自己的fuzzing工具,如何利用fuzzing测试来找出存在于软件产品中的安全漏洞,一些小技巧诸如钩子与注入技术的应用,以及对一些主流Python安全...

Global site tag (gtag.js) - Google Analytics