当前位置: 首页 > news >正文

怎么使用 CSS 如何画一个三角形

实现过程

在以前也讲过盒子模型,默认情况下是一个矩形,实现也很简单

<style>.border {width: 50px;height: 50px;border: 2px solid;border-color: #96ceb4 #ffeead #d9534f #ffad60;}
</style>
<div class="border"></div>

效果如下图所示:

border设置50px,效果图如下所示:

白色区域则为widthheight,这时候只需要你将白色区域部分宽高逐渐变小,最终变为0,则变成如下图所示:

这时候就已经能够看到4个不同颜色的三角形,如果需要下方三角形,只需要将上、左、右边框设置为0就可以得到下方的红色三角形

但这种方式,虽然视觉上是实现了三角形,但实际上,隐藏的部分任然占据部分高度,需要将上方的宽度去掉

最终实现代码如下:

.border {width: 0;height: 0;border-style:solid;border-width: 0 50px 50px;border-color: transparent transparent #d9534f;
}

如果想要实现一个只有边框是空心的三角形,由于这里不能再使用border属性,所以最直接的方法是利用伪类新建一个小一点的三角形定位上去

.border {width: 0;height: 0;border-style:solid;border-width: 0 50px 50px;border-color: transparent transparent #d9534f;position: relative;
}
.border:after{content: '';border-style:solid;border-width: 0 40px 40px;border-color: transparent transparent #96ceb4;position: absolute;top: 0;left: 0;
}

效果图如下所示:

伪类元素定位参照对象的内容区域宽高都为0,则内容区域即可以理解成中心一点,所以伪元素相对中心这点定位

将元素定位进行微调以及改变颜色,就能够完成下方效果图:

最终代码如下:

.border:after {content: '';border-style: solid;border-width: 0 40px 40px;border-color: transparent transparent #96ceb4;position: absolute;top: 6px;left: -40px;
}

原理分析

可以看到,边框是实现三角形的部分,边框实际上并不是一个直线,如果我们将四条边设置不同的颜色,将边框逐渐放大,可以得到每条边框都是一个梯形

当分别取消边框的时候,发现下面几种情况:

  • 取消一条边的时候,与这条边相邻的两条边的接触部分会变成直的
  • 当仅有邻边时, 两个边会变成对分的三角
  • 当保留边没有其他接触时,极限情况所有东西都会消失

通过上图的变化规则,利用旋转、隐藏,以及设置内容宽高等属性,就能够实现其他类型的三角形

如设置直角三角形,如上图倒数第三行实现过程,我们就能知道整个实现原理

实现代码如下:

.box {/* 内部大小 */width: 0px;height: 0px;/* 边框大小 只设置两条边*/border-top: #4285f4 solid;border-right: transparent solid;border-width: 85px; /* 其他设置 */margin: 50px;
}
http://www.jsqmd.com/news/1269919/

相关文章:

  • 零代码微调LLaMA-Factory打造高效票务AI助手
  • 2026深圳各区正规搬家服务商名单汇总:福田/罗湖/南山/宝安/龙岗/龙华/盐田,按区选择,各区直营分部,就近派车,靠谱精选 - 厚道搬家
  • 免费解锁Wand专业版:简单三步实现游戏修改功能增强指南
  • 信友队 统计环(状压DP+钦定优化)
  • MediaPlugin常见问题解答:解决90%开发者遇到的技术难题
  • 免费开源眼动追踪:如何用计算机视觉技术实现精准视线控制
  • CiviCRM数据库架构深度解析:核心表结构与关系模型
  • Window Resizer:Windows窗口大小强制调整工具的终极指南
  • 2026 自媒体专用好用的 AI 修图平台推荐,海报封面快速美化,ImageGood 创作者必备工具 - GrowthUME
  • kubevirt - 心识
  • DSOD300 vs 传统检测器:为什么深度监督结构让从 scratch 训练成为可能?
  • 2026寄件省钱全攻略:快递社领衔妈妈寄大件 - 快递物流实时资讯
  • 如何用gh_mirrors/dsa/DSA提升C开发效率:10个必备数据结构详解
  • KTV 里高音飙不上去,想提前练练升 Key?2026 免费音频变调工具,随便升降几个半音,人声依然自然不假。 - 今日咨询
  • 一键备份你的QQ空间:GetQzonehistory开源工具完全指南
  • C++游戏开发全流程:从架构设计到性能优化的工程实践
  • 深圳龙华区搬家公司口碑推荐榜:深圳北高铁通勤圈、红山民治新兴住宅、观澜大浪片区服务能力与评价解析 - 厚道搬家
  • 如何用developer-portfolio快速创建专业作品集?10分钟完成个人品牌展示网站
  • java学习五
  • 解决Windows游戏DirectX报错全攻略
  • 从命令行到API:tsc-watch的多场景应用案例
  • nginx - 心识
  • DenseNet-BC架构详解:如何用更少参数实现CIFAR-10最佳精度3.46%
  • Kubernetes StorageClass配置与CKA认证实战指南
  • MiniMax Hub:本地AI创意工作流集成开发环境深度解析
  • Linux文件IO原理与高性能编程实践
  • 【信息科学与工程学】【通信工程】第七十三篇 分组网络中服务质量保障的算法 20
  • AI模型数学题测试必须绕开的5个认知陷阱,第3个连OpenAI内部文档都未披露
  • 寄件避坑省钱:两款微信工具就够了 - 快递物流实时资讯
  • 【Bug已解决】[Bug]: fastapi error ‘_IncludedRouter‘ object has no attribute ‘path‘ 解决方案