伪元素浅谈

Author Avatar
AppleSun 5月 26, 2016

伪类属性、伪类元素,因为不同于别的HTML功能性、语义性标签,却有它存在的价值,值得我们玩味。今天 咱们来看看 关于伪类元素的那些事

img

首先回顾一下咱们接触过的 伪类属性

也就是我们所说的爱恨法则

  • L : link: 未访问的链接
  • o
  • V : visited 已访问的链接
  • e
  • a
  • n
  • d
  • H : hover 鼠标移动到链接上
  • A
  • t : active 选定的链接
  • e
CSS 定义中
  • 在 a:hover 必须被置于 a:link 和 a:visited 之后,才是有效的。
  • a:active 必须被置于 a:hover 之后,才是有效的。
  • 伪类名称对大小写不敏感。

在实际的使用中 除了 hover 属性,其余的这几个使用频率较低!

好了废话不多说 ,来谈谈重点吧

before after 的妙用

或许有人先前接触过 before 和 after,不过使用的方式局限于:给文字前后加内容

1
2
3
4
div:before{
content:'Someone saies:';
background:red;
}

亦或者是这样:添加色块 或者 添加图片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
div{
position:relative;
}
div:before{
content:url(../images/demo.jpg);
width:15px;
height:15px;
}
div:after{
content:'';
width:15px;
height:15px;
background:grey;
display:block;
position:absolute;
left:0;
top:0;
}

但是 就 before 、after 而言,它还有其他的用途:

例如:

  • 给所需内容左右增加更多样式

    上图简单运用了

1
2
3
4
p:before {
content: open-quote;}
p:after{
content: open-quote;}
  • 迷人的阴影

在这里我将向大家演示,如何做出上图的效果:

HTML part:

1
2
3
<div class="box effect">
<h3>TEST txt</h3>
</div>

CSS part:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
    .box h3{
text-align:center;
position:relative;
top:80px;
}
.box {
width:70%;
height:200px;
background:#FFF;
margin:40px auto;
}
.effect
{
position: relative;
}
.effect:before, .effect:after
{
z-index: -1;
position: absolute;
content: "";
bottom: 25px;
left: 10px;
width: 50%;
top: 80%;
max-width:300px;
background: #777;
box-shadow: 0 35px 20px #777;
transform: rotate(-8deg);
}
.effect:after
{
transform: rotate(8deg);
right: 10px;
left: auto;
}

事实上 就是这么简单

img

为了给大家加深巩固一下,
我在给大家做这个效果:

HTML part:

1
2
3
<div class="box effect">
<h3>TEST txt</h3>
</div>

CSS part:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
.box h3{
text-align:center;
position:relative;
top:80px;
}
.box {
width:70%;
height:200px;
background:#FFF;
margin:40px auto;
}
.effect
{
position:relative;
box-shadow:0 1px 4px rgba(0, 0, 0, 0.3), 0 0 40px rgba(0, 0, 0, 0.1) inset;
}
/*给元素本身加相对定位,并设置一个外阴影,一个内阴影(inset)*/
.effect:before, .effect:after
{
content:"";
position:absolute;
z-index:-1;
box-shadow:0 0 20px rgba(0,0,0,0.8);
top:10px;
bottom:10px;
left:0;
right:0;
border-radius:100px / 10px;
}
.effect:after
{
right:10px;
left:auto;
transform:skew(8deg) rotate(3deg);
/*变形 旋转*/
}

这里巧妙地运用了 CSS3的一些变形和阴影效果

接下来留一份问题给你,请问如下的图片效果怎么用 after before 做出来?

img

做出来的小伙伴可以在留言区留言或者 发送我的邮件,我将第一时间给你解答 1160948478@qq.com

Yours sincerely SunPing