前端小白不迷路 - 今天来讲 从盒子模型来分析CSS3三角形的实现

307 阅读1分钟

这是我参与8月更文挑战的第22天,活动详情查看:8月更文挑战

前言:大家好,我是你们的老朋友LONCON,今天和大家分享的是:从盒子模型来分析CSS3三角形的实现原理。

盒子模型分类:

盒子模型分为两种,第一个是W3C标准的盒子模型(盒模型),第二种是IE标准的盒子模型,也称为怪异盒模型。

区别:

标准盒模型的width指的是内容区域content的宽度,不包括border、padding,而IE盒子定义的width是包括内容+边框+内边距,

我们今天从W3C标准的盒模型聊起

如何实现一个三角形

image.png

盒子实现的原理就是当盒子的宽高都设置为0,然后通过调整边框的宽度和颜色来实现三角形。

1.正方形盒子宽高不为0,且边框都有的情况下:

image.png

2.盒子宽高都为0,但是边框有宽度的情况:

image.png

看到上面这张图,想必就能理解到,三角形的实现就是盒子宽高都为0,然后单独设置一边的边框,颜色和宽度即可实现。

闲话不多说,上代码:

body中写好div,分别定义上下左右四个类名。

 <body>
    <div class="up"></div>
    <div class="down"></div>
    <div class="left"></div>
    <div class="right"></div>
  </body>

style中定义样式,记得盒子宽高都设置为0,因为这是盒子边框的舞台。

  <style>
      .up {
        width: 0;
        height: 0;
        border-width: 0 40px 40px;
        border-style: solid;
        border-color: transparent transparent #fb9700;
        margin-bottom: 20px;
      }
      .down {
        width: 0;
        height: 0;
        border-width: 40px 40px 0;
        border-style: solid;
        border-color: #fb9700 transparent transparent;
      }
      .left {
        width: 0;
        height: 0;
        border-width: 40px 40px 40px 0;
        border-style: solid;
        border-color: transparent #fb9700 transparent transparent;
        margin-left: 40px;
      }
      a,
      ins {
        border: 1px solid #000;
        padding: 40px 40px;
      }
      .right{
        width: 0;
        height: 0;
        border-width:40px 0 40px 40px  ;
        border-style: solid;
        border-color: transparent transparent transparent #fb9700;
      }
    </style>

我将border:1px  solid #ccc,拆分来写,因为要设置四个边框的样式,这样写比较形象。

效果图:

image.png

注意:边框只能设置宽度,border-widht,是没有border-height一说的哦

大家有什么疑问欢迎留言,

小伙伴们喜欢点个赞再走呗。