美文网首页
CSS 三角形详解

CSS 三角形详解

作者: 越前君 | 来源:发表于2023-11-24 19:25 被阅读0次
配图源自 Freepik

本文将会详细介绍如何使用纯 CSS 实现各种三角形。文末会推荐一个在线工具。

了解边框

我们知道,任何 HTML 元素其实都是一个矩形的盒子。通过以下 CSS 属性可以设置元素的四条边框:

  • border-top
  • border-right
  • border-bottom
  • border-left

话不多说,先看示例:

<!-- 为了方便截图,父元素宽度设置为 300px -->
<div class="rect">some text...</div>
.rect {
  border-top: 30px solid red;
  border-right: 30px solid green;
  border-bottom: 30px solid blue;
  border-left: 30px solid orange;
}

接着,我们把 div 的文本干掉,再看下效果:

<div class="rect"></div>

由于 div 是块级元素,它默认占满父元素的宽度(截图中父元素宽度为 300px)。

然后,我们把 div 的 widthheight 均设为 0,再看下效果:

.rect {
  width: 0;
  height: 0;
  border-top: 30px solid red;
  border-right: 30px solid green;
  border-bottom: 30px solid blue;
  border-left: 30px solid orange;
}

到这里,我想你应该知道如何设置各种形状的三角形了,最起码思路是有了。

只要把边、边框背景组合一下,就能实现各种形状了。

直觉性误区

假设我们要做一个左下边(橙蓝)组成的直角三角形,那是不是只要把右上(绿红)的边框干掉就行?

.rect {
  width: 0;
  height: 0;
  /* border-top: 30px solid red; */
  /* border-right: 30px solid green; */
  border-bottom: 30px solid blue;
  border-left: 30px solid orange;
}

这似乎不是我们想要的结果哦!换个思路,把右上的边框颜色设为透明(transparent)呢?

.rect {
  width: 0;
  height: 0;
  border-top: 30px solid transparent;
  border-right: 30px solid transparent;
  border-bottom: 30px solid blue;
  border-left: 30px solid orange;
}

这才是我们想要的结果。

我们来分析下原因:

由于我们将 div 的 widthheight 均设为 0,那么它就靠 border 来撑开空间了。其中「水平方向」靠 border-leftborder-right 来撑开,「垂直方向」靠 border-topborder-bottom 来撑开。所以设置四条边为 30px 的时候,它占用了 60 × 60 的空间。一旦我们干掉了上边框和右边框,它实际只占了 30 × 30 的空间,即右下角的部分。

基础三角形

本文不会一一列举各种形状的示例,道理是相通的,自由组合即可。

如果要实现以下这个直角三角形,有多少种做法呢?

我们做个辅助线,就很清晰了。

共有三种方式可实现:橙色 + 红色二分之一橙色二分之一红色。为了方便举例,以下示例不设为相同的颜色,实现需求形状即可,大小也请自行调整。

橙色 + 红色

四条边均不能省略,其中 border-top 和 border-left 设为相同的颜色,border-right 和 border-bottom 设为透明色。

.rect {
  width: 0;
  height: 0;
  border-top: 30px solid red;
  border-right: 30px solid transparent;
  border-bottom: 30px solid transparent;
  border-left: 30px solid orange;
}

二分之一橙色

不设置 border-top 和 border-right 两条边。boder-bottom 设为透明色,border-left 设置背景色。

.rect {
  width: 0;
  height: 0;
  border-bottom: 30px solid transparent;
  border-left: 30px solid orange;
}

二分之一红色

不设置 border-left 和 border-bottom 两条边。boder-right 设为透明色,border-top 设置背景色。

.rect {
  width: 0;
  height: 0;
  border-top: 30px solid red;
  border-right: 30px solid transparent;
}

特殊三角形

有时候可能要实现等腰三角形、等边三角形等。道理很简单,无非就是按要求先把宽高计算出来,然后设置对应边的 border-width 即可。

平时工作当然要善用工具了,比如 CSS triangle generator

既能选择各种形状,也能输入设置宽高,那还用得着自己计算呢,对吧。

总结

使用 CSS 来画三角形,无非就是将元素的宽高设为 0,然后将四条边自由组合就能画出各种形状。较为麻烦的是,特殊三角形宽高需计算,但已经有工具在帮我们做这件事了,所以非常轻松就能完成了。

The end.

相关文章

  • css flex布局详解

    css flex布局详解 css flex布局详解1css flex布局详解2

  • CSS选择器

    CSS 元素选择器CSS 选择器分组CSS 类选择器详解CSS ID 选择器详解CSS 属性选择器详解CSS 后代...

  • 【CSS】格子背景

    CSS代码 主要通过 background-image 的渐变来实现这种效果。用2个三角形合并成一个正方形。 详解...

  • web前端基础案例-鼠标悬停图文切换效果

    效果知识点: html/css布局思维,定位,浮动详解,css3动画详解,css3选择器详解, 通用样式与封装,企...

  • css绘制三角形和对号

    CSS绘制三角形 div css 效果 CSS绘制对号 div css 效果

  • CSS文章整理

    CSS Module CSS Modules 详解及 React 中实践CSS Modules 用法教程

  • css-三角形

    三角形css样式 三角形html结构

  • css 实现三角形箭头

    插入DOM 使用伪类 参考:用纯CSS实现的箭头CSS画三角形原理css整理 -- 右箭头,上下箭头,三角形 这个...

  • 纯CSS写三角形

    各个方向的三角形 html: css: 气泡上的三角形 html: css: 参考代码:https://pan.b...

  • css 如何写排序三角形箭头

    如何使用css编写三角形:/* css3三角形(向上 ▲) /div.arrow-up {width:0px;he...

网友评论

      本文标题:CSS 三角形详解

      本文链接:https://www.haomeiwen.com/subject/tlunwdtx.html