>  기사  >  웹 프론트엔드  >  关于浮动和绝对定位的区别,到底是怎么回事?_html/css_WEB-ITnose

关于浮动和绝对定位的区别,到底是怎么回事?_html/css_WEB-ITnose

WBOY
WBOY원래의
2016-06-24 11:35:571212검색

这有一个小例子:
样式:


结构:



1111111


1111111


1111111


1111111




2222222


2222222


2222222


2222222




3333333


3333333


3333333


3333333





结果是这样的:


我的疑问有:
1、浮动是不是使div1彻底脱离了文档流,在文档流里有没有占据位置?
2、为什么div1和div2重合之后,把div2里的文字挤到了边上去?就是说div1与div2重合了,为什么不能与div2里的段落重合?

请求高手详解!!!


回复讨论(解决方案)

绝对定位 才会脱离文档流
楼主 可以去google看看  float和 display   clear  

float是浮动 没有脱离文档流

 一堆有次序的东西 其中有一个是 float 
那么你可以想象 他像铁块碰见磁铁一样飞向边缘 空间还是占着(默认的width属性变成auto了)

你说的这两个问题,看W3C中,关于float的解释多直白的,下面两句就是W3C中关于float的叙述:
浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。
由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样。

详细内容,直接点击查看: http://www.w3school.com.cn/css/css_positioning_floating.asp

还有你说的文字为啥会出现这个情况,也有说明。

你说的这两个问题,看W3C中,关于float的解释多直白的,下面两句就是W3C中关于float的叙述:
浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。
由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样。

详细内容,直接点击查看: http://www.w3school.com.cn/css/css_positioning_floating.asp

还有你说的文字为啥会出现这个情况,也有说明。


“由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样。”这句话有点儿糊涂,求详细的解释

<html><head><title></title><meta content="text/html; charset=GB2312" /><style>.a{border:1px solid red;width:960px;margin:0 auto;}.b{float:left;height:100px;width:100px;background-color:#aaa}.c{height:50px;background-color:#ddd;}</style></head><body><div class = "a">	<div class = "b"></div>	<div class = "c"></div></div></body></html>


效果图:


就拿这段代码说吧,我用a,b,c表示这三个div。
a和c是普通流,b是浮动框。

1:按理论来说,a的高度是以它子元素的总的高度计算的,但是在图中可以看出,a的高度只是和c的高度相同,就是它忽略了b的高度。
2:块框之间,都是上下排列的,每一个块框都占据单独的一行,可以这里,c就当没有看到b存在一样。
这不就是再说,普通流的布局是不考虑是不是在它之前,有浮动框的?

这样说,不知你能清楚我的意思不。

为什么文字会避开,就如同你上面给的代码,这个应该是浏览器本身有对文字进行处理吧,你可以用浏览器调试工具看下,文字的标签

元素,其实还是占据一整行的,只是文字并没有从最左边开始。文字表现这块,是个特例。

<html><head><title></title><meta content="text/html; charset=GB2312" /><style>.a{border:1px solid red;width:960px;margin:0 auto;}.b{float:left;height:100px;width:100px;background-color:#aaa}.c{height:50px;background-color:#ddd;}</style></head><body><div class = "a">	<div class = "b"></div>	<div class = "c"></div></div></body></html>


效果图:


就拿这段代码说吧,我用a,b,c表示这三个div。
a和c是普通流,b是浮动框。

1:按理论来说,a的高度是以它子元素的总的高度计算的,但是在图中可以看出,a的高度只是和c的高度相同,就是它忽略了b的高度。
2:块框之间,都是上下排列的,每一个块框都占据单独的一行,可以这里,c就当没有看到b存在一样。
这不就是再说,普通流的布局是不考虑是不是在它之前,有浮动框的?

这样说,不知你能清楚我的意思不。

为什么文字会避开,就如同你上面给的代码,这个应该是浏览器本身有对文字进行处理吧,你可以用浏览器调试工具看下,文字的标签

元素,其实还是占据一整行的,只是文字并没有从最左边开始。文字表现这块,是个特例。


谢谢你的耐心解答,我说的我都知道,但是就是文字表现这块儿不懂,大家都说是特例,但我想明白这是怎么回事,在元素浮动的时候,普通文档流是怎么变化的。如果你能回答就太好了!不管怎样,这分就给你了!

这个,我也不知道咋回事,应该是浏览器规定的吧,不过没有看到过相关的文章。
所以,还真是回答不了。

这个问题我也纳闷 貌似这篇文章http://blog.sina.com.cn/s/blog_5f90da9b01016cmo.html有讲到但是我看不懂

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.