CSS三角样式的妙用|青训营笔记

149 阅读2分钟

这是我参与[第四届青训营]笔记创作活动的第2天。今天课程的主要内容是理解CSS,我对老师讲的CSS三角样式的应用进行了学习。

以购物网站中常见的秒杀图形为例,此类图案就是利用CSS中的三角形实现的,下面是我个人对实现此效果的过程总结。

价格秒杀.png

首先,来分析该图案的基本构成。该图案由一个最外层的大盒子包裹,里面再由两个包裹价格的小盒子组成,也可以将两个价格小盒子再由一个大盒子包裹起来

模型分析.png

而两个价格的分割线则是用三角形实现,其原理可理解为在包裹该图案的最大的盒子中,构建一个三角形,将其定位到盒子中间后,再将它设置为透明色,即可实现。

那么实现三角形的第一步,我们可以设置一个正方形,用四个三角形组成,后可根据需要调整边框宽度。

.box1 {
        width: 0;
        height: 0;
        /* 把上边框宽度加高 */
         border-top: 100px solid transparent;
        border-right: 50px solid skyblue; 
        /* 左边和下边边框宽度设置为0 */
        border-bottom: 0px solid blue;
        border-left: 0px solid green; 
        }

也可简写为:

.box1 {
        width: 0;
        height: 0;
        border-color: transparent blue transparent transparent;
        border-style: solid;
        border-width: 100p 50px 0 0;
      }

此代码运行后,我们可以得到一个蓝色的直角三角形。 接下来我们开始构建整个图案的框架:

<div class="box1">
      <div class="price">
        <span class="miaosha">
          ¥1650
          <i></i>
        </span>
        <span class="origin">¥5650</span>
      </div>
    </div>

其中,i标签用于存放三角形,我们可以通过定位将其放到正确的位置上:

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

再根据需要,将其它部分的CSS写好:

price {
        width: 160px;
        height: 24px;
        border: 1px solid red;
        margin: 0 auto;
        line-height: 24px;
      }
      .miaosha {
        position: relative;
        float: left;
        width: 90px;
        height: 100%;
        background-color: red;
        text-align: center;
        color: #fff;
        font-weight: 700;
        margin-right: 8px;
      }
        .origin {
        font-size: 12px;
        color: gray;
        text-decoration: line-through;
      }

然后,我们就可以得到秒杀效果:

成品.png