大家好,我是 Just,这里是「设计师工作日常」,今天分享的是使用 css 实现一个盗墓必备乱转的指北针。
最新文章通过公众号「设计师工作日常」发布。
(目录)
整体效果
知识点: ① css 绘制三角形 ②
animation
动画属性 ③transform
属性值rotate
旋转
思路: 使用 css 绘制出指北针,通过
animation
设置动画,分别设置不同关键帧时的transform
属性值(rotate
值)。
核心代码部分,简要说明了写法思路;完整代码在最后,可直接复制到本地运行。
核心代码
html 代码
<div class="loading40">
<span class="one-sj40"></span>
<span class="two-sj40"></span>
<span class="round40"></span>
</div>
通过 3 个
span
标签绘制出指北针。
css 部分代码
.loading40{
width: 126px;
height: 126px;
background-color: #000000;
border-radius: 50%;
position: relative;
overflow: hidden;
border: 6px solid #FFCA1C;
transform: rotate(35deg);
animation: zhuan40-eff 6s ease-in-out infinite;
box-shadow: inset 0px 0px 2px #ffffff;
}
.one-sj40{
border-bottom: 40px solid #FFCA1C;
border-left: 16px solid transparent;
border-right: 16px solid transparent;
position: absolute;
top: 22px;
left: 47px;
}
.two-sj40{
border-top: 40px solid #FFF42B;
border-left: 16px solid transparent;
border-right: 16px solid transparent;
position: absolute;
bottom: 22px;
left: 47px;
}
.round40{
width: 12px;
height: 12px;
border-radius: 50%;
background-color: #000000;
position: absolute;
top: 57px;
left: 57px;
z-index: 10;
}
@keyframes zhuan40-eff{
0% {
transform: rotate(35deg);
}
30%{
transform: rotate(0deg);
}
45%{
transform: rotate(-60deg);
}
60% {
transform: rotate(60deg);
}
65% {
transform: rotate(-30deg);
}
80%{
transform: rotate(100deg);
}
95%{
transform: rotate(-10deg);
}
100%{
transform: rotate(35deg);
}
}
1、绘制指南针: 分别绘制一个圆形,以及两个三角形,通过
position
定位组成指北针,再绘制一个黑色圆形背景,一个指北针的圆形图标就绘制完成。
2、然后再给图标整体加上
animation
动画属性,并定义不同关键帧下transform
属性值,让指北针旋转不同的角度。
完整代码如下
html 页面
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="style.css">
<title>乱转的指北针</title>
</head>
<body>
<div class="app">
<div class="loading40">
<span class="one-sj40"></span>
<span class="two-sj40"></span>
<span class="round40"></span>
</div>
</div>
</body>
</html>
css 样式
/** style.css **/
.app{
width: 100%;
height: 100vh;
background-color: #ffffff;
position: relative;
display: flex;
justify-content: center;
align-items: center;
}
.loading40{
width: 126px;
height: 126px;
background-color: #000000;
border-radius: 50%;
position: relative;
border: 6px solid #FFCA1C;
transform: rotate(35deg);
animation: zhuan40-eff 6s ease-in-out infinite;
box-shadow: inset 0px 0px 2px #ffffff;
}
.one-sj40{
border-bottom: 40px solid #FFCA1C;
border-left: 16px solid transparent;
border-right: 16px solid transparent;
position: absolute;
top: 22px;
left: 47px;
}
.two-sj40{
border-top: 40px solid #FFF42B;
border-left: 16px solid transparent;
border-right: 16px solid transparent;
position: absolute;
bottom: 22px;
left: 47px;
}
.round40{
width: 12px;
height: 12px;
border-radius: 50%;
background-color: #000000;
position: absolute;
top: 57px;
left: 57px;
z-index: 10;
}
@keyframes zhuan40-eff{
0% {
transform: rotate(35deg);
}
30%{
transform: rotate(0deg);
}
45%{
transform: rotate(-60deg);
}
60% {
transform: rotate(60deg);
}
65% {
transform: rotate(-30deg);
}
80%{
transform: rotate(100deg);
}
95%{
transform: rotate(-10deg);
}
100%{
transform: rotate(35deg);
}
}
页面渲染效果
以上就是所有代码,以及简单的思路,希望对你有一些帮助或者启发。
我是 Just,这里是「设计师工作日常」,求点赞求关注!