常用的选择器

伪 类

:link,:visited,:hover,:focus,:active

:link和:visted称为链接伪类,只能应用于锚点。:hover,:active,:focuc称为动态伪类,理论上可以应用于任何元素。大多数浏览器都支持这个功能。但IE6只注意应用于锚点的链接:active和:hover选择器,完全忽略:focus。IE7在任何元素上都支持:hover,但是忽略:active和:focus。

可以把伪类连接在一起,创建更复杂的行为,如:在已访问和未访问的连接上实现不同的鼠标悬停效果。 a:visited:hover{ color:olive; }

通用选择器

*

高级选择器

子选择器和相邻同胞选择器

子选择器:#nav>li。IE7和更高的版本都支持子选择器。但是IE7中有个小bug,如果父元素和子元素之间有HTML注释,就会出现问题。

在IE6采用覆盖方式:#nav li{background:url(); padding-left:10px;} 
#nav li *{ background-image:0; padding-left:0; }

相邻同胞选择器:h2 + p{ font-size:12px; color:#777; },同样此方法在IE7终会有bug。

属性选择器

acronym[title]{...} 
acronym[title]:hover,acronym[title]:focus{...}

a[rel="nofollow"]{...} 
[id="header"]{...} 该方法在IE6中不支持 ,因此Ie6中 只能 #header{...}来实现。

层叠和特殊性

层叠给每个规则分配一个重要度,将规则指定为!important(ie7,ie8,firefox,chrome等高端浏览器下,已经可以识别 !important属性, 但是IE 6.0仍然不能完全识别,汗! important的样式属性和覆盖它的样式属性单独使用时(不在一个{}里),IE 6.0认为! important优先级较高,否则当含! important的样式属性被同一个{}里的样式覆盖时,IE 6.0认为! important较低! important,最主要是为了IE 6.0浏览器。)
例如:最重要的一点是:IE 6.0一直都不支持这个语法,而其他的浏览器都支持。因此我们就可以利用这一点来分别 给IE和其他浏览器不同的样式定义,
例如,我们定义这样一个样式:
.colortest {
border:20px solid #60A179 !important;
border:20px solid #00F;
padding: 30px;
width : 300px;
}
在Mozilla中浏览时候,能够理解!important的优先级,因此显示#60A179的颜色:
在IE中浏览时候,不能够理解!important的优先级,因此显示#00F的颜色:
可以看到,利用!important,我们可以针对IE和非IE浏览器设置不同的样式,只要在非IE浏览器样式的后面加 上!important。
ie6不完全支持!important
IE支持重定义中的!important,例如:
.yuanxin {color:#e00!important;}
.yuanxin {color:#000;}
你将会发现定义了样式class="yuanxin"时,在IE下,字体显示为红色(#e00)。
但不支持同一定义中的!important。例如:
.yuanxin {color:#e00!important;color:#000;}
此时在IE6下不支持,你将会发现定义了样式class="yuanxin"时,字体显示为黑色(#000)。
ie6中:
/*样式1*/
#a{100 !important;} /*有效*/
#a{50px;} /*无效*/
/*样式2*/
#a{100px !important; 50px;} /*100px无效,50px 有效*/

原文地址:https://www.cnblogs.com/lmy-moonsky/p/3392474.html