从盒子模型来分析CSS3三角形的实现

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

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

我们今天从W3C标准的盒模型聊起,如何实现一个三角形。

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

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

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

看到上面这张图,想必就能理解到,三角形的实现就是盒子宽高都为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,拆分来写,因为要设置四个边框的样式,这样写比较形象。

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

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

经验分享 程序员 微信小程序 职场和发展