찾다
웹 프론트엔드CSS 튜토리얼순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)

이 글에서는 CSS를 사용하여 둥근 삼각형을 그리는 3가지 방법을 소개합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.

순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)

이 기사의 앞선 "6 CSS를 사용하여 삼각형을 그리는 방법(공유)"에서는 CSS를 사용하여 삼각형을 구현하는 6가지 방법을 소개했습니다.

그러나 매우 중요한 장면이 빠졌습니다. 순수한 CSS를 사용하여 모서리가 둥근 삼각형을 구현하는 방법은 무엇입니까? , 이렇게:

순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)

이 글에서는 모서리가 둥근 삼각형을 구현하는 여러 가지 방법을 소개합니다.

방법 1. 완전 호환되는 SVG 방법

모서리가 둥근 삼각형을 생성하려면 최소 코드량, 가장 좋은 방법은 SVG를 사용하여 생성하는 것입니다.

SVG의 다각형 태그 <polygon></polygon>를 사용하여 삼각형을 생성하고 SVG의 Stroke-linejoin="round"를 사용하여 결합 시 필렛을 생성합니다. <polygon></polygon> 生成一个三边形,使用 SVG 的 stroke-linejoin="round" 生成连接处的圆角。

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

<svg>
  <polygon></polygon>
</svg>
.triangle {
    fill: #0f0;
    stroke: #0f0;
    stroke-width: 10;
}

实际图形如下:

순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)

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

  • miter 是默认值,表示用方形画笔在连接处形成尖角
  • round 表示用圆角连接,实现平滑效果
  • bevel 连接处会形成一个斜接

순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)

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

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

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

순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)

通过 stroke-width 控制圆角大小

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

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

순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)

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

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

法二. 图形拼接

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

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

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

순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)

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

순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)

绘制带圆角的菱形

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

1、首先将一个正方形变成一个菱形,利用 transform

코드 양이 매우 적으며 핵심 코드는 다음과 같습니다.

<div></div>
div {
    width:  10em;
    height: 10em;
    transform: rotate(-60deg) skewX(-30deg) scale(1, 0.866);
}
실제 그래픽은 다음과 같습니다. 순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)

여기서 둥근 모서리는 실제로 Stroke-linejoin: round의 도움으로 생성됩니다. > SVG 폴리곤의 속성, Stroke-linejoin 이란 무엇인가요? 두 개의 선 세그먼트 사이의 간격을 제어하는 ​​데 사용됩니다. 여기에는 세 가지 선택 값이 있습니다.

  • miter는 기본값입니다. 이는 사각형 브러시를 사용하여 날카로운 모서리를 형성하는 것을 의미합니다. 연결
  • 둥근은 부드러운 효과를 얻기 위해 둥근 모서리로 연결하는 것을 의미합니다.
  • 베벨 연결은 마이터를 형성합니다
  • li>
순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)

순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)us 실제로 둥근 삼각형은 테두리가 있는 다각형에서 생성되며 테두리 연결 유형은 Stroke-linejoin: round입니다.

배경색과 테두리색을 분리하면 실제로는 다음과 같습니다.

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

순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)

획 너비를 통해 필렛 크기를 제어하세요

그럼 필렛 크기를 어떻게 제어하나요? 획 너비의 크기를 제어하여 필렛의 크기를 변경할 수도 있습니다.

🎜물론, 삼각형의 크기를 일정하게 유지하려면 획 너비를 늘리거나 줄이는 동시에 너비/높이를 줄이거나 늘려야 합니다. 그래픽 코드>:🎜🎜<img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/image/141/215/764/1626347192516588.png?x-oss-process=image/resize,p_40" class="lazy" title="162634715355646순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)" alt=" 순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)"> 🎜<blockquote>🎜전체 데모를 보려면 여기를 클릭하세요: CodePen 데모 - SVG를 사용하여 모서리가 둥근 삼각형 구현🎜🎜https://codepen.io/Chokcoco/pen/eYWZvKo🎜🎜🎜방법 2. 그래픽 접합🎜🎜🎜그러나 위에서 언급한 것처럼 🎜순수한 CSS를 사용하여 모서리가 둥근 삼각형을 구현🎜하지만 위의 첫 번째 방법은 실제로 SVG에 의존합니다. CSS를 사용하는 방법이 있나요? 🎜🎜물론, CSS의 흥미로운 부분인 다양한 생각이 여기에 있습니다. 그래픽을 사용하면 많은 독창적인 솔루션이 있을 수 있습니다! 🎜🎜한 번 봅시다. 둥근 삼각형은 실제로 여러 부분으로 나눌 수 있습니다: 🎜🎜<img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/image/141/215/764/1626347192516588.png?x-oss-process=image/resize,p_40" class="lazy" title="162634718549493순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)" alt="순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)">🎜🎜그래서 사실 이렇게 모서리가 둥근 마름모만 그릴 수 있으면 되고, 3을 회전하고 중첩하면 원 Angular를 얻을 수 있습니다. 삼각형: 🎜🎜<img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/image/141/215/764/1626347192516588.png?x-oss-process=image/resize,p_40" class="lazy" title="1626347192516588.png" alt="순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)"> 🎜 🎜🎜둥근 모서리가 있는 마름모 그리기🎜🎜🎜다음 목표는 모서리가 둥근 마름모를 그리는 것입니다. 이 글에서는 다음과 같은 방법 중 하나를 제공합니다. 🎜🎜1. . 정사각형을 마름모로 바꾸려면 <code>변형을 사용하여 고정된 공식을 사용하세요: 🎜
<div></div>
div{
    position: relative;
    background-color: orange;
}
div:before,
div:after {
    content: &#39;&#39;;
    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%);
}
🎜🎜🎜🎜🎜🎜🎜2 모서리 중 하나를 둥근 모서리로 바꿉니다: 🎜
<div></div>
🎜🎜🎜 🎜이 시점에서 모서리가 둥근 마름모를 성공적으로 얻었습니다! 🎜🎜🎜모서리가 둥근 마름모 3개 결합하기🎜🎜🎜다음 단계는 매우 간단합니다. 요소의 다른 두 의사 요소를 사용하여 모서리가 둥근 마름모 2개를 더 생성하고 총 3개를 회전 및 이동하면 됩니다. 그래픽. 그냥 합쳐보세요! 🎜🎜전체 코드는 다음과 같습니다. 🎜
<div></div>
div{
    position: relative;
    background-color: orange;
}
div:before,
div:after {
    content: &#39;&#39;;
    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%);
}

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

1순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)

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

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

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

完了吗?没有!

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

1순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)

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

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

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

1순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)

<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로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)

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

1순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)

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

1순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)

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

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

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

1순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)

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

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

最后

本文介绍了几种在 CSS 中实现带圆角三角形的方式,虽然部分有些繁琐,但是也体现了 CSS ”有趣且折磨人“ 的一面,具体应用的时候,还是要思考一下,对是否使用上述方式进行取舍,有的时候,切图也许是更好的方案。

好了,本文到此结束,希望对你有帮助 :)

原文地址:https://segmentfault.com/a/1190000040344317

作者:chokcoco

更多编程相关知识,请访问:编程视频!!

위 내용은 순수 CSS로 둥근 삼각형을 구현하는 3가지 방법(기술 공유)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 segmentfault에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
마진은 무엇입니까? 40px 100px 120px 80px를 의미합니까?마진은 무엇입니까? 40px 100px 120px 80px를 의미합니까?Apr 28, 2025 pm 05:31 PM

기사는 CSS 마진 속성, 특히 "마진 : 40px 100px 120px 80px", 응용 프로그램 및 웹 페이지 레이아웃에 미치는 영향에 대해 설명합니다.

다른 CSS 테두리 속성은 무엇입니까?다른 CSS 테두리 속성은 무엇입니까?Apr 28, 2025 pm 05:30 PM

이 기사에서는 CSS 국경 속성에 대해 설명하고 사용자 정의, 모범 사례 및 응답성에 중점을 둡니다. 주요 인수 : Border-Radius는 반응 형 디자인에 가장 효과적입니다.

CSS 배경은 무엇이며 속성을 나열합니까?CSS 배경은 무엇이며 속성을 나열합니까?Apr 28, 2025 pm 05:29 PM

이 기사에서는 CSS 배경 속성, 웹 사이트 디자인 향상에 대한 사용 및 피하는 일반적인 실수에 대해 설명합니다. 주요 초점은 배경 크기를 사용한 반응 형 디자인에 중점을 둡니다.

CSS HSL 색상은 무엇입니까?CSS HSL 색상은 무엇입니까?Apr 28, 2025 pm 05:28 PM

기사는 CSS HSL 색상, 웹 디자인에서의 사용 및 RGB의 장점에 대해 설명합니다. 주요 초점은 직관적 인 색상 조작을 통해 설계 및 접근성을 향상시키는 데 있습니다.

CSS에 댓글을 추가 할 수있는 방법은 무엇입니까?CSS에 댓글을 추가 할 수있는 방법은 무엇입니까?Apr 28, 2025 pm 05:27 PM

이 기사는 CSS의 주석 사용에 대해 논의하고 단일 라인 및 멀티 라인 주석 구문을 자세히 설명합니다. 의견은 코드 가독성, 유지 관리 및 협업을 향상 시키지만 제대로 관리하지 않으면 웹 사이트 성능에 영향을 줄 수 있다고 주장합니다.

CSS 선택기는 무엇입니까?CSS 선택기는 무엇입니까?Apr 28, 2025 pm 05:26 PM

이 기사는 CSS 선택기, 유형 및 HTML 요소 스타일링을위한 사용법에 대해 설명합니다. ID와 클래스 선택기를 비교하고 복잡한 선택기의 성능 문제를 해결합니다.

어떤 유형의 CSS가 우선 순위가 가장 높습니까?어떤 유형의 CSS가 우선 순위가 가장 높습니까?Apr 28, 2025 pm 05:25 PM

이 기사는 CSS 우선 순위에 대해 논의하며, 가장 높은 특이성을 가진 인라인 스타일에 중점을 둡니다. CSS 충돌 관리를위한 특이성 수준, 재정의 방법 및 디버깅 도구를 설명합니다.

HTML 파일에 CSS를 몇 가지 방법으로 추가 할 수 있습니까?HTML 파일에 CSS를 몇 가지 방법으로 추가 할 수 있습니까?Apr 28, 2025 pm 05:24 PM

기사는 HTML에 CSS를 추가하는 세 가지 방법, 즉 인라인, 내부 및 외부를 논의합니다. 웹 사이트 성능 및 초보자의 적합성에 대한 각 방법의 영향이 분석됩니다. (159 자)

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.