CSS3基础使用CSS3阴影属性制作简单雪花图案的步骤

使用CSS3阴影属性制作简单雪花图案的步骤

常见的雪花图案大致轮廓是一个星号的形状,实现星号的方法一般是在一个长条矩形上分别叠加旋转60度和-60度的两个长条矩形,如下图:

CSS制作星号.png

本文所分享的CSS制作的雪花图案最终效果如下图所示,整体形状和刚才这个“星号”图案相似:

CSS雪花图案.png

首先写出html部分,定义一个div用于实现“星号”图案,另一个子div用于其他装饰部分:

<div id="snow">
 <div class="flake"></div>
</div>

下面先通过CSS伪元素实现“星号”部分:

#snow {
 margin:160px;position:relative;
 width:200px;height:20px;
 border-radius:25px;
 background-color:#09f;
}
#snow:before, #snow:after {
 content:" ";position:absolute;
 width:inherit;height:inherit;
 border-radius:inherit;
 background-color:inherit;
}
#snow:before {
 transform:rotate(-60deg);
}
#snow:after {
 transform:rotate(60deg);
}

这样就简单的做出了这个“星号”图案,也就是雪花的大致轮廓:

CSS雪花图案1.png

下面将子元素div也做成一个较小尺寸的“星号”图案,定位到“大星号”的正中心:

.flake {
 position:absolute;left:0;right:0;top:0;bottom:0;margin:auto;
 width:35px;height:10px;border-radius:10px;
}
.flake:before, .flake:after {
 content:" ";position:absolute;
 width:inherit;height:inherit;
 border-radius:inherit;
 background-color:inherit;
}
.flake:before {
 transform:rotate(-60deg);
}
.flake:after {
 transform:rotate(60deg);
}

这里除了尺寸之外,大部分CSS定义和“大星号”是一样的,所以以上很多代码可以合并。制作这个“小星号”的目的是之后便于采用阴影属性来实现雪花的装饰部分,例如:

.flake {
 box-shadow:45px 50px 0 2px #f3f,-45px -50px 0 2px #f3f;
}

这里给“小星号”横线部分定义这样的阴影样式,即可得到下面的效果:

CSS雪花图案2.png

便于观察,这里阴影的颜色设置为粉色,同样的方法,给“小星号”的三条边都加上对应的阴影属性:

.flake, .flake:before, .flake:after {
 box-shadow:45px 50px 0 2px #f3f,-45px -50px 0 2px #f3f,
 45px -50px 0 2px #f3f,-45px 50px 0 2px #f3f;
}

这样就将雪花每个方向的装饰效果都做好了,当前效果如下图:

CSS雪花图案3.png

将阴影的颜色改为和“大星号”的颜色一样就可以了,整理之后,整体代码如下:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>CSSAAA TEST DEMO</title>
<style type="text/css">
#snow {
 margin:160px;position:relative;
 width:200px;height:20px;
 border-radius:25px;
 background-color:#09f;
}
.flake {
 position:absolute;left:0;right:0;top:0;bottom:0;margin:auto;
 width:35px;height:10px;border-radius:10px;
}
#snow:before, #snow:after, .flake:before, .flake:after {
 content:" ";position:absolute;
 width:inherit;height:inherit;
 border-radius:inherit;
 background-color:inherit;
}
#snow:before, .flake:before {
 transform:rotate(-60deg);
}
#snow:after, .flake:after {
 transform:rotate(60deg);
}
.flake, .flake:before, .flake:after {
 box-shadow:45px 50px 0 2px #09f,-45px -50px 0 2px #09f,
   45px -50px 0 2px #09f,-45px 50px 0 2px #09f;
}
</style>
<script src="https://cdn.bootcss.com/prefixfree/1.0.7/prefixfree.min.js"></script>
</head>
<body>
<div id="snow">
 <div class="flake"></div>
</div>
</body>
</html>

这里通过inherit这个值设置伪元素的样式,便于样式的合并,也便于颜色的修改。

站长Colin Gao,85后自由职业者,爱钻研,爱学习网页设计。建立本站的目的是整理学习笔记,分享学习经验,认识更多的朋友。感谢您阅读本站的文章,部分内容参考了网上的一些教程,但我会尽量根据自己的理解写更多原创的东西,本站网址如下,欢迎转载:
如果方便的话,转载请注明来自:http://www.cssaaa.com/css3/158.html