这几天有空,整理了关于CSS浮动和定位的一些知识点,有什么欠缺的地方,欢迎大家批评指正。

一、文档流的概念指什么?有哪种方式可以让元素脱离文档流?

  • 文档流,指的是元素排版布局过程中,元素会自动从左往右,从上往下的流式排列。并最终窗体自上而下分成一行行,并在每行中按从左到右的顺序排放元素。脱离文档流即是元素打乱了这个排列,或是从排版中拿走。

  • 让元素脱离文档流的方法有:浮动和定位。

二、有几种定位方式,分别是如何实现定位的,使用场景如何?

CSS定位方式有四种:默认定位(static)、相对定位(relative)、绝对定位(absolute)和固定定位(fixed)

  • static:默认值。没有定位,元素在正常的流中,top,right,bottom,left和z-index属性无效。示例如下:

  • relative:生成相对定位的元素,通过top,bottom,left,right的位置相对于其正常位置进行定位。其中的相对指的是相对于元素在默认流中的位置。

注意:

1.将元素position属性设置为relative之后,再通过top,bottom,left,right属性对其进行相对于原来位置的偏移;

2.元素偏移之后,他本来在默认文档流中占据的位置仍然存在,其紧挨其后的元素的定位依据它本来的位置定位;

3.该元素偏移之后,可能存在覆盖其他元素的情况,可以使用z-index属性显示层级有限级别。

示例:

第二个盒子元素相对于之前的位置(虚线部分)向下平移了20px,向右平移了30px。

要想使第三个块级元素被遮挡的部分浮现出来,我们可以使用如下代码实现:

注意:使用z-index必须保证元素的样式中含有定位方式,之前忘了给box3添加定位方式,导致z-index对box3不起作用。

  • absolute:生成绝对定位的元素,相对于static定位外的第一个父元素进行定位。

注意:

1.绝对定位的元素已经脱离了文档流,普通流中其他元素的布局就像绝对元素不存在一样;

2.绝对定位的元素的位置是相对于最近的已定位的祖先元素,如果元素没有已定位的祖先元素,它的位置就相对于body;

3.绝对定位的框可以覆盖页面的其他元素。

示例:

这种情况是离box2最近的父元素已定位的情况,如果离box2最近的父元素没有定位的话,示例如下:

  • fixed:本质上是一种绝对定位,不为元素预留空间。通过指定相对于屏幕视窗的位置来指定元素的空间,且元素的位置在屏幕滚动时不会发生变化。应用于很多网站顶端的固定导航、右下角的固定广告等等。

示例:

三、absolute, relative, fixed偏移的参考点分别是什么?

absolute偏移的参考点是:相对于最近的已定位的父元素,如果没有,则相对于body元素;

relative偏移的参考点是:相对于元素在普通流中的原来位置;

fixed偏移的参考点是:相对于浏览器窗口。

四、z-index 有什么作用? 如何使用?

z-index属性用于设置节点的堆叠顺序,拥有更高堆叠顺序的节点将显示在堆叠顺序较低的节点前面。

使用方法:示例

1.z-index仅对定位元素有效(position:relative||absolute||fixed);

2.z-index只可比较同级元素

五、position:relative和负margin都可以使元素位置发生偏移?二者有什么区别?

position:relative和负margin都可以使元素位置发生偏移,二者的区别表现在:

  • 负margin会使元素在文档流中的位置发生偏移,它会放弃偏移之前占据的空间,紧挨其后的元素会填充这部分空间;

  • 相对定位后元素位置发生偏移,它仍会坚守原来占据的空间,不会让文档流的其他元素流入。

示例:

六、如何让一个固定宽高的元素在页面上垂直水平居中?

可以使用绝对定位和负margin,示例:

七、浮动元素有什么特征?对其他浮动元素、普通元素、文字分别有什么影响?

  • 浮动元素的特征有:

1.块在一排显示;

2.内联元素支持宽高;

3.无论是块元素还是内联元素,没有宽度时默认内容撑开宽度;

4.脱离文档流;

5.提升层级半级。

  • 对其他浮动元素的影响:后浮动的元素永不会超过先浮动元素的顶端。

  • 对普通元素的影响:浮动元素会从文档正常流中删除,使得紧挨它的元素位置发生偏移,影响布局。

  • 对文字的影响:浮动元素向下延伸时,不会影响正常文本的显示,文本会相对于浮动元素进行偏移。但部分文本背景会被浮动元素遮住。(可参考大话FLOAT

浮动示例:

八、清除浮动指什么? 如何清除浮动?

清除浮动指的是:在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外面而影响布局的现象,为了防止这个现象的出现而进行的CSS处理,就叫CSS清除浮动。

清除浮动的方法:

1.使用带clear属性的空元素

在浮动元素后使用一个空元素如 <div class="clear"></div> ,并在CSS中赋予 .clear{clear:both;} 属性即可清理浮动。亦可使用 <br class="clear" /><hr class="clear" /> 来进行清理。

2.使用CSS的overflow属性

给浮动元素的容器添加overflow:hidden;或overflow:auto;可以清除浮动,另外在 IE6 中还需要触发 hasLayout ,例如为父元素设置容器宽高或设置 zoom:1。

3.使用CSS的:after伪元素

附加:关于使用clear:both清除浮动,一直都不太明白,还有就是对清除浮动的理解有误,以为清除浮动之后,元素的渲染顺序和普通流一样,实际不是这样的,下面给出我自己的理解,不足之处,欢迎大家批评指正。

  • 关于浮动

如下代码中:

在父容器中添加一个背景图片,图片会按照普通流渲染

若是在此基础上给背景图片添加浮动,效果如下:

我们可以看到父元素高度塌陷,背景图片脱离文档流,所以此时父容器div补给高度了,让我们给父容器添加点文字看看它的高度变化

父容器的高度被撑开了,有木有!有木有!

所以子元素浮动使得父元素塌陷的原因是:因为没有预先设置div高度,所以div高度由其包含的子元素高度决定。而浮动脱离文档流,所以图片并不会被计算高度。此时的div中,相当于div中子元素高度为0。

  • 一个困扰我很久的问题,和大家分享下,上代码吧:

我不理解的点是:为什么情况二中box2的宽度比情况一中box2的宽度大,情况二中的box2可以浮动上去,而情况一中的不可以呢?

答案是:因为情况一中宽度限制100px,所以box2文字不能靠右围绕,所以只能往下。 对于情况2,因为宽度为200px,所以box2在这个宽度内可以围绕box1

  • 关于clear:both 的理解:

Clear:both;其实就是利用清除浮动来把外层的div撑开,所以有时候,我们在将内部div都设置成浮动之后,就会发现,外层div的背景没有显示,原因就是外层的div没有撑开,太小,所以能看到的背景仅限于一条线。

示例如下:

关于CSS浮动、定位的知识先说这么多,有什么不足的地方欢迎大家指正。

版权所有,如有转载请说明来源

参考:
1.CSS定位方式
2.CSS定位详解
3.总结一下CSS中的定位 Position 属性
4.position
5.CSS定位
6.CSS样式表中z-index使用方法总结
7.CSS相对定位|绝对定位(五)之z-index篇
8.小tip: margin:auto实现绝对定位元素的水平垂直居中

CSS浮动、定位的更多相关文章

  1. 18 12 28 css 浮动 定位

    浮动 浮动特性 1.浮动元素有左浮动(float:left)和右浮动(float:right)两种 2.浮动的元素会向左或向右浮动,碰到父元素边界.其他元素才停下来 3.相邻浮动的块元素可以并在一行, ...

  2. css 浮动 定位

    浮动 元素的浮动是指设置了浮动属性的元素会脱离标准普通 流的控制,移动到其父元素中指定位置的过程.  语法: float   . left    . right . none(默认) 注意:    1 ...

  3. css浮动(float)及清除浮动的几种实用方法

    CSS浮动是现在网页布局中使用最频繁的效果之一,而浮动可以帮我们解决很多问题,那么就让我们一起来看一看如何使用浮动. 一.css浮动(float) (1)html文档流 自窗体自上而下分成一行一行,并 ...

  4. css浮动(float)及如何清除浮动

    前言: CSS浮动是现在网页布局中使用最频繁的效果之一,而浮动可以帮我们解决很多问题,那么就让我们一起来看一看如何使用浮动. 一.css浮动(float)(1)html文档流 自窗体自上而下分成一行一 ...

  5. css清除浮动定位造成的异常

    清除浮动是为了解决高度塌陷的问题:内层有好几个div有宽有高,并且选择了浮动定位,但是外层的div却并没有设置宽高.在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动( ...

  6. CSS彻底研究(3) - 浮动,定位

    Github pages 博文 CSS彻底研究(3)-浮动,定位 一 . 浮动float I . 定义及规则 float默认为none,对应标准流的情况.当float : left;时,元素就会向其父 ...

  7. css区块定位之浮动与清除属性

    float属性将所属标记的显示空间指定为一个浮动元素,并使其周围对象按一定的方式环绕它排列. float属性的作用就象图像和表格的align属性一样,但可以用到任何元素上. clear属性的作用是禁止 ...

  8. CSS入门(定位之浮动定位、伪类之鼠标悬停、光标修改和透明度修改和列表样式)

    一.定位 所为定位,实际上就是定义元素框相对于其正常位置,应该出现在哪儿 定位就是改变元素在页面上的默认位置 分类: 普通流定位(元素默认的定位方式) 浮动定位 相对定位 绝对定位 固定定位 1.普通 ...

  9. CSS定位——浮动定位

    CSS定位机制Ⅱ——浮动定位 float属性:进行浮动定位   left,right clear属性:清除浮动   left,right,both  ㈠  float属性 1.概述 ⑴div实现横向多 ...

随机推荐

  1. win7安装时,避免产生100m系统保留分区的办法

    在通过光盘或者U盘安装Win7操作系统时,在对新硬盘进行分区时,会自动产生100m的系统保留分区.对于有洁癖的人来说,这个不可见又删不掉的分区是个苦恼.下面介绍通过diskpart消灭保留分区的办法: ...

  2. ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式

    由于ASP.NET Core应用是一个同时处理多个请求的服务器应用,所以在处理某个请求过程中抛出的异常并不会导致整个应用的终止.出于安全方面的考量,为了避免敏感信息的外泄,客户端在默认的情况下并不会得 ...

  3. [原] KVM 虚拟化原理探究 —— 目录

    KVM 虚拟化原理探究 -- 目录 标签(空格分隔): KVM KVM 虚拟化原理探究(1)- overview KVM 虚拟化原理探究(2)- QEMU启动过程 KVM 虚拟化原理探究(3)- CP ...

  4. 编写高质量代码:改善Java程序的151个建议(第8章:异常___建议114~117)

    建议114:不要在构造函数中抛出异常 Java异常的机制有三种: Error类及其子类表示的是错误,它是不需要程序员处理也不能处理的异常,比如VirtualMachineError虚拟机错误,Thre ...

  5. MongoDB集群配置

    本文演示:(一个主服务器,一个备份服务器,三个仲裁服务器) 官方推荐副本集的成员数量为奇数,最多12个副本集节点,最多7个节点参与选举. 本文演示基于本机,用端口区分服务(每个服务器下新建db文件夹用 ...

  6. 【SAP业务模式】之ICS(二):基础数据

    讲完业务,计划在前台做一下ICS的基本操作,不过在操作之前,得先建立好基本的基础数据. 1.首先创建接单公司LEON,对应工厂是ADA: 2.创建生产公司MXPL,对应工厂是PL01: 3.创建接单公 ...

  7. JAVA的内存模型(变量的同步)

    一个线程中变量的修改可能不会立即对其他线程可见,事实上也许永远不可见. 在代码一中,如果一个线程调用了MyClass.loop(),将来的某个时间点,另一个线程调用了MyClass.setValue( ...

  8. iOS之延时执行(睡眠)的几种方法

    1. 最直接的方法: [self performSelector:@selector(deleyMethod) withObject:nil afterDelay:1.0]; 此方式要求必须在主线程中 ...

  9. iOS - 模态Model视图跳转和Push视图跳转的混合需求实现原理

    在研发中总会遇到一些莫名的需求,本着存在即合理的态度跟大家分享一下"模态Model视图跳转和Push视图跳转的需求实现",本文仅仅传授研发技术不传授产品以及UE的思想,请大家合理对 ...

  10. Winserver2012下mysql 5.7解压版(zip)配置安装

    一.安装 下载mysqlzip版本mysql不需要运行可执行文件,解压即可,下载zip版本mysqlmsi版本mysql双击文件即可安装,相对简单,本文不介绍此版本安装 配置环境变量打开环境变量配置页 ...