布局模型与盒模型一样都是 CSS 最基本、 最核心的概念。 但布局模型是建立在盒模型基础之上,又不同于我们常说的 CSS 布局样式或 CSS 布局模板。如果说布局模型是本,那么 CSS 布局模板就是末了,是外在的表现形式。 
CSS包含3种基本的布局模型,用英文概括为:Flow、Layer 和 Float。

在网页中,元素有三种布局模型:

1、流动模型(Flow)
2、浮动模型 (Float)

3、层模型(Layer)

流动模型,流动(Flow)是默认的网页布局模式。也就是说网页在默认状态下的 HTML 网页元素都是根据流动模型来分布网页内容的。

流动布局模型具有2个比较典型的特征:

第一点,块状元素都会在所处的包含元素内自上而下按顺序垂直延伸分布,因为在默认状态下,块状元素的宽度都为100%。实际上,块状元素都会以行的形式占据位置。如右侧代码编辑器中三个块状元素标签(div,h1,p)宽度显示为100%。

第二点,在流动模型下,内联元素都会在所处的包含元素内从左到右水平分布显示。(内联元素可不像块状元素这么霸道独占一行)

浮动模型:块状元素这么霸道都是独占一行,如果现在我们想让两个块状元素并排显示,怎么办呢?不要着急,设置元素浮动就可以实现这一愿望。

任何元素在默认情况下是不能浮动的,但可用 CSS 定义为浮动,如 div、p、table、img 等元素都可被定义为浮动。如下代码可以实现两个 div 元素一行显示。

div{width:200px;height:200px;border:2px red solid;float:left;
}
<div id="div1"></div>
<div id="div2"></div>

效果图

当然你也可以同时设置两个元素右浮动也可以实现一行显示。

div{width:200px;height:200px;border:2px red solid;float:right;
}

效果图

设置两个元素一左一右可以实现一行显示吗:

div{width:200px;height:200px;border:2px red solid;
}
#div1{float:left;}
#div2{float:right;}

效果图

层布局模型:是图像软件PhotoShop中非常流行的图层编辑功能一样,每个图层能够精确定位操作,但在网页设计领域,由于网页大小的活动性,层布局没能受到热捧。但是在网页上局部使用层布局还是有其方便之处的。下面我们来学习一下html中的层布局。

如何让html元素在网页中精确定位,就像图像软件PhotoShop中的图层一样可以对每个图层能够精确定位操作。CSS定义了一组定位(positioning)属性来支持层布局模型。

层模型有三种形式:

1、绝对定位(position: absolute)

2、相对定位(position: relative)

3、固定定位(position: fixed)

绝对定位:如果想为元素设置层模型中的绝对定位,需要设置position:absolute(表示绝对定位),这条语句的作用将元素从文档流中拖出来,然后使用left、right、top、bottom属性相对于其最接近的一个具有定位属性的父包含块进行绝对定位。如果不存在这样的包含块,则相对于body元素,即相对于浏览器窗口

如下面代码可以实现div元素相对于浏览器窗口向右移动100px,向下移动50px。

div{width:200px;height:200px;border:2px red solid;position:absolute;left:100px;top:50px;
}
<div id="div1"></div>

效果如下:

任务

我来试一试:设置div标签相对于浏览器,(相对于以前位置右上角)向左移动100象素,向下移动20象素。

效果图如下:

相对定位: 如果想为元素设置层模型中的相对定位,需要设置position:relative(表示相对定位),它通过left、right、top、bottom属性确定元素在正常文档流中的偏移位置。相对定位完成的过程是首先按static(float)方式生成一个元素(并且元素像层一样浮动了起来),然后相对于以前的位置移动,移动的方向和幅度由left(向右移)、right(向左移)、top(向下移)、bottom(向上移)属性确定,偏移前的位置保留不动。

如下代码实现相对于以前位置向下移动50px,向右移动100px;

#div1{width:200px;height:200px;border:2px red solid;position:relative;left:100px;top:50px;
}<div id="div1"></div>

效果图:

什么叫做“偏移前的位置保留不动”呢?

大家可以做一个实验,在div标签的后面加入一个span标签,在标并在span标签中写入一些文字。如下代码:

<body><div id="div1"></div><span>偏移前的位置还保留不动,覆盖不了前面的div没有偏移前的位置</span>
</body>

效果图:

从效果图中可以明显的看出,虽然div元素相对于以前的位置产生了偏移,但是div元素以前的位置还是保留着,所以后面的span元素是显示在了div元素以前位置的后面。

固定定位: f ixed:表示固定定位,与absolute定位类型类似,但它的相对移动的坐标是视图( 屏幕内的网页窗口 )本身。由于视图本身是固定的,它 不会随浏览器窗口的滚动条滚动而变化 ,除非你在屏幕中移动浏览器窗口的屏幕位置,或改变浏览器窗口的显示大小,因此固定定位的元素会始终位于浏览器窗口内视图的某个位置,不会受文档流动影响,这与background-attachment:fixed;属性功能相同。以下代码可以实现相对于 浏览器视图 向右移动100px,向下移动50px。并且拖动滚动条时位置固定不变。

#div1{width:200px;height:200px;border:2px red solid;position:fixed;left:100px;top:50px;
}
<p>文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本。</p>
....

Relative与Absolute组合使用 : 相对于网页其它元素进行定位,使用position:relative来帮忙,但是必须遵守下面规范:

1、参照定位的元素必须是相对定位元素的前辈元素(父元素):

<div id="box1"><!--参照定位的元素--><div id="box2">相对参照元素进行定位</div><!--相对定位元素-->
</div>

从上面代码可以看出box1是box2的父元素(父元素当然也是前辈元素了)。父可动子不可动。

2、参照定位的元素必须加入position:relative;

#box1{width:200px;height:200px; position:relative;
}

3、定位元素加入position:absolute,便可以使用top、bottom、left、right来进行偏移定位了。

#box2{position:absolute;top:20px;left:30px;
}

这样box2就可以相对于父元素box1定位了(这里注意参照物就可以不是浏览器了,而可以自由设置了)。

——————————————————————————————————————————————————————————————————

以上内容参考自慕课网:http://www.imooc.com

css学习笔记(三)——布局模型相关推荐

  1. CSS 学习笔记 - 网格布局(栅格系统)

    CSS 学习笔记 - 网格布局(栅格系统) 开启网格模式 基本概念 属性说明 容器属性 内容属性 效果展示 grid-template-rows.grid-template-columns 基本用法 ...

  2. CSS学习笔记7—盒子模型

    盒子模型(CSS重点) 学习目标 理解: 能说出盒子模型有那四部分组成 能说出内边距的作用以及对盒子的影响 能说出padding设置不同数值个数分别代表的意思 能说出块级盒子居中对齐需要的2个条件 能 ...

  3. 致自己:CSS学习笔记三

    一.CSS三大特性 1.优先级介绍 1.特性:不同的选择器具有不同的优先级,优先级高的选择器样式会覆盖优先级低的选择器样式. 2.优先级公式:继承 < 通配符选择器 < 标签选择器 < ...

  4. CSS学习笔记-11-Flex布局

    文章目录 11.flex 11.1.弹性盒 11.2.弹性容器的样式 11.3.弹性元素的样式 11.flex 11.1.弹性盒 flex(弹性盒,伸缩盒) 是css中的又一种布局手段,它主要用来代替 ...

  5. DIV + CSS 学习笔记(盒模型)

    本文目录 一.盒模型 (一)盒边框(border) (二)内边距(padding) (三)外边距(margin) (四)盒内容(element) (五)盒模型计算 (六)块级元素与内联元素的区别和转换 ...

  6. CSS 学习笔记 - 盒模型

    CSS学习笔记 - 盒模型 外边距margin 内边距padding 背景background 背景图background-image 边框border 样式 宽度 颜色 圆角 边框图片border- ...

  7. css中怎么加入立体模型,CSS学习笔记二:css 画立体图形

    继上一次学了如何去运用css画平面图形,这一次学如何去画正方体,从2D向着3D学习,虽然有点满,但总是一个过程,一点一点积累,然后记录起来. Transfrom3D 在这一次中运用到了一下几种属性: ...

  8. CSS学习笔记(详细,不定期更新)

    CSS 学习笔记 CSS书写规范 顺序 布局位置属性(position, top, right, z-index, display, float等) 自身大小盒子模型(width, height, p ...

  9. CSS学习笔记(狂神-完整版)

    CSS学习笔记(狂神-完整版) HTML + CSS + JavaScript 结构 + 表现 + 动作 1.什么是CSS 如何学习 CSS是什么 CSS怎么用(快速入门) CSS选择器(重点+难点) ...

  10. CSS学习笔记(详细)- 基础

    CSS学习笔记从零开始 代码风格 样式书写格式 CSS基础选择器 css选择器的作用:(选择标签用的) 选择器分类:基础选择器和复合选择器 基础选择器 标签选择器 类选择器 - 开发最常用 多类名 i ...

最新文章

  1. Easyui combobox下拉框默认选中第一项
  2. 图像处理:图像中噪声分布和概率密度函数的关系
  3. 【网址收藏】WSL安装docker(不折腾版)
  4. 1.7 Python基础知识 - 模块初识
  5. python中字符串文件如何打开_python-字符串·文件·集合操作
  6. 方法参数修饰符in,out,ref
  7. 值得收藏的UmiJS 教程
  8. MSM8953 Android 9.0 打开uart串口
  9. 微信公众号和服务器的关系,微信公众号、订阅号、服务号之间的关系和区别
  10. 联网下 计算机重启,电脑每次开机都要重启路由器才能上网的处理方法
  11. 使用vue-admin-template基础模板开发后台管理系统必会技能
  12. 实现[微信]H5长按保存图片功能
  13. excel表格拆分多个表如何操作
  14. Adobe Premiere Pro CS6打开报错(Oxc000007b)解决办法
  15. STM-32:SPI通信协议/W25Q64简介—软件SPI读写W25Q64
  16. react-native 使用高德SDK取得位置信息
  17. 同花顺编程语言是基于c,同花顺编程语言
  18. 旅行的目的和意义何在?(转…
  19. 乘方与开方 Math.sqrt(x) Math.pow(x,y)
  20. 关于“超时时间已到”的问题,终于解决了

热门文章

  1. 优化算法的意义,之二。
  2. c 给定字符串中查找_面试 | 查找类算法精析
  3. java中重新加载指定文件_java-更改后重新加载属性文件
  4. java需要先安装jdk_谢谢知乎。Java初学者首先下载 JDK 开发环境,然后再下 eclipse 对吗?那 tomcat是什么?还需要安装吗?...
  5. mysql中distinct关键字,MySQL关键字Distinct的详细介绍
  6. WriteN, RTMP send error
  7. 做自适应网站专业乐云seo_自适应网站方案品牌乐云seo
  8. leetcode 47. 全排列 II 思考分析
  9. c#枚举数字转枚举_C#枚举能力问题和解答 套装4
  10. Java SecurityManager getSecurityContext()方法与示例