广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >如何使用纯CSS实现单一div的正多边形变换
  • 771
分享到

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

2024-04-02 19:04:59 771人浏览 薄情痞子
摘要

这篇文章给大家分享的是有关如何使用纯CSS实现单一div的正多边形变换的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   纯粹利用CSS,让“单一个”div,从正三角形变换为正

这篇文章给大家分享的是有关如何使用纯CSS实现单一div的正多边形变换的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

  纯粹利用CSS,让“单一个”div,从正三角形变换为正八边形(单一div最多只能做到正八边形),最后再搭配动画的效果,变成正多边形的变换动画,也由于正多边形需要用到不少的三角函数计算,为了方便起见,这里将正多边形的边统一都设为100px。

  正三角形

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

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

  width:0;

  height:0;

  border-width:0 50px 87px ;

  border-style:solid;

  border-color:transparent transparent #095;

  正方形

  正方形应该是最简单的,只要设定长宽设定为同样数值就可以了,不过其实还有另外两种方法,第一种你可以把长宽设为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;

  }

  正五边形

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

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

  .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;

  }

  正六边形

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

  所以只要把正五边形的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;

  }

  正七边形

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

  有了长宽之后,就开始用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;

  }

  正八边形

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

  同样的了解原理,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的正多边形变换”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: 如何使用纯CSS实现单一div的正多边形变换

本文链接: https://www.lsjlt.com/news/89749.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 纯CSS如何实现单一div的正多边形变换
    小编给大家分享一下纯CSS如何实现单一div的正多边形变换,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!正三角形正三角形不需要用到伪元素,只需要设定div本身的边...
    99+
    2023-06-08
  • 如何使用纯CSS实现单一div的正多边形变换
    这篇文章给大家分享的是有关如何使用纯CSS实现单一div的正多边形变换的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   纯粹利用CSS,让“单一个”div,从正三角形变换为正...
    99+
    2022-10-19
  • 如何使用纯CSS实现多行文本的渐隐动画
    这篇文章主要介绍“如何使用纯CSS实现多行文本的渐隐动画”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何使用纯CSS实现多行文本的渐隐动画”文章能帮助大家解决问题...
    99+
    2022-10-19
  • 如何使用纯CSS实现一只红色的愤怒小鸟
    这篇文章给大家分享的是有关如何使用纯CSS实现一只红色的愤怒小鸟的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   代码解读   定义dom,容器中包含6个元素,分别代表头、...
    99+
    2022-10-19
  • 如何使用HTML和CSS实现一个简单的居中布局
    在网页设计中,居中布局是十分常见的一种布局方式。通过使用HTML和CSS,我们可以很容易地实现一个简单而美观的居中布局。在开始之前,我们需要建立一个基本的HTML结构。首先,我们创建一个包含内容的dc6dce4a544fdca2df29d5...
    99+
    2023-10-21
    CSS html 居中布局
  • 如何使用HTML和CSS实现一个简单的层叠式布局
    层叠式布局是前端开发中常见的一种布局方式,它可以实现多个元素的层叠排列,给网页增加美观性和交互效果。在本文中,我们将介绍如何使用HTML和CSS实现一个简单的层叠式布局,并提供具体的代码示例。首先,我们创建一个HTML文件,并添加以下代码:...
    99+
    2023-10-21
    CSS html 层叠式布局
  • 如何使用MySQL和Ruby实现一个简单的数据转换功能
    如何使用MySQL和Ruby实现一个简单的数据转换功能在实际的开发工作中,经常需要进行数据转换,将一个数据格式转化为另一个数据格式。本文将介绍如何使用MySQL和Ruby来实现一个简单的数据转换功能,并且提供具体的代码示例。首先,我们需要安...
    99+
    2023-10-22
    MySQL Ruby 数据转换
  • 如何使用HTML和CSS实现一个简单的聊天页面布局
    随着现代科技的发展,人们越来越依赖于互联网来进行沟通和交流。而在网页中,聊天页面是一种非常常见的布局需求。本文将向大家介绍如何使用HTML和CSS来实现一个简单的聊天页面布局,并给出具体的代码示例。首先,我们需要创建一个HTML文件,可以使...
    99+
    2023-10-21
    CSS样式 HTML布局 聊天页面
  • 如何使用HTML和CSS实现一个简单的折叠面板布局
    折叠面板是网页设计中常用的布局之一,它可以将大量的内容以折叠的形式呈现在页面上,使得页面结构更加清晰和紧凑。本文将详细介绍如何使用HTML和CSS实现一个简单的折叠面板布局,并提供具体的代码示例。HTML结构设计首先,我们需要设计合适的HT...
    99+
    2023-10-21
    CSS html 折叠面板
  • 如何使用JS+CSS实现一个简单加载进度条的效果
    这篇文章主要讲解了“如何使用JS+CSS实现一个简单加载进度条的效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用JS+CSS实现一个简单加载进度条的效果”吧!一、前言我们经常在网页...
    99+
    2023-06-15
  • 如何使用Java实现一个简易版的多级菜单功能
    小编给大家分享一下如何使用Java实现一个简易版的多级菜单功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!正文1,首先是数据库的设计DROP TABL...
    99+
    2023-06-26
  • 如何使用HTML和CSS实现一个具有固定导航菜单的布局
    如何使用 HTML 和 CSS 实现一个具有固定导航菜单的布局在现代网页设计中,固定导航菜单是常见的布局之一。它可以使导航菜单始终保持在页面顶部或侧边,使用户可以方便地浏览网页内容。本文将介绍如何使用 HTML 和 CSS 实现一个具有固定...
    99+
    2023-10-26
    CSS html 标签 结构 元素
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作