zoukankan      html  css  js  c++  java
  • css三角形的绘制

     刚开始做项目的时候会使用一些三角形,可能就是贴一张png,但是这种方法有点low,或者是用svg的形式,但是这种方式又很麻烦。三角形其实可以用css画出来。

    1.三角的画法

    三角形可以用border画出来,首先一个有四个border的div应该是这样的

    <div class="triangle">
    </div>

    .triangle{
    border-left: 50px solid #000;
    border-right: 50px solid #333;
    border-top: 50px solid #666;
    border-bottom: 50px solid #999;
    100px;
    height: 100px;
    background: #ccc;
    }

    然后把高度和宽度去掉之后,剩下四个border,就变成了:

    再把border-top去掉,没有了border-top就把上面的区域给裁剪掉了:

    接下来,再把左右两边的border透明,就是一个三角形了:

    border-left: 50px solid transparent;
    border-right: 50px solid transparent;

    这里用了底部的border作为三角形,如果要取左边的border,同理只需让上下两个颜色为transparent,同时不要右边的border

    2.控制三角形的高度

    上面画的三角形是一个直角三角形,用的比较多的应该是等边三角形,如何画一个等边三角形哪?

    首先,保持border-left和border-right的大小不变,让border-bottom不断变大,观察形状是怎么变的:

    border-bottom:40px;

    border-bottom:50px;

    border-bottom:60px;

    可以看到顶部的角度在不断变小,换句话说三角形底边长不变,而底边的高在不断地变大,因为border-bottom-width其实就是底边的高:

    然后在做第二个实验,让border-left不断变大,其他两个border保持不变:

    border-left:40px;

    border-left:50px;

    border-left:60px;

    通过上下对比,看出border-left变大增加了左边那条边的长度。由此可以想到,如果右边的border-width是0的话,那么它将是一个直角三角形,并且直角在右下角:

     

    即代码为:

    border-left:  0 solid transparent;
    border-right: 60px solid transparent;
    border-bottom: 40px solid #000;

    同时,通过切换四个border的设置就可以控制直角边在不同的位置,例如如果想要直角边在右上角的话,那应该是设置border-left和border-top,我们可以自行想象一下

    回到上面的问题,怎样画一个等边三角形,等边三角形的底边的高是底边的1/sqrt(2)倍。经过上面的分析可以知道,底边是由border-left加上border-right的长度合起来的,而底边的高是border-bottom,所以如果border-bottom-width是40px,那么border-left和border-right的宽度都是40px * sqrt(2) / 2 ~= 28px,约等于28px。验证一下:

  • 相关阅读:
    【luogu P7418】Counting Graphs P(DP)(思维)(容斥)
    【luogu P7417】Minimizing Edges P(贪心)(思维)
    多边形序列(组合数)(高精)(NTT)
    【luogu P3803】【模板】多项式乘法(NTT)
    【luogu P1919】【模板】A*B Problem升级版(FFT快速傅里叶)
    【luogu P6139】【模板】广义后缀自动机(广义 SAM)
    【luogu P7529】Permutation G(几何)(数学)(DP)
    【luogu P5787】graph / 二分图 /【模板】线段树分治(扩展域并查集)(线段树分治)
    同桌的你(环套树)(DP)
    石子游戏(博弈论)(Spaly)
  • 原文地址:https://www.cnblogs.com/lymvv/p/8376875.html
Copyright © 2011-2022 走看看