(四)巧用CSS3之五边形

1,930 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

绘制

在前面的文章中我们绘制了三角形和梯形,这篇文章我们来讲一下五边形的绘制。

容器

<div class="pentagon"></div>

绘制五边形我们准备一个div元素足以,接下来就是它的变身时刻。

样式

横看成岭侧成峰,换个样式便不同。看的角度不同,看到的效果也就不同;样式发生变化的时候,图形自然也会变。

五边形

绘制五边形的思路是一个梯形和一个三角形拼接而成,如下:

.pentagon {
    --bw: 50px;
    width: calc(var(--bw) * 2);
    height: 0;
    border-left: var(--bw) solid transparent;
    border-right: var(--bw) solid transparent;
    border-top: calc(var(--bw) * 2) solid red;
    position: relative;
}

.pentagon::before {
    content: '';
    position: absolute;
    --w: calc(var(--bw) * 2);
    border-left: var(--w) solid transparent;
    border-right: var(--w) solid transparent;
    border-bottom: var(--w) solid red;
    top: calc(var(--w) * -2);
    left: calc(var(--w) * -0.5);
}

e9bb81a7fd3680de2bbddd71efffba8.png 自身元素是个梯形,利用其伪元素设置为三角形,然后进行位置调整得到五边形。改变--bw的值可以改变五边形的大小,如果不想要此形状的五边形,可以改变border的每个宽度。

钻石五边形

如果我们把上述图案旋转,三角形拉长,梯形变低,像不像一个钻石呢,与上述的样式变化地方如下:

.pentagon{
    /* 三角形拉长 */
    border-top: var(--bw) solid red;  
    transform: rotate(180deg);
}

.pentagon::before {
    /* 梯形变化 */
    border-bottom: calc(var(--w) * 1.5) solid red;
    top: calc(var(--w) * -2);
}

1632650570(1).jpg 改变--bw的值可以改变钻石的大小。

总结ix

绘制五边形的思路是一个梯形和一个三角形拼接而成,那么六边形、八边形、十二边形呢,大家可以试一试,这些图形都可以根据三角形和四边形拼接得到。

想了解其他动画效果,请前往《有趣的动画》 专栏,希望对你有所帮助。