ie8如何兼容css中的选择器:before和:checked

html-css09

ie8如何兼容css中的选择器:before和:checked,第1张

为了实现ridio 选中ridio 样子自动变用了input:checked + .ridio {background-image:url(../img/radio1.png)}实现,但是后来发现:checked 选择器ie8以下不能识别,最近从一个大神那发现了了一个可以使ie8版本识别css3伪类和属性选择器selectivizr,地址为http://www.zhangxinxu.com/wordpress/2010/09/selectivizr-%E8%AE%A9ie6ie7ie8%E6%94%AF%E6%8C%81css3%E4%BC%AA%E7%B1%BB%E5%92%8C%E5%B1%9E%E6%80%A7%E9%80%89%E6%8B%A9%E5%99%A8/

实际使用时发现,ridio 选中样式不会随着点击选中而改变样子,看起来好像就没有什么作用。后来发现,原来在ie8下我的Input隐藏了display:none这种写法好像ie8默认不能点击,只能用filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0)来透明隐藏住按钮,但是input所占的空间还是存在的,这样看起来比较丑,但是目前也没啥比较好的解决方法,只想这个样式在ie8以下使用就好,ie9以上还是用display:none来实现。

问题来了,之前是:root来区分ie9的hack的,结果selectivizr支持了:root属性,只能换了另一种写法

[html] view plain copy

<span style="font-size:14px">.hide{filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0)}

@media all and (min-width:0) {

.hide{display:none}

}

</span>

第一个li的高度高了,所以后面float的元素就卡住了。你可以直接在第一个li里面设置一下style="line-height:29px",就可以看出来效果了。反正就是这个的原因。至于怎么解决,没有找到问题产生的原因啊。。。。------解决方案--------------------.parameterslispan这个里面的字体大小影响的,改为12px就可以解决这个问题。至于为何这个字体会影响,估计是跟line-height在混杂模式下,浏览器的解释不同照成的吧。总结性的影响因素,还说不上来。。。

nth-child这个倒是可以换个思路实现,这个一般用在ul li标签中,奇偶行的mouseover效果,ul li:nth-child(odd){color:#fff}/*选取偶数*/

ul li:nth-child(even){color:#fff}/*选取奇数*/

以上的是兼容的写法,改进后的写法如下:

ul li:first-child{color:#fff}/*选取第一个li*/

ul li:first-child+li+li{color:#fff}/*选取第三个li*/

依次还可以有第5个li,等等,好在开发中li的个数一般不会多,虽然是个比较麻烦的做法,好歹能解决问题,至于after,before之类的,也不能说没法实现,也是曲线救国的方法,有个简单的思路你可以参考下,你应该清楚的是after是主样式加载完之后才表现的,after说白了也是一个样式表,或者说是个额外的class,那么好了,后期我们通过JS可以添加这个Class了,具体这个after通过鼠标点击添加呢 还是download时候就加载这个就看你了,以上为思路,仅供参考