CSS 布局

CSS 规定的定位机制有三种,分别是标准文档流、浮动及绝对定位。

标准文档流

特点:

  • 从上到下,从左到右,输出文档内容;
  • 由块级元素和行级元素组成;

块级元素:特点:从左到右撑满页面,独占一行;触碰到页面边缘时会自动换行。

常见:div、ul、li、dl、dt、p ...

 行级元素:特点:能在同一行显示,不会改变 HTML 文档结构。

常见:span、strong、img、input ...

块级元素和行级元素都是盒子模型。

盒子模型 = 网页布局的基石,由4部分组成:

  • 边框:border
  • 外边距:margin
  • 内边距:padding
  • 盒子中的内容:content

border、margin、padding 是盒子模型的属性值,可以整体设置属性值,也可以在某一方向(top、right、bottom、left)上设置属性值。

整体设置的话,属性的参数可以是3个、2个、或1个。

  • 3个参数:第一个表示上,第二个表示左右,第三个表示下;
  • 2个参数:第一个表示上下,第二个表示左右;
  • 1个参数:表示四个方向上的属性值。

盒子3D模型

让我们利用背景美化网页时变得十分容易。

盒子模型尺寸 = 边框 + 外边距 + 内边距 + 盒子中的内容尺寸

自动居中一列布局

三个技能点:标准文档流、块级元素、margin属性

自动居中:

#wrap{ width:700px; margin:0 auto; }

 此处 auto 会根据浏览器的宽度自动设置两边的外边距。

原理:(浏览器的宽度 - 外包含层的宽度)/ 2 = 外边距

 注意:如果想让页面自动居中,当设置 margin 属性为 auto 时,就不能同时再设置浮动或绝对定位属性。 还有,width 一定不能设置为 100% 。

浮动布局简介及 float 属性

我们知道,在标准文档流中,用来布局的块级元素,它们是依次从上到下纵向排列的,如果要使用块级元素实现横向的排列的布局,那又该如何处理呢?

运用浮动机制,可以实现块级元素横向排版,可以实现横向多列布局。

float 属性:

  • left——左浮动
  • right——右浮动
  • none——不浮动

特点:元素会左移或右移,直至碰到容器位置。

这个过程就好像在容器的左边缘或右边缘安装了一块磁铁,而设置了 float 属性就好像受到强大吸引力,要排除万难向磁石靠拢的铁块。

注意:设置了浮动的元素,仍旧处于标准文档流中,这就意味着它在标准文档流中会占据空间,对它周围的元素会产生影响,一般是指紧邻在它后面的元素。

注意,如果设置了 float 属性的标签体中没有内容,又没有设置宽度,那么它在浏览器的显示中会缩成一个点。

清除浮动常用的方法(用在受浮动影响的元素里):

  • 为元素设置 clear 属性,常用 clear:both,如果清楚浮动方向,也可以用clear:left,clear:right 。
  • 同时为元素设置宽度为 100% (或者是固定宽度) + overflow:hidden 。 

注意,清除浮动是用在受到浮动影响的标签,而不是设置了 float 属性的标签。

空标签无意义,不建议使用此方法清除浮动。

横向两列布局

主要应用技能:

  • float属性——使纵向排列的块级元素,横向排列
  • margin属性——设置两列之间的间距

注意,当父包含块缩成一条时,用 clear:both 方法清除浮动无效,它一般用于紧邻后面的元素的清除浮动。这种情况下使用 overflow:hidden 。

另外,在网页布局中,div 块的高度一般不需要设置,直接让他根据内容自动扩展就好。

绝对定位布局

通过设置 position 属性实现,能够实现横向多列布局及较为复杂的定位 。

position 属性有三种定位i形式:

  • 静态定位
  • 相对定位
  • 绝对定位

可设置4个属性值:

  • static (静态定位)
  • relative(相对定位)
  • absolute(绝对定位)
  • fixed(固定定位,fixed也属于绝对定位)

相对定位

特点:

  • 相对自身原有位置进行偏移;
  • 仍处于标准文档流中;
  • 一旦元素设置了相对定位,它随即拥有偏移属性和 z-index 属性(Z轴)

设置了相对定位,并设置了偏移量后,会产生层堆叠,并且仍会占据空间。

绝对定位

特点:

  • 建立了以包含块为基准的定位;
  • 完全脱离了标准文档流(意味着他对他的兄弟元素不再造成任何影响);
  • 随即拥有偏移属性和z-index属性。

1、未设置偏移量

特点:

  • 无论是否存在已定位祖先元素,都保持在元素初始位置
  • 脱离标准文档流

2、设置偏移量

偏移参照基准:

  • 无已定位祖先元素,则以<html>为便宜参照基准;注意,是相对于html,而不是相对于body;
  • 有已定位祖先元素,则以距其最近的已定位的祖先元素为便宜参照基准。

注意,当一个元素设置绝对定位,没有设置宽度时,元素的宽度根据内容进行调节。

 

posted @ 2017-07-11 14:31  unique1319  阅读(136)  评论(0编辑  收藏  举报