你真的了解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;
相关推荐
凯瑟琳.奥古斯特3 小时前
Redis是什么及核心特性
前端·css·redis·缓存
DFT计算杂谈3 小时前
VASP官方教程 TRIQS DFT+DMFT计算教程
运维·css·自动化·html·css3
可达鸭小栈7 小时前
易语言实现CSS像素文字生成器:无需字体文件渲染汉字
前端·css
yqcoder8 小时前
CSS 迷思破解:`:nth-child` vs `:nth-of-type`
前端·css
遇见~未来8 小时前
第六篇_CSS进阶_深入浏览器与工程化
前端·css·rust
xingpanvip9 小时前
星盘接口开发文档:日运语料接口指南
android·开发语言·前端·css·php·lua
之歆10 小时前
Day05_CSS完整博客笔记(下)
前端·css·笔记
之歆10 小时前
Day05_CSS完整博客笔记(上)
前端·css·笔记
ZC跨境爬虫10 小时前
跟着 MDN 学 HTML day_7:(进阶文本语义标签全覆盖)
前端·javascript·css·ui·html
Dxy123931021610 小时前
CSS的伪类简介
前端·css