css常见问题:如何画多边形(三角形~六边形)

利用纯css如何画多边形?本篇文章就来给大家介绍一下从纯css画三角形开始,介绍一下画四边形五边形六边形的方法,更高的实现方式也可以此类推画出来,希望对大家有所帮助!

css常见问题:如何画多边形(三角形~六边形)

今天要学习一下面试中常考的一个css题目,用css画多边形。 这一次以三角形、四边形、五边形、六边形为例,首先开始之前需要了解一些必要的知识。

一、基础知识储备

本次将利用纯CSS知识来绘制一些形状,为了绘制这些形状,首先补习一下所需的CSS基础知识点——css盒模型。【相关推荐:《css视频教程》】

1.png

由上图可以看出标准的盒模型是由content,padding,border,margin组成的,我们用代码看一下具体情况吧。

立即学习“前端免费学习笔记(深入)”;

/*css部分*/ #main {   width: 100px;  height: 100px;  border: 200px solid red; }

效果图如下:

2.png

二、实战

光说不练假把式,现在就由利用这些基本的CSS属性来绘制常见的三角形、四边形、五边形……

2.1 四边形

若是不能用直接使用background-color属性来画一个四边形,由上图我们可以看出若是让content的宽高全部设为0,并设置border的宽高,那么我们就可以得到一个仅由border构成的四边形了,四边形又分为正方形、平行四边形、矩形等等,这里就让我们使用border来实现上述中的三种图形吧。

2.1.1 正方形

首先让我们来实现一下最简单的正方形吧。

#main {  width: 0px;  height: 0px;  border-bottom: 200px solid red;  border-left: 200px solid black;  border-right: 200px solid blue;  border-top: 200px solid pink;}

效果如下图所示:

3.png

2.1.2 矩形

在2.1.1中我们已经实现了通过使用border来实现正方形,那么我们接下来实现一下矩形吧,根据所学过的数学知识我们只需用将正方形的调整正方形的长宽使其长≠宽即可,接下来让我们来实现一下吧。

#main {  width: 0px;  height: 0px;  border-bottom: 200px solid red;  border-left: 100px solid red;  border-right: 100px solid red;  border-top: 200px solid red;}

效果如下图所示:

4.png

2.1.3 平行四边形

PS:平行四边形的实现需要使用两个三角形来实现,故此这里建议先跳过,请先前往阅读2.2中查看三角形的实现,再折返查看此处的平行四边行的方法。

此处便默认您已阅读完了2.2的内容了,接下来实现一下平行四边形。

*{   margin: 0;}#wrapper {  position: relative;}.public {   width: 0px;   height: 0px;  border-bottom: 200px solid red;  border-left: 200px solid transparent;  border-right: 200px solid transparent;  border-top: 200px solid transparent;  position: absolute;}.move {  transform: rotate(180deg);  top: 200px;  left: 200px;}

效果如下图所示:

5.png

2.2 三角形

目前为止,最为简单的四边形已完成,那么此时是不是已经有感觉了呢!我们接着往下走,既然border可以实现四边形,那么三角形按道理应该也不在话下,当然三角形里面也有很多很多种类,按照角划分,可分为锐角三角形、直角三角形、钝角三角形;下面分别来实现一下。

2.2.1 锐角三角形

首先我们来看看在content的宽高都是0的情况下,border的left,right,top,bottom四个所占据的情况吧。

#main {  width: 0px;  height: 0px;  border-bottom: 200px solid red;  border-left: 200px solid black;  border-right: 200px solid blue;  border-top: 200px solid pink;}

效果图如下:

6.png

从图可以看出left,right,top,bottom都是占着一个三角形的情况,那么当我们需要某个三角形时我们只需要让其他三个三角形隐藏起来不就可以了,我们可以用transparent属性值来隐藏border,那么来实现一下吧。

#main {  width: 0px;  height: 0px;  border-bottom: 200px solid red;  border-left: 200px solid transparent;  border-right: 200px solid transparent;  border-top: 200px solid transparent;}

效果如图所示:

7.png

2.2.2 直角三角形

到此我们可以画出锐角三角形了,直角三角形我们根据上上图可以得到,只要显示两个border边即可,代码试一下吧

#main {  width: 0px;  height: 0px;  border-bottom: 200px solid red;  border-left: 200px solid red;  border-right: 200px solid transparent;  border-top: 200px solid transparent;}

效果如图所示:

8.png

2.2.3 钝角三角形

上图证实了之前的想法的可行性了。那么接下来让我们想想钝角三角形该怎么实现呢?按照之前的想法是不行的,那么我们就需要改变一下想法。

我们可以用两个直角三角形,将小的直角三角形覆盖在大的上面,让我们试一下吧!!

#main1 {  width: 0px;  height: 0px;  border-bottom: 200px solid red;  border-left: 200px solid transparent;}#main2 {  width: 0px;  height: 0px;  border-bottom: 200px solid black;  border-left: 150px solid transparent;  position: absolute;  /*这里8px是浏览器中的margin自带的间距,之前没有处理*/  top: 8px;  left: 58px;}

效果图如下所示:

9.png

这次通过绝对定位来控制小的直角三角形,那么我们可以通过控制黑色三角形的颜色来显示钝角三角形。

2.3 五边形

三角形都已经学会了,那么很多图形都可以通过三角形拼凑得来,就以五边形为例,这里将以多个三角形来画出五边形。

*{    margin: 0;}#wrapper {    position: relative;    top: 300px;    margin-left: 300px;}.main2 {    transform: rotate(72deg);}.main3 {    transform: rotate(144deg);}.main4 {    transform: rotate(216deg);}.main5 {    transform: rotate(288deg);}.tool{    width: 0px;    height: 0px;    border-right: 58px solid transparent;    border-left: 58px solid transparent;    border-bottom: 160px solid red;    position: absolute;    top: 0;    left: 0;}

效果如下图所示:

10.png

实现五边形的主要难点在于border的三个边的取值,以及旋转的角度。

2.4 六边形

到目前为止三角行、四、五边形的三种形式都实现了一遍,他们均是通过border来实现的,那么让我们来想一下怎么画出一个六边形,有条件的可以在纸上画画,我们可以把一个五边形分成6个等边三角形,让我们通过上面所学知识来实现一下六边形吧!

*{  margin: 0;}#wrapper {  position: relative;  top: 300px;  margin-left: 300px;}.main2 {  transform: rotate(60deg);}.main3 {  transform: rotate(120deg);}.main4 {  transform: rotate(180deg);}.main5 {  transform: rotate(240deg);}.main6 {  transform: rotate(300deg);}.tool{  width: 0px;  height: 0px;  border-right: calc(60px / 1.732) solid transparent;  border-left: calc(60px / 1.732) solid transparent;  border-bottom: 60px solid red;  transform-origin: top;  position: absolute;  top: 0;  left: 0;}

11.png

通过上面的方法实现五边形,这边难点主要是画出等边三角形。

上面的方法已经实现了,让我们想想其他的方法实现一下吧,这里我们将通过三个四边形实现五边形,让我们一下实验一下吧!!

*{    margin: 0;}#wrapper {    position: relative;    top: 300px;    margin-left: 300px;}.main1 {    width: calc(120px / 1.732);    height: 120px;    background-color: black;}.main2 {    width: calc(120px / 1.732);    height: 120px;    transform: rotate(120deg);    background-color: black;}.main3 {    width: calc(120px / 1.732);    height: 120px;    transform: rotate(240deg);    background-color: black;}.tool{    position: absolute;    top: 0;    left: 0;}

12.png

好了,目前已经讲述了三角形,四边形,五边形,六边形得到实现方式了,更高的实现方式就以此类推了。

原文地址:https://juejin.cn/post/7001772184498601991

作者:执鸢者

更多编程相关知识,请访问:编程入门!!

以上就是css常见问题:如何画多边形(三角形~六边形)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1621763.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 07:36:58
下一篇 2025年12月24日 07:37:07

相关推荐

  • 初级篇:如何用CSS3制作爱心加载(代码详解)

    之前的文章《手把手教你使用CSS制作逼真的水波纹效果(附代码)》中,给大家介绍了怎么使用CSS制作逼真的水波纹效果。下面本篇文章给大家介绍如何用CSS3制作爱心加载,我们一起看看怎么做。 网页中常常有这样的CSS3爱心加载,给大家分享一下看效果图看完效果,我们来研究一下是怎么实现呢,给大家用于讲解h…

    2025年12月24日
    000
  • 新手篇:如何用CSS实现简单骨骼动画(代码分享)

    之前的文章《教你怎么使用shell脚本实现服务器快速设置(附代码)》中,给大家介绍了怎么使用shell脚本实现服务器快速设置。下面本篇文章给大家介绍如何用CSS实现简单骨骼动画,我们一起看看怎么做。 1、背景 某天设计师来找我说,“这个心愿牌傻傻地挂在那不好看,加个动效呗,就左右摆动一下就行,很简单…

    2025年12月24日 好文分享
    000
  • 深入解析CSS中的绝对定位,彻底理解它!

    本篇文章给大家解析一下css中的绝对定位,带大家彻底理解它,希望对大家有所帮助! 与其说定位一个元素是定位元素自身的位置,不如说是元素的容器位置。为了能够定位自己,它必须知道自己将相对于哪个父div 来定位。【相关推荐:《css视频教程》】 下面的代码展示了4个嵌套的 div , .box-1 到 …

    2025年12月24日 好文分享
    000
  • 如何利用CSS background系列属性实现一些花式的文字效果

    如何利用css实现花式文字效果?下面本篇文章给大家介绍一下利用 background 系列属性实现一些花式文字效果的方法,希望对大家有所帮助! 本文将讲解如何利用 background 系列属性,巧妙的实现一些花式的文字效果。通过本文,你将可以学到: 通过 background-size 与 bac…

    2025年12月24日 好文分享
    000
  • 手把手教你使用纯CSS绘制可爱玉兔(附代码)

    如何使用纯css画一只可爱玉兔?下面本篇文章就手把手教你使用纯css绘制可爱玉兔,希望对大家有所帮助! 这里有段小故事跟大家科普一下哦: 玉兔本是后羿,因为嫦娥奔月,而又思念后羿,后羿为了和嫦娥在一起,情愿变成了她最爱的小动物–玉兔.可惜嫦娥始终不知玉兔就是她日夜思念的后羿! 下面就让我…

    2025年12月24日
    000
  • 深入学习CSS中的 :is() 和 :where(),让样式代码更简洁!

    本篇文章带大家深入了解css中的两个比较高效的选择器,通过它们可以用更少的代码去更有效地选择元素,进而简化代码,下面一起来看看吧! 新人在入门CSS的时候,往往最困惑的就是两件事情(个人想法):1. CSS是基于文档流的,有些时候编写的代码,并不符合自己的预期!2.复杂的选择器,什么场景用什么选择器…

    2025年12月24日 好文分享
    000
  • CSS怎么实现瀑布流?两种方式介绍

    css怎么实现瀑布流?下面本篇文章给大家介绍一下使用css实现瀑布流的两种方式,希望对大家有所帮助! 瀑布流又称瀑布流式布局,是比较流行的一种网站页面布局方式。在手机端进行多图片展示时会经常用到。即多行等宽元素排列,后面的元素依次添加到其后,等宽不等高,根据图片原比例缩放直至宽度达到我们的要求,依次…

    2025年12月24日
    000
  • 给文字添加渐变、描边、投影效果的两种方式(CSS和SVG)

    本篇文章给大家介绍一下使用css和svg给文字添加渐变、描边、投影效果的方法,希望对大家有所帮助! 在一些 web 活动页中经常能看到特殊处理的标题文字,比如这样的 暂时忽略掉特殊字体,通过设计稿的图层样式可以发现,共有 3 个文字特效,分别是渐变、描边、投影 立即学习“前端免费学习笔记(深入)”;…

    2025年12月24日 好文分享
    000
  • 手把手带你通过5个例子来熟悉CSS变量!

    大家对css变量熟悉吗?如果不熟悉,不要紧!下面本篇文章就来给大家介绍一下css变量,通过5个例子来带大家熟悉css变量,希望对大家有所帮助! 随着 Web应用程序变得越来越大,CSS变得越来越大,越来越冗长,而且混乱不堪。 在良好的上下文中使用CSS变量,可为我们提供重用和轻松更改重复出现的CSS…

    2025年12月24日 好文分享
    000
  • 纯CSS做一个烟花绽放动画(代码示例)

    本篇文章带大家使用纯css做一个烟花绽放动画,希望对大家有所帮助! 最近项目上需要做一个烟花动画,要求是随机大小,不同地方出现,先看效果 一、选择合适的动画 什么样的场景决定使用什么样的动画。比如一些比较轻量、装饰性的动画,CSS 动画就足够了,而一些对动画要求比较高的运营活动,创意小游戏等,JS …

    2025年12月24日 好文分享
    000
  • css数字文本过长被隐藏了怎么办

    css数字文本过长被隐藏的解决方法:1、打开相应的HTML文件;2、使用“word-break”属性,给包含数字的元素添加“word-break:break-all;”样式,让数字文本自动换行即可全部显示出来即可。 本教程操作环境:windows7系统、CSS3&&HTML5版、De…

    2025年12月24日 好文分享
    000
  • css怎么去掉表格重复的边框

    在css中,可以使用border-collapse属性来去掉表格中重复的边框,该属性可以设置表格边框是折叠为单一边框还是分开的,只需要将值设置为collapse即可把重叠的边框合并在一起,成为一个边框,实现单线边框的效果。 本教程操作环境:windows7系统、CSS3&&HTML5…

    2025年12月24日
    000
  • 巧用css filter的drop-shadow()函数创建线条光影效果

    本文将介绍一种利用 css 滤镜 filter 的 drop-shadow(),实现对 html 元素及 svg 元素的部分添加阴影效果,以实现一种酷炫的光影效果,用于各种不同的场景之中。 通过本文,你可以学到: 如何利用 filter: drop-shadow() 对元素的部分内容添加单重及多重阴…

    2025年12月24日 好文分享
    000
  • 让网站更酷炫的CSS filter使用小技巧,值得收藏!

    巧用css filter,可以让网站更加酷炫。本篇文章就来给大家分享一些css filter使用小技巧,希望对大家有所帮助! 下面就来开始本篇文章的内容吧! 我们在处理图片时,经常使用的一个功能就是滤镜,它能使一张图像呈现各种不同的视觉效果。 立即学习“前端免费学习笔记(深入)”; 在 CSS 中,…

    2025年12月24日 好文分享
    000
  • 用css怎么画树

    绘制方法:1、定义3个div标签,使用border属性将其修饰成3个大小不同的三角形;2、使用margin属性控制3个三角形的位置,形成树冠;3、定义1个div标签制作树干,使用margin属性将其定位到树冠下方即可。 本教程操作环境:windows7系统、CSS3&&HTML5版、…

    2025年12月24日 好文分享
    000
  • css中如何将行元素转为块元素,块元素转为行元素

    css中可以利用display属性实现行元素和块元素的相互转换:给行元素添加“display:block;”样式可以将其转为块元素;给块元素添加“display:inline;”样式可以将其转为行元素。 本教程操作环境:windows7系统、CSS3&&HTML5版、Dell G3电…

    2025年12月24日
    000
  • 怎么设置css文本不可选中

    css文本不可选中的设置方法:1、创建一个HTML示例文件;2、创建div并定义文字内容;3、通过设置“user-select: none;”属性来设置文本不可选中即可。 本文操作环境:windows7系统、HTML5&&CSS3版、Dell G3电脑。 怎么设置css文本不可选中?…

    2025年12月24日
    000
  • css怎么写六边形

    css写六边形的方法:1、把正六边形分成三部分,然后设置before部分,p部分和after部分;2、把正六边形分成三个宽高相同的p,然后使用定位以及css3 transform:rotate分别向左右旋转60deg形成正六边形即可。 本文操作环境:windows7系统、HTML5&&amp…

    2025年12月24日 好文分享
    000
  • css如何让字改变透明度

    css让字改变透明度的方法:1、使用opacity属性,给文字元素添加“opacity:透明度值;”样式即可;2、使用rgba()函数,给文字元素添加“color:rgba(red, green, blue, 透明度值);”样式即可。 本教程操作环境:windows7系统、CSS3&&amp…

    2025年12月24日
    000
  • css隐藏元素的方式有哪些

    方式:1、设置“display:none”语句;2、设置“visibility:hidden”语句;3、设置“opacity:0”语句;4、设置盒模型属性为0;5、利用“position:absolute;top:-9999px;”语句。 本教程操作环境:windows7系统、CSS3&&a…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信