以上是将要实现的效果,Javascript框架React的Logo图形,首先我们来拆解下,它包括三个交叉的椭圆和中间一个圆点,所以我们Html元素可以用以下代码实现:
<div class="main"><div class="ellipse ellipse1"></div><div class="ellipse ellipse2"></div><div class="ellipse ellipse3"></div><div class="ball"></div>
</div>
整个logo图形的外层以main类包裹,里面的ellipse类元素表示椭圆,最下面的类名ball表示中间的圆点
首先我们让整个logo图形水平垂直居中
.main {height: 100vh;display: flex;justify-content: center;align-items: center;position: relative;
}
然后我们给类名ellipse元素(及椭圆)添加样式,很容易想到椭圆是由一个长方形通过设置圆角而来
.ellipse {height: 12vw;width: 4vw;border-radius: 50%;border: 0.6vw solid #5ed3f3;position: absolute;
}
由于设置了绝对定位,三个椭圆重叠在了一起
我们接下来需要做的是让这三个椭圆分离交叉,让它们分别以自己的中心旋转一定的角度,分别旋转30°,-30°,90°
.ellipse1 {transform: rotate(30deg);
}
.ellipse2 {transform: rotate(-30deg);
}
.ellipse3 {transform: rotate(90deg);
}
最后还缺中间的一个实心圆点,位置居中,简单
.ball {position: absolute;width: 2.5vw;height: 2.5vw;border-radius: 50%;background-color: #5ed3f3;
}
最后定义一个旋转的动画
@keyframes roll {from {transform:rotate(0deg)}to {transform:rotate(360deg)}
}
给main元素增加一个animation动画,旋转一周的持续时间是15s,延迟0.5s执行,周期是无限循环
.main {animation: roll 15s linear 0.5s infinite;
}
其实很多的logo完全可以用CSS写出来,就没有必要用图片代替了,这样既省了网页的加载压力,而且还是矢量的不用担心糊的问题。
注:关注公众号“太空编程”,回复 css揭秘,即可获取优质CSS学习资料