You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求解析CSS绘制三角形代码:为何呈现三角形而非预期边框

CSS边框绘制三角形的原理解析

先看你提供的代码:

.triangle {
  width: 0;
  height: 0;
  border-top: 100vh solid yellow;
  border-right: 100vw solid rgb(13, 13, 54);
}
<div class="triangle"></div>

为什么会画出三角形,而非预期的顶部黄边、右侧蓝边?

核心原因是当元素的width和height都设为0时,CSS边框的渲染逻辑完全变了:

平时元素有宽高时,边框是围绕内容区域的矩形线条——比如给一个宽100px、高100px的盒子加边框,边框就是包裹这个盒子的四条边。但当元素宽高为0时,内容区域消失,四个边框会变成以元素原点(默认左上角)为交汇点的三角形填充块:每个边框的“宽度”(比如border-top的数值)其实是它向相反方向延伸的长度,最终呈现为三角形形状。

放到你的代码里具体说:

  • 你只设置了border-top和border-right,另外两个方向的边框(border-bottom、border-left)默认宽度为0,不会显示。
  • border-top: 100vh solid yellow:这个边框会从元素左上角向下延伸100vh(整个视口高度),形成一个直角三角形区域;border-right: 100vw solid rgb(13,13,54)则从元素左上角向右延伸100vw(整个视口宽度),形成另一个直角三角形区域。
  • 这两个三角形以左上角为公共顶点,拼接在一起就成了覆盖整个视口的大直角三角形,而不是你以为的独立侧边线条。

简单说:元素没宽高时,边框不再是“线”,而是“填充的三角形块”,相邻的两个边框自然会拼成更大的三角形。

内容的提问来源于stack exchange,提问作者aks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 05:38:26