首页 > Web开发 > 详细

CSS盒

时间:2019-03-29 22:26:03      阅读:172      评论:0      收藏:0      [点我收藏+]

盒子模型是html和css当中非常重要的一块,只有深入了解了盒子模型,才能在页面布局时得心应手,少走弯路。

一、盒子模型的概念

css盒子模型又称为框模型(Box Model) ,包含了元素内容(content)、内边距(padding)、边框(border)、外边距(margin)几个要素。

技术分享图片

在盒子模型中,margin是透明的,而border、padding、content均可以设置背景颜色。

一个盒子的总宽度 = 元素内容的宽度 + 左右内边距的宽度 + 左右边框的宽度 + 左右外边距的宽度

同理,盒子的高度 = 元素内容的高度 + 左右内边距的高度 + 左右边框的高度 + 左右外边距的高度

border-color属性用来设置border的颜色,当盒子的内容为简单的文本时,background-color属性通常用来设置content和padding的背景颜色。

下图是盒子的3D模型

技术分享图片

 

二、盒子模型的外边距塌陷

当两个上下方向的盒子垂直相邻时,会发生外边距的叠加,叠加后的高度等于合并前两个盒子中外边距较高的那个值。

图示如下:

技术分享图片

 

这种外边框叠加的现象只会出现在普通文档流中。

三、盒子模型的box-sizing属性

box-sizing有几种不同的值box-sizing : content-box | border-box | inherit;

(1)content-box(默认值)

当content-box设置为content-box时,我们用css设置的width和height是被设置在了content上,此时:

盒子的总宽度 = width + padding(left、right) + border(left、right) + margin(left、right)

高度同理。

(2)border-box

当content-box设置为border-box时,我们用css设置的width和height值为content、padding和border的总值。此时:

盒子的总宽度 = width + margin(left、right)

(3))inherit

规定应从父元素继承 box-sizing 属性的值。

 

四、开发常见问题和应用

(一)margin越界(第一个子元素的margin-top和最后一个子元素的margin-bottom的越界问题)

以第一个子元素的margin-top 为例:

当父元素没有边框border时,设置第一个子元素的margin-top值的时候,会出现margin-top值加在父元素上的现象,解决方法有四个:

(1)给父元素加边框border (副作用)

(2)给父元素设置padding值  (副作用)

(3)父元素添加 overflow:hidden (副作用)

(4)父元素加前置内容生成。(推荐)

以第四种方法为例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        *{
            margin: 0;
            padding: 0;
        }
        #father{
            width: 600px;
            height: 500px;
            background-color: burlywood;
        }
        #father:before{
            content: "";
            display: table;
        }
        #child{
            width: 300px;
            height: 200px;
            background-color: lightskyblue;
            margin-top: 50px;
        }
    </style>
</head>
<body>
<div id="father">
  <div id="child"></div>
</div>
</body>
</html>

 图示:

技术分享图片

 

(二)标准盒子模型与IE盒子模型

技术分享图片

    标准的盒子模型box-sizing为content-box,而IE模型更像是 box-sizing : border-box; 其内容宽度还包含了border和padding。

    在IE8及以上box-sizing属性默认为content-box,在IE7及以下box-sizing 属性为 border-box.

(三)用盒子模型画三角形

原理:盒子模型的边框被盒子的对角连线分为四个方向 ,当设置盒子的content和padding的宽高都为零时,盒子的可显示部分只剩下border,此时给border设置一个宽度,然后设置四个方向都透明,最后单独设置一个方向的的border就可以了。

技术分享图片

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        div{
            width: 0;
            border: transparent 50px solid;
            border-top: 50px black solid;
        }
    </style>
</head>
<body>
<div></div>
</body>
</html>

 效果图:

技术分享图片

以上就是笔者对盒子模型的一些简单总结啦,如有错误和不足之处,欢迎在评论区留言~

 

CSS盒

原文:https://www.cnblogs.com/JackLiu1788/p/10618401.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!