博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSS盒模型
阅读量:5771 次
发布时间:2019-06-18

本文共 1929 字,大约阅读时间需要 6 分钟。

box model

图片描述

  • Margin

  • Border

  • Padding

  • Content

width

指定content box 的宽度         百分数相对于父容器(包含块)的content box的宽度     只有包含块的高度不依赖该元素时,百分比宽度才生效

padding

  • 内边距

margin

  • 外边距

  • 相邻的两个盒子margin,会发生折叠

  • margin可以为负值

box-sizing

  • 改变盒模型计算方式

  • content-box

  • border-box //更符合

overflow

  • 溢出控制

  • 取值:visible hidden scroll auto

  • 初始值:visible

视觉格式化模型

视口(Viewport)

浏览器的可视区域

块级元素(block-level)

会被格式化块状元素例如p,div,section等将display设置为block,list-item, table    使元素变为块级元素

行级元素(inline-level)

盒子的生成

  • 每一个块级元素生成一个主块级盒(principal block-level box)用它来包含子级盒

  • 每一个行级元素生成一个行级盒,行级盒分布于多行

Box Model-revisited

  • 行级盒 margin-top, margin-bottm, padding-top不会产生效果

  • 行级盒 padding-bottom不会影响布局

块级盒子的子盒子的生成

  • 块级盒子可以包含多个子块级盒子

  • 也可以包含多个行级盒子

  • 不在行级元素里面的文字,会生成匿名行级盒比如,<p>Some <em>text</em></p>中的some

  • 块级盒子中不能同时包含块级和行级盒子。遇到这种情况,会生成匿名块级盒来包含行级盒。比如<div><h1>标题</h1><span>2017-1-10</span></div>

行级盒子的子盒子生成

  • 行级盒子内可以包含行级盒子

  • 行级盒子包含块级盒子时,会被块级拆成两个行级盒子,这两个盒子又分别被匿名k块级盒包含 <span>aaaa<h2>22222</h2><strong>tttttt</strong></span>

display属性

  • block 生成块级盒

  • inline 生成行级盒

  • inline-block 生成行级盒,为其内容生成块级盒

  • none 在排版时将元素忽略

visibility

  • 控制元素展示

  • 取值:visible hidden collapse

  • 初始值:visible

  • 排版时会占用位置

Generated Content //多产生盒子,用来存放指定的内容

控制元素::before 和 ::aftercontent //需要插入的内容

常规流

  • 除了根元素,浮动元素和绝对定位元素外,其他元素都在常规流之内

  • 而根元素,浮动和绝对定位元素会脱离常规流

  • 常规流中的盒子,属于处于块级格式化上下文,或行级格式化上下文

块级格式化上下文(Block Formatting Context)

  • 盒子在容器(包含块)内从上到下一个接一个的放置

  • 两个兄弟盒子之间的距离由margin属性决定

  • 同一个BFC内垂直margin会合并

  • 盒子的左外边缘挨着容器(包含块)的左边

BFC特性

  • BFC内的浮动不会影响到BFC外部的元素

  • BFC的高度会包含其内的浮动元素

  • BFC不会和浮动元素重叠

  • BFC可以通过 overflow:hidden 浮动框 绝对定位框 非块级的块容器(inline-block) 等方法创建

行级格式上下文(lnline Formatting Context)

  • 盒子一个接一个水平放置

  • 盒之间的水平margin,border和padding都有效

  • 同一行的盒子所在的矩形区叫行盒(line box)

  • 当一个行盒放不下上下文内所有盒子时,会被分到多个垂直折叠的行盒内

    行盒内的水平分布由 text-align 决定

  • 如果一个行级块无法分割(单词, inline-block),该元素会被作为一个整体被决定放在哪一个行盒

浮动(float)

  • 浮动元素从常规流中脱离,被漂浮在容器(包含块)的左边或者右边

  • 浮动盒会一直漂到其外边缘挨到容器边缘或另外的浮动盒

  • 浮动元素不会影响其后面的流内块元素

  • 但是浮动元素后面的行级盒子会变短以避开浮动元素

clear

指定元素哪一边不能与之前的浮动框相邻取值:left right both
.clearfix::after {    content: '';    display: block;    clear: both;    height: 0;    overflow: hidden;}

转载地址:http://ezoux.baihongyu.com/

你可能感兴趣的文章
用Perl编写Apache模块续二 - SVN动态鉴权实现SVNAuth 禅道版
查看>>
Android 阴影,圆形的Button
查看>>
C++概述
查看>>
卡特兰数
查看>>
006_mac osx 应用跨屏幕
查看>>
nginx中配置文件的讲解
查看>>
MindNode使用
查看>>
SQL Server 2016 Alwayson新增功能
查看>>
HTTP库Axios
查看>>
CentOS7下安装python-pip
查看>>
认知计算 Cognitive Computing
查看>>
左手坐标系和右手坐标系 ZZ
查看>>
陀螺仪主要性能指标
查看>>
Java 架构师眼中的 HTTP 协议
查看>>
Linux 目录结构和常用命令
查看>>
Linux内存管理之mmap详解 (可用于android底层内存调试)
查看>>
利润表(年末)未分配利润公式备份
查看>>
Android开发中ViewStub的应用方法
查看>>
gen already exists but is not a source folder. Convert to a source folder or rename it 的解决办法...
查看>>
HDOJ-2069Coin Change(母函数加强)
查看>>