文档流

文档流是一种默认定位方式,在文档流中元素框的位置由元素在html中的位置决定,文档流中元素的position属性为默认的static或继承来的static并按照普通流定位。块级元素独占一行,自上而下排列;内联元素从左到右排列。
让元素脱离文档流有三种方法:
浮动float;
绝对定位position:absolute;
固定定位position:fixed;
元素脱离文档流demo


CSS定位

CSS的三种布局机制:文档流、浮动、定位。定位定义元素相对于它正常位置应该出现的位置,或者相对于父元素、另一个元素、浏览器本身偏移。定位方式有三种:

div{
position:absolute/relative/fixed
}

1.position:fixed相对于浏览器的窗口定位,定位后的元素脱离文档流。元素的位置通过 left,top,right以及bottom属性进行规定。fixed永远是根据浏览器窗口来定位,无论其他元素怎么设置,都影响不了它。
2.position:relative相对于元素自身正常位置进行定位,元素在文档流中仍占据原来空间,只是表现出来的位置会相对原来的位置偏移。left:20会向元素的 LEFT 位置添加 20 像素。
3.position:absolute,相对于有定位属性(fix/relative/absolute,一般是用relative)的第一个父元素偏移,如果找不到这种父元素就向上层找,直到body,html元素。absolute定位元素会脱离文档流。元素的位置通过 left,top,right以及bottom属性进行规定。
定位方式demo


absolute, relative, fixed 偏移的参考点

1.absolute的定位:浏览器会递归查找该元素的所有父元素,如果找到一个设置了position:relative/absolute/fixed的元素,就以该元素为基准定位,如果没找到,就以浏览器边界定位。一般情况下,我们会将relative与absolute配套使用,方便我们对absolute元素定位。

2.relative的定位:relative元素的定位永远是相对于元素自身位置的,和其他元素没关系,也不会影响其他元素。

3.fixed的定位:fixed元素的定位永远是相对于浏览器边界的,和其他元素没有关系。


z-index

具有定位属性的元素设置top,right,bottom,left,z-index才有效。
z-index(设置层叠),可以通过z-index属性控制元素在Z轴方向的叠放顺序,z-index越高,元素位置越靠上,如果为正数,则离用户更近,为负数则表示离用户更远。没定位属性的元素设置了无效果。如果2个元素的z-index的值相同,按文档流顺序,后面的元素会悬浮在前面的元素上面。
z-index demo


position:relative和负margin使元素位置发生偏移的区别

position:relative可以使元素相对于元素自身正常位置发生偏移,有relative定位属性的元素仍然在文档流中,它仍然占据着原来的位置,所以其他元素的位置不会发生变化。
负margin:通过负margin进行偏移的元素,它会放弃偏移前占据的空间,这样它后面文档流中的其它元素就会“流”过来填充这部分空间,所以其他元素的位置发生了变化。
relativ,负margin偏移区别 demo


局对居中

将目标元素的父元素设置absolute定位,四方向偏移值设置为0。再将目标元素设置absolute定位,上、左方向设置偏移值为50%(这里50%是相对于父元素),让元素的左上角原点位于页面的中心。再使用负margin使元素左上角沿左、上移动它宽高的一半,这样就能使元素在页面中垂直居中了。
demo


浮动元素的特征。

float的设计初衷是用于文字环绕效果,即对一个图片使用float之后,周围的文字环绕它。
1.float使元素脱离文档流,当父元素没设置固定高度时,元素浮动脱离文档流,父元素会收缩
2.元素设置浮动或绝对定位后,如果不给元素设置宽度,元素具有收缩性,元素会根据内容自动调整宽度。也就是说absolute、float具有自适应宽度的特性。
3.行内元素、块级元素浮动后都会变成块级元素。元素使用绝对定位后也会成块级元素
4.浮动的元素可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。由于浮动元素会脱离文档流,其他的普通元素会忽视浮动元素,后面的元素会占据浮动元素的文档流空间。
元素浮动的时候只能向左,或向右,不会向上,向下浮动。浮动的元素是先站住自己所在文档流的位置,然后左右浮动。元素浮动后紧跟的内联元素会贴住浮动的元素(图文环绕),文字会围绕着浮动元素,这也是设计浮动元素的初衷。
浮动demo


清除浮动

元素浮动后,父元素无法撑起高度(父元素未指定高度时),影响与父元素同级的元素。与浮动元素同级的非浮动元素会紧随其后视浮动元素不存在,占据浮动元素原来的位置。若非第一个元素浮动,则该元素之前的元素也需要浮动,否则会影响布局。demo
1.元素加clear:left/right/both; 可清除该元素前面有浮动元素产生的副作用。元素浮动后谁受影响,clear就加给谁。
2.浮动元素包裹父元素(或直接设置父元素),设置宽度100%,设置overflow:hidden
3.浮动元素包裹父元素(或直接设置父元素),设置父元素after伪元素为block,再设置伪元素clear:both;


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

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

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

  2. (三)css之浮动&定位

    众所周知,一个页面可能包含多个div,如何对这些div进行排列,以便具有较好的显示效果呢? css提供了浮动和定位两个属性进行div的排列,下面主要针对浮动和定位进行详细地阐述. (一)何为浮动? 浮 ...

  3. (转)CSS+DIV float 定位

    来自:http://www.cnblogs.com/iyangyuan/archive/2013/03/27/2983813.html 很早以前就接触过CSS,但对于浮动始终非常迷惑,可能是自身理解能 ...

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

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

  5. 【CSS】思考和再学习——关于CSS中浮动和定位对元素宽度/外边距/其他元素所占空间的影响

      一.width:auto和width:100%的区别   1.width:100%的作用是占满它的参考元素的宽度.(一般情况下参考元素 == 父级元素,这里写成参考元素而不是父级元素,在下面我会再 ...

  6. CSS中浮动和定位对元素宽度/外边距/其他元素所占空间的影响

    ---恢复内容开始--- 一.width:auto和width:100%的区别   1.width:100%的作用是占满它的参考元素的宽度.(一般情况下参考元素 == 父级元素,这里写成参考元素而不是 ...

  7. CSS中的定位与浮动

    CSS中的定位与浮动 本文主要讲述CSS中的三种定位样式static.relative和absolute的区别以及浮动元素的特征. 定位样式 CSS中定位样式position的取值有三个,默认值:st ...

  8. CSS的浮动和定位

    一.CSS中的浮动 1.定义和用法 float 属性定义元素在哪个方向浮动.在 CSS 中,任何元素都可以浮动.浮动会使原元素变成一个行级元素,而不论它本身是何种元素.如果浮动非替换元素,则要指定一个 ...

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

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

  10. CSS定位——浮动定位

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

随机推荐

  1. 019 Linux tcpdump 抓包案例入门可真简单啊?

    目录 1 tcpdump 是什么? 2 tcpdump 常用命令参数 3 tcpdump 抓包wss,配合Wireshark分析 4 tcpdump 抓包白度,配合Wireshark分析) 5 tcp ...

  2. selenium+python自动化103-一闪而过的dialog如何定位

    前言 web页面操作的时候经常会遇到一闪而过的 dialog 消息,这些提示语一般只出现了几秒,过后元素节点就会在DOM中消失了. 本篇讲解下用chrome 浏览器如何定位一闪而过的 dialog 消 ...

  3. mysql-8.0.12 安装使用教程

    Microsoft Windows [版本 10.0.15063] (c) 2017 Microsoft Corporation.保留所有权利. C:\WINDOWS\system32>D: D ...

  4. windows下CMD常用命令(url链接)

    https://blog.csdn.net/LJFPHP/article/details/78818696

  5. Python——函数设计与案例

    函数设计与案例 一. 函数的定义与调用 如果在开发程序时,需要多次使用某块代码,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小块,这就是函数 打印如下 print('人生 ...

  6. LeetCode-029-两数相除

    两数相除 题目描述:给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符. 返回被除数 dividend 除以除数 divisor 得到的 ...

  7. zookeeper的JAVA API使用

    1.创建连接 2.创建节点 3.监听信息 Watcher.class 4.获取节点 Stat stat = new Stat(); zk.getData(Path,true,stat); 5.修改节点 ...

  8. 使用 yapi-to-typescript 生成接口响应数据的 TS 类型声明

    TS 是越写越爽,但是很不爽的是接口响应数据一堆,每次要去手写很麻烦. 最近正好后端接口文档从一个垃圾工具切换到了 Yapi,然后去搜了下可以通过接口文档自动生成 TS 类型声明,就自己搞了下,还是很 ...

  9. LabVIEW,控件快捷菜单,温度转换

    目前正在自学LabVIEW,深感困难重重,我将偶尔发表一些自己的收获,自认为算是干货了, 搜到这篇随笔的朋友们或多或少遇到了些许困难,希望这能帮助到你们. 内容:练习使用LabVIEW中的控件快捷菜单 ...

  10. Linux 常用管理命令

    系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # ho ...