关于css:纯css实现三角形原理

3次阅读

共计 1399 个字符,预计需要花费 4 分钟才能阅读完成。

在实现之前先来相熟一下 css 盒模型

而后创立一个一般的利用

<div class="triangle"></div>
.triangle {
    width: 100px;
    height: 100px;
    border-top: 10px solid #000;
    border-right: 10px solid #ff0000;
    border-left: 10px solid #00ff00;
    border-bottom: 10px solid #0000ff;
}

成果:

此时须要留神四条边框交接的中央,前面会用到。而后再将内容物的宽高都去掉,为了不便察看,将四个边框都设置大一些,成果如下:

.triangle {
    width: 0;
    height: 0;
    border-top: 100px solid #000;
    border-right: 100px solid #ff0000;
    border-left: 100px solid #00ff00;
    border-bottom: 100px solid #0000ff;
}


当初是不是感觉三角形有点雏形了,四个方向的都有,想要哪个把其余方向的色彩设置成通明不就行了,先试一个向下的三角形:

.triangle {
    width: 0;
    height: 0;
    border-top: 100px solid #000;
    border-right: 100px solid transparent;
    border-left: 100px solid transparent;
    border-bottom: 100px solid transparent;
}


看来是这个办法,当然底边框目前用不到,还会使总高度变高,能够间接去掉。是不是能够这样了解,底边在哪就留哪边的色彩?
接下来还有一个问题,那就是这个三角形的宽高,认真看这个三角形的宽正好是左右边框的总和,也就是 200px, 而它的高当然就是上边框的宽度了,也就是 100px。
以此类推,如果设计稿给的是一个长 50px 高 60px 的一个向上的三角形,那么就应该这样写:

.triangle {
    width: 0;
    height: 0;
    border-top: 60px solid #000;
    border-right: 25px solid transparent;
    border-left: 25px solid transparent;
}


还能够实现一个直角三角形:

.triangle {
    width: 0;
    height: 0;
    border-top: 100px solid #000; 
    border-left: 100px solid transparent;
}

还有其余各种角度的直角三角形,宽高可自定义,例如制作一个长 50 高 60 的向右直角三角形:

.triangle {
    width: 0;
    height: 0;
    border-top: 60px solid #000;
    border-right: 50px solid transparent;
}


底边为上,所以 border-top 设置色彩,它的宽度即为高,所以宽度设置为 60,底边的长度须要左边框来撑开(因为右边是直角,代表没有其余边框跟它重合),所以设置左边框,且宽度为三角形的长,即 50。

总结:

一般三角形:底边是哪个方向,就设置哪个方向有色彩值,其绝对的边间接去掉,而后其左右(高低)两边的宽度和为该三角形的底边长,其本身的宽度为该三角形的高。
直角三角形:只须要两条边框, 能够先把它填成一个方行,而后留底边为有色彩值,补充的三角形在哪边,就留哪边。

如有问题,欢送斧正~

正文完
 0