Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CSS Hack

CSS Hack

作者头像
刘亦枫
发布于 2020-03-19 09:15:41
发布于 2020-03-19 09:15:41
89000
代码可运行
举报
运行总次数:0
代码可运行

1.什么是CSS Hack?

由于不同厂商的浏览器,比如Internet Explorer、Chrome、Mozilla Firefox、Safari等,或者是统一厂商的浏览器的不同版本,比如IE6和IE7,对CSS的解析和认识不完全一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。这个时候,我们就需要针对不同的浏览器,去写不同CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中,也能得到我们想要的页面效果。

简单的说,CSS hack的目的就是使你的CSS代码兼容不同的浏览器。当然,我们也可以反过来利用CSS hack为不同版本的浏览器定制编写不同的CSS效果。

2.原理:

由于不同的浏览器对CSS的支持和解析结果不一样,还由于CSS中的优先级关系,我们就可以根据这个来针对不同的浏览器来写不同的CSS。

3.表现形式

CSS Hack大致有3种表现形式,属性级Hack、选择器Hack以及IE条件Hack。

属性前缀法(属性级Hack)

比如IE6能识别下划线"_“和星号”" ,IE7能识别星号"",但不能识别下划线,IE6-IE10都认识"\9",而Firefox这三个都不能认识。 对于书写顺序的关系,一般是将识别能力强的浏览器的CSS写在后边

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<style> 
div{  
    background:green;/*forfirefox*/  
    *background:red;/*forIE6 IE7*/  
}  
</style> 

这样的话,就成功的对IE6,7成功的做了一个hack。

选择器前缀法(选择器 Hack) 语法是这样的: selector{ sRules } 例如:IE6能识别*html .class{} , IE7能识别 +html .class{}或:first-child+html .class{}

例如:针对IE9的hack可以这么写:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
:root .test
{
    background-color:green;
}

IE条件注释法(IE条件Hack), 针对所有IE(注:IE10+已经不再支持条件注释) IE条件Hack就比较特殊了,类似于程序语句,只能使用在HTML文件里,而不能在CSS文件中使用,并且只有在IE浏览器下才能执行,在其他浏览器下面会被当做注释视而不见。 比如: <!– 默认先调用css.css样式表 –> <link rel=“stylesheet” type=“text/css” href=“css.css” /> <!–[if IE 7]> <!– 如果IE浏览器版是7,调用ie7.css样式表 –> <link rel=“stylesheet” type=“text/css” href=“ie7.css” /> <![endif]–> <!–[if lte IE 6]> <!– 如果IE浏览器版本小于等于6,调用ie.css样式表 –> <link rel=“stylesheet” type=“text/css” href=“ie.css” /> <![endif]–> 注: lte:就是Less than or equal to的简写,也就是小于或等于的意思。 lt :就是Less than的简写,也就是小于的意思。 gte:就是Greater than or equal to的简写,也就是大于或等于的意思。 gt :就是Greater than的简写,也就是大于的意思。 ! :就是不等于的意思,跟javascript里的不等于判断符相同。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <!--[if IE]>IE浏览器显示的内容<![endif]--> 
 <!--[if lt IE6]>只在IE6及以下版本显示的内容<![endif]-->

这类hack不仅对CSS生效,对写在判断语句里边的所有代码都会生效 还有在属性值后面添加“!important”的写法只有IE6不能识别,其它版本IE及现代浏览器都可以识别,例如:

4.注意

①尽可能减少对CSS Hack的使用,Hack有风险,使用需谨慎。 ②一些CSS Hack由于浏览器存在交叉认识,所以需要通过层层覆盖的方式来实现对不同浏览器进行Hack的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
前端面试题-CSS Hack
由于不同的浏览器和浏览器各版本对CSS的支持及解析结果不一样,以及CSS优先级对浏览器展现效果的影响,我们可以据此针对不同的浏览器情景来应用不同的CSS。
WEBING
2019/02/26
7590
前端面试题-CSS Hack
php学习之css入门(一)
1.css的介绍 css:层叠样式表,它是cascading style sheets的缩写,作用就是给html标签加表现形式(样式显示) 如:字体、图片、列表、位置等 在浏览器中可以看到部分: ht
吾爱乐享
2018/07/12
7330
CSS 各种Hack手段
随着浏览器的发展,css hack 技术的使用应该越来越少了,但是在某些关键时刻以及综合的WEB应用或者老项目中,可能还需要使用 css hack 技术来解决一些问题。
零式的天空
2022/03/25
5120
判断IE版本的语句 [if lte IE 6]...[endif]
<!–[if lte IE 6]>……<![endif]–> Ite:less than or equal to意思是小于或等于IE6浏览器,用于IE浏览器的条件注释,常用于CSShack,针对IE的JS等。     在进行WEB标准网页的学习和应用过程中,网页对浏览器的兼容性是经常接触到的一个问题。其中因微软公司的Internet Explorer(简称IE)占据浏览器市场的大半江山,此外还有Firefox、Opera等。需要对这些浏览器进行兼容。     同时,单就IE而言,因IE版本的升级更替,目前浏
deepcc
2018/05/16
2K0
浏览器兼容
产品的角度(产品的受众、受众的浏览器比例、效果优先还是基本功能优先) 成本的角度 (有无必要做某件事)
bamboo
2019/01/29
2K0
浏览器兼容
前端之 CSS 知识点回顾
<p>标签内的文字的颜色是red,优先级相等的时候与文件中样式定义的先后顺序有关,即是后面的覆盖前面的,与在class定义中的先后关系无关。
IT技术小咖
2019/06/26
1K0
【说站】css中hack的原理
1、浏览器对CSS样式的支持程度、分析结果和识别CSS的优先级,可以根据这些的特征写出不同的CSS样式代码。
很酷的站长
2022/11/24
3730
CSS Hack技术介绍及常用的Hack技巧
不同的浏览器对CSS的解析结果是不同的,因此会导致相同的CSS输出的页面效果不同,这就需要CSS Hack来解决浏览器局部的兼容性问题。而这个针对不同的浏览器写不同的CSS 代码的过程,就叫CSS Hack。
疯狂的技术宅
2019/03/27
1.3K0
【说站】css中hack是什么
因为不同的厂商或浏览器的不同版本(如IE6-IE11,Firefox/Safari/Opera/Chrome等),对CSS的支持、解析并不相同,导致在不同浏览器环境下呈现不一致的页面展示效果。
很酷的站长
2022/11/24
5250
CSS Hack解决浏览器IE部分属性兼容性问题
不同厂商的流览器或某浏览器的不同版本(如IE6-IE11,Firefox/Safari/Opera/Chrome等),对CSS的支持、解析不一样,导致在不同浏览器的环境中呈现出不一致的页面展现效果
小蔚
2019/09/11
1.2K0
CSS hack总结
有时,我们为了让一些外观在不同浏览器中做保持一致。就不得不用css hack。下面是常用的css hack。
前端GoGoGo
2018/08/27
7180
根据IE版本加载不同CSS样式的方法小结,解决低版本IE兼容问题
自从中国联盟成员导航采用响应式布局之后,不少朋友反馈该页面在 IE8、IE7 浏览器会错排,经测试发现确实存在这个问题,但我一直也没去深究解决。这几天博客折腾得很厉害,把多说开除了,而又由于 wopu
张戈
2018/03/23
2.7K0
【说站】css中hack的3种表现形式
以上就是css中hack的3种表现形式,希望对大家有所帮助。更多css学习指路:css教程
很酷的站长
2022/11/24
4170
最全的CSS浏览器兼容整理
CSS对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就 会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理方法并整理了一下.对于web2.0的过度,请尽量用xhtml格式写代码,而且 DOCTYPE 影响 CSS 处理,作为W3C的标准,一定要加 DOCTYPE声名.
botkenni
2019/09/03
1.7K0
最全的CSS浏览器兼容整理
4种方案解决CSS浏览器兼容性问题
前端是一个苦逼的职业,不仅因为技术更新快,而且要会的东西实在太多了,更让人头疼的是,还要面临各种适配、兼容性问题。
Javanx
2019/09/04
3K0
4种方案解决CSS浏览器兼容性问题
CSS常见兼容性问题总结
浏览器的兼容性问题,通常是因为不同的浏览器对同一段代码有不同的解析,造成页面显示不统一的情况。
书童小二
2018/09/03
1.2K0
CSS常见兼容性问题总结
IE版本判断代码 if IE 6
在项目中,经常会遇到IE浏览器的兼容问题,IE678简直是前端工程师的噩梦,每个版本的IE浏览器都会有比较大的差异。
德顺
2019/11/13
2K0
Web前端面试宝典(最新)
html语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析;即使在没有样式CSS情况下也以一种文档格式显示,并且是容易阅读的;
半指温柔乐
2018/09/11
3.3K0
知识整理之CSS篇
CSS篇主要从CSS兼容、CSS3新特性、CSS选择器、高频属性、高频布局、高频知识点、性能优化等方面进行归纳。如对HTML知识点感兴趣,可移步至:知识整理之HTML篇
Clearlove
2019/08/29
1.7K0
知识整理之CSS篇
css多浏览常见问题
关于CSS对各个浏览器兼容已经是老生常谈的问题了, 网络上的教程遍地都是. 以下内容没有太多新颖, 纯属个人总结, 希望能对初学者有一定的帮助. 一、CSS HACK 以下两种方法几乎能解决现今所有HACK. 1, !important 随着IE7对!important的支持, !important 方法现在只针对IE6的HACK. (注意写法.记得该声明位置需要提前.) <style> #wrapper { width: 100px!important; /* IE7+FF */ wid
用户1112962
2018/07/03
1.2K0
相关推荐
前端面试题-CSS Hack
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验