【哪些标签不支持伪元素?】
我也是才知道这个姿势。为了不误导读者,就赶紧补充一下。
伪元素虽然强大,但是还是有一些特定的标签是不支持伪元素 before 和 after 的。
诸如 <img> 、<input>、<iframe>,这几个标签是不支持类似 img::before 这样使用。
究其原因,要想要标签支持伪元素,需要这个元素是要可以插入内容的,也就是说这个元素要是一个容器。而 input,img,iframe 等元素都不能包含其他元素,所以不能通过伪元素插入内容。
【css3和css伪类和伪元素区别与兼容性】
单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素。
伪元素由双冒号和伪元素名称组成。双冒号是在当前规范中引入的,用于区分伪类和伪元素。但是伪类兼容现存样式,浏览器需要同时支持旧的伪类,比如:first-line、:first-letter、:before、:after等。
对于CSS2之前已有的伪元素,比如:before,单冒号和双冒号的写法::before作用是一样的。
所以,如果你的网站只需要兼容webkit、firefox、opera等浏览器,建议对于伪元素采用双冒号的写法,如果不得不兼容IE浏览器,还是用CSS2的单冒号写法比较安全。
以上的意思为:css2伪类和伪元素都是用单引号,所有的浏览器都兼容,但是css3伪类为单引号如:hover ,伪元素为双引号::before;但是双引号IE8以下不兼容
【关于 ':before' 和 ':after' 伪元素】
':before' 和 ':after' 伪元素用来在一个元素的内容之前或之后插入生成的内容。
【解决方案】
(1)单独写针对IE6/IE7/IE8浏览器样式,先介绍IE浏览器单独写CSS样式的几种方法,本文总结了IE hacks、条件注释 CSS、条件注释 html 标签3种方法,需要的朋友可以参考下
使用 JavaScript 判断 IE6 IE7 IE8(Q) 并在其中通过脚本实现 ':before' 及 ':after' 伪元素的效果;
因为万恶的 IE 存在各种的不标准,因此,在进行页面开发时不免要为 IE 单独写一些 CSS 。熟悉的方法有 IE hacks 和条件注释 CSS(Conditional Stylesheets),下面,不妨讨论一下这两种方法的优缺点。
①IE hacks
举个例子,一个元素在其他浏览中的左边距是 30px ,而在 IE6 中则设置为 20px ,可以如下编写:
.demo {margin-left: 30px; _margin-left: 20px; }对我个人而言,喜欢条件注释 CSS 是胜于 IE hacks ,光是 IE hacks 里面带有“hacks”这个单词已经让人很不舒服,总觉得这是偏方,而且是很偏的解决方案。
但是,IE hacks 也有它的优点——
1.CSS hacks 内嵌在普通的 CSS 里面,不会产生更多 HTTP 请求。
2.CSS hacks 内嵌在普通的 CSS 里面,编写时比较方便。
当然,它的缺点也很明显——
1.它是不标准的产物。
2.内嵌在其他 CSS 中,不便维护。尤其是当 hacks 的数量比较多的时候维护简直是个恶梦。
3.内嵌在其他 CSS 中,即使在非 IE 浏览器中也会被加载,浪费资源。
②条件注释 CSS
同样是上面的例子,如果使用条件注释 CSS ,可以如下编写:
<!--[if IE 6 ]> <link rel="stylesheet" type="text/css" media="all" href="./ie6.css" /> <![endif]-->
.demo {margin-left: 20px; }这里说明一下:条件注释是一种 IE 专有的、对常规(X)HTML 注释的 Miscrosoft 扩展。从 W3C 标准来说,它也是不标准的产物,但它是微软官方推出的针对 IE 进行开发的方式,并且条件注释对于其他所有浏览器作为常规注释出现,因此对其他浏览器无害。
条件注释 CSS 的好处是在独立的 CSS 文件中编写,能准确控制在特定的 IE 中加载,不会造成资源浪费,并且便于维护。
缺点就是会产生多余的 HTTP 请求,尤其是当你需要兼容的 IE 版本很多的时候,你就需要产生多个 HTTP 请求,这对于本来通道数目就少的低版本 IE 来说无疑会影响页面加载速度。
【总结对比】:显然,以上两种方法都不是很好的方法,因此,接下来介绍一种相对来说更好的解决方案。
③条件注释 html 标签
这种方案也是利用条件注释,但并不是对 CSS 使用条件注释,而是对 html 标签使用条件注释,引入不同的 class ,从而区分不同的 IE 以及其他浏览器。例如:
<div id="phpcode8" class="msgborder"><pre name="code" class="html"></pre></div>
<!DOCTYPE html> <!--[if IE 6 ]> <html class="ie6 lte_ie6 lte_ie7 lte_ie8" lang="zh-CN"> <![endif]--> <!--[if lte IE 6 ]> <html class="lte_ie6 lte_ie7 lte_ie8" lang="zh-CN"> <![endif]--> <!--[if lte IE 7 ]> <html class="lte_ie7 lte_ie8" lang="zh-CN"> <![endif]--> <!--[if lte IE 8 ]> <html class="lte_ie8" lang="zh-CN"> <![endif]--> <!--[if (gte IE 9)|!(IE)]><!--><html lang="zh-CN"><!--<![endif]-->然后把针对特定 IE 的 CSS 加上相应的 class 并写在普通 CSS 文件里即可。例如上面的例子则可以在 CSS 文件里编写:
.ie6 .demo {margin-left: 20px; }这种方法吸收了条件注释表达式的好处同时又不会产生多余的 HTTP 请求,只是由于这些针对特定 IE 的 CSS 与普通的 CSS 放在一起,即不是相应的 IE 也会被加载,因此如果 CSS 数目比较多的话就会像使用 hacks 那样,造成浪费,开发者需要根据具体情况选择方法。
以IE8为例:引用IE8样式文件
<!--[if lte IE 8 ]> <link rel="stylesheet" type="text/css" media="all" href="./assets/css/ie8.css" /> <![endif]-->原css文件代码
.icon-spinner::before { content: "\f110"; } .icon-circle::before { content: "\f111"; }
相关推荐
对于现代浏览器,推荐使用双冒号`::`来表示伪元素,而对于较旧的浏览器,如IE,可能需要使用单冒号`:`的CSS2语法来保证兼容性。 在实际开发中,理解并熟练运用`border`属性和伪元素,能够帮助我们创造出丰富多样的...
针对标题提及的"如何让div+css兼容ie6 ie7 ie8 ie9和FireFox Chrome等浏览器",这里将详细讨论一些关键的CSS兼容性问题及解决方案。 1. **DOCTYPE的影响**: DOCTYPE声明会影响浏览器进入何种文档模式。在HTML4或...
`或者使用伪元素如`::before`和`::after`来清除浮动。 3. **层级关系**:下拉菜单的子菜单需要在鼠标悬停时显示,这涉及到CSS的`display`属性。IE6不支持`:hover`伪类在非链接元素上,但可以通过为父元素添加`hover...
ClearFix是一种常用的技术,通过添加伪元素来清除浮动,避免布局问题: ```css /* ClearFix */ .clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } .clearfix {...
首先,"兼容ie低版本的星星评分"意味着这款插件采用了能够让旧版IE浏览器识别和执行的技术,可能是通过JavaScript或者CSS。IE6到IE8并不支持现代Web技术如HTML5和CSS3,因此,插件开发者可能使用了传统的DOM操作、...
例如,可以为父元素添加`zoom:1`触发hasLayout,或者使用`:before`伪元素结合`clear:both`。 4. **选择器支持**:IE6只支持基本的选择器,如ID、类、标签等,而不支持后代选择器、属性选择器等。IE7和IE8稍好,但仍...
"CSS兼容IE8代码"是指针对IE8浏览器进行优化的CSS(层叠样式表)代码,以确保在IE8中能够正常显示和运行网页设计。在IE8中,由于其对CSS2.1标准的支持不完整,以及特有的盒模型、滤镜等特性,常常会导致现代网页设计...
这个"CSS兼容IE和Firefox的技巧集合"压缩包提供了针对这两种浏览器的兼容性解决方案。 首先,我们要理解浏览器之间的差异主要源于对CSS标准的实现不一致。例如,IE常常遵循其自己的盒模型,而Firefox等现代浏览器...
在创建兼容IE6、7、8以及Firefox等主流浏览器的网页模式对话框时,开发者需要考虑不同浏览器之间的差异和兼容性问题。 首先,让我们了解一些基本概念。在HTML中,最原始的对话框是`<dialog>`元素,但这个元素在旧版...
本教程将聚焦于如何利用纯CSS实现一个兼容IE6的二级导航菜单,正如“纯css二级导航 兼容ie6”这个主题所示。 首先,让我们了解纯CSS导航菜单的基本概念。CSS(层叠样式表)是一种样式语言,用于描述HTML或XML(包括...
另外,随着浏览器更新换代,IE6的市场份额已非常低,大多数现代网站不再需要专门针对它进行兼容性处理。但如果你的网站仍需要支持较旧的浏览器,了解这些技术仍然很有价值。在开发过程中,建议使用渐进增强...
在现代浏览器中,我们可以利用CSS3的`::before`和`::after`伪元素,以及`rgba()`颜色函数来创建透明遮罩。但在IE6中,这些特性是不支持的。 为了兼容IE6,我们需要使用一些特定的技术和技巧。一种常见方法是使用一...
6. 计算选择器和伪类:IE6不支持复杂的CSS选择器和一些伪类,如`:nth-child()`,可以使用JavaScript库进行辅助。 通过ietester这样的工具,开发者可以在实际开发过程中及时发现并解决这些问题,提高网页在旧版IE中...
给before和after伪元素设置js效果的方法 在CSS中,伪元素(Pseudo-elements)是一种特殊的元素,它允许我们添加额外的元素而不扰乱文档本身。在某些情况下,我们需要给before和after伪元素设置js效果,以实现某些...
或者使用CSS伪元素: ```css #parent:after { content: ""; display: table; clear: both; } ``` 9. **自适应高度**: 在不支持`min-height`的浏览器中,可以使用JavaScript或者CSS的`overflow`属性来实现...
CSS3推荐使用双冒号`::`来区分伪元素和伪类,但为了兼容旧版本的IE8,有时仍会使用单冒号`:`。 3. **获取伪元素的属性值**: 使用`window.getComputedStyle()`方法可以获取元素及其伪元素的样式信息。此方法返回一...
尽管如此,IE7仍然存在一些兼容性问题,比如它对浮动元素的处理仍不完美,有时会出现“双倍边距”bug。此外,IE7对透明度的支持需要借助滤镜(filter)属性,而不是通用的opacity属性。 最后,IE8在2009年发布,对...
:before 伪元素在元素...估计大家很少用到这些 ,但是在技术飞速发展的现在,我觉得我们不能整天把时间浪费在兼容IE6上! 先看一下:after与:before甚模样: HTML中只有一个P标签,P里面有一行文字: <p> 一行测试文字
ie7.js通过动态创建DOM元素并应用样式来实现这些功能,从而帮助开发者在不牺牲样式表现的情况下,向后兼容老版本的IE。 ie8.js则是另一个类似的库,它扩展了ie7.js的功能,增加了对更多CSS3选择器的支持,比如:nth-...
标题“新浪多图片显示兼容IE”表明我们关注的是一个与网页开发相关的问题,特别是关于在Internet Explorer(简称IE)浏览器中正确显示多个图片的技术。在早期,IE由于其独特的渲染引擎,经常会在处理某些Web标准时与...