文档流:

普通流(normal flow):

字面意思是普通流或者标准流,也就是常说的文档流,指网页内标签正常是从上到下,从左到右排列的意思,css的定位机制有3种:普通流(标准流)、浮动、定位。

浮动:

是指使元素飘起来不完全脱离标准流的控制,绝对定位才是完全脱离标准流的,飘起来后不会再占原来的位置,浮动可以使块级元素在一行排列显示,float的值有:none默认值,元素不浮动、right元素向右浮动、left元素向左浮动。

 .box ul li {float:left;}

浮动特性:

1、浮动只存在于水平方向,浮动不能上对齐和下对齐,浮动属于内容content,所以是无法跨越padding和border的,要想跨越就会使用定位;

2、浮动找离自己最近的父级盒子对齐,浮动影响的是他的下面的盒子,自己浮动后会脱离文档流不占位,从而下面的盒子会到它原来的位置排列;

3、浮动可以让元素默认转换为类似行内块元素(float使元素显示模式隐藏转换,但是并非真实行内块,因为行内块元素中间默认有间隙,而float转换后的元素中间没有间隙)。

清除浮动:

主要是为了解决父级元素没有给高度,子级盒子浮动不占位引起的父级盒子高度为0的问题,清除浮动后,父级盒子自动检测高度,从而不会影响下面标准流盒子的布局。

清除浮动的方法有四种:

1、额外标签法(标签给clear属性):

在最后一个浮动元素末尾添加一个空标签,并给这个标签添加clear:both;属性,添加属性的三种方式任选其一都可以,这里采用行内样式举例子,clear的属性值有left、right、both(推荐使用),此方法比较快捷,但是给页面增加了无意义标签,结构化较差。

 <style>.father {background-color: #ffaacf;}.son {width: 100px;height: 100px;background-color: #666666;float: left;}.son2 {width: 200px;height: 200px;background-color: #9bdf13;float:left;}.brother {height: 100px;background-color: #333333;}/*采用内联样式添加clear属性法.clear {clear: both;}*/</style><body><div class="father"><div class="son"></div><div class="son2"></div><div style="clear:both" class="clear"></div><!-- 添加空标签实现清除浮动属性法 --></div><div class="brother"></div></body>

2、父级标签添加overflow属性法:

给父级元素添加overflow属性同样可以实现清除浮动的效果,代码简洁,但是当页面的内容增多时,overflow属性不能使内容自动换行而隐藏,不能显示溢出的内容,overflow的值:hidden(溢出隐藏)、scroll(滚动条)页面会出现滚动条,不推荐使用、auto(自动)都可以清除浮动。

 <style>.father {background-color: #ffaacf;overflow: hidden;/*给父级标签添加overflow属性实现清除浮动*/}.son {width: 100px;height: 100px;background-color: #666666;float: left;}.son2 {width: 200px;height: 200px;background-color: #9bdf13;float:left;}.brother {height: 100px;background-color: #333333;}</style><body><div class="father"><div class="son"></div><div class="son2"></div></div><div class="brother"></div></body>

3、after伪元素兼zoom: 1;属性法:

after伪元素可以解决额外标签法中无意义的标签问题,伪元素实际还是本身,只是给了另一个身份,其具体方法是:先声明伪类并配置属性:{content: “”;display: block;height: 0;clear: both;visibility: hidden;},后父级盒子调用;zoom: 1属性是解决兼容IE6~7问题的,属性前面加*的作用是告诉浏览器,只有遇到IE6~7浏览器才会执行此代码,其他浏览器不执行此代码,如

 <style>/* 给父级盒子声明伪类,类名可以直接使用father,如:.father:after {} */.clearfix:after {content: "";display: block;height: 0;clear: both;visibility: hidden;}.clearfix { /* 解决IE6~7之间存在的兼容问题,此属性可以直接写在.father {}中,省去一个类名的声明 */*zoom: 1;/* css hack 解决IE低版本浏览器兼容性*/}.father {background-color: #ffaacf;}.son {width: 100px;height: 100px;background-color: #666666;float: left;}.son2 {width: 200px;height: 200px;background-color: #9bdf13;float:left;}.brother {height: 100px;background-color: #333333;}</style><body><div class="father clearfix"><!--  父级标签调用伪类 --><div class="son"></div><div class="son2"></div></div><div class="brother"></div></body>

4、双伪元素法:

此方法和after伪元素法一样,只是采用双伪元素实现清除浮动效果,如:

 <style>/* 声明双伪类: */.clearfix:before,.clearfix:after {content: "";display: block;height: 0;}.clearfix:after {clear: both;}.clearfix { /* 解决IE6~7之间存在的兼容问题 */*zoom: 1;}.father {background-color: #ffaacf;}.son {width: 100px;height: 100px;background-color: #666666;float: left;}.son2 {width: 200px;height: 200px;background-color: #9bdf13;float:left;}.brother {height: 100px;background-color: #333333;}</style><body><div class="father clearfix"><!--  父级标签调用伪类 --><div class="son"></div><div class="son2"></div></div><div class="brother"></div></body>

定位(position):

实际开发中,标准流和浮动不能满足我们布局的需求,此时使用定位就可以很好的实现布局效果。定位属性主要包括:定位模式和边偏移。

定位模式:
position的属性值:

绝对定位和固定定位会发生模式转换,最终会默认转换为inline-block行内块模式

边偏移属性:

子绝父相搭配定位方式:

子绝父相是实际开发中一种常见的定位搭配方式,子级用绝对定位,父级用相对定位。父级用相对定位的原因是自己占位,不会影响下面元素的布局,子级用绝对定位的原因是自己不占位,方便其他元素布局,如常见轮播图布局。

 /* 子绝父相定位代码展示: */<style>/* 实现btnleft 和 btnright位于topbox的两边居间,bottom盒子在top盒子上面: */* {margin: 0;padding: 0;}body {width: 600px;height: 500px;margin: 0 auto;}div {border: 1px solid yellowgreen;}.topbox,.bottom {width: 400px;height: 200px;background-color: #443366;position: relative;}.btnright~div {width: 98px;height: 160px;background-color: #666666;margin-top: 15px;float:left;}.bottom {background-color: #998866;}.btnleft,.btnleft+div {width: 50px;height: 50px;background-color: turquoise;position: absolute;top: 70px;}.btnleft+div {right: 0px;}</style><body><div class="topbox"><div class="btnleft"></div><div class="btnright"></div><div>页面一</div><div>页面二</div><div>页面三</div><div>页面四</div></div><div class="bottom"></div></body>

绝对定位的盒子水平、垂直居中算法:

普通盒子左右居中仅需margin:0 auto;即可,但是当给盒子给了定位或者浮动后,此方法失效,这时就只能使用算法两步进行居中定位:1:使用绝对定位给自己盒子left值为父级盒子宽度的50%(left:50%)2:使用margin-left值为自己盒子宽度的一半的负值,案例代码如下:

 <style>.box {border: 1px solid #552;width: 400px;height: 300px;position: relative;}.son {border: 1px solid red;width: 120px;height: 100px;margin: 0 auto;/* float: left; */position: absolute;left: 50%;margin-left: -60px;top: 50%;margin-top: -50px;}</style><body><div class="box"><div class="son"></div></div></body>

z-index层级:

浮动会使后面的元素默认排在最下面,而定位会使后面的元素默认排在最上面,有的时候需要改变这个顺序,此时定位的元素可以使用z-index来解决这个问题(定位的元素才有z-index),其默认值为0,其值没有限制。

提示:本文图片等素材来源于网络,若有侵权,请发邮件至邮箱:810665436@qq.com联系笔者 删除。
笔者:苦海

CSS中文档流之普通流,浮动及定位、浮动特性及清除浮动的方式、定位模式,子绝父相搭配定位方式、z-index层级相关推荐

  1. 【CSS】定位--静态定位-相对定位-绝对定位-子绝父相-固定定位-粘性定位

    文章目录 1. 为什么需要 2. 定位组成 定位 = 定位模式 + 边偏移 2.1 定位模式 2.2边偏移 3. 静态定位 static (了解) 4. 相对定位 relative (重要) 5. 绝 ...

  2. CSS中的子绝父相布局

    前言 在CSS中有三种定位方式:相对定位.绝对定位和固定定位 一.相对定位 相对定位的属性是position:relative,如过对某个元素设置了相对定位,元素就会根据自身左顶点进行位置偏移,元素还 ...

  3. 第6天-css笔记 三大定位-定位 子绝父相 与精灵图

    定位 ================================================================================= 用了子绝父相而带来的子盒子居中 ...

  4. Web前端,CSS常用之相对定位和绝对定位的区别,静态定位、子绝父相、固定定位、元素的层级关系的了解

    前言 持续学习总结输出中,今天分享的是Web前端,CSS常用之相对定位和绝对定位的区别,静态定位.子绝父相.固定定位.元素的层级关系的了解 1.定位的基本介绍 我们的网页常见布局方式有:标准流.浮动. ...

  5. 一文读懂css【css3】绝对(absolute)定位和相对(relative)定位 相对定位是相对谁定位的 绝对定位又是根据谁绝对定位的 子绝父相 包含块

    目录 何为定位 偏移量 垂直方向 top bottom 水平方向 left right relative-相对定位 何为相对定位 相对定位的特点 实例 元素代码的起始位置 元素若不开启相对定位,即便设 ...

  6. css定位(子绝父相)

    定位 ☆定位核心 -- 子绝父相 1.1 在开发中什么时候需要使用定位? 定位就是解决标准流和浮动无法实现的效果. 1.2 「定位组成」 定位 = 定位模式 + 边偏移 定位模式:用于指定元素的定位方 ...

  7. CSS中定位(带你实操代码掌握固定定位、绝对定位与相对定位(子绝父相))

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究) 目录 固定定位 绝 ...

  8. css定位-子绝父相

    题目要求: 开始的代码: <!DOCTYPE html> <head><meta charset="utf-8" /><link rel= ...

  9. css样式子绝父相,子绝父相_HTML+CSS前端基础知识教程_腾讯视频

    更多资料源码请加3252897743第1天 html   1.HTTP协议   2.html是纯文本3.html骨架4.DTD文档类型5.head标签6.body标签7.html基本语法8.h系列的标 ...

最新文章

  1. 台湾积体电路制造公司(简称为台积电(TSMC))的28nm LP、HPM、HPC、HPC+四种不同处理器工艺版本的区别?
  2. PAT甲级1110 Complete Binary Tree:[C++题解]判断完全二叉树
  3. 【学习笔记】SAP 成本对象控制
  4. 20201028 《计算感知》第4节课 笔记
  5. iOS开发 剖析网易新闻标签栏视图切换(addChildViewController属性介绍)
  6. 这些让人看瞎了的设计!实力证明,谁才是世界的最终boss!
  7. idea数据库反向生成实体类_IntelliJ IDEA 的数据库管理工具实在太方便了
  8. 摇杆控制LED灯的亮度
  9. .NET技术面试题系列(2) -sql server数据库优化规范
  10. FPGA学习笔记---Verilog延迟语句分析比较
  11. 没有弃用 Sun 拥抱 HP/Linux,亚马逊或已倒闭!
  12. 备忘: MIRACL 大数运算库使用手册
  13. 简单python脚本实例-python脚本例子
  14. 数据库问题6-將系統資料表對應至系統檢視
  15. 爬取网易云音乐解析页面数据的三种方法
  16. MQTT从入门到放弃
  17. 记录自己装AMD黑苹果安装
  18. safari遮罩无效
  19. 运动会加油稿计算机学院,学院运动会加油稿范文
  20. 办税、缴税,原来支付宝里就能搞定

热门文章

  1. Java import static静态导入
  2. 计算机设计大赛国奖作品_2. 报名材料
  3. UFLDL之Softmax回归
  4. iOS开发cocoaPod的使用
  5. qt html导pdf 页眉,如何使用wkhtmltopdf unpatched qt在每个页面上添加页眉和页脚?
  6. html表格字体格式转换,【转】常用HTML代码速查表
  7. 爬虫5-BeautifulSoup模块简解
  8. 【Jmeter篇】导出Jmeter脚本及查看接口响应时间
  9. 【Python】pandas模块中更改Series的数据类型
  10. 【Python】hashlib模块实现MD5加密