问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用CSS分别单独定义IE6、7、8的width属性

发布网友 发布时间:2022-04-27 11:17

我来回答

3个回答

热心网友 时间:2022-05-08 07:00

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


1.原理


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

 
 CSS Hack大致有3种表现形式,CSS类内部Hack、选择器Hack以及HTML头部引用(if IE)Hack,CSS
Hack主要针对类内部Hack:比如 IE6能识别下划线"_"和星号" * ",IE7能识别星号" *
",但不能识别下划线"_",而firefox两个都不能认识。等等

  选择器Hack:比如 IE6能识别*html .class{},IE7能识别*+html .class{}或者*:first-child+html .class{}。等等

 
 HTML头部引用(if IE)Hack:针对所有IE:<!--[if
IE]><!--您的代码--><![endif]-->,针对IE6及以下版本:<!--[if lt IE
7]><!--您的代码--><![endif]-->,这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都
会生效。

  书写顺序,一般是将识别能力强的浏览器的CSS写在后面。下面如何写里面说得更详细些。

2、常用的CSS hack方式

  

  (1)方式一 条件注释法

  只在IE下生效

  <!--[if IE]>

  这段文字只在IE浏览器显示

  <![endif]-->

  只在IE6下生效

  <!--[if IE 6]>

  这段文字只在IE6浏览器显示

  <![endif]-->

  只在IE6以上版本生效

  <!--[if gte IE 6]>

  这段文字只在IE6以上(包括)版本IE浏览器显示

  <![endif]-->

  只在IE8上不生效

  <!--[if ! IE 8]>

  这段文字在非IE8浏览器显示

  <![endif]-->

  非IE浏览器生效

  <!--[if !IE]>

  这段文字只在非IE浏览器显示

  <![endif]-->

  (2)方式二 类内属性前缀法

  属性前缀法是在CSS样式属性名前加上一些只有特定浏览器才能识别的hack前缀,以达到预期的页面展现效果。

  IE浏览器各版本 CSS hack 对照表

说明:在标准模式中

“-″减号是IE6专有的hack

“\9″ IE6/IE7/IE8/IE9/IE10都生效

“\0″ IE8/IE9/IE10都生效,是IE8/9/10的hack

“\9\0″ 只对IE9/IE10生效,是IE9/10的hack

(3)CSS hack方式三:选择器前缀法

选择器前缀法是针对一些页面表现不一致或者需要特殊对待的浏览器,在CSS选择器前加上一些只有某些特定浏览器才能识别的前缀进行hack。

目前最常见的是

*html *前缀只对IE6生效*+html *+前缀只对IE7生效@media
screen\9{...}只对IE6/7生效@media \0screen {body { background: red;
}}只对IE8有效@media \0screen\,screen\9{body { background: blue;
}}只对IE6/7/8有效@media screen\0 {body { background: green; }}
只对IE8/9/10有效@media screen and (min-width:0\0) {body { background: gray;
}} 只对IE9/10有效@media screen and (-ms-high-contrast: active),
(-ms-high-contrast: none) {body { background: orange; }} 只对IE10有效等等


3、实际应用

比如要分辨IE6和firefox两种浏览器,可以这样写:

div{
background:green;/*forfirefox*/
*background:red;/*forIE6*/(bothIE6&&IE7)
}

我在IE6中看到是红色的,在firefox中看到是绿色的。

  解释一下:

  上面的css在firefox中,它是认识不了后面的那个带星号的东西是什么的,于是将它过滤掉,不予理睬,解析得到的结果是:div{background:green},于是理所当然这个div的背景是绿色的。

  在IE6中呢,它两个background都能识别出来,它解析得到的结果是:div{background:green;*background:red;},于是根据优先级别,处在后面的red的优先级高,于是当然这个div的背景颜色就是红色的了。

4、所以单独定义IE6、7、8的width属性代码如下

div{
width:200px;/*所有浏览器都能识别 包括IE7*/
-width:180px;/*只有IE6识别,识别后会覆盖通用width的设置,达到IE6单独设置的效果*/
-width:180px\0;/*IE8以上的浏览器识别,识别后会覆盖通用width的设置,达到IE8单独设置的效果*/
}

热心网友 时间:2022-05-08 08:18

width:8px\0; /*ie8*/
+width:7px; /*ie7*/
_width:6px; /*ie6*/
你试试去

热心网友 时间:2022-05-08 09:53

你好,可以用hack来区分不同的IE浏览器:
仅IE6识别 : _margin-left:10px;
IE6/IE7识别 : *margin-left:10px;
仅IE8识别 : margin-left:10px\0;
仅IE识别 : margin-left:10px\9;
去试试吧,希望可以帮到你!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
山外面包一个病旁是什么字 我的笔记本电脑显示电源的灯一直在绿色和橘红色之间闪烁,这是怎么回事... 笔记本电脑3个灯笔记本电脑这几个指示灯分别是啥意思 ...我的y470.第3个指示灯是橘红色的,开不了机,不知道怎么了?就开不了... QQ空间皮肤的代码是怎么放进去的啊. 为什么我在地址栏中输入皮肤代码按回车键,但一按空间就没有了 请教个问题哈~关于qq空间背景代码的,我在IE栏里输了代码,为啥每次弹出 ... win10删除多余的输入法 win10怎么删除多余的输入法 win10输入法怎么删除 win10输入法删除方法 如何做出爽口不腻、口味纯正的孟和尚粉肠? css 求救 html/css 有几点不明白,希望指点 谢谢 css代码兼容ie7 前端工资那么高,里面都有哪些技术 css问题! CSS1-CSS3 lt;color&gt;颜色知识知多少 了解CSS之前需要学习什么? css知多少之绝对定位小记 村主任辞职报告怎么打, 苹果上滑不出来怎么办 企业纳税筹划的意义 企业税收筹划的目标与意义是什么? 企业税收筹划的意义有哪些 企业做税收筹划的目的是什么? 企业为什么要做税收筹划 税收筹划能够为企业带来的好处有哪些? 为什么要做税收筹划? 新时期,企业为什么要选择税务筹划 为什么公司要税收筹划呢,有何作用呢 新时期,企业为什么要做税务筹划 一行7个 百分百显示 css HTML与CSS入门经典(第七版)示例代码,哪里有免费下载啊?谢谢! 苹果6屏幕从下往上划快捷功能突然消失怎么办? 电子发票怎样才能找到保存生成清单呢? 电子发票怎么导出? 在金税盘里开具的增值税电子普通发票如何下载到电脑上 新能源汽车动力电池有哪些 新能源汽车用什么电池 如何订外贸合同? 外贸中怎么和老外签订合同 外贸赔偿协议 外贸合同号怎么填 新婚新房楼门或宅门对联 美兴楼大门对联7字,求高手 东莞买房,可以写夫妻双方名字 七字对联,用于楼门求上联新字开头,下联以寨子开头的七字对联 求农村新楼大门对联! 土楼大门对联? 农村房子,一楼和二楼大门各需一副七字的大门对联。房子叫:孟都楼,以孟、都开头。 围兴楼祖宅大门,门楼求一对联