CSS中有一个特性允许我们添加额外元素而不扰乱文档本身,这就是“伪元素”。
具体参考mdn关于伪元素的解释
自己去看去试,具体这里就不多描述了,做前端的基本都会用。
今天总结一下在我做官网实际项目中遇到的一个需求,用伪元素:before 和 :after实现的迷人阴影效果。要感谢公司设计师草原同学,总是不断鞭策我刷新提升我们开发工作者的审美观😄😄😄。。。
使用伪元素
使用伪元素是相对容易的,:before将会在内容之前“添加”一个元素而:after将会在内容后“添加”一个元素。在它们之中添加内容我们可以使用content属性。
伪元素样式
尽管作为“虚假”的元素,事实上伪元素表现上就像是“真正”的元素,我们能够给它们添加任何样式,比如改变它们的颜色、添加背景色、调整字体大小、调整它们中的文本等等。
因此,我们可以给接下来的伪元素使用CSS Box Shadow属性!
box-shadow: inset horizontal vertical blur spread colour;
举例:
box-shadow: 10px 10px;
box-shadow: 10px 10px 5px #888;
box-shadow: inset 2px 2px 2px 2px black;
box-shadow: 10px 10px #888, -10px -10px #f4f4f4, 0px 0px 5px 5px #cc6600;
好了,大致需具备的基础至少有了,开始实现设计师同学的需求吧。
实现阴影效果
没错,就是要这个阴影效果,真的很漂亮。
开始写代码👇
html结构:
<div class="box effect2">
<h3>伪元素实现的阴影效果</h3>
</div>
css代码:
.box h3{
text-align:center;
position:relative;
top:80px;
}
.box {
width:400px;
height:200px;
background:#FFF;
margin:40px auto;
border: 1px solid #f7f7f7;
}
.effect2{
position: relative;
}
.effect2::before, .effect2::after{
z-index: -1;
position: absolute;
content: "";
bottom: 15px;
left: 10px;
width: 50%;
top: 80%;
max-width:300px;
background: #777;
box-shadow: 0 15px 10px #aaa;
transform: rotate(-3deg);
}
.effect2::after{
transform: rotate(3deg);
right: 10px;
left: auto;
}
demo效果