我们都知道,在CSS中有很多选择器,例如id(#), class(.),属性[attr],这些虽然可以满足一些需要,但有时候还力有未逮。伪类和伪元素就提供了一个有益的补充,可以使我们更高效编码。伪类和伪元素是预定义的、独立于文档元素的,它们不是从DOM中获取的,不是基于元素本身特征的(id,类,属性等)。它们从元素的特殊状态来获取,比如元素的兄弟元素,子元素,文本元素的第一个字符等。
CSS伪类: 和一般的DOM中的元素样式不一样,它并不需要任何DOM内容。只是插入了一些修饰类的元素,这些元素对于用户来说是可见的,但是对于DOM来说不可见。伪类产生的样式效果我们也可以通过添加一个class来实现。伪类选择元素基于的是当前元素处于的状态,或者说元素当前所具有的特性,亦或是它所处的环境,而不是元素本身所具有的id、class、属性等静态的标志。当元素的状态变化时,由伪类定义的元素样式也会随之变化,这是和由id(#), class(.),属性[attr]选择器定义的样式是大不相同的。此可以看出,它的功能和class有些类似,但它是基于文档之外的抽象,所以叫伪类。
一、UI元素状态伪类
E:checked 指定当表单中的radio单选框或checkbox复选框处于选取状态时的样子(FF中要写成:-moz-checked);
E:default 指定当页面打开时默认处于选区状态的radio或checkbox控件的样式;
E:indeterminate 指定当页面打开时,如果一组单选框中任何一个单选框都没有被设定为选取状态时整组单选框的样式,如果用户选取了一个单选框,则该样式被取消;
E::selection 指定当元素处于选中状态时的样式.
二、结构伪类
四、否定选择器
CSS伪元素与伪类类似,它可以用来选择元素的某些部分,这些部分可能不包含在<div>或者<span>中,不方便用其他方法来选择。比如,:first-letter伪元素可以用来选择一个元素中文本的第一个字符,这样就可以创建一些特效。
CSS伪元素有:
那么在CSS3中,也对伪元素进行了一定的调整,在以前的基础上增加了一个“:”也就是现在变成了::first-letter,::first-line,::before,::after。
另外他还增加了一个::selection
,::selection
用来改变浏览网页选中文的默认效果。
原文:http://www.cnblogs.com/syfwhu/p/4312827.html