CSS学习笔记之框模型
1、概述
为了更好的处理 元素内容、内边距、边框 和 外边距 之间的关系,CSS 定义了框模型如下:

内边距、边框 和 外边距 的默认值都是零,可以通过设置元素的 padding、border 和 margin 属性来覆盖这些默认的浏览器样式。另外,要注意的是 width 和 height 属性可以分别用于设置内容区域的宽度和高度
2、内边距
padding 属性定义元素的内边距,其接受长度值和百分数值,要注意的是百分数值是相对于其父元素的 width 属性计算的
一般情况下,我们需要指定四个值分别对应上、右、下、左四个方向,但是 CSS 提供了一种名为 值赋值 的机制,允许为我们可以指定少于 4 个值,其规则如下:
- 如果缺少左边的值,则使用右边的值代替
- 如果缺少下边的值,则使用上边的值代替
- 如果缺少右边的值,则使用上边的值代替
也就是说,如果提供了四个值,则按上、右、下、左的顺序分别设置;如果提供三个值,则第一个值设置上边,第二个值设置左边和右边,第三个值设置下边;如果提供两个值,则第一个值设置上边和下边,第二个值设置左边和右边;如果只提供一个值,则该值同时用于设置上、右、下、左四个方向
如果希望单独设置某一方向的内边距,则可以使用 padding-top、padding-right、padding-bottom 和 padding-left 属性实现
3、边框
(1)样式
可以使用 border-style 属性设置边框样式,其可选值如下:
- none:无边框
- hidden:一般情况下效果与 none 相同,但是应用于表格时,可以用于解决边框冲突
- dotted:点状边框,不过在大多数浏览器中呈现为实线
- dashed:虚线边框,不过在大多数浏览器中呈现为实线
- solid:实线边框
- double:双线边框,宽度等于 border-width 的值
- groove:3D 凹槽边框,其效果取决于 border-color 的值
- ridge:3D 垄状边框,其效果取决于 border-color 的值
- inset:3D inset 边框,其效果取决于 border-color 的值
- outset:3D outset 边框,其效果取决于 border-color 的值
- inherit:从父元素继承 border-style 属性
该属性同样遵循 值赋值 机制,如果希望单独设置某一方向的边框样式,可以使用 border-style-top、border-style-right、border-style-bottom 和 border-style-left 属性实现
(2)宽度
可以使用 border-width 属性设置边框宽度,其可选值如下:
- thin:细边框
- medium:默认值,中等边框
- thick:粗边框
- 长度值
- inherit:从父元素继承 border-width 属性
该属性同样遵循 值赋值 机制,如果希望单独设置某一方向的边框样式,可以使用 border-width-top、border-width-right、border-width-bottom 和 border-width-left 属性实现
(3)颜色
可以使用 border-color 属性设置边框宽度,其可选值如下:
- 颜色名称
- 十六进制颜色
- RGB 颜色
- transparent:默认值,透明
- inherit:从父元素继承 border-color 属性
该属性同样遵循 值赋值 机制,如果希望单独设置某一方向的边框样式,可以使用 border-color-top、border-color-right、border-color-bottom 和 border-color-left 属性实现
(4)属性简写
使用 border 简写属性允许我们在一个声明中设置所有的边框属性,其顺序如下:
- border-width
- border-style
- border-color
4、外边距
margin 属性定义元素的外边距,其接受长度值和百分数值,也可以使用 auto,说明由浏览器计算外边距,同样的,该属性也遵循 值赋值 机制,如果希望单独设置某一方向的外边距,则可以使用 margin-top、margin-right、margin-bottom 和 margin-left 属性实现
现在我们再考虑这样一个问题,当元素的外边距重叠的时候会发生什么呢?用一句简单的话概括其规则就是:
当两个垂直外边距重叠时,它们将合并成一个外边距,合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者
注意:只有普通文档流中块框的垂直外边距才会发生外边距合并,行内框、浮动框或绝对定位之间的外边距不会合并
5、定位
(1)一切皆为框
在 CSS 中存在着这样一种说法:一切皆为框
像 div、h1 和 p 等元素常常被称为块级元素,也可以将它们看成块框;像 span 和 strong 等元素常常被称为行内元素,也可以将它们看成行内框。我们可以使用 display 属性改变框的类型,常见的可选值如下:
- none:此元素不会被显示
- block:此元素将显示为块级元素,前后带有换行符
- inline:此元素将显示为内联元素,前后没有换行符,默认值
- inline-block:行内块元素,CSS2.1 新增的值
- run-in:根据上下文作为块级元素或内联元素显示
- list-item:作为列表显示
- table:作为块级表格来显示,表格前后带有换行符
- inline-table:作为内联表格来显示,表格前后没有换行符
(2)一切皆可定位
任何元素都可以看成框,任何元素都可以进行定位,属性 position 规定定位类型,其可选值如下:
- static:默认值,不设置定位,元素将出现在正常流中,此时忽略 top, bottom, left, right 声明
- absolute:生成绝对定位元素,相对于 static 定位以外的第一个父元素进行定位,元素的位置通过 left, top, right 和 bottom 属性进行规定
- fixed:生成绝对定位的元素,相对于浏览器窗口进行定位,元素的位置通过 left, top, right 和 bottom 属性进行规定
- relative:生成相对定位的元素,相对于其正常位置进行定位,元素的位置通过 left, top, right 和 bottom 属性进行规定
- inherit:从父元素继承 position 属性
position 属性常常需要配合下面的属性确定框的移动距离,它们接受一个长度值或一个百分数值:
- top:定义元素的上外边距边界与其包含块上边界之间的偏移
- right:定义元素的右外边距边界与其包含块右边界之间的偏移
- bottom:定义元素的下外边距边界与其包含块下边界之间的偏移
- left:定义元素的左外边距边界与其包含块左边界之间的偏移
(3)定位模式
下面我们再来谈谈 CSS 中三种定位模式的区别,它们分别是绝对定位、相对定位和浮动
相对定位:如果对一个元素进行相对定位,它将出现在原本所在的位置上,然后通过设置垂直或水平位置,让该元素相对于起点进行移动
注意,在使用相对定位时,无论是否进行移动,元素仍然占据原来的空间,因此,移动元素会导致覆盖页面上的其它元素
绝对定位:如果对一个元素进行绝对定位,它将从文档流中完全删除,原先在文档流中所占的空间也会关闭,然后通过设置垂直或水平位置,让其相对于最近的已定位祖先元素进行移动,如果没有已定位的祖先元素,则相对于最初的包含块进行移动
注意,因为绝对定位的元素与文档流无关,所以它们可以覆盖页面上的其它元素
浮动:浮动框可以任意移动,直到它碰到包含框或另一个浮动框为止,另外,由于浮动框不在文档普通流中,所以文档普通流中的块框表现得就像浮动框不存在一样,可以使用 float 属性定义元素向哪一侧浮动,可以使用 clear 属性定义元素哪一侧不允许其他浮动元素
参考资料:http://www.w3school.com.cn/css/index.asp
CSS学习笔记之框模型的更多相关文章
- CSS学习笔记07 盒子模型
1.盒子模型 所谓盒子模型就是把HTML页面中的元素看作是一个矩形的盒子,也就是一个盛装内容的容器.每个矩形都由元素的内容.内边距(padding).边框(border)和外边距(margin)组成. ...
- CSS学习笔记——视觉格式化模型 visual formatting model
CSS 视觉格式化模型(visual formatting model)是用来处理文档并将它显示在视觉媒体上的机制.他有一套既定的规则(也就是W3C规范),规定了浏览器该怎么处理每一个盒子.以下内容翻 ...
- CSS学习笔记:盒子模型
盒子模型(CSS basic box model):When laying out a document, the browser's rendering engine represents each ...
- 3.5html学习笔记之框模型,盒子模型
块元素:block 两个相邻的元素外边距,两者之间取最大. 浮动(定位机制针对框来说): 1.position:absolute,relative,fixed 1)relative:在原来的位置上进行 ...
- CSS学习笔记09 简单理解BFC
引子 在讲BFC之前,先来看看一个例子 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...
- CSS学习笔记10 相对定位,绝对定位与固定定位
文档流中的元素的位置由元素在 (X)HTML 中的位置决定,这就是最原始的普通流,前面讲到的浮动CSS学习笔记08 浮动可以改变元素在文档流中的位置,除了这个我们还可以通过使用CSS的position ...
- HTML+CSS学习笔记(5)- 与浏览者交互,表单标签
HTML+CSS学习笔记(5)- 与浏览者交互,表单标签 1.使用表单标签,与用户交互 网站怎样与用户进行交互?答案是使用HTML表单(form).表单是可以把浏览者输入的数据传送到服务器端,这样服务 ...
- V-rep学习笔记:机器人模型创建2—添加关节
下面接着之前经过简化并调整好视觉效果的模型继续工作流,为了使模型能受控制运动起来必须在合适的位置上添加相应的运动副/关节.一般情况下我们可以查阅手册或根据设计图纸获得这些关节的准确位置和姿态,知道这些 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
随机推荐
- CSS之实现二级菜单动态出现
一直觉得二级菜单的出现效果仅仅有js才干控制.今天研究了一下阿里巴巴站点的首页,才发现,原来二级菜单的动态显示也能够使用CSS来控制,原来对CSS是静态的东西一直是误解它了,CSS也能够实现动态的效果 ...
- 【ODPS】阿里云ODPS中带分区的表操作
1.创建分区表: 分区表有自己的分区列,而分区表则没有. public static void createTableWithPartition(Odps odps, String createTab ...
- spring mvc文件上传,request对象转换异常
spring 文件上传有现成的工具用起来也挺简单.就是在还不是非常熟悉的时候可能会出一些错. 近期碰到了 org.apache.catalina.connector.RequestFacade can ...
- luogu2770 航空路线问题 网络流
题目大意: 给定一张航空图,图中顶点代表城市,边代表 2 城市间的直通航线.现要求找出一条满足下述限制条件的且途经城市最多的旅行路线.(1)从最西端城市出发,单向从西向东途经若干城市到达最东端城市,然 ...
- Android内存解析(二)— 详解内存,内部存储和外部存储
总述 觉得十分有必要搞清楚内存,内部存储和外部存储的区别,还有我们在开发中真正将数据存在了手机的哪儿. 先提一个问题:手机设置的应用管理中,每个App下都有清除数据和清除缓存,清除的分别是哪里的数据? ...
- hdoj--5104--Primes Problem(素数打表)
Primes Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- 如何在ashx处理页中获取Session值
本文章摘自:http://www.cnblogs.com/vihone/archive/2010/06/04/1751490.html 在一般事务处理页面,可以轻松的得到 Request,Respon ...
- ISLR学习笔记
目录 C1 Introduction to Statistical Learning 1.1Statistical Learning介绍: 1.1.1 估计 \(f\) 的目的:prediction和 ...
- PCB 工程系统 模拟windows域帐号登入
一.需求描述: 对于PCB制造企业来说,基本都采用建立共享目享+域名管控权限,好像别的大多数行业都是这样的吧.呵呵 在实际应用中,经常会有这样的问题,自己登入的帐号没有共享目录的权限,但又想通过程序实 ...
- PCB 奥宝LDI 输出正负片转换关系
今天继续对P2 奥宝LDI改造,在文件输出的时候遇到了一个正负片转换问题,研究了半天一直没有得到解决, 回来后前前后后整理今天参数输出与输出的关系,最终还梳理清楚了, 今天小结:一项技术只要用心去研究 ...