div 设置成float以后,与非浮动div之间有间隙

2025-03-21 03:38:31
推荐回答(4个)
回答1:

首先初学没必要深究几个浏览器兼容问题,你能做到IE6+就可以了
其次,你最后问的问题,左中右布局才是问题关键
首先,三个DIV需要在一个容器中,也就是三个DIV外面还有一个DIV收养这三个家伙。然后外围的DIV需要一个宽度,这里给你假设是800px,那么换言之,里面三个DIV的宽度总和小于等于800px,否则其中的一个会被欺负到下一行。假设左右DIV宽度为300px,那么中间就是等于200px,你可以设固定值,也可以干脆设宽度为100%,这样它会自己计算。
到这里,思路就基本完事儿了,其中需要注意的是,div的边框和margin,padding值如果有的话,也要计算到宽度计算中。

现在分析一下你问题所在,第一个左浮动,第二个右浮动,第三个无设置,这样的做法当初很流行,本来顺序应该左浮动,无设置,右浮动,但这样会造成错位,反过就可以解决。
其实简白点做法,就是第一个和第二个都是左浮动,第三个右浮动,重点是:在第三个DIV中再加入一个clear:right;就完事儿了,这个不加,是不行地~

猜测你出现间隙的原因无非就是宽度值没有设定准确,其次消除div的margin和padding值,设为0,基本就没有问题了

仍有问题,站内消息

回答2:

div不要用浮动,我个人很不主张用浮动,因为不可控,天知道他会浮动到哪里去,而且不同浏览器对于浮动到解析也不一样,所以我总是使用绝对宽度和高度,首先在页面设计的时候就规划好每个div的大小,然后用width和height属性设置,至于布局问题,每个div都是从左到右,从上到下布局的,LZ若要安排布局的话,在写div的时候就要有意安排他们的位置,LZ所说放不开的情况是因为本层的宽度已经容纳不下这个元素,这个元素会继续按照是从左到右,从上到下的原则安排到下一行。若LZ一定要用float,那一定要同时使用clear属性来消除浮动,稳妥一些。
还可再CSS中使用background-position属性设置位置,用双关键字如center center就能设置元素从上下方向是居中,从左右方向是居中。
还有一个方法是设置绝对位置,不论前面div怎样安排,我只要设置绝对位置,就可以把div安排在任意地方,但是这个我也不提倡,因为一旦设置绝对位置就不会考虑其他元素,也就是会出现重叠的现象。

回答3:









这个是我刚自己写的,我机子上没有IE9,就测了下IE6 、IE8、火狐、360没有什么问题,希望能帮到你

回答4:

用css控制吧





无标题文档




left

center

right