CSS盒子模型

JackLiu1788 2019-03-29 原文

CSS盒子模型

盒子模型是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>

 效果图:

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

 

发表于 2019-03-29 22:20 上官仲文 阅读() 评论() 编辑 收藏

 

版权声明:本文为JackLiu1788原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/JackLiu1788/p/10618401.html

CSS盒子模型的更多相关文章

  1. CSS布局(四) float详解

    一、float设计初衷 因为float被设计出来的初衷是用于——文字环绕效果。即,一个图片一段文字,图片flo […]...

  2. 定制和我一样的博客园主题

    有园友问我的博客园的主题怎么弄的,我答应了要发一篇博文分享一下我的博客主题配置。其实是很简单的,相信懂 CSS […]...

  3. css中的px、em、rem 详解

    概念介绍: 1、px (pixel,像素): 是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要 […]...

  4. Angular中innerHTML标签的样式不起作用详解

    1.背景          在最近angular的项目中,需要用到[innerHTML]标签来指定一个div的 […]...

  5. 深拷贝和浅拷贝

    —恢复内容开始—   今天,我们来玩一下深拷贝和浅拷贝吧。可以吧,别给我面子,随便玩, […]...

  6. CSS系列 (03):盒模型详解

    BFC 全称为块格式化上下文 (Block Formatting Context) 。它是页面中的一块渲染区域 […]...

  7. 回归: css, bug bug, background-repeat and frames

    2008-07-16 11:59 翻译一段话,关于IE这个大流氓软件的一个bug,没找到用中文描述同样问题的资 […]...

  8. CSS中层叠和CSS的7阶层叠水平(上篇)

    今天搜索资料时,忽然发现了以前没注意的一个知识点,所以拖过来搞一搞,这个知识点叫做CSS的7阶层叠水平 在说这 […]...

随机推荐

  1. Python(02):Python的IDE之PyCharm的使用 – springsnow

    Python(02):Python的IDE之PyCharm的使用 一、Python集成开发环境-Pycharm […]...

  2. 在Java虚拟机上班是一种怎样的体验?

     228 人赞同了该回答    利益相关,匿了! JVM公司里面线程众多,派系林立,尤其是执行引擎那波人,因为 […]...

  3. 彻底封锁网内QQ——QQ服务器地址汇总 – surfer

    彻底封锁网内QQ——QQ服务器地址汇总 很多朋友问我怎么限制用户使用QQ,今天专门测试了一下。   QQ服务器 […]...

  4. GitHub的Windows客户端的使用教程

    GitHub for Windows客户端的使用教程 什么是Github >说到什么是GitHub,我们 […]...

  5. Temporal Segment Networks

    摘要 解决问题 用CNN框架有效提取video长时序特征 在UCF101等训练集受限的情况下训练网络 贡献 T […]...

  6. 没固定公网 IP 的公司内网实现动态域名解析( 阿里云万网解析 )

    情景说明   前段时间应公司需求,需要将内网的服务映射到公网。由于公司使用的是类似家庭宽带的线路,没有固定的公 […]...

  7. 苹果App Store审核指南中文翻译(2014.9.1更新)

    前言 感谢您付出宝贵的才华与时间来开发iOS应用程程序。从职业与报酬的角度而言,这对于成千上万的开发员来说一直 […]...

  8. 三步教你做酷炫的“倒计时”原型效果 – jongde

    三步教你做酷炫的“倒计时”原型效果 日常生活中,我们会看到各种各样的倒计时设计: 或是在一段视频的开头;或是隐 […]...

展开目录

目录导航