您的当前位置:首页正文

CSS伪类和伪元素

来源:华佗小知识

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;}

有了以上伪类、伪元素,原本需要取个class名和事件的地方可以省略,原本需要加个标签元素的地方也省了,这就是特它们存在的意义。

伪类的效果可以通过添加一个实际的类来达到,而伪元素的效果则需要通过添加一个实际的元素才能达到,这也是为什么他们一个称为伪类,一个称为伪元素的原因。

css3为了明确伪类和伪元素的区别,已经明确了单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素

伪元素和伪类之所以这么容易混淆,是因为他们的效果类似而且写法相仿,但实际上 css3 为了区分两者,已经明确规定了伪类用一个冒号来表示,而伪元素则用两个冒号来表示。

:Pseudo-classes
::Pseudo-elements

但因为兼容性的问题,所以现在大部分还是统一的单冒号,但是抛开兼容性的问题,我们在书写时应该尽可能养成好习惯,区分两者。