`
liudaoru
  • 浏览: 1579274 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Div+CSS教程:如何闭合浮动元素?[z]

    博客分类:
  • Ajax
阅读更多
From: http://www.52css.com/article.asp?id=697
  按照CSS规范,浮动元素(floats)会被移出文档流,不会影响到块状盒子的布局而只会影响内联盒子(通常是文本)的排列。因此当其高度超出包含容器时,一般父容器不会自动伸长以闭合浮动元素。但是有时我们却需要这种自动闭合行为,具体如何处理呢?

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

  后来又有了一种新的方式,使用 :after 伪类动态的嵌入一个用于清除浮动的元素,这种方法和上一种原理一样,不同的只是把这个额外的内容用 CSS 生成,但考虑到 IE 不支持 :after 不得不做了不少的 hack。这种方法兼容性一般,但经过各种 hack 也可以应付不同浏览器了,同时又可以保证 html 比较干净,所以用得还是比较多的。

  再后来又有人发现将父容器的 overflow 设为除 visible 之外的值就可以在标准兼容浏览器中闭合浮动元素,IE自然又是不支持的,所以这种方法和上一种方法一样都对 IE 做了不同处理(具体就是触发layout),不同的就是overflow 没有 :after 伪类那么麻烦了,缺点也有,overflow 可能会产生一些小冲突。

  在使用 overflow 之前还有过一种使用 float 的方法,就是让父容器也浮动,这利用到了浮动元素的一个特性——浮动元素会闭合浮动元素。这种方式在 IE/Win 和标准兼容浏览器中都有较好的效果,但缺点也很明显——父容器未必想浮动就浮动的了,毕竟浮动是一种比较特殊的行为,有时布局不允许其浮动也很正常。使用 float 虽然在 IE 和标准兼容浏览器中都能闭合浮动元素,但原理却是不同的,IE/Win 中 float 触发了 layout 因而闭合了浮动,而在标准兼容浏览器中,float 其实和上一种方法中的 overflow 原理一样,产生了一个“块级格式化范围”——这是CSS 规范中提到的一种现象,它往往具有某种独立性,特性之一就是会自动闭合内部的浮动元素。

  按照规范,以下类型的元素会产生一个块级格式化范围:

Example Source Code [www.52css.com]
  ● 浮动元素,left 或者 right 皆可。
  ● 绝对定位的元素。
  ● inline-block 元素,不过这个 gecko目前不支持。
  ● table-cell 类型元素,其实 table, table-head-group, table-row 什么的也都可以,还有inline-table(gecko不支持)也同样,因为他们都会间接产生一个匿名的 table-cell。
  ● overflow 取值非 visible 的元素。
  所以,原来在标准兼容浏览器中我们也可以有这么多的方法闭合一个浮动元素,而且只需要 CSS,无需其他。顺带说一下以上除了overflow,其余都有一个附加效果就是自动收缩父容器宽度。

  而对于 IE/Win,它有一套自己的体系,就是 layout,具有 layout 的元素会自动闭合浮动元素,再来看看触发 layout 的 CSS 属性,会发现和上面的块级格式化范围有很多类似之处:

Example Source Code [www.52css.com]
  ● 浮动元素
  ● 绝对定位元素
  ● display:inline-block
  ● zoom
  ● width/height
  ● overflow/overflow-x/overflow-y [IE7 新增]
  ● max/min-width/height [IE7 新增]
  以上来看 IE 中闭合浮动元素的方法也不少,自然也都有其局限性,要么有附带效果,要么使用的是非标准属性(无法通过验证)。

  还要提一点的是 display:inline-block,这个属性对 IE 而言本身没什么用,实际效果只是给一个元素暗地添加了 layout,但是标准兼容浏览器是认得这个属性的,所以要不影响这些浏览器,需要将 display 设回默认。这里 IE 有一个 bug,如果先定义了 display:inline-block,然后再将 display 设回 block(这两个 display 要先后放在两个 CSS 声明中才有效果),那么 layout 不会消失,同时也不会影响其他浏览器,所以目前来说,这也算一个不错的触发 layout 的方法:

Example Source Code [www.52css.com]
.gainlayout{display:inline-block;}
.gainlayout{display:block;}
  所以要跨浏览器闭合浮动元素,可以选择的方式还是很多的,如何搭配使用这些 CSS 属性就要具体情况具体分析了,灵活应用条件注释也很有必要,要是实在不行我们回过头来还有 clear 可以用嘛。
分享到:
评论
2 楼 liudaoru 2008-07-25  
1 楼 liudaoru 2008-03-24  
在父容器上增加overflow:auto;就可以了,ie7和ff都没有问题,就是不知道ie6有没有问题。

相关推荐

    DIV+CSS教程—十天学会web标准div+css标准之路WORD版

    《DIV+CSS教程—十天学会web标准div+css标准之路》是一份全面且深入的教程,旨在帮助初学者在短时间内掌握网页布局的核心技术——DIV和CSS。此教程以Word文档的形式提供,易于阅读和打印,适合自学或者作为教学参考...

    简单的网页制作案例(DIV+CSS完成):个人网站

    总结起来,这个“简单的网页制作案例”将指导我们如何利用`DIV+CSS`创建一个具有专业外观的个人网站,包括头部、主体、侧边栏和页脚的布局,以及通过CSS控制元素的样式和交互。学习和实践这样的案例,有助于提升网页...

    Div+CSS 布局 实例 源码

    1. **基础布局概念**:了解Div如何作为容器元素,以及如何通过CSS控制其宽高、内外边距、浮动和定位等属性,实现常见的如居中、对齐、多列布局等。 2. **盒模型理解**:理解CSS盒模型,包括内容(content)、内边距...

    精通div+css网页样式与网页布局

    ### 精通div+css网页样式与网页布局 #### 一、基础知识介绍 **div+css**是一种网站页面布局的方式,它通过结合HTML中的`div`元素与CSS(层叠样式表)来构建和设计网页。这种方式不仅提高了网页的可维护性,还增强...

    div+css设计的旅游网站

    CSS(Cascading Style Sheets)则用于美化这些div元素。它允许我们定义字体、颜色、背景、边框、间距等视觉样式,实现网页的个性化设计。在旅游网站中,CSS可以用来创建响应式设计,使网站在不同设备上都能良好显示...

    Div + Css 设计

    文件"20081025162318.chm"可能是一个关于Div + Css设计的离线帮助文档,其中可能包含了更多实例和详细教程,可以帮助你深入理解和掌握这一技术。记得查阅这个资源,结合实际练习,你的Div + Css技能将会得到显著提升...

    div+css网页布局入门+XHTML与CSS基础

    本教程将引导你入门`div+css`网页布局,并深入理解`XHTML`与`CSS`的基础知识。 首先,我们来了解一下`div`元素。`div`(Division)是HTML中的一个块级元素,用于组织和分隔页面内容。通过使用`div`,我们可以创建...

    DIV+CSS下拉菜单

    在网页设计领域,`DIV+CSS`是一种常见的布局方式,它通过HTML的`<div>`元素结合CSS(层叠样式表)来实现页面结构与样式的分离,提高页面的可维护性和可扩展性。本资源提供了5个独特的`DIV+CSS`下拉菜单示例,这些...

    标准上下布局_的精美DIV+CSS模板25套

    4. **层叠上下文**:CSS2.0中的层叠规则决定了元素的显示顺序,通过`z-index`属性可以调整元素的层级。 在文件名列表中提到的“bzsx1”可能是这25套模板中的一个,可能代表“标准上下布局1号”,具体的内容可能包括...

    div+css网页标准版式布局大全.rar

    11. **清除浮动**:解决因浮动元素引起的父元素高度塌陷问题,常用的方法有`clearfix`类、`clear:both`和使用`overflow`属性。 12. **响应式图片**:使用`max-width:100%`和`height:auto`让图片在不同设备上按比例...

    Div+CSS布局入门教程

    《Div+CSS布局入门教程》是一本针对初学者设计的指南,旨在帮助读者掌握网页布局的基本技巧,利用Div和CSS实现高效、灵活的网页设计。Div(Division)是HTML中的一个区块元素,常用于组织页面结构,而CSS(Cascading...

    Dreamweaver之DIV+CSS的使用技巧

    ### Dreamweaver之DIV+CSS的使用技巧 #### DIV+CSS概述 在网页设计与开发领域,`div+css`是一种流行的布局方式,它利用HTML中的`<div>`标签配合CSS(层叠样式表)来实现网页的布局与美化。这种方式不仅能够提高...

    div+Css样式表

    4. **浮动与清除**:掌握浮动(float)用于创建流式布局,以及清除(clear)解决浮动元素引起的布局问题。 5. **Flexbox**:学习现代CSS布局模式Flexbox,适用于一维布局,如行或列。 6. **Grid布局**:理解CSS Grid布局...

    DIV+CSS布局练习

    在"DIV+CSS布局练习"中,你可能会遇到如何设置`DIV`的宽度和高度、边距和填充、背景色和图像、文字样式等问题,以及如何处理浮动元素、清除浮动、实现居中对齐等常见技巧。此外,还可能涉及到`盒模型`的概念,理解盒...

    div+css 弹出层

    在网页设计中,"div+css 弹出层"是一种常见的交互效果,它允许用户点击某个元素后,弹出一个浮动窗口展示更多的信息或者进行特定的操作。这种效果广泛应用于登录注册、消息提示、模态对话框、下拉菜单等场景。下面...

    Div+CSS 布局大全(PDF)

    《Div+CSS布局大全》是一本深入探讨网页布局技术的专业书籍,主要针对使用Div和CSS进行网页设计的开发者。Div是HTML中的一个区块元素,常用于网页布局,而CSS(层叠样式表)则是一种样式定义语言,用于控制网页元素...

    div+css布局资源

    【标题】:“div+css布局资源”所涉及的知识点涵盖了网页设计中的基本元素与技术,主要围绕HTML中的div标签和CSS样式进行详细讲解。div标签是HTML中的一个块级元素,用于组织页面结构,而CSS(层叠样式表)则是用于...

    DIV+CSS网页样式与布局实例

    2. 浮动(float):`float:left`或`float:right`常用于创建多列布局,元素会尽可能向左或向右浮动,直到碰到容器边缘或其他浮动元素。 3. 定位(position):`position`属性(如static、relative、absolute、fixed)用于...

    别具光芒Div+Css网页布局与美化实例

    《别具光芒Div+Css网页布局与美化实例》是一本专为初学者设计的经典教程,旨在帮助读者掌握使用Div+CSS进行网页布局和美化的核心技巧。Div+CSS是现代网页设计的基础,它使得网页结构清晰,样式独立,提高了网页的可...

    div+css菜单制作

    【div+css菜单制作】是网页设计中常见的一种技术,用于创建美观且功能丰富的导航菜单。这个教程将详细讲解如何使用HTML和CSS构建一个多级下拉菜单。 首先,我们从【部分内容】中可以看到,HTML代码是构建菜单的基础...

Global site tag (gtag.js) - Google Analytics