CSS伪类:
Paste_Image.png
link:未被访问的链接
div:link{
//添加相关样式,例如:背景\字体颜色、长宽、字体大小等。
}
visited:被访问过后的样式
div:visited{
//添加相关样式,例如:背景\字体颜色、长宽、字体大小等。
}
hover:鼠标放上去的样式
div:hover{
//添加相关样式,例如:背景\字体颜色、长宽、字体大小等。
}
active:点击时的样式
div:active{
//添加相关样式,例如:背景\字体颜色、长宽、字体大小等。
}
focus:向拥有键盘输入焦点的元素添加样式,当点击获取焦点的时候,显示相关样式
input:focus
{
background-color:yellow;
}
first-child : 给第一个子元素添加样式
div:first-child{
font-weight:bold
}
lang : 向带有指定 lang 属性的元素添加样式
q:lang(no)
{
quotes: "~" "~"
}
<q lang="no">段落中的引用</q>
CSS伪元素
Paste_Image.png
很能说明问题的图片:
first-letter:
Paste_Image.png
first-line:
Paste_Image.png
before
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
p:hover:before{
content:"add before";
color:yellow;
}
</style>
</head>
<body>
<p>正文</p>
</body>
</html>
after
除了可以在元素后面添加内容以外,还可以用来清浮动。
.clearfix{zoom:1;}
.clearfix:after {clear:both;content:'.';display:block;width: 0;height: 0;visibility:hidden;}
before和after还可以画很多小图标,可以参考这个:http://www.cnblogs.com/ys-ys/p/5092760.html
有了以上伪类、伪元素,原本需要取个class名和事件的地方可以省略,原本需要加个标签元素的地方也省了,这就是特它们存在的意义。
伪类的效果可以通过添加一个实际的类来达到,而伪元素的效果则需要通过添加一个实际的元素才能达到,这也是为什么他们一个称为伪类,一个称为伪元素的原因。
css3为了明确伪类和伪元素的区别,已经明确了单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素
伪元素和伪类之所以这么容易混淆,是因为他们的效果类似而且写法相仿,但实际上 css3 为了区分两者,已经明确规定了伪类用一个冒号来表示,而伪元素则用两个冒号来表示。
:Pseudo-classes
::Pseudo-elements
但因为兼容性的问题,所以现在大部分还是统一的单冒号,但是抛开兼容性的问题,我们在书写时应该尽可能养成好习惯,区分两者。