你真的了解css绘制三角形吗?

原理

先上口诀:宽高为0,一边为0,两边透明。

元素的border的形成机制是:

在盒子四边由4个三角形 拼接而成,最先呈现的是每个三角形底部的内容,当border-width变大后,每个三角形的剩余部分会渐渐出现;

当盒子内容有宽高时,会遮住每个三角形底部之外的部分;

比如

css 复制代码
width: 40px;
height: 40px;
border-width: 50px;
border-style: solid;
border-color: red yellow green blue;

当border-width设置过小时,就是平时的场景(只看到每个三角形底部区域):

css 复制代码
width: 40px;
height: 40px;
border-width: 1px;
border-style: solid;
border-color: red yellow green blue;

当盒子宽高设置为0后,每个三角形全部呈现:

css 复制代码
width: 0;
height: 0;
border-width: 30px;
border-style: solid;
border-color: red yellow green blue;

如果有一边不设置border-width,就只有三个三角形:

css 复制代码
width: 0;
height: 0;
border-width: 30px 30px 30px 0;
border-style: solid;
border-color: red yellow green #fff;

如果将上下两边的color设置为透明,不就是只看到一个三角形吗:

css 复制代码
width: 0;
height: 0;
border-width: 30px 30px 30px 0;
border-style: solid;
border-color: transparent yellow transparent #fff;

不难发现,不设置border-width那一边就是三角形的方向,三角形方向的方向的邻近两边需要设置透明。

实现口诀:宽高为0,一边为0,两边透明

css 复制代码
width: 0;
height: 0;
border-width: 30px 30px 30px 0;
border-style: solid;
border-color: transparent yellow transparent #fff;
相关推荐
小桥风满袖13 分钟前
工作多年,我学会了写防御性CSS
css
前端康师傅19 分钟前
CSS基础教程-性能优化
前端·css
爱上大树的小猪3 小时前
【前端样式】使用Flexbox实现经典导航栏:自适应间距与移动端折叠实战
前端·css·面试
Light_103 小时前
CSS实验:linear-gradient 实现「四角边框」和「 字体渐变」
css·html·css3
666本尊594383 小时前
安卓设备像素详解
前端·css
Enti7c5 小时前
css定位
前端·css
和和和7 小时前
前端面试中常见的 CSS 相关问题
前端·css
韩振方7 小时前
为什么 scroll 事件无法被 e.preventDefault 阻止?
前端·javascript·css
江城开朗的豌豆8 小时前
CSS篇:前端开发者必须掌握的CSS核心知识:选择器与优先级详解
前端·css·面试
江城开朗的豌豆8 小时前
CSS篇:前端布局新思路:左侧宽度智能调节,右侧自适应填充的5种实现
前端·css·面试