详述盒子模型(包含padding、border、margin的详细用法和描述)
提起盒子模型,我想无论是对于一个前端资深开发人员还是前端入门开发人员来说都不陌生,这是CSS最基础的知识。
但是惭愧地说,我之前理解的盒子模型,只是文字上的理解。我知道定义一个元素的宽度和高度时,设置的仅仅是内容(content)区域,也知道内边距、外边距、边框,但是都没有动手尝试过…之前没想着好好学习前端,总觉得这不是很简单的东西么,能用、能将样式调成自己想要的就行了,但是最近开始学习前端之后,才发现自己以前对很多东西的理解都不够全面,对很多东西都一知半解。即使是一个简单的盒子模型,当问出一些问题时,我都没法给出准确的答案,比如background-color作用哪几部分?padding和margin具体能做到什么样的效果?标准盒模型和IE盒模型?等等等等,每次都是尝试着来,最终怎么达到的效果,可能都没那么清楚,到了下次还是继续尝试…
于是,我打算系统的学习和整理一下盒子模型的相关知识,并进行自我反思,好记性不如烂笔头,以后要多做多练啊!!!
一、什么是盒子模型
CSS盒模型本质上是一个盒子,模型定义了盒的每个部分,包括:外边距、边框、内边距、实际内容 —— 这些合在一起就变成了我们在页面上看到的内容。(完整的CSS盒模型应用于块级盒子,而内联盒子只使用盒模型中定义的部分内容。)
- Content box:内容区域,如下图中的蓝色部分。
- Padding box:内边距,内容区域外部的空白区域,如下图中的绿色部分。
- Border box:边框,包裹内容和内边距,如下图中的黄色部分。
- Margin box:外边距,是盒子和其它元素之间的空白区域,如下图中的橙色部分。
二、标准盒模型
标准盒模型就是:当我们设置 width 和 height 时,实际上设置的只是 content box 的宽高。而整个盒子的宽/高 = content + padding + border。margin不计入实际大小(margin只是影响盒子的外部空间,盒子的真实范围是到边框为止的)
如下图所示:
<div id = 'container'></div> <style>
#container {
height: 200px;
width: 400px;
padding: 100px;
margin: 100px;
border: 5px solid;
background-color: aquamarine;
}
</style>
图一:整个盒子模型
图二:网页显示效果
由图,我们可以回答之前提到的几个问题了
1. background-color作用哪几部分?
content 和 padding
2. padding和margin具体能做到什么样的效果?.
- padding是内边距,也就是边框以内,内容周围的边距。如果设置background-color的话,则 background-color 包含 padding 部分。
- margin是外边距,也就是边框外的边距,也可以理解为盒子模型与其它元素的边距。
三、IE盒模型
IE盒模型是:当我们设置高度和宽度时,包含 content、padding、border,即所有可见的部分。此时,如果我们想要得到内容宽度,就需要用宽度减去边框和内边距宽度。
默认浏览器使用的是标准模型,可以通过设置 box-sizing: border-box 来转换成IE盒模型。
如下图所示:减去border和padding后,content的宽高为290x90。
<div id='container'></div> #container {
height: 200px;
width: 400px;
padding: 100px;
margin: 100px;
border: 5px solid;
background-color: aquamarine;
box-sizing: border-box;
}
三、border
使用方式
- 使用border为一个框的四个边设置边框 / 或者只设置盒子的一个边
.box {
border: 1px solid black; //设置四个边
// border-top: 1px solid black; // 设置一个边
}
这些简写相当于:
.box {
border-width: 1px;
border-style: solid;
border-color: black;
}
或
.box {
border-top-width: 1px;
border-top-style: solid;
border-top-color: black;
}
- 注意:border: 1px solid black; 中,border-style必须设置。大小和颜色可设可不设,如果不设置的话,大小默认是medium,颜色默认黑色。(因为border-style的默认值是none,所以必须设置border-style)
(关于border-width、border-color、border-style具体的属性值在此就不多赘述了)
四、margin
margin为给定元素设置四个方向的外边距属性,控制的是元素外部空出的空间。
1. 基本语法
margin: 1px; 1个值 ——> 四个边
margin: 1px 0; 2个值 ——> 上下 | 左右
margin: 1px 5% 1px; 3个值 ——> 上 | 左右 | 下
margin: 1px auto 1em 0; 4个值 ——> 上 | 右 | 下 | 左(逆时针顺序)
2. 取值
长度:固定值,如1px,1em等等。
百分比:相对于其最近的祖先的宽度,以百分比值为外边距。
auto:让浏览器自己选择一个合适的外边距。(可用于让块元素居中)
3. 外边距塌陷
css2.1盒模型中规定:所有毗邻的两个或更多盒元素的margin将会合并为一个margin共享之。毗邻的定义为:同级或者嵌套的盒元素,并且它们之间没有非空内容、Padding或Border分隔。
(1)对于同级相邻的盒元素来说,呈现出来的效果是,上下两个盒元素之间的距离是这两个盒元素的margin较大的那个值,而不是两个盒元素的margin相加。如下段代码所示:
<body>
<div class="top">top</div>
<div class="bottom">bottom</div>
</body> <style>
.top {
height: 200px;
width: 200px;
margin: 50px;
background-color: aquamarine;
} .bottom {
height: 200px;
width: 200px;
margin: 100px 50px;
background-color: rgb(240, 178, 178);
}
</style>
(2) 对于嵌套的盒元素,子元素的margin-top会影响父元素。其效果为,如果父元素没有设置margin-top,子元素设置了,那么子元素没有出现上外边距的效果,反而父元素出现了上外边距的效果。如图:
<body>
<div class="container">
<div class="block">block</div>
</div>
</body> <style>
.container {
height: 500px;
background-color: rgb(212, 245, 234);
} .block {
height: 200px;
width: 200px;
margin: 50px;
background-color: rgb(240, 178, 178);
}
</style>
如果父元素设置了margin-top,子元素也设置了,则父元素的margin-top值是两者较大的那个(在此就不放图了,感兴趣的可以去试一试)。
解决办法:
- 父级设置overflow:hidden
- 绝对定位absolute
- 父级设置padding或者border
五、padding
padding是设置元素的内边距,即内容与边框之间的空间。
基本语法同margin
取值没有auto,其它同margin
详述盒子模型(包含padding、border、margin的详细用法和描述)的更多相关文章
- python 全栈开发,Day47(行级块级标签,高级选择器,属性选择器,伪类选择器,伪元素选择器,css的继承性和层叠性,层叠性权重相同处理,盒模型,padding,border,margin)
一.HTML中的行级标签和块级标签 块级标签 常见的块级标签:div,p,h1-h6,ul,li,dl,dt,dd 1.独占一行,不和其他元素待在同一行2.能设置宽高3.如果不设置宽高,默认为body ...
- css盒子模型、边框border、外边距margin、填充padding、轮廓outline
盒子模型:盒子默认的宽度为容器的宽度,也可以自省设定宽度,高度根据内容适应,也可以自行设定高度.min-height设定最小高度 一个盒子包括外边距.边框.内边距和实际内容 Margin(外边距):清 ...
- css盒子模型及属性介绍(margin,padding)
每个HTML元素都可以看作装了东西的盒子 盒子具有宽度(width)和高度(height) 盒子里面的内容到盒子的边框之间的距离即填充(margin) 盒子本身有边框(border) 而盒子边框外和其 ...
- {03--CSS布局设置} 盒模型 二 padding bode margin 标准文档流 块级元素和行内元素 浮动 margin的用法 文本属性和字体属性 超链接导航栏 background 定位 z-index
03--CSS布局设置 本节目录 一 盒模型 二 padding(内边距) 三 boder(边框) 四 简单认识一下margin(外边距) 五 标准文档流 六 块级元素和行内元素 七 浮动 八 mar ...
- input元素的padding border margin的区别
padding内(不包含padding)的部分才是可输入部分,也是width和height标明的区域.padding的部分加上width和height部分是background的部分.padding的 ...
- css的padding,border,margin的意思
下面的内边距(padding).边框(border) .外边距(margin)的意思是我自己的理解. 代码如下: <!DOCTYPE html> <html lang="e ...
- css盒子模型中的border属性
认识border属性 我们可以通过boder属性来为元素设置边框:元素的边框 (border) 是围绕元素内容和内边距的一条或多条线.CSS border 属性允许你规定元素边框的样式.宽度和 ...
- css盒子模型概念
CSS css盒子模型 又称框模型 (Box Model) ,包含了元素内容(content).内边距(padding).边框(border).外边距(margin)几个要素.如图: 图中最内部的框是 ...
- 深入理解CSS盒子模型
在CSS中浮动.定位和盒子模型,都是很核心的东西,其中盒子模型是CSS很重要基石之一,感觉还是很有必要把CSS盒子模型相关知识更新一下...... CSS盒子模型<BoxModel>示意图 ...
随机推荐
- JVM调优基础到进阶
GC和GC Tuning GC的基础知识 1.什么是垃圾 C语言申请内存:malloc free C++: new delete c/C++ 手动回收内存 Java: new ? 自动内存回收,编程上 ...
- 所谓 ICMP,不过将军与士卒而已
什么是 ICMP 协议 关于这点我们在 IP 协议那篇文章中提过一嘴,IP 协议作为一种提供不可靠数据交付的网络层协议,在传输的过程中,其 IP 数据报可能会发生丢失.重复.延迟和乱序等各种情况, 但 ...
- ASP封装DLL 直接上代码
ASP转DLL 基本引用类库 OLE Automation Com+ services Type Library Microsoft Active Server Pages Object Micros ...
- 从苏宁电器到卡巴斯基第09篇:我在苏宁电器当营业员 I
毕竟应聘的是营业员,门槛还是很低的 我应聘苏宁的时候已经到了2009年的8月初,记得当时苏宁电器的长春总部还在吉林大路与东盛大街交汇处的亚泰广场,我当时的面试就是在那里. 我记得很清楚,那天等待面试的 ...
- UVA11248 网络扩容(枚举割边扩充)
题意: 给你一个有向图,问你从1到n的最大流是多少?如果流量大于等于C那么直接输出一个串,否则输出只扩充一条边的流量就可以达到1->n大于等于C的所有边,如果扩充不了就输出另一个串.S ...
- C#-自动获取IP
//自动获取ip rip是个下拉列表 public void GetIp() { try { string strHostName = Dns.GetHostName(); //得到本机的主机名 IP ...
- Docker镜像基本使用
使用 Docker 镜像 Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像. 获取镜像 docker pull [选项] [Docker Re ...
- <JVM下篇:性能监控与调优篇>04-JVM运行时参数
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...
- 【maven】mvn不是内部命令 也不是可运行的程序
按解压.配置环境变量,重启cmd,还是出现这个问题 使用java -version确定是不是安装了jdk.因为maven是java开发,需要依赖jdk 将系统变量中Path的%MAVEM_HOME%\ ...
- linux 发送邮件
参考资料:https://www.cnblogs.com/imweihao/p/7250500.html https://blog.csdn.net/liang19890820/article/det ...