本文向大家简单介绍一下CSS Hack的基本原理和实现方式,有人说CSS hack是一种类似作弊的手段,以欺骗浏览器的方式达到兼容的目的,是用浏览器的兼容性差异来解决浏览器的兼容性问题,CSS hack是因为现有浏览器对标准的解析不同,为了兼容各浏览器,所采用的一种补救方法。

CSS Hack的基本原理和实现方式

由于不同的浏览器,比如IE6、IE7、IE8、Firefox等,对CSS解析的标准不同,因此对于相同的CSS代码,可能会生成不同的页面效果,从而无法在所有浏览器中得到我们想要的效果。这时,我们就需要针对不同的浏览器去写不同的CSS代码,让它能够在所有浏览器中获得相同的效果。这个过程,就是CSS hack。也就是写出只有个别浏览器或某些浏览器识别的CSS代码。

CSS Hack的基本原理

CSS hack是因为现有浏览器对标准的解析不同,为了兼容各浏览器,所采用的一种补救方法。

CSS hack是一种类似作弊的手段,以欺骗浏览器的方式达到兼容的目的,是用浏览器的兼容性差异来解决浏览器的兼容性问题。因此,在设计之初,写CSS hack需要遵循以下三条原则:

◆有效:能够通过Web标准的验证

◆只针对太古老的/不再开发的/已被抛弃的浏览器,而不是目前的主流浏览器

◆代码要丑陋。让人记住这是一个不得已而为之的Hack,时刻记住要想办法去掉它。

现在很多hacks已经抛弃了最初的原则,而滥用hack会导致浏览器更新之后产生更多的兼容性问题。因此,并不推荐使用CSS hack来解决兼容性问题。

CSS hack的实现方式

我总结了一下,实现CSS hack大概有以下几种方式:

1.利用浏览器对相同代码的解析和支持的不同实现的hack

不同浏览器对相同的CSS代码的支持情况可能不同。尤其是对错误的写法。

例如

CSScode

#test{

_width:80px;

}

在IE7及以上版本的浏览器中会被当作错误特性而舍弃,但是在IE6中可以被正常的解析。这时候,可以把_width当作hack,专门针对IE6来设置元素的宽度。

2.以Firefox或Webkit特有的扩展样式实现的hack

以-moz或-webkit开头的扩展样式,是浏览器对CSS标准的扩展。这些特性只在相应的浏览器里才可以被正常的解析。因此可以被当作CSS hack来使用。

◆以-moz开头的Firefox特有扩展样式

Mozilla浏览器支持的一些扩展是以-moz开头的。这些扩展包括了一些功能,例如圆形边界等。这种CSS只适用于Mozilla浏览器。

比如,-moz-opacity是在Firefox2.0版本出现的特性,用来实现元素的透明,但Firefox3.0以后的版本中不再支持,而是直接支持标准中的opacity特性。而其他浏览器不支持-moz-opacity。所以,可以使用-moz-opacity来针对Firefox2.0设置元素的透明度。

关于Firefox扩展样式的详细信息,见MozillaCSSExtensions。

◆以-webkit开头的Webkit浏览器特有扩展样式

与以-moz开头的Firefox特有扩展样式相同,以-webkit开头的样式是Webkit浏览器特有的,只有Webkit浏览器可以解析。

比如,在Webkit浏览器中可以用-webkit-border-radius实现圆角。

3.利用IE对标准的支持缺陷写的CSS hack

这个类别以中的hack以IE对标准的支持缺陷为基础,可以让CSS代码针对IE6或IE7以外的浏览器生效。

例如,!important只有IE7及以上版本的IE及其他浏览器支持,所以,可以用!important来针对IE6以外的浏览器写CSS代码;再如,head:first-child+bodyselector,:first-child不被IE6支持,所以可以用来针对IE6以外的浏览器编写CSS代码。

此处不在一一列举。

当然,有的观点认为应用CSS2.1标准,不属于CSS hack。见Tantek'sThoughts,UsingACSS2FeatureIsNOTaHack。

4.以IE特有的条件注释为基础的hack

IE浏览器中特有的条件注释也经常被用作hack,可以针对特定版本的IE写CSS代码。

例如,测试用例:

HTMLcode

TEXT

以上代码中的"TEXT",只在IE8中才会是红色。

【编辑推荐】

【责任编辑:程华权 TEL:(010)68476606】

点赞 0

css hack方法,CSS Hack的基本原理和实现方式相关推荐

  1. css hack方法,css hack怎么应用

    CSS hack的目的就是使你的CSS代码兼容不同的浏览器,那么你对css hack了解多少呢?下面就让学习啦小编来给你科普一下什么是css hack. css hack的原理 由于不同的浏览器对CS ...

  2. css hack方法,css hack方式有哪些

    what由于不同厂商的浏览器或某浏览器的不同版本(IE6~IE11,Firefox/Safari/Opera/Chrome等),对css的支持.解析不一样.这时,我们为了获得统一的页面效果,就需要针对 ...

  3. 在html中使用css的主要方式有,html中使用css的方法有哪几种

    html中使用css的方法有4种:1.在HTML标签中使用style属性来设置css样式:2.在head标签中使用style标签来设置css样式:3.使用link标签导入一个外部css文件:4.使用& ...

  4. html4.0.1兼容ie7,CSS 完美兼容IE6/IE7/FF的通用hack方法

    CSS 完美兼容IE6/IE7/FF的通用hack方法 发布时间:2009-03-20 00:27:16   作者:佚名   我要评论 一.CSS HACK 以下两种方法几乎能解决现今所有HACK. ...

  5. 好程序员web前端分享CSS Bug、CSS Hack和Filter学习笔记

    为什么80%的码农都做不了架构师?>>>    CSS Bug.CSS Hack和Filter学习笔记 1)CSS Bug:CSS样式在各浏览器中解析不一致的情况,或者说CSS样式在 ...

  6. [css] 什么是hack?css的hack有哪些?

    [css] 什么是hack?css的hack有哪些? 一.总结 1.CSS hack:由于不同厂商的浏览器,比如Internet Explorer,Safari,Mozilla Firefox,Chr ...

  7. css hack *html,HTML_CSS Hack整理,CSS Hack是在标准CSS没办法兼容 - phpStudy

    CSS Hack整理 CSS Hack是在标准CSS没办法兼容各浏览器显示效果时才会用上的补救方法,在各浏览器厂商解析CSS没有达成一致前,我们只能用这样的方法来完成这样的任务. 我进行前端开发的时候 ...

  8. css hack *html,css hack 大全 各个浏览器的css

    各个浏览器的css hack区别属性: IE6: _zoom:1; IE6/7: *zoom:1; IE6/7/8/9 :\9 各个浏览器的css hack区别规则 IE6: *html{} IE7: ...

  9. css hack *html,CSS Hack详解

    CSS Hack是实现浏览器样式兼容的兜底办法,能不用就尽量不要使用.但是,针对一些浏览器的bug,比如老版本IE的bug,有时使用CSS Hack是不得已而为之的做法.本文将详细介绍CSS Hack ...

最新文章

  1. gradle build running很慢
  2. pandas将某一列变为索引_Pandas 基础语法入门
  3. Binary classification - 聊聊评价指标的那些事儿【实战篇】
  4. 有关启动图片Launch的设置
  5. mac识别androidUSB调试
  6. 华中科技大学期刊分类办法_紧跟国际前沿,拓展研究思路,立足国内实践,提升科研能力 —— 记国际期刊学术论文写作与发表研修班...
  7. 和菜鸟一起学linux之V4L2摄像头应用流程【转】
  8. 【转】Redis学习---阿里云Redis多线程性能增强版详解
  9. iOS数据库操作(使用FMDB)
  10. Mac上的Spotlight搜索都能干什么?
  11. 15款13英寸低配mbp的外接显示器选择
  12. 2016 年全国房价会呈什么趋势?
  13. 关于使用迅雷下载百度云盘文件的教程
  14. 文件下载之断点续传(客户端与服务端的实现)
  15. 【论文阅读】Are We Ready For Learned Cardinality Estimation?
  16. 群体药动学药效学模型
  17. CSS:不可思议的border属性
  18. mac更换java版本_Mac上更换JDK版本方法
  19. gps有几个轨道面_GPS卫星定位原理详解
  20. [python] Jupyter Notebook 画股票折线图

热门文章

  1. 011 索引的优点,特大型的表考虑分区技术
  2. 判断手机为Android还是ios
  3. mysql Miscellaneous notes
  4. js常见创建对象的三种方式
  5. 2022秋科学道德与学风雨课堂期末考试B卷
  6. 游戏中子弹的回收重用
  7. 活动预告|CodeWisdom软件供应链系列学术报告:第5期(鲍凌峰 浙江大学)
  8. highCharts图表应用-模拟心电图
  9. 用了十年竟然都不对,Java、Rust、Go主流编程语言的哈希表比较
  10. Lunix基础终端控制器操作