news 2026/6/29 22:33:53

告别图片!三种 CSS 原生方案实现任意方向三角形

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
告别图片!三种 CSS 原生方案实现任意方向三角形

哈喽大家好!

今天我们来讲如何用css实现任意的三角形

在日常开发中你是不是遇到过弹窗箭头、标签尖角、分割指示图标等场景都需要三角形,而插入图片又太麻烦、兼容性差、加载慢。我整理了三种实现方法,分别是:

1.边框法(最常用的)

1.给盒子设置宽高都为0;

2.给盒子四条边设置相同粗细,不同的颜色

3.浏览器边框交界处会自动切割成斜角,四条边框各自形成三角形;

4.需要哪个方向的三角形就保留对应边颜色,其余三边设为transparent透明

<style> *{ /* 给盒子设置宽高都为0;*/ margin: 0; padding: 0; } .box{ /* 给盒子四条边设置相同粗细,不同的颜色 浏览器边框交界处会自动切割成斜角,四条边框各自形成三角形; 需要哪个方向的三角形就保留对应边颜色,其余三边设为 transparent 透明 */ width: 0px; height: 0px; border: 50px solid; border-color: red green blue yellow; } </style> <body> <div class="box"></div> </body>

运行代码:

2.裁剪法

1.clip-path: polygon() 多边形裁剪,通过设置 3 个坐标点,只保留三角形区域,其余全部裁剪透明

2.坐标规则:

坐标系:元素左上角为 (0,0),向右 X 增大,向下 Y 增大polygon(x1 y1, x2 y2, x3 y3) 三个点围成三角形

<style> *{ margin: 0; padding: 0; } div{ margin: 50px auto; width: 200px; height: 200px; background-color: aqua; clip-path: polygon(0% 100%,50% 0%,100% 100%); } </style> <body> <div></div> </body>

运行代码:

3. 通过background实现

1.容器宽和高设置为0

2.定义两段对角线线性渐变,前半透明、后半填充渐变色

3.通过 background-size 统一控制三角尺寸

<style> *{ margin: 0; padding: 0; } div{ width: 200px; height: 200px; margin: 50px auto; background: linear-gradient(45deg,red 50%,transparent 50%); } </style> <body> <div></div> </body>

代码示例:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/29 22:32:22

使用typedef封装函数指针新类型

typedef的用法是在定义前加上这个关键字&#xff0c;就能得到一个新的类型名&#xff1b;例如int a;变成typedef int a ;那么就可以用a表示Int了。比如void (*test)(void);那么加上typedef就变成了typedef void (*test)(void);类型名test就表示一个返回值是void参数是void的一个…

作者头像 李华
网站建设 2026/6/29 22:28:59

AFE5808评估板实战指南:从硬件配置到动态性能测试

1. 项目概述与核心价值在医疗超声、工业无损检测或者高端通信接收机这类对模拟信号完整性要求极高的领域&#xff0c;选型一颗高性能的模拟前端&#xff08;AFE&#xff09;芯片只是第一步。真正的挑战在于&#xff0c;如何在实际的电路板上验证这颗芯片是否真的能达到数据手册…

作者头像 李华
网站建设 2026/6/29 22:22:36

3D Web 服务器环境搭建

一、Ubuntu安装nodejs# 导入源 curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - # 安装 sudo apt install nodejs -y //安装包管理器&#xff08;1&#xff09;curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - 导入源的作用&…

作者头像 李华
网站建设 2026/6/29 22:18:48

leetcode:两个数组的交集

class Solution { public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {set<int> s1(nums1.begin(),nums1.end());//set自动会去重和排序set<int> s2;vector<int> v;//去s1里面找有没有nums2里面的数据for…

作者头像 李华
网站建设 2026/6/29 22:14:59

2026年AI写作辅助平台测评:5款神器从选题到格式全流程护航

写论文的焦虑&#xff0c;是每个科研人和学生都无法回避的“必修课”。选题无从下手&#xff0c;文献检索耗时费力&#xff0c;格式排版反复修改&#xff0c;查重降重更是让人抓耳挠腮。2026年的AI工具&#xff0c;早已不再是冷冰冰的“文字机器”&#xff0c;而是变成了能理解…

作者头像 李华
网站建设 2026/6/29 22:09:34

【RV1103/RV1106】基于Buildroot定制蓝牙文件系统:从依赖解析到实战排错

1. 为什么选择Buildroot构建蓝牙文件系统 在嵌入式开发中&#xff0c;文件系统的构建一直是个让人头疼的问题。特别是当我们需要为RV1103/RV1106这类资源受限的平台添加蓝牙支持时&#xff0c;传统的编译方式往往会遇到各种依赖地狱。Buildroot的出现&#xff0c;就像给开发者递…

作者头像 李华