iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >纯CSS实现圆角三角形的方法有哪些
  • 820
分享到

纯CSS实现圆角三角形的方法有哪些

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

本篇内容主要讲解“纯CSS实现圆角三角形的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“纯CSS实现圆角三角形的方法有哪些”吧!法一. 全兼容的 SV

本篇内容主要讲解“纯CSS实现圆角三角形的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“纯CSS实现圆角三角形的方法有哪些”吧!

法一. 全兼容的 SVG 大法

想要生成一个带圆角的三角形,代码量最少、最好的方式是使用 SVG 生成。

使用 SVG 的 多边形标签 <polyGon> 生成一个三边形,使用 SVG 的 stroke-linejoin="round" 生成连接处的圆角。

代码量非常少,核心代码如下:

<svg  width="250" height="250" viewBox="-50 -50 300 300">
  <polygon class="triangle" stroke-linejoin="round" points="100,0 0,200 200,200"/>
</svg>
.triangle {
    fill: #0f0;
    stroke: #0f0;
    stroke-width: 10;
}

实际图形如下:

纯CSS实现圆角三角形的方法有哪些

这里,其实是借助了 SVG 多边形的 stroke-linejoin: round 属性生成的圆角,stroke-linejoin 是什么?它用来控制两条描边线段之间,有三个可选值:

  • miter 是默认值,表示用方形画笔在连接处形成尖角

  • round 表示用圆角连接,实现平滑效果

  • bevel 连接处会形成一个斜接

纯CSS实现圆角三角形的方法有哪些

我们实际是通过一个带边框,且边框连接类型为 stroke-linejoin: round 的多边形生成圆角三角形的

如果,我们把底色和边框色区分开,实际是这样的:

.triangle {
    fill: #0f0;
    stroke: #000;
    stroke-width: 10;
}

纯CSS实现圆角三角形的方法有哪些

通过 stroke-width 控制圆角大小

那么如何控制圆角大小呢?也非常简单,通过控制 stroke-width 的大小,可以改变圆角的大小。

当然,要保持三角形大小一致,在增大/缩小 stroke-width 的同时,需要缩小/增大图形的 width/height

纯CSS实现圆角三角形的方法有哪些

完整的 DEMO 你可以戳这里:CodePen Demo -- 使用 SVG 实现带圆角的三角形

https://codepen.io/Chokcoco/pen/eYWZvKo

法二. 图形拼接

不过,上文提到了,使用纯 CSS 实现带圆角的三角形,但是上述第一个方法其实是借助了 SVG。那么仅仅使用 CSS,有没有办法呢?

当然,发散思维,CSS 有意思的地方正在于此处,用一个图形,能够有非常多种巧妙的解决方案!

我们看看,一个圆角三角形,它其实可以被拆分成几个部分:

纯CSS实现圆角三角形的方法有哪些

所以,其实我们只需要能够画出一个这样的带圆角的菱形,通过 3 个进行旋转叠加,就能得到圆角三角形:

纯CSS实现圆角三角形的方法有哪些

绘制带圆角的菱形

那么,接下来我们的目标就变成了绘制一个带圆角的菱形,方法有很多,本文给出其中一种方式:

1、首先将一个正方形变成一个菱形,利用 transfORM 有一个固定的公式:

<div></div>
div {
    width:  10em;
    height: 10em;
    transform: rotate(-60deg) skewX(-30deg) scale(1, 0.866);
}

纯CSS实现圆角三角形的方法有哪些纯CSS实现圆角三角形的方法有哪些

2、将其中一个角变成圆角:

div {
 width:  10em;
 height: 10em;
 transform: rotate(-60deg) skewX(-30deg) scale(1, 0.866);
  + border-top-right-radius: 30%;
}

纯CSS实现圆角三角形的方法有哪些

至此,我们就顺利的得到一个带圆角的菱形了!

拼接 3 个带圆角的菱形

接下来就很简单了,我们只需要利用元素的另外两个伪元素,再生成 2 个带圆角的菱形,将一共 3 个图形旋转位移拼接起来即可!

完整的代码如下:

<div></div>
div{
    position: relative;
    background-color: orange;
}
div:before,
div:after {
    content: '';
    position: absolute;
    background-color: inherit;
}
div,
div:before,
div:after {
    width:  10em;
    height: 10em;
    border-top-right-radius: 30%;
}
div {
    transform: rotate(-60deg) skewX(-30deg) scale(1,.866);
}
div:before {
    transform: rotate(-135deg) skewX(-45deg) scale(1.414, .707) translate(0,-50%);
}
div:after {
    transform: rotate(135deg) skewY(-45deg) scale(.707, 1.414) translate(50%);
}

就可以得到一个圆角三角形了!效果如下:

纯CSS实现圆角三角形的方法有哪些

完整的代码你可以戳这里:CodePen Demo -- A triangle with rounded

Https://codepen.io/Chokcoco/pen/vYmLVZr

法三. 图形拼接实现渐变色圆角三角形

完了吗?没有!

上述方案,虽然不算太复杂,但是有一点还不算太完美的。就是无法支持渐变色的圆角三角形。像是这样:

纯CSS实现圆角三角形的方法有哪些

如果需要实现渐变色圆角三角形,还是有点复杂的。但真就还有人鼓捣出来了,下述方法参考至 -- How to make 3-corner-rounded triangle in CSS。

同样也是利用了多块进行拼接,但是这次我们的基础图形,会非常的复杂。

首先,我们需要实现这样一个容器外框,和上述的方法比较类似,可以理解为是一个圆角菱形(画出 border 方便理解):

纯CSS实现圆角三角形的方法有哪些

<div></div>
div {
    width: 200px;
    height: 200px;
    transform: rotate(30deg) skewY(30deg) scaleX(0.866);
    border: 1px solid #000;
    border-radius: 20%;
}

接着,我们同样使用两个伪元素,实现两个稍显怪异的图形进行拼接,算是对 transform 的各种用法的合集:

div::before,
div::after {
    content: "";
    position: absolute;
    width: 200px;
    height: 200px;
}
div::before {
    border-radius: 20% 20% 20% 55%;
    transform: scaleX(1.155) skewY(-30deg) rotate(-30deg) translateY(-42.3%) skewX(30deg) scaleY(0.866) translateX(-24%);
    background: red;
}
div::after {
    border-radius: 20% 20% 55% 20%;
    background: blue;
    transform: scaleX(1.155) skewY(-30deg) rotate(-30deg) translateY(-42.3%) skewX(-30deg) scaleY(0.866) translateX(24%);
}

为了方便理解,制作了一个简单的变换动画:

纯CSS实现圆角三角形的方法有哪些

本质就是实现了这样一个图形:

纯CSS实现圆角三角形的方法有哪些

最后,给父元素添加一个 overflow: hidden 并且去掉父元素的 border 即可得到一个圆角三角形:

纯CSS实现圆角三角形的方法有哪些

由于这两个元素重叠空间的特殊结构,此时,给两个伪元素添加同一个渐变色,会完美的叠加在一起:

div::before,
div::after, {
    background: linear-gradient(#0f0, #03a9f4);
}

最终得到一个渐变圆角三角形:

纯CSS实现圆角三角形的方法有哪些

上述各个图形的完整代码,你可以戳这里:CodePen Demo -- A triangle with rounded and gradient background

https://codepen.io/Chokcoco/pen/LYyGRpV

到此,相信大家对“纯CSS实现圆角三角形的方法有哪些”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 纯CSS实现圆角三角形的方法有哪些

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

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

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

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

下载Word文档
猜你喜欢
  • 纯CSS实现圆角三角形的方法有哪些
    本篇内容主要讲解“纯CSS实现圆角三角形的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“纯CSS实现圆角三角形的方法有哪些”吧!法一. 全兼容的 SV...
    99+
    2022-10-19
  • 纯CSS绘制三角形的方法
    本篇内容主要讲解“纯CSS绘制三角形的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“纯CSS绘制三角形的方法”吧!CSS绘制三角形的方法:1、定义个宽高为0的标签元素;2、使用“border...
    99+
    2023-06-14
  • CSS绘制三角形的方法有哪些
    本篇内容主要讲解“CSS绘制三角形的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS绘制三角形的方法有哪些”吧!使用 border 绘制三角形使用 border 实现三角形应该是大...
    99+
    2023-07-05
  • css3实现三角形的方法有哪些
    这篇文章主要讲解了“css3实现三角形的方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“css3实现三角形的方法有哪些”吧! ...
    99+
    2022-10-19
  • CSS实现左上朝向三角形的方法有哪些
    本篇内容主要讲解“CSS实现左上朝向三角形的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS实现左上朝向三角形的方法有哪些”吧!第一种:#triangle-topleft ...
    99+
    2023-07-05
  • 纯css实现小箭头或三角形标志的方法
    小编给大家分享一下纯css实现小箭头或三角形标志的方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!实现小箭头:.arrow{    width: 20px; &...
    99+
    2023-06-08
  • CSS+DIV实现圆角表格的方法有哪些
    这篇文章主要介绍“CSS+DIV实现圆角表格的方法有哪些”,在日常操作中,相信很多人在CSS+DIV实现圆角表格的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”CS...
    99+
    2022-10-19
  • css下三角形代码的写法有哪些
    这篇文章主要为大家展示了“css下三角形代码的写法有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css下三角形代码的写法有哪些”这篇文章吧。 ...
    99+
    2022-10-19
  • 纯CSS怎么实现页面的尖角、小三角、不同方向尖角
    这篇文章给大家分享的是有关纯CSS怎么实现页面的尖角、小三角、不同方向尖角的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。效果图:方法一的效果图:方法二的效果图:方法三的效果图:方法1:因为有背景,所有实现起来比较...
    99+
    2023-06-08
  • CSS中左上朝向三角形的制作方法有哪些
    小编给大家分享一下CSS中左上朝向三角形的制作方法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!今天我们介绍几种,用css实现左上朝向三角形(Top-Lef...
    99+
    2023-06-08
  • DIV+CSS圆角效果的实现方法
    本篇内容介绍了“DIV+CSS圆角效果的实现方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!DIV+CS...
    99+
    2022-10-19
  • android实现圆角矩形背景的方法
    本文实例讲述了android实现圆角矩形背景的方法。分享给大家供大家参考。具体如下: 1. java代码如下: import android.graphics.Canvas;...
    99+
    2022-06-06
    方法 Android
  • 在python中输出杨辉三角形的方法有哪些
    在python中输出杨辉三角形的方法有哪些?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;...
    99+
    2023-06-06
  • CSS中的圆角,隔行,变色的具体实现方法
    本篇内容主要讲解“CSS中的圆角,隔行,变色的具体实现方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS中的圆角,隔行,变色的具体实现方法”吧! ...
    99+
    2022-10-19
  • Android实现自定义圆形进度条的常用方法有哪些
    今天小编给大家分享一下Android实现自定义圆形进度条的常用方法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、通...
    99+
    2023-07-05
  • 实现CSS居中的方法有哪些
    这篇文章主要介绍了实现CSS居中的方法有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 假设现在给出这种场景:<div ...
    99+
    2022-10-19
  • Python数组变形的实现方法有哪些
    这篇文章主要介绍了Python数组变形的实现方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python数组变形的实现方法有哪些文章都会有所收获,下面我们一起来看看吧。1.reshapereshape是...
    99+
    2023-06-30
  • CSS实现Footer置底的方法有哪些
    这篇文章主要介绍了CSS实现Footer置底的方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇CSS实现Footer置底的方法有哪些文章都会有所收获,下面我们一起来看看...
    99+
    2022-10-19
  • java实现遍历树形菜单的方法有哪些
    这篇文章将为大家详细讲解有关java实现遍历树形菜单的方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下。OpenSessionView实现:package org.web;imp...
    99+
    2023-05-30
    java
  • CSS中实现垂直居中的方法有哪些
    本篇文章给大家分享的是有关CSS中实现垂直居中的方法有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。方法1:table-cellhtml结...
    99+
    2022-10-19
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作