• 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。验证一下:

  • 相关阅读:
    Calculate every items’ quantity for each transaction type
    FW: Introduction to Change Data Capture (CDC) in SQL Server 2008
    过滤数据源,只显示那些符合条件的数据
    首日封, DAX
    X++中的subStr
    How to Compare two layer’s object: Get AOT objects both modified in USR & SL1 layer
    AX: grid中添加checkbox, edit 方法
    FW: Loading XML Data into SQL Server (SQL Spackle)
    How to get Record count?

  • 原文地址:https://www.cnblogs.com/lymvv/p/8376875.html
Copyright © 2020-2023  润新知