头闻号

东莞市邦信电子材料有限公司

工业用清洗剂

首页 > 新闻中心 > 科技常识:IE中奇怪的应用CSS的BUG分析
科技常识:IE中奇怪的应用CSS的BUG分析
发布时间:2024-09-22 08:34:47        浏览次数:1        返回列表

今天小编跟大家讲解下有关IE中奇怪的应用CSS的BUG分析 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了有关IE中奇怪的应用CSS的BUG分析 的相关资料,希望小伙伴们看了有所帮助。

今天要说这个问题就是这样的 先从插入CSS的三种方法说起: 外部样式(External Style Sheet)   当样式需要应用于很多页面时 外部样式表将是理想的选择。在使用外部样式表的情况下 你可以通过改变一个文件来改变整个站点的外观。每个页面使用 <link> 标签链接到样式表。<link> 标签在(文档的)头部: 复制代码代码如下: <head> <link rel="stylesheet"type="text/css"href="https://www.aidi.net.cn//css/mystyle.css"/> </head> 内部样式(Internal Style Sheet)   当单个文档需要特殊的样式时 就应该使用内部样式表。你可以使用 <style> 标签在文档头部定义内部样式表 就像这样: 复制代码代码如下: <head> <style type="text/css"> hr {color: sienna;} p {margin-left: 20px;} body {background-image: url("images/back40.gif");} </style> </head> 内联样式(Inline Styles)   由于要将表现和内容混杂在一起 内联样式会损失掉样式表的许多优势。请慎用这种方法 例如当样式仅需要在一个元素上应用一次时。要使用内联样式 你需要在相关的标签内使用样式(style)属性。Style 属性可以包含任何 CSS 属性。 复制代码代码如下: <p style="color: sienna; margin-left: 20px">This is a paragraph</p> 多重样式(Multiple Styles)   如果外部样式、内部样式和内联样式同时应用于同一个元素 就是使多重样式的情况 一般情况下优先级如下:   (外部样式)External style sheet <(内部样式)Internal style sheet <(内联样式)Inline style   之所以说是一般情况是因为可以使用!important来改变这种顺序 比如外部样式如果某个样式项使用了!important来提高优先级 其优先级将比内联样式高。还有个例外的情况就是如果外部样式放在内部样式的后面 则外部样式将覆盖内部样式: 复制代码代码如下: <head> <!--内部样式--> <style> h3{color:green;} </style> <!--外部样式style.css--> <!--h3{color:blue;}--> <link rel="stylesheet"type="text/css"href="https://www.aidi.net.cn//css/style.css"/> </head> <body> <h3>测试!</h3> </body> 文字的颜色将是蓝色 因为外部样式的蓝色覆盖了内部样式的绿色 这在主流浏览器中表现都是一致的 包括IE在内。然而另外一种方式插入样式 IE就表现出它的另类了。这种方法是使用脚本在外部样式前插入内部样式 即上面的内部样式用脚本创建出来 代码如下: 复制代码代码如下: (function(){ var agent = window.navigator.userAgent.toLowerCase(); var is_op = (agent.indexOf("opera") != -1); var is_ie = (agent.indexOf("msie") != -1) && document.all && !is_op; var is_ch = (agent.indexOf("chrome") != -1); var cssStr="h3 {color:green;}"; var s=document.createElement("style"); var head=document.getElementsByTagName("head").item(0); var link=document.getElementsByTagName("link"); link=link.item(0); if(is_ie) { if(link) head.insertBefore(s,link); else head.appendChild(s); document.styleSheets.item(document.styleSheets.length-1).cssText=cssStr; } else if(is_ch) { var t=document.createTextNode(); t.nodevalue=cssStr; s.appendChild(t); head.insertBefore(s,link); } else { s.innerHTML=cssStr; head.insertBefore(s,link); } })(); 在Firefox/Chrome/Safari/Opera中测试文字都是蓝色的 符合外部样式如果插入到内部样式前的话 外部样式将覆盖内部样式的原则 然而在IE下却是绿色的 也就是说IE在加载完页面文档 运行了脚本插入了内部样式之后 就把文字颜色设置成绿色了而忽略了后面外部样式。不知道大家是否也碰到这样的问题 欢迎讨论...... 作者:梦想 出处:http://www.cnblogs.com/lhb25

来源:爱蒂网