CSS画三角形

画三角形

当我们把一个元素不加宽高,而给它加上不同颜色的边框时,就可以得到如下图形
在这里插入图片描述

.example {
            width: 0;
            height: 0;
           
            line-height: 0; /* 照顾兼容性 */
            font-size: 0; /* 照顾兼容性 */
            
            border-top: 100px solid pink;
            border-bottom: 100px solid rgb(22, 48, 163);
            border-left: 100px solid rgb(16, 192, 54);
            border-right: 100px solid rgb(231, 217, 17);
        }

所以当我们想要某一个三角形时,我们可以将其他边都改为透明,
只将想要的三角形留下

.sanjiao {
            position: absolute;
            top: -20px;
            right: 20px;
            width: 0;
            height: 0;
            /* 照顾兼容性 */
            line-height: 0;
            font-size: 0;
            border: 10px solid transparent;
            border-bottom-color: pink;
        }

搭配使用可产生如下类似京东页面的效果
在这里插入图片描述
在这里插入图片描述


但是有时候又需要一些不同角度的三角形,如类似如下
在这里插入图片描述
这其实也是通过对四边进行调整得来的

1.当我们将左边框颜色透明,会得到如下效果
在这里插入图片描述
2.再将左边框宽度调为0
在这里插入图片描述
发现由于左边框为0,则整体图形就会往左压,形成如上。
根据这一特性,我们可以通过改变四条边框的宽度和透明来显示某一效果。

当我们将左、下边框设为0则有
在这里插入图片描述
这时在增加上边框往下的力度,即上边框的宽度,则有
在这里插入图片描述
最后将上边框改为透明,不就得到了右边的效果
代码如下:

 .example {
            margin-top: 100px;
            width: 0;
            height: 0;
            border-color: blue red green transparent;
            border-style: solid;
            border-width: 200px 100px 0 0;
        }

根据这一特性可以做类似京东上这种效果:
在这里插入图片描述

<style>
        * {
            margin: 0;
            padding: 0;
        }

        .box {
            width: 200px;
            height: 30px;
            text-align: center;
            line-height: 30px;
            margin: 50px auto;
            border: 2px solid red;
        }

        .left {
            position: relative;
            float: left;
            width: 120px;
            height: 30px;
            color: #fff;
            font-size: 15px;
            font-weight: 700;
            background-color: red;
        }

        .left .price {
            font-size: 18px;
        }

        .sanjiao {
            position: absolute;
            top: 0;
            right: 0;
            width: 0;
            height: 0;
            border-color: transparent #fff transparent transparent;
            border-style: solid;
            border-width: 30px 10px 0 0;
        }

        .discount {
            color: gray;
            font-size: 16px;
            text-decoration: line-through;
        }
    </style>
<body>
    <div class="box">
        <div class="left"><span class="price">2629.00</span>
            <div class="sanjiao">

            </div>
        </div>
        <span class="discount">¥2759</span>
    </div>
</body>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值