使用CSS3绘制几个常见的图案(三角、箭头)

一、绘制三角形

首先先做一个测试深入理解一下盒子模型,主要体会一下height和border-width的用法:

        #div1{
            height: 80px;
            border-style: solid;
            border-width: 100px 100px 100px 100px;
            border-color: red forestgreen blue cyan;
            width: 80px;
        }    

    

最后结果为:

使用CSS3绘制几个常见的图案(三角、箭头)_第1张图片

其中,红色的块儿代表是上边框宽度,右边的块儿代表右边框宽度,以此类推,发现几个边距的宽度而言,他们之间的分界恰好是这个正方形的对角线所在的直线,如果里面的小盒子宽高无穷小,那么这个图形将是一个由四块不同颜色三角形拼接而成的图形,因此可以利用这个性质进行绘制三角形。若height:0;width:0;得到下面的图形:

使用CSS3绘制几个常见的图案(三角、箭头)_第2张图片

如果我们想要得到一个上三角,那么根据刚刚的原理,只要将上边框、左右边框设置为隐藏,即可实现一个上三角。

border-color: transparent transparent blue transparent;

但是有个问题,这里这个三角距离上面总是有100px的边距,是因为隐藏的边框依然占位,所以直接将上边框去掉就好了。

使用CSS3绘制几个常见的图案(三角、箭头)_第3张图片

但这里不能只将下边框的border-width设为0,否则会出现什么都得不到的情况。为了寻找原因,我们去掉左边框,只要右边框和下边框,即:

border-width: 0px 100px 100px 0px;

然后得到下面的图形:

使用CSS3绘制几个常见的图案(三角、箭头)_第4张图片

这时可以说明,下三角的左半部分实际上也是由左边距拥有的,如果左边距为0,那么左半边就不存在了,只剩下右半边。如果这时再把右半边去掉,那么这个下三角就什么都没有了。

二、绘制一个箭头

想要实现一个箭头的话就比较简单了,步骤是首先先生成一个正方形,这个正方形有上、右边框(只要是相邻的两个边距实际上都是可以的),然后制定这个边框的宽度和颜色(这个值也就决定了箭头的宽度和颜色)。之后根据需要旋转即可。注意的是,旋转的中心就是盒子模型的几何中心。

变化成为:

 

代码为

 

    .down-arrow {            
        width: 40px;            
        height: 40px;        
    }         
    .down-arrow:after {            
        content: '';            
        display: block;            
        width: 25px;            
        height: 25px;            
        border-right: 1px solid #888;            
        border-top: 1px solid #888;            
        -webkit-transform: rotate(135deg); /*箭头方向可以自由切换角度*/            
        transform: rotate(135deg);
    }

三、绘制一个关闭键

原理和画箭头类似,不过这里,:after的旋转方向是在前一个的基础上继续旋转偏移的。也就是说若第一个有旋转角度,:after没有的时候,第二个和第一个重合。

    .false {
    position: relative;
    width: 2em;
    height: .3em;
    background-color: #000;
    transform: rotate(45deg);
    border-radius: .15em;
    }
    .false:after {
        content: "";
        position: absolute;
        width: 2em;
        height: .3em;
        background-color: #000;
        transform: rotate(90deg);
        border-radius: .15em;
    }    

 

你可能感兴趣的:(Vue学习笔记)