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

html-css012

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>

一、css3之前的选择器

ID选择器,#

类选择器,.

包含选择器(E F)

伪类选择器(:link,visited,hover,active,focus,first-child)

伪元素选择器(::first-line,first-letter,before,after)

通配选择器(.)

属性选择器(foo[name='martin'])

子包含选择器(E>F)

相邻兄弟选择器(E+F)

二、css3新增选择器

新增属性选择器:

E[foo^='bar'] 匹配E元素,该元素包含foo属性,且foo属性值以bar开头

E[foo$='bar'] 匹配E元素,该元素包含foo属性,且foo属性值以bar结尾

E[foo*='bar'] 匹配E元素,该元素包含foo属性,且foo属性值包含bar字符串

新增结构伪类选择器:

E:root 匹配文档所在的根元素

E:nth-child(n) 匹配E所在父元素第n个匹配E的元素,非E的子元素也参与排序,若第n个子元素不是E元素,则该语句没有效果(注意这里的n从1开始)

E:nth-last-child(n) 匹配E所在父元素倒数第n个匹配E的元素

E:nth-of-type(n) 匹配E所在父元素第n个匹配E的元素,非E的子元素不参与排序(n同样是从1开始)注意区别nth-child(n)

E:last-child

E:first-of-type

E:last-of-type

E:only-child

E:only-of-type

E:empty

另外,使用前要考虑浏览器版本,新增css3选择器存在兼容性问题。平时多多练习,多动手。

CSS 元素选择器(也称为类型选择器)通过 Node 节点名称匹配元素。

因此,在单独使用时,寻找特定类型的元素时,元素选择器都会匹配该文档中所有此类型的元素。

根据元素的类属性中的内容匹配元素。

类属性被定义为一个以空格分隔的列表项,在这组类名中,必须有一项与类选择器中的类名完全匹配,此条样式声明才会生效。

选择器会根据该元素的 ID 属性中的内容匹配元素。

元素 ID 属性名必须与选择器中的 ID 属性名完全匹配,此条样式声明才会生效。

在 CSS 中,一个星号( * )就是一个通配选择器。它可以匹配任意类型的 HTML 元素。

在配合其他简单选择器的时候,省略掉通配选择器会有同样的效果。比如,*.warning 和.warning 的效果完全相同。

在 CSS3 中,星号( * )可以和命名空间组合使用:

CSS 属性选择器通过已经存在的属性名或属性值匹配元素。

相邻兄弟选择器 ( + ) 介于两个选择器之间,当第二个元素紧跟在第一个元素之后,并且两个元素都是属于同一个父元素的子元素,则第二个元素将被选中。

兄弟选择符,位置无须紧邻,只须同层级,A~B 选择 A 元素之后所有同层级 B 元素。

当使用 > 选择符分隔两个元素时,它只会匹配那些作为第一个元素的直接后代(子元素)的第二元素。

通常用单个空格( )字符表示)组合了两个选择器,

如果第二个选择器匹配的元素具有与第一个选择器匹配的祖先(父级,父级的父级,父级的父级的父级等)元素,则它们将被选择。

CSS 选择器列表( , ),常被称为并集选择器或并集组合器,选择所有能被列表中的任意一个选择器选中的节点。

: 伪选择器支持按照未被包含在文档树中的状态信息来选择元素,即指定要选择的元素的特殊状态。

例如, :hover 可被用于在用户将鼠标悬停在按钮上时改变按钮的颜色。

具体详见

:: 伪选择器用于表示无法用 HTML 语义表达的实体。

伪元素是一个附加至选择器末的关键词,允许你对被选择元素的特定部分修改样式。

例如, p::first-line 匹配所有 <p> 元素的第一行。

具体详见