CSS100Day(17)-svg实现彭罗斯三角

572 字
3 分钟
CSS100Day(17)-svg实现彭罗斯三角

设计简介#

对于彭罗斯三角,用svg多边形实现更简单,然后调整fill的颜色

  1. 知识点1:实现容器里面斜线,可以增大子元素宽度到容器的对角线宽度,然后rotate<45deg>,然后用每个div实现(高度4px,margin-bottom<16px>)实现

  2. 知识点2:svg实现多边形

效果展示#

实现代码和步骤#

HTML部分#

HTML部分如下

<div class="frame">
<div class="stripes">
<!-- 29条线 -->
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
<div class="stripe"></div>
</div>
<div class="center">
<svg class="polygon">
<polygon class="middle" points="68,0 91,0 160,117 46,117 59,93 121,93" />
<polygon class="dark" points="68,41 79,59 46,117 160,117 147,140 11,140" />
<polygon class="light" points="0,117 68,0 121,93 98,93 68,41 11,140" />
</svg>
</div>
</div>

CSS部分#

.frame {
width: 400px;
height: 400px;
border-radius: 2px;
box-sizing: border-box;
box-shadow: 1px 2px 10px 0px rgba(0, 0, 0, 0.3);
background: #fff;
overflow: hidden;
position: relative;
}
.stripes {
position: absolute;
top: -67px;
left: -100px;
width: 600px;
rotate: 45deg;
.stripe {
background: #353535;
width: 600px;
height: 3px;
margin-bottom: 16px;
}
}
.center {
position: absolute;
width: 260px;
height: 260px;
top: 70px;
left: 70px;
background: #353535;
border-radius: 3px;
box-shadow: 8px 10px 15px 0 rgba(0, 0, 0, 0.3);
}
.polygon {
position: absolute;
width: 160px;
height: 160px;
top: 60px;
left: 50px;
.light {
fill: #eee;
transition: all 0.5s ease-in-out;
}
.middle {
fill: #ccc;
transition: all 0.5s ease-in-out;
}
.dark {
fill: #aaa;
transition: all 0.5s ease-in-out;
}
&:hover {
.light {
fill: #aaa;
}
.middle {
fill: #eee;
}
.dark {
fill: #ccc;
}
}
}
分享给其他人
如果该文章对您有帮助,欢迎分享给其他人阅读!
复制链接

评论区

图片
犟哟
Hello, I'm Juyial.
公告
欢迎来到我的博客,在这里可以一起进步,一起学习!2026年起航!
分类
站点统计
文章
19
分类
1
标签
3
总字数
35,134
运行时长
0
最后活动
0 天前

目录