- 标准流(文档流/普通流)(默认)
- 排版
- 浮动流
- 清除浮动
- overflow
- display用来设置显示的类型
- visibility设置元素显示状态
- vertical-align
- 背景属性
- 盒子模型
- 定位
CSS布局
指浏览器是如何对网页中的元素进行排版的。
标准流(文档流/普通流)(默认)
-
CSS三类元素
-
块级元素:
-
独占一行,自上向下垂直排列。
-
可以设置宽度, 默认和父元素一样宽。
-
常见块级元素: p,div, h ,ul ,ol ,dl, li ,dt ,dd。
-
-
行内元素
-
不会独占一行,不可以设置宽度和高度
-
可以设置padding,border,margin,但是垂直方向不会影响页面布局
-
默认和内容一样宽。
-
常见行内元素: span ,buis ,strong, em ,ins ,del
-
-
行内块级元素
- 不独占一行, 并且可以设置宽高
-
排版
- 垂直排版:如果元素是块级元素, 那么就会垂直排版
- 水平排版:如果元素是行内元素/行内块级元素, 那么就会水平排版
浮动流
• 所谓浮动指的是使元素脱离原来的文本流,在父元素中浮动起来。 • 浮动使用float属性。 • 可选值: – none:不浮动 – left:向左浮动 – right:向右浮动 • 块级元素和行内元素都可以浮动,当一个行内元素浮动以后将会自动变为一个块级元素。 • 当一个块级元素浮动以后,宽度会默认被内容撑开,所以当漂浮一个块级元素时我们都会为其指定一个宽度。
• 当一个元素浮动以后,其下方的元素会上移。元素中的内容将会围绕在元素的周围。 • 浮动会使元素完全脱离文本流,也就是不再在文档中在占用位置。 • 元素设置浮动以后,会一直向上漂浮直到遇到父元素的边界或者其他浮动元素。 • 元素浮动以后即完全脱离文档流,这时不会再影响父元素的高度。也就是浮动元素不会撑开父元素。 • 浮动元素默认会变为块元素,即使设置display:inline以后其依然是个块元素。
清除浮动
• clear属性可以用于清除元素周围的浮动对元素的影响。 • 也就是元素不会因为上方出现了浮动元素而改变位置。 • 可选值: – left:忽略左侧浮动 – right:忽略右侧浮动 – both:忽略全部浮动 – none:不忽略浮动,默认值
overflow
• 当相关标签里面的内容超出了样式的宽度 和高度是,就会发生一些奇怪的事情,浏 览器会让内容溢出盒子。 • 可以通过overflow来控制内容溢出的情况。 • 可选值: – visible:默认值 – scroll:添加滚动条 – auto:根据需要添加滚动条 – hidden:隐藏超出盒子的内容
display用来设置显示的类型
-
inline: 将元素设置为行内元素
-
block: 将元素设置为行内元素
-
inline-block: 将元素设置为行内块,即可设置宽高,又不会独占一行(一般不使用)
-
table: 将元素设置为一个表格
-
none: 元素不在页面中显示
visibility设置元素显示状态
- visibility:默认值,元素在默认值正常显示
- hidden: 元素在页面中隐藏,不显示,但是依然占据页面位置
vertical-align
用来指定行内元素(inline)或表格单元格(table-cell)元素的垂直对齐方式。这些值使元素相对其父元素垂直对齐:
- baseline 使元素的基线与父元素的基线对齐。HTML规范没有详细说明部分可替换元素的基线,如
- sub 使元素的基线与父元素的下标基线对齐。
- super 使元素的基线与父元素的上标基线对齐。
- text-top 使元素的顶部与父元素的字体顶部对齐。
- text-bottom 使元素的底部与父元素的字体底部对齐。
- middle 使元素的中部与父元素的基线加上父元素x-height(译注:x高度)的一半对齐。
-
使元素的基线对齐到父元素的基线之上的给定长度。可以是负数。 -
使元素的基线对齐到父元素的基线之上的给定百分比,该百分比是line-height属性的百分比。可以是负数。
注意 vertical-align 只对行内元素、表格单元格元素生效:不能用它垂直对齐块级元素
背景属性
background-image: url(“paper.gif”) | 属性指定用作元素背景的图像, 属性在水平和垂直方向上都重复图像 |
background-repeat:repeat-x | repeat-x:图像仅在水平方向重复 repeat-y:垂直重复 no-repeat:属性还可指定只显示一次背景图像 |
background-position: right top; | 属性用于指定背景图像的位置,(右上方) |
opacity | 属性指定元素的不透明度/透明度。取值范围为 0.0 - 1.0。值越低,越透明 |
background-attachment: | 属性指定背景图像是应该滚动还是固定的 fixed,固定;scroll,滚动。 |
background - 简写属性 eg: background: #ffffff url(“tree.png”) no-repeat right top; |
在使用简写属性时,属性值的顺序为: background-color background-image background-repeat background-attachment background-position |
background-origin | content-box: 相对于内容框来定位背景图像 border-box: 相对于边界框来定位背景图像 |
background-clip | 规定背景的绘制区域 content-box: 相对于内容框来绘制背景图像 border-box: 相对于边界框来绘制背景图像 |
background-size | 规定背景图像的尺寸 |
盒子模型
-
width: 设置盒子内容区的宽度
-
height: 设置盒子内容区的高度
-
margin: 外边框:只影响盒子的位置
-
padding: 内边框: 内容与框架外边框之间的距离
width和height只是设置的盒子内容区的大小,而不是盒子的整个大小,
盒子可见框的大小由内容区,内边距和边框共同决定
为元素设置边框,需要要为一个元素设置边框必须指定三个样式:
border-width: 边框的宽度
border-width可以分别指定四个边框的宽度:
-
如果指定一个值,则四边全都是该值
-
如果指定两个值,则两个值会分别设置给 上下 左右
-
如果指定三个值,则三个值会分别设置给 上 左右 下
-
指定四个值,四个值会分别设置给 上 右 下 左,按照顺时针的方向设置的
-
除了border-width,CSS中还提供了四个border-xxx-width, xxx的值可能是top right bottom left专门用来设置指定边的宽度
border-color: 边框颜色
设置边框的颜色和宽度一样,color也提供四个方向的样式,可以分别指定颜色,border-xxx-color,xxx的值可能是top right bottom left
border-style: 边框的样式
设置边框的样式可选值:
- none,默认值,没有边框 solid 实线 dotted 点状边框 dashed 虚线 double 双线
style也可以分别指定四个边的边框样式,规则和width一致,同时它也提供border-xxx-style四个样式,来分别设置四个边
内边距(padding)
指的是盒子的内容区与盒子边框之间的距离
一共有四个方向的内边距,可以通过:
padding-top
padding-right
padding-bottom
padding-left
来设置四个方向的内边距
内边距会影响盒子的可见框的大小,元素的背景会延伸到内边距,盒子的大小由内容区、内边距和边框共同决定
盒子可见框的宽度 = border-left-width + padding-left + width + padding-right + border-right-width
可见宽的高度 = border-top-width + padding-top + height + padding-bottom + border-bottom-width
外边距margin
指的是当前盒子与其他盒子之间的距离,
-
他不会影响可见框的大小,而是会影响到盒子的位置。
盒子有四个方向的外边距:
margin-top
margin-right
margin-bottom
margin-left
由于页面中的元素都是靠左靠上摆放的,所以注意当我们设置上和左外边距时,会导致盒子自身的位置发生改变,而如果是设置右和下外边距会改变其他盒子的位置。
外边距也可以指定为一个负值,如果外边距设置的是负值,则元素会向反方向移动
margin还可以设置为auto,auto一般只设置给水平方向的margin
如果只指定,左外边距或右外边距的margin为auto则会将外边距设置为最大值
垂直方向外边距如果设置为auto,则外边距默认就是0
如果将left和right同时设置为auto,则会将两侧的外边距设置为相同的值,
就可以使元素自动在父元素中居中,所以我们经常将左右外边距设置为auto以使子元素在父元素中水平居中
定位
position属性可以控制Web浏览器如何以 及在何处显示特定的元素。 • 可以使用position属性把一个元素放置到网 页中的任何位置。 • 可选值: – static
– relative
– absolute
– fixed
相对定位
• 每个元素在页面的文档流中都有一个自然位置。相对于这个位置对元素进行移动就称为相对定位。周围的元素完全不受此影响。 • 当将position属性设置为relative时,则开启了元素的相对定位。 • 当开启了相对定位以后,可以使用top、right、bottom、left四个属性对元素进行定位。
相对定位的特点
• 如果不设置元素的偏移量,元素位置不会发生改变。 • 相对定位不会使元素脱离文本流。元素在文本流中的位置不会改变。 • 相对定位不会改变元素原来的特性。 • 相对定位会使元素的层级提升,使元素可以覆盖文本流中的元素。
绝对定位
• 绝对定位指使元素相对于html元素或离他最近的祖先定位元素进行定位。 • 当将position属性设置为absolute时,则开启了元素的绝对定位。 • 当开启了绝对定位以后,可以使用top、right、bottom、left四个属性对元素进行定位。
绝对定位的特点
• 绝对定位会使元素完全脱离文本流。 • 绝对定位的块元素的宽度会被其内容撑开。 • 绝对定位会使行内元素变成块元素。 • 一般使用绝对定位时会同时为其父元素指定一个相对定位,以确保元素可以相对于父元素进行定位。
固定定位
• 固定定位的元素会被锁定在屏幕的某个位置上,当访问者滚动网页时,固定元素会在屏幕上保持不动。
• 当将position属性设置为fixed时,则开启了元素的固定定位。
• 当开启了固定定位以后,可以使用top、right、bottom、left四个属性对元素进行定位。
• 固定定位的其他特性和绝对定位类似。
z-index
• 当元素开启定位以后就可以设置z-index这个属性。
• 这个属性可以提升定位元素所在的层级。
• z-index可以指定一个整数作为参数,值越大元素显示的优先级越高,也就是z-index值较大的元素会显示在网页的最上