CSS & JS Effect – 画三角形 Triangle

前言

画三角形有什么用?

可以做这样的 Design

 

参考

5 Ways To Create A Triangle With CSS

 

Border Triangle

用 border 做 三角形应该是最远古的招数了.

HTML

<div class="box"></div>

CSS

.box {
  border-style: solid;
  border-color: yellow blue pink red;
  border-width: 150px 100px 150px 100px;
  width: 0;
  height: 0;
}

效果

当只有 border 没有 width, height 的时候, border 是尖尖的. 

红色 + 黄色区域就是一个 90° 的三角形. 我们只要把蓝色和粉色修改成 transparent 三角形就出现了.

border-color: yellow yellow transparent transparent;

效果

用 border 做三角形并不是一个很好的方案. 它不仅不直观, 更糟糕的是 border width 很难控制. 比如我想要 height 100% 它就做不了.

 

Linear Gradient Triangle

linear gradient 可以调角度. 所以也可以搞出三角形.

.box {
  width: 200px;
  height: 300px;
  background: linear-gradient(to bottom right, green 50%, transparent 50%);
}

效果

to bottom right 是渐变的方向. green 50% 表示 50% 以前都是纯绿色, 不要渐变. transparent 50% 表示从 50% 以后是纯 transparent.

所以看上去完全没有渐变的效果. 只是利用了它的角度而已.

这招比 border 好多了. 但还不是很直观. 有一种用 A 方法做出 B 效果的感觉.

 

Clip-path Triangle

clip-path 才是真确的方式. 三角形不就是四角形的一半吗? 那就 clip 丫

.box {
  width: 150px;
  height: 200px;
  background: green;
  clip-path: polygon(0% 0%, 0% 100%, 100% 0%);
}

polygon 是一个 point collection.

一共有 3 个 point 

0% 0% 是坐标 X, Y

三个点连起来的地方要保留, 其余的 clip 掉. 这样三角形就出来了.

 

Image with Triangle

<img src="../images/tifa1.jpg" />

CSS

img {
  width: 500px;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  clip-path: polygon(10% 0%, 100% 0%, 90% 100%, 0% 100%);
}

效果

 

posted @ 2023-01-31 22:40  兴杰  阅读(84)  评论(0)    收藏  举报