CSS100Day(17)-svg实现彭罗斯三角
572 字
3 分钟
CSS100Day(17)-svg实现彭罗斯三角
设计简介
对于彭罗斯三角,用svg多边形实现更简单,然后调整fill的颜色
-
知识点1:实现容器里面斜线,可以增大子元素宽度到容器的对角线宽度,然后rotate<45deg>45deg>,然后用每个div实现(高度4px,margin-bottom<16px>16px>)实现
-
知识点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; } }}分享给其他人
如果该文章对您有帮助,欢迎分享给其他人阅读!
复制链接
相关文章
推荐筛选
1
CSS100Day(21)-利用svg线段实现吃小球动画
设计灵感 利用svg线段实现吃小球动画
2
CSS100Day(18)-3D实现弹性元素
设计灵感 3D实现弹性元素
3
CSS100Day(10)-SVG旋转动画
设计灵感 巧妙应用SVG的
4
CSS100Day(19)-纯css实现滑动radio轮播图
设计灵感 纯css使用translateX实现轮播图
5
CSS100Day(3)-clip-path和动画实现金字塔日出日落
设计灵感 一个训练clip-path和关键帧贝塞尔曲线的练习
随机文章
随机推荐