纯 CSS 实现三角形的 3 种方式

简介: CSS 提供了三种出色的方法可以实现基本的形状。本文就来看看如何使用这些方法来实现一个三角形。三种方法如下:border;linear-gradient;clip-path。

CSS 提供了三种出色的方法可以实现基本的形状。本文就来看看如何使用这些方法来实现一个三角形。三种方法如下:

  • border;
  • linear-gradient;
  • clip-path。


1. border


使用 CSS 绘制三角形的第一种方法就是使用 border 属性。

给定一个宽度和高度都为 0 的元素,其 border 的任何值都会直接相交,我们可以利用这个交点来创建三角形。也就是说,border属性是三角形组成的,下面给每一边都提供不同的边框颜色:

.triangle {
    width: 0;
    height: 0;
    border: 100px solid;
    border-color: orangered skyblue gold yellowgreen;
}
复制代码


将元素的长宽都设置为0,效果是这样的:

网络异常,图片无法展示
|


可以看到,我们已经基本上实现了4个三角形形状。所以可以根据border这个特性来绘制三角形。

如果想要一个指向下面的三角形,可以让 border 的上边可见,其他边都设置为透明:

.triangle {
    width: 0;
    height: 0;
    border-top: 50px solid skyblue;
    border-right: 50px solid transparent;
    border-left: 50px solid transparent;
}
复制代码


网络异常,图片无法展示
|


如果想要一个指向右面的三角形,可以让 border 的左边可见,其他边都设置为透明:

.triangle {
    width: 0;
    height: 0;
    border-left: 50px solid skyblue;
    border-top: 50px solid transparent;
    border-bottom: 50px solid transparent;
}
复制代码


网络异常,图片无法展示
|


上面的代码也可以这样写:

.triangle {
  border-style: solid;
  border-color: transparent;
  border-width: 50px 0 50px 50px;
  border-left-color: skyblue;
}
复制代码


我们还可以通过调整不同方向边框的值来实现不同方向和大小的三角形:

.triangle {
    width: 0;
    height: 0;
    border-top: 100px solid skyblue;
    border-right: 100px solid transparent;
}
复制代码


网络异常,图片无法展示
|


当然,实现一个等边三角形也是可以的:

.triangle {
    width: 0;
    height: 0;
    border-left: 69px solid transparent;  
    border-right: 69px solid transparent;  
    border-bottom: 120px solid skyblue; 
}
复制代码


网络异常,图片无法展示
|


2. linear-gradient


linear-gradient 需要结合 background-image 来实现三角形,下面就来逐步使用渐变实现一个三角形。

首先,我们先来画一个长方形:

.triangle {
  width: 80px;
  height: 100px;
  background-repeat: no-repeat;
  outline: 1px solid skyblue;
}
复制代码


效果如下:

网络异常,图片无法展示
|


接下来,添加一个渐变,这会使元素的一半呈现红色:

background-image: linear-gradient(45deg, orangered 50%, rgba(255, 255, 255, 0) 50%);
复制代码


效果如下:

网络异常,图片无法展示
|


我们的目标是创建一个与使用 border 方法时外观相同的三角形。 因此,需要调整 background-size 和 background-position 值:

background-size: 100% 50%;
复制代码


效果如下:

网络异常,图片无法展示
|


由于渐变设置了 45 度角,形状看起来有些奇怪。 需要调整角度,使三角形的顶边是从左上角开始,直到右侧的中间。可以使用浏览器开发者工具进行调试,直到预期的效果。将 linear-gradient 值更新为:

background-image: linear-gradient(32deg, orangered 50%, rgba(255, 255, 255, 0) 50%);
复制代码


效果如下:

网络异常,图片无法展示
|


这其实已经是一个三角形了,但还不是我们想要的效果。对于线性渐变,我们需要添加多个背景来实现三角形。下面来添加一个它的镜像效果:

background-image: linear-gradient(32deg, orangered 50%, rgba(255, 255, 255, 0) 50%), linear-gradient(148deg, orangered 50%, rgba(255, 255, 255, 0) 50%);
复制代码


效果如下:

网络异常,图片无法展示
|


看似距离三角形还很远,但是只需最后一步,只需调整两个三角形的位置即可,这里使用 background-position 属性来调整:

background-position: top left, bottom left;
复制代码


效果如下:

网络异常,图片无法展示
|


这样就实现了三角形的效果(去掉outline即可),最终的代码如下:

.triangle {
    width: 160px;
    height: 200px;
    outline: 2px solid skyblue;
    background-repeat: no-repeat;
    background-image: linear-gradient(32deg, orangered 50%, rgba(255, 255, 255, 0) 50%), linear-gradient(148deg, orangered 50%, rgba(255, 255, 255, 0) 50%);
    background-size: 100% 50%;
    background-position: top left, bottom left;
}
复制代码


CSS 线性渐变可用于创建很多种形状。不过它是有缺点的,就是需要调试出合适的渐变角度。


3. clip-path


最后一种方法——clip-path,它是最精简和最可具扩展性的。 不过目前其在浏览器兼容性不是很好,使用时要考虑浏览器是否支持。

网络异常,图片无法展示
|


下面先画一个带背景颜色的长方形:

.triangle {
  width: 80px;
  height: 100px;
  background-color: skyblue;
}
复制代码


效果如下:

网络异常,图片无法展示
|


clip-path 就是使用它来绘制多边形(或圆形、椭圆形等)并将其定位在元素内。实际上,浏览器不会绘制 clip-path 之外的任何区域,因此我们看到的是 clip-path 的边界。


下面来绘制一个指向右侧的三角形:

clip-path: polygon(0 0, 0% 100%, 100% 50%);
复制代码


这个值是怎么来的呢?使用 clip-path 可以为沿路径放置的每个点定义坐标。在这种情况下,就定义了三个点:top-left (0 0)bottom-left (0% 100%)right-center (100% 50%)。效果如下:

网络异常,图片无法展示
|


完整代码如下:

.triangle{
    margin: 100px;
    width: 160px;
    height: 200px;
    background-color: skyblue;
    clip-path: polygon(0 0, 0% 100%, 100% 50%);
}
复制代码


可以使用在线工具来尝试这个属性,绘制不同的图形:bennettfeely.com/clippy/

本文到这里就结束了,你还知道哪些使用纯 CSS 实现三角形的方法?

相关文章
|
前端开发
css实现伪类三角形气泡框 带边框
css实现伪类三角形气泡框 带边框
302 3
|
前端开发
CSS画三角形(三种方法)
CSS画三角形(三种方法)
|
前端开发
玩转CSS盒子之 三角形盒子
玩转CSS盒子之 三角形盒子
240 0
|
前端开发
如何用CSS 画一个三角形?
如何用CSS 画一个三角形?
204 0
|
前端开发 容器
如何利用CSS实现三角形、扇形、聊天气泡框
如何利用CSS实现三角形、扇形、聊天气泡框
811 0
|
前端开发
如何使用css写三角形
如何使用css写三角形
196 4
|
前端开发
用纯 CSS 创建一个三角形
使用纯 CSS 可以通过边框技巧创建三角形。例如,要创建一个指向下方的等边三角形,可以将 `width` 和 `height` 设为 `0`,并通过透明的左右边框和有颜色的底边来形成三角形。
|
前端开发
CSS制作小三角形
CSS制作小三角形
196 1
|
前端开发
如何使用css写三角形
如何使用css写三角形
230 1
|
前端开发
CSS绘制三角形的方法
CSS绘制三角形的方法

热门文章

最新文章

  • 1
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    570
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    434
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    434
  • 4
    (CSS)使用Flex布局,帮助你快速了解各种基本的Flex布局属性以及帮你让元素快速达到布局中的指定位置!
    284
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    548
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    726
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    1413
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    315
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    1168
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    509