一、在此先说一下文档流的概念:

    1,文档流定义:

百度百科定义:文档流是文档中可显示对象在排列时所占用的位置。

大多网友的理解:元素的位置由元素在 (X)HTML 中的位置决定。将窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素,即为文档流.

2,css定位机制:

普通流:普通流就是正常的文档流,在HTML里面的写法就是从上到下,从左到右的排版布局。

浮动:float(left/right)

定位:position(static/relative/absolute)

我的总结和理解:文档流就是没有使用float和position:absolute的元素,(position:relative也会使元素脱离文档流,但是它以前所在地位置还会占用空间,下面的元素不能挤上来),使用了float和position:absolute的元素会脱离文档流,后面的元素会占用它们的位置。

例1,使用float的例子:

未使用前核心代码:

</head>              

<style type="text/css"> 

div{  background:#C30;  width:50px;  height:50px;  margin:10px; }

</style> 

</head>

<body> <div class="ad">1</div> <div>2</div> <div>3</div> </body>

效果图如下所示

给编号为1的方框使用float:left,核心代码如下:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
div{
background:#C30;
width:50px;
height:50px;
margin:10px;
}
.ad{
float:left;
} </style>
</head> <body>
<div class="ad">1</div>
<div>2</div>
<div>3</div>
</body>
</html>

效果图如下所示:

我们可以看到,方框1覆盖了方框2,这就是方框1使用float后脱离文档流的效果,它不再占用空间,然后方框2就挤上去了。

例2,使用position:absolute使元素脱离文档流例子的核心代码如下:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
div{
background:#C30;
width:50px;
height:50px;
margin:10px;
}
.ad{
position:absolute;
top:100px;
left:100px;
} </style>
</head> <body>
<div class="ad">1</div>
<div>2</div>
<div>3</div>
</body>
</html>

带来的效果图如下:

我的总结体会:

1号方框使用position:absolute绝对定位后脱离文档流,不再占用空间,到这里我个人觉得脱离文档流的元素可以以为它是和这个页面无关,独立出来在一个新的页面排版,然后显示到以前这个页面的上面,覆盖它,各排版各的。而position:relative也会脱离出来排版,但是区别是它还站着以前的空间,如果1方框是relative元素,2,3号方框就不能挤上来。

3,position:absolute应用:

absolute是绝对定位,只有给它top,left,right,bottom当中至少一个赋值,它才会生效。例如下面才会生效

.ad{
position:absolute;
top:100px;
left:100px;
}

这里的top,left都是相当于该元素的父元素的,包含它的元素如果含有position:relative,那么这个就是它的父元素,如果没有,那么body就是它的父元素,定位就从浏览器左上角开始。

最新文章

  1. GO語言視頻教程下載
  2. JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
  3. IIS由于无法创建应用程序域,因此未能执行请求。错误: 0x80070005 拒绝访问
  4. 手动导出Excel及Excel导出原理探究
  5. DEV控件的使用(二次封装BaseUI)
  6. 为什么JavaScript函数中的参数前面不能加var
  7. css3弹性盒模型(Flexbox)
  8. mvc日期控件datepick的几篇文章,日后再总结吧
  9. ruby创建某些“关键字”方法别名的语法
  10. mysql编译好的简单安装
  11. centos7下安装mysql会遇到的问题集合
  12. c++字符串string的操作
  13. CentOS Linux release 7.3破解密码详解
  14. (转) at&amp;T语法格式 与 at&amp;T - intel格式对比
  15. CSS形变与动画
  16. #define宏常量和const常量的区别
  17. MySQL 性能测试
  18. java linux 项目常常无故被关闭 进程无故消息
  19. HTML&CSS精选笔记_CSS高级技巧
  20. flask第二十一篇——练习题

热门文章

  1. Linux学习笔记(一):常用命令(2)
  2. ASP.NET Zero--7.控制器加权限
  3. Flexible 弹性盒子模型之CSS align-self 属性
  4. Mocha的单元测试实战
  5. 使用KindEditor富文本编辑器,点击批量上传按钮没有选择图片按钮
  6. C#Windows Form简易计算器实现(上)
  7. Establishing SSL connection without server&#39;s identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if expl
  8. 【01背包】HDU 2602 Bone Collector (模板题)
  9. jdk 多版本安装 for mac
  10. c/c++笔试面试经典函数实现