DIV(或者其他块级元素)设置float之后无法撑起高度的解决方法

出现的问题是:

html:

 1 <html>
 2   <head>
 3   <title>images</title>
 4     <link rel="stylesheet" href="main.css" type="text/css" />
 5   </head>
 6   <body>
 7       <div id="container">
 8         <img class="images" src="../images/1.jpg" />
 9         <img class="images" src="../images/2.jpg" />
10         <img class="images" src="../images/3.jpg" />
11         <img class="images" src="../images/4.jpg" />
12         <img class="images" src="../images/5.jpg" />
13         <img class="images" src="../images/6.jpg" />
14       </div>
15   </body>
16 </html>

CSS:

 1 @charset "utf-8";
 2 /* CSS Document */
 3
 4 #container{
 5     width: 960px;
 6     height: auto;
 7     margin: 0 auto;
 8     background-color: #f00;
 9     }
10
11 .images {
12     display: block;
13     width: 230px;
14     height: 230px;
15     padding: 5px;
16     float:left;
17     }

则以上代码显示结果为:

解决的方法是:

目前用来清除“闭合(清除)浮动”的方法,主要是一下四种:

1.    额外标签法

这种方法就是向父容器的末尾再插入一个额外的标签,并令其清除浮动(clear)以撑大父容器。这种方法浏览器兼容性好,没有什么问题,缺点就是需要额外的(而且通常是无语义的)标签。
我个人不喜欢这种方法,但是它确实是W3C推荐的方法

<div style="clear:both;"></div>
或者使用

<br style="clear:both;" />

2. 使用after伪类

这种方法就是对父容器使用after伪类和内容声明在指定的现在内容末尾添加新的内容。经常的做法就是添加一个“点”,因为它比较小不太引人注意。然后我们再利用它来清除浮动(闭合浮动元素),并隐藏这个内容。
这种方法兼容性一般,但经过各种 hack 也可以应付不同浏览器了,同时又可以保证html 比较干净,所以用得还是比较多的。

以下为引用的内容:
#outer:after{ 
     content:"."; 
     height:0; 
     visibility:hidden; 
     display:block; 
     clear:both; 
}

3.    设置overflow为hidden或者auto

这种做法就是将父容器的overflow设为hidden或auot就可以在标准兼容浏览器中闭合浮动元素.
不过使用overflow的时候,可能会对页面表现带来影响,而且这种影响是不确定的,你最好是能在多个浏览器上测试你的页面

4. 浮动外部元素,float-in-float

这种做法就是让父容器也浮动,这利用到了浮动元素的一个特性——浮动元素会闭合浮动元素。这种方式在 IE/Win 和标准兼容浏览器中都有较好的效果,但缺点也很明显——父容器未必想浮动就浮动的了,毕竟浮动是一种比较特殊的行为,有时布局不允许其浮动也很正常。

时间: 2024-10-13 20:19:27

DIV(或者其他块级元素)设置float之后无法撑起高度的解决方法的相关文章

HTML 中块级元素设置 height:100% 的实现

HTML 中块级元素设置 height:100% 的实现 当你设置一个页面元素的高度(height)为100%时,期望这样元素能撑满整个浏览器窗口的高度,但大多数情况下,这样的做法没有任何效果. 为什么height:100%不起作用呢? 按常理,当我们用CSS的height属性定义一个元素的高度时,这个元素应该按照设定在浏览器的纵向空间里扩展相应的空间距离.例如,如果一个div元素的CSS是height: 100px;,那它应该在页面的竖向空间里占满100px的高度. 而跟W3C的规范,百分比的

块级元素设置position为absolute后的变化

当块级元素(如div)设置position为absolute后,原有默认100%的宽度消失,其中内容多宽就显示多宽 图一.不设置宽度的情况 图二.设置宽度为100%的效果

IE6、7下块级元素设置display:inline-block不换行的解决办法

使用背景 在实际的工作中,我们有的时候会把块元素设置为inline-block,这样做的目的有2个,一是块元素能够排列到一行,二是块元素就形成包裹性,能够自适应content area,而不必设置宽和高(依实际情况而定),在现在浏览器中没有什么问题,但是IE6.7下,当把block元素设置成inline-block之后,还是在分别的两行,下面我们看一下现象. 代码以及IE6.7下的表现 CSS: body { padding: 10px; } .block_to_inlineblock, .in

CSS学习笔记——盒模型,块级元素和行内元素的区别和区别

今天本来打算根据自己的计划进行前端自动化的学习的,无奈早上接到一个任务需求需要新增一个页面.自从因为工作需要转前端之后,自己的主要注意力几 乎都放在JavaScript上面了,对CSS和HTML这方面其实基础真的很差,今天在写页面的时候就被浮动啊.内外边距啊这些耽误了不少时间. 反思一下,自己确实在这些基础方面的不足很多,所以今后的学习笔记主要是我在工作中遇到的一些问题和他们的解决方法.其中可能中会有JS.CSS.HTML各方面的,我会把自己每一天学到的内容都记录一下,辅助自己打好基础. 今天在

block(块级元素)和 inline(内联元素) 的区别

<td style="word-break:break-all"> 强制换行 <td  style="width:80px;display:block;boverflow: hidden;">超出隐藏,注意要设置宽度. 内联转化为块状:display:block 或 float:left / right 块状转化为内联:display:inline; 但是要注意内联元素是不能设置宽度和高度的.那就要强制把内联元素转换为块级元素了 div这样的

CSS块级元素和行内元素

根据CSS规范的规定,每一个网页元素都有一个display属性,用于确定该元素的类型,每一个元素都有默认的display属性值,比如div元素,它的默认display属性值为“block”,成为“块级”元素(block-level):而span元素的默认display属性值为“inline”,称为“行内”元素. div这样的块级元素,就会自动占据一定矩形空间,可以通过设置高度.宽度.内外边距等属性,来调整的这个矩形的样子:与之相反,像“span”“a”这样的行内元素,则没有自己的独立空间,它是依

块级元素水平居中的问题

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name="

行内元素和块级元素有哪些

一.行内元素和块级元素有哪些? 块级元素     <address> information on author <blockquote> long quotation <button> push button <caption> table caption <dd> definition description <del> deleted text <div> generic language/style contain

css块级元素,内联元素,内联块状元素

块元素 什么是块级元素?在html中<div><p><h1><form><ul>之类的就是块级元素.设置display:block是就将元素显示为块级元素.如下代码就是将内联元素a转换为块状元素,从而使a元素具有块状元素特点. 块级元素特点: 1.每个块级元素都从新的一行开始,并且其后的元素也另起一行. 2.元素的高度,宽度,行高以及顶和底边距都可设置. 3.元素宽度在不设置的情况下,是它本身你窗口的100%(和你元素的宽度一致),除非设定一个宽