文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

纯CSS如何实现单一div的正多边形变换

2023-06-08 06:34

关注

小编给大家分享一下纯CSS如何实现单一div的正多边形变换,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

正三角形

正三角形不需要用到伪元素,只需要设定div本身的边框宽度即可产生,先来看一下正三角形的边长与中线,若边长为100px,则中线四舍五入就是87px(100 x sin(60)= 87)。

纯CSS如何实现单一div的正多边形变换

因此我们要将div的长宽都设为0,接着把底部border的宽度设为87px,左右的border宽度设为50px(颜色设为透明transparent),就可以做出一个漂亮的三角形。

width:0;height:0;border-width:0 50px 87px ;border-style:solid;border-color:transparent transparent #095;

纯CSS如何实现单一div的正多边形变换

正方形

正方形应该是最简单的,只要设定长宽设定为同样数值就可以了,不过其实还有另外两种方法,第一种你可以把长宽设为0,把上下左右的border设为50px也可以,第二种则是高度设为0,宽度设为100px,然后某个边宽也设为100,都是可以的。

.a{width:100px;height:100px;background:#c00;}.b{width:0;height:0;border-width:50px;border-style:solid;border-color:#095;}.c{width:100px;height:0;border-width:0 0 100px;border-style:solid;border-color:#069;}

纯CSS如何实现单一div的正多边形变换

正五边形

正五边形就需要进入基本的三角函数领域了,让我们先把正五边形分解,用原本的div作为上方的三角形,然后用一个伪元素制作下方的梯形,因为正五边形每边的夹角为108度,所以可以藉由三角函数计算出上方三角形的高度为59px(100 x cos(54)),宽度为192px(100x sin(54)x 2),下方梯形的高度为95px(100 x sin(72)),长边的宽度跟上面的三角形一样都是192px。

纯CSS如何实现单一div的正多边形变换

了解原理之后,就可以利用伪元素来搭配制作啰!

.a{      position:relative;  width:0;  height:0;  border-width:0 81px 59px;      border-style:solid;  border-color:transparent transparent #069;}.a:before{  position:absolute;  content:"";  top:59px;  left:-81px;  width:100px;  height:0;  background:none;  border-width:95px 31px 0;  border-style:solid;      border-color:#069 transparent transparent;    }

纯CSS如何实现单一div的正多边形变换

正六边形

正六边形的每个夹角是120度,如果以纯CSS的方向来看的话,就是把正五边形上面的三角形改变一下,就可以做出正六边形,也就是变成上下两个梯形的组合而已,梯形的长边为200px(100 x cos(60)x 2 + 100),梯形的高度为87px(100 x sin(60))。

纯CSS如何实现单一div的正多边形变换

所以只要把正五边形的CSS稍作修改就可以做出正六边形了。

.a{      position:relative;    width:100px;    height:0;    border-width:0 50px 87px;      border-style:solid;    border-color:transparent transparent #f80;}.a:before{  position:absolute;  content:"";    top:87px;    left:-50px;    width:100px;    height:0;  background:none;    border-width:87px 50px 0;  border-style:solid;        border-color:#f80 transparent transparent;    }

纯CSS如何实现单一div的正多边形变换

正七边形

正七边形开始就必须再使用after这个伪元素了,因为正七边形必须要拆解为三个内存块,分别是用原本的div作为上面的三角形,一个伪元素作为中间的梯形,然后另一个伪元素作为底部的梯形,正七边形的夹角比较特别不是整数,而是128又4/7度,大概取到小数第二位是128.57,所以计算起来结果就如下图所示,重点就是必须要清楚地知道长宽是多少。
 

纯CSS如何实现单一div的正多边形变换
 

有了长宽之后,就开始用CSS来写啰!

.a{      position:relative;    width:0;    height:0;    border-width:0 90px 43px;      border-style:solid;    border-color:transparent transparent #09c;}.a:before{  position:absolute;  content:"";    top:140px;    left:-112px;    width:100px;    height:0;    border-width:78px 62px 0;  border-style:solid;        border-color:#09c transparent transparent;    }  .a:after{    position:absolute;    content:"";    top:43px;    left:-112px;    width:180px;    height:0;    border-width:0 22px 97px;    background:none;    border-style:solid;    border-color:transparent transparent #09c;  }

纯CSS如何实现单一div的正多边形变换

正八边形

正八边形其实就是把正七边形上面的三角形变成梯形,然后中间的梯形变成矩形就搞定了,正八边形的夹角为135度,计算出来的各个区域长宽如下图。
 

纯CSS如何实现单一div的正多边形变换
 

同样的了解原理,CSS做起来就简单多啰!

.a{      position:relative;    width:100px;      height:0;      border-width:0 71px 71px;      border-style:solid;    border-color:transparent transparent  #f69;}.a:before{  position:absolute;  content:"";    top:171px;      left:-71px;      width:100px;      height:0;      border-width:71px 71px 0;  border-style:solid;          border-color: #f69 transparent transparent;    }  .a:after{      position:absolute;      content:"";      top:71px;      left:-71px;      width:242px;      height:0;      border-width:0 0 100px;      background:none;      border-style:solid;      border-color:transparent transparent #f69;  }

纯CSS如何实现单一div的正多边形变换

小结

以上就是纯粹利用CSS做出来的单一div的正多边形变换,如果熟练的话,其实加上动画效果,就可以做出像下面示例这个样子的变换动画啰!不过下面的示例有再另外用一个div包在外面做大小的变换动画,避免因为大小的变换造成衔接处的不密合,大家可以参考看看喔!

纯CSS如何实现单一div的正多边形变换

以上是“纯CSS如何实现单一div的正多边形变换”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯