CSS 利用边框制作三角形(下)

提示:以下是本篇文章正文内容,下面案例可供参考

一、准备工作

        通过上篇文章我们介绍了三角形制作的原理,当我们将某条边框的宽度设置为0会发生什么呢?答案是变为原来正方形的一半了效果,可以看做是某个边往中间在压缩。盒子的高度全部由上边框来提供,最终效果就是盒子变为原来的一半。

.box2 {
            width: 0;
            height: 0;
            border-color: red green blue gray;
            border-style: solid;
            /* 将底边框的宽度设置为0 */
            border-width: 50px 50px 0 50px;
        }

        紧接着我们再将左边框的宽度也设置为0,这样就会得到连个直角三角形了。再适当拉大上边框的宽度,就会得到我们想要的三角形。当然将上边框和右边框的宽度设置为0也是同样的效果。 

.box3 {
            width: 0;
            height: 0;
            border-color: red green blue gray;
            border-style: solid;
            /* 将底边框和左侧的宽度设置为0 */
            border-width: 80px 50px 0 0;
        }

 这样只要适当隐藏颜色,就会得到我们需要的形状了。同理另外两个方向的三角形也可以如此来得到。因为此时盒子的高度全部由下边框的宽度来提供,所以我们适当拉大下边框的高度就可以得到想要的形状。同样将下边框和右边框宽度设置为0,也是同样的效果。


.box4 {
            width: 0;
            height: 0;
            border-color: red green blue gray;
            border-style: solid;
            /* 将上边框和左侧的宽度设置为0,此时整个盒子的高度由下边框提供 */
            border-width: 0 50px 80px 0;
        }

二、具体应用

         理论部分已经准备完毕,接下来就是制作秒杀的按钮样式了。先准备秒杀按钮的盒子及其内容。

<div class="miaosha">
        <div class="now">
            ¥1650
            <!-- 使用i标签制作三角形 -->
            <i></i>
        </div>
        <span class="price">¥5650</span>
    </div>

下面书写 CSS 部分样式,我们给 .miaosha 盒子一个宽度和高度,以 及line-height 属性,这样里面的文字就会垂直居中。 紧接着利用浮动不会压住文字的原理,将 now 盒子浮动就可以实现一侧放置秒杀价,一侧放置原价的效果。再利用 i 标签制作三角形,利用子绝父相,实现位置摆放即可。

.miaosha {
            width: 160px;
            height: 24px;
            line-height: 24px;
            border: 1px solid red;
            margin: 10px auto;
        }
 
        .now {
            position: relative;
            /* 存放秒杀价格的盒子浮动,就可实现秒杀与原来价格左右排列 */
            float: left;
            width: 90px;
            height: 100%;
            background-color: red;
            text-align: center;
            margin-right: 10px;
        }
 
        .now i {
            /* 子绝父相对 */
            position: absolute;
            top: 0;
            right: 0;
 
            width: 0;
            height: 0;
            /* 开始制作三角形,最终版简化代码 */
            border-color: transparent white transparent transparent;
            border-style: solid;
            /* 整个 i 盒子高度全部由上边框提供 */
            border-width: 24px 10px 0 0;
        }
 
        /* 设置字体样式 */
        .now span {
            color: #fff;
            font-weight: 700;
        }
 
        .price {
            color: gray;
            font-size: 12px;
            text-decoration: line-through;
        }

总结

        老规矩,整个 html 文件奉上


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>212-CSS三角形汇总</title>
    <style>
        .box1 {
            width: 0;
            height: 0;
            border-color: red green blue gray;
            border-style: solid;
            border-width: 50px 50px 50px 50px;
        }
 
        .box2 {
            width: 0;
            height: 0;
            border-color: red green blue gray;
            border-style: solid;
            /* 将底边框的宽度设置为0 */
            border-width: 50px 50px 0 50px;
        }
 
        .box3 {
            width: 0;
            height: 0;
            border-color: red green blue gray;
            border-style: solid;
            /* 将底边框和左侧的宽度设置为0 */
            border-width: 80px 50px 0 0;
        }
 
        .box4 {
            width: 0;
            height: 0;
            border-color: red green blue gray;
            border-style: solid;
            /* 将上边框和左侧的宽度设置为0,此时整个盒子的高度由下边框提供 */
            border-width: 0 50px 80px 0;
        }
 
        /* ---------------------------------------------------------------- */
        .miaosha {
            width: 160px;
            height: 24px;
            line-height: 24px;
            border: 1px solid red;
            margin: 10px auto;
        }
 
        .now {
            position: relative;
            /* 存放秒杀价格的盒子浮动,就可实现秒杀与原来价格左右排列 */
            float: left;
            width: 90px;
            height: 100%;
            background-color: red;
            text-align: center;
            margin-right: 10px;
        }
 
        .now i {
            /* 子绝父相对 */
            position: absolute;
            top: 0;
            right: 0;
 
            width: 0;
            height: 0;
            /* 开始制作三角形,最终版简化代码 */
            border-color: transparent white transparent transparent;
            border-style: solid;
            /* 整个 i 盒子高度全部由上边框提供 */
            border-width: 24px 10px 0 0;
        }
 
        /* 设置字体样式 */
        .now span {
            color: #fff;
            font-weight: 700;
        }
 
        .price {
            color: gray;
            font-size: 12px;
            text-decoration: line-through;
        }
    </style>
</head>
<body>
    <div class="box">
        <h4>原来的三角形</h4>
        <div class="box1"></div>
        <h4>将底边框的宽度设置为0</h4>
        <div class="box2"></div>
        <h4>再将左边框的宽度也设置为0</h4>
        <div class="box3"></div>
        <h4>再将上边框和左边框的宽度设置为0</h4>
        <div class="box4"></div>
    </div>
    <hr><hr> <hr>
    
    <div class="miaosha">
        <div class="now">
            <span>¥1650</span>
            <!-- 使用i标签制作三角形 -->
            <i></i>
        </div>
        <span class="price">¥5650</span>
    </div>
</body>
</html>

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值