总结一下掘金大佬们画月亮的几种方式

我正在参加中秋创意投稿大赛,详情请看:中秋创意投稿大赛

大佬们各显神通,绘制的月亮和动画一个比一个漂亮,特来学习。

圆月基调

月亮是晚上出现的,所以背景自然是黑色。

画圆咱们就不多说了,一个border-radius: 50%搞定。

基本框架代码如下:

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
<!DOCTYPE html>
<title>
只画月亮
</title>
<body>
<div class="moon"></div>
</body>
<style>
body {
width: 100vw;
height: 100vh;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
background: black;
}

.moon {
width: 200px;
height: 200px;
background: yellow;
border-radius: 50%;
}
</style>
</html>

基本展示效果如图:

image.png

嗯,初步效果看着很不错,尤其我这种近视眼,月晕都不用加了…

月光晕

使用box-shadow可以添加阴影效果,我们来试试看:

1
box-shadow: x偏移量 | y偏移量 | 阴影模糊半径 | 阴影扩散半径 | 阴影颜色;

经过尝试,我们设定两层的光晕:

1
box-shadow: 0 0 30px 0px yellow, 0 0 100px 0 white;

效果如下图所示:

image.png

让圆变得立体起来

目前发现有以下几种策略:

渐变色背景

比如我们将月亮的背景色设置为:

1
2
3
4
5
6
background-image: linear-gradient(
45deg,
lightyellow 0%,
yellow 90%,
yellow 100%
);

效果如下:

image.png

添加线条

大佬文章中学到的,添加弯曲线条:

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
.moon {
// 其他代码
position: relative;
}
.line {
width: 100%;
height: 100%;
background-color: linear-gradient(
45deg,
lightyellow 0%,
yellow 90%,
yellow 100%
);
border: solid 5px white;
border-radius: 50%;
margin: -0.5px;
position: absolute;
box-sizing: border-box;
transform: rotateY(45deg);
}
.line2 {
width: 100%;
height: 100%;
background-color: linear-gradient(
45deg,
lightyellow 0%,
yellow 90%,
yellow 100%
);
border: solid 5px white;
border-radius: 50%;
margin: -0.5px;
position: absolute;
box-sizing: border-box;
transform: rotateY(60deg);
}

.line3 {
width: 100%;
height: 100%;
background-color: linear-gradient(
45deg,
lightyellow 0%,
yellow 90%,
yellow 100%
);
border: solid 5px white;
border-radius: 50%;
margin: -0.5px;
position: absolute;
box-sizing: border-box;
transform: rotateY(75deg);
}

image.png

旋转

我们尝试让这个月亮旋转起来,然而效果,嗯,像极了以前看到的扁扁银河系,

ef009a36-3609-4aa0-bfcf-afee33e0c0e1.gif

看来走偏了,应该添加一个固定的圆形背景,,或者说应该让线条转动起来,效果如下。嗯,还不错。

017d5b14-3699-47c0-9ed7-634724847f6d.gif

参考的站内文章:

  1. 原来3D感空间行星轨迹是这样画的

  2. 中秋节快乐,使用CSS3实现小火箭🚀绕月飞行

  3. 【中秋】纯CSS实现日地月的公转