文档流 css中间float clear和布局

文档流

先说说什么是公文流转  什么流 它是一系列连续的东西

 <div style="background-color:pink;width:40px;height:80px;">第一个框 </div>
  <div style="background-color:red;width:40px;height:80px;">第二个框 </div>
  <div style="background-color:yellow;width:40px;height:80px;">第三个框 </div>
  <span>我换行</span>
  <span>我不换行</span>

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGxmMTIzMzIx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

我们写在html里面的元素 系统会放在数据流里依次读取 依照从左到右从上到下的顺序 放置在页面上

当然在放置的过程中 牵扯到行内元素与块级元素的概念

简单说明一下

块级元素: 如div 每个div元素占领一行 假设没有设置宽度 就默认放满整行 假设指定了宽度 即使宽度再小 后面的元素也得另起一行放置

行内元素:如span不会换行 举个样例如A是行内元素 后面的元素就放在A的右边而不是下边

浮动

说完了文档流 再说说浮动

在上面的样例里 三个div都是块级元素 一个占一行 可问题是 我就想让他们的布局例如以下 怎么办

先看代码

  <div style="background-color:pink;width:40px;height:80px;float:left;"></div>
  <div style="background-color:red;width:80px;height:80px;"></div>
  <div style="background-color:yellow;width:40px;height:80px;">	</div>
  <span>我换行</span>
  <span>我不换行</span>

大家看第一行的代码里 多了一个float:left

它的意思就是说让这个元素脱离文档流的限制 把他"浮动"到包裹他的容器的最左边 (此时在文档流里就没有它的存在了)

如今在看 那三个div的宽度參数 深红色的宽度是80 我们仅仅看到了右边的40 左边的40个像素被在文档流之外的粉红色div挡住了

这个图的代码例如以下

	<div style="float:left;background-color:pink">
			<span>dd</span>
			<select name="general.language">
					<option value="volo">Volvo</option>
					<option value="saab">Saab</option>
					<option value="fiat">Fiat</option>
					<option value="audi">Audi</option>
			</select>
	</div>
	<div style="background-color:blue">LLL </div>
	<div style="background-color:green">  asdf</div>
	<div style="background-color:yellow;" >	ddddd</div>
	<div>	eeee	</div>

假设大家用的是chrome的浏览器打开审查元素会看到

事实上蓝色的111div是从顶行放置的  粉红色的div放在它上面 挡住了一部分

(lll asdf 居中打印了 同一段代码在editplus与chrome显示不一样 应该是解释的机制不同吧)

这也符合上面我们说的文档流的理论: 哪个元素有了float属性 就把他取出文档流 而文档流内部的元素就放置在自己应该在的位置上

可问题是我想让asdf也顶行写不行吗?

这就牵扯到float的具体布局方式了 告诉大家一句话

假如某个div元素A是浮动的,假设A元素上一个元素也是浮动的。那么A元素会尾随在上一个元素的后边(假设一行放不下这两个元素,那么A元素会被挤到下一行);假设A元素上一个元素是标准流中的元素,那么A的相对垂直位置不会改变。也就是说A的顶部总是和上一个元素的底部对齐。

div的顺序是HTML代码中div的顺序决定的。

靠近页面边缘的一端是前。远离页面边缘的一端是后。

那有还有一个问题了,假设a本身不是浮动的呢?

钻牛角尖了吧,假设a不是浮动的,那它就还在文档流里面呗!就是以下这个图的大红色块说明的道理

假设还是不明确,自己敲几行代码,看看效果就ok

分析咱们的页面LLL的前面元素有浮动标签 就把LLL放在前边元素的右边

asdf的上一个元素是LLL 所以asdf就放在LLL的正下方 也就是我们图中的效果

那怎么办?

clear

clear : none | left | right | both

取值:

none  :  默认值。

同意两边都能够有浮动对象

left   :  不同意左边有浮动对象

right  :  不同意右边有浮动对象

both  :  不同意有浮动对象

clear本身就是清除元素本身的浮动效果的

我们在asdf上加上clear:left就ok了

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGxmMTIzMzIx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

资料推荐

(以下这个文章 写的远比我的好 我的资料也基本来自这里 大家一定看看)

http://www.cnblogs.com/iyangyuan/archive/2013/03/27/2983813.html#undefined

版权声明:本文博主原创文章。博客,未经同意不得转载。

时间: 2024-10-04 22:57:48

文档流 css中间float clear和布局的相关文章

文档流 css中的float clear与布局

文档流 先说说什么是文档流  流是什么 就是一串连续的东西 <div style="background-color:pink;width:40px;height:80px;">第一个框 </div> <div style="background-color:red;width:40px;height:80px;">第二个框 </div> <div style="background-color:yel

Css问题 margin float 文档流 背景图底部充满

今天来整理一下做网页遇到的问题吧 1.插入背景图片并使图片居于div底部充满整个行. <style> background:url(xxx.jpg) no-repeat; background-position:bottom; background-size:100%; </style> 属性: background-position:背景位置属性用于设置背景图像的位置,这个属性只能应用于块级元素和替换元素.其中替换元素包括img.input.textarea.select. 语法

position脱离文档流与浮动脱离文档流的区别

以前我觉得position:absolute;是可以脱离文档流的,float:left;也可以脱离文档流,就觉得二者是一样的,感觉可以去浮动的方法来解决position:absolute;引起的父元素塌陷问题,结果证明我错了...下边是一个demo. 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 &l

前端(七)—— 高级布局:文档流、浮动布局、流式布局、定位布局、flex布局、响应布局

高级布局:文档流.浮动布局.流式布局.定位布局.flex布局.响应布局 一.文档流 1.什么是文档流 将窗体自上而下分成一行一行,块级元素从上至下.行内元素在每行中从左至右的顺序依次排放元素 2.本质 文档流本质是 nomal flow (普通流.常规流) 3.BFC(Block Formatting Contxt) 块级格式化上下文,它是一个独立的渲染区域,只有Block-level box参与,它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干 4.BFC的规则

盒模型、文档流

盒模型 一.盒子中的区域 一个盒子中主要的属性就5个:width.height.padding.border.margin. width是“宽度”的意思,CSS中width指的是内容的宽度,而不是盒子的宽度. height是“高度”的意思,CSS中height指的是内容的高度,而不是盒子的高度 padding是“内边距”的意思 border是“边框” margin是“外边距” 二.认识padding 背景色会填充到padding中去,padding区域有背景颜色,background-color

css之float之非完全脱离文档流

非完全脱离文档流  左右结构div盒子重叠现象,一般是由于相邻两个DIV一个使用浮动一个没有使用浮动.一个使用浮动一个没有导致DIV不是在同个"平面"上,但内容不会造成覆盖现象,只有DIV形成覆盖现象. <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <s

(转)CSS 浮动 -css中,文档流是什么?

原文链接:http://www.cnblogs.com/jiqing9006/archive/2012/07/30/2615231.html 普通流就是正常的文档流,在HTML里面的写法就是从上到下,从左到右的排版布局. 例: <div id=”01”></div><div id=”02”></div><div></div> 很显然这是最普通的文档流,从左到右,一个挨一个按照顺序01先,02其次,03最后排列. 一旦给其中的某个DIV

认识CSS中布局之文档流、浮动、定位以及叠放次序

前端之HTML,CSS(七) CSS CSS布局的核心就是盒子的摆放,即CSS定位.而CSS中定位机制分为:普通流(nomal flow).浮动(float).定位(position). 普通流 普通流又被称为文档流或者标准流,普通流是指网页内标签元素正常情况下会按照自上而下,自左向右按顺序排列.即块级元素独占一行,多个块级元素存在会自上而下顺序排列,多个行内元素会共占一行,自左向右排列. 1 <!DOCTYPE html> 2 <html> 3 <head> 4 &l

关于css浮动框是否脱离文档流的分析

在了解浮动属性之前,首先我们先了解一下html中关于display属性的相关知识. display属性常用的有inline, block, inline-block. inline也就是内联的意思. 常见的html标签中如 span, font, a, b, em 都是内联元素. 所谓内联,简单理解就是不会换行的元素. <body> <b>bold element</b> <a href="http://www.google.com">g