CSS技巧知识:子元素浮动后父容器的闭合

css|浮动|技巧

  最近两个月断断续续做了好几个网站的美工,做的过程中对DIV+CSS的标准开发有了进一步的了解。有两点收获最大,一是彻底弄懂了CSS的盒子模式(Box Model),再一个就是搞定了困扰我很久的“闭合浮动元素”的问题:

  一般说来如果某个子元素使用了浮动(float),那父元素总是不能确切地知道子元素是在什么位置结束的,所以父元素的下边框总是从子元素的中间甚至是顶部穿过,看起来很不舒服。

  最早时我都是在子元素结束后单独加个<br />或<div></div>将其属性设置为“clear:all;”,但这样一来就需要生成不少没用的空标签,甚至有些网站需要修改ASP代码以自动添加这些空标签,只能算是下策。

  后来发现当父标签也设置为浮动(float)时就可以在正确的位置闭合了,所以就把父容易也浮动起来,这样一来很多ASP代码就不需要改了,遇到需要添加含Clear属性的空标签时如果不能从模板中添加,而需要从ASP代码中添加时,就不需要改ASP代码了,只需要把父容器设为浮动,如果还需要改ASP,那就再把父容器的父容器设为浮动,一层层地浮动上去,总能解决问题的。这虽然能省不少事,但很容易造成整个页面中全是浮动元素,-_-!!! 也只能算是中策而已。

  再后来,在网上搜索别的东西时偶然发现有人说只要在父容器的CSS属性中加上以下两个属性就可以搞定了:
overflow: auto;
_height: 1%;
  试了一下,果然好用,这么一来,这在目前应该算是解决这一问题的上策了:不需要对页面做任务修改,也基本上不需要对父容器--甚至是父容器的父容器做什么改动,只给父容器添加两个无所谓的属性就搞定了。

  现在我一直在用这两个属性来闭合浮动元素,实在是太方便了~

时间: 2024-10-04 14:42:32

CSS技巧知识:子元素浮动后父容器的闭合的相关文章

CSS技巧:子元素浮动后父容器的闭合

最近两个月断断续续做了好几个网站的美工,做的过程中对DIV+Css的标准开发有了进一步的了解.有两点收获最大,一是彻底弄懂了CSS的盒子模式(Box Model),再一个就是搞定了困扰我很久的"闭合浮动元素"的问题: 一般说来如果某个子元素使用了浮动(float),那父元素总是不能确切地知道子元素是在什么位置结束的,所以父元素的下边框总是从子元素的中间甚至是顶部穿过,看起来很不舒服. 最早时我都是在子元素结束后单独加个<br />或<div></div&g

子元素浮动后父容器的闭合

        关于闭合浮动元素(clearing float)的方法现在已经很多了,你还不了解的话去old9的blog看看,有一篇闭合浮动元素.        这些方法我最喜欢就是 使用:after 伪类动态的嵌入一个用于清除浮动的元素,可惜代码量太大了,看着不够简洁.现在我看到有个方法超级简单.赶紧介绍一下.        原理是这样的,外围元素之所以不能很好的延伸,问题出在了overflow上,因为overflow不可见.见W3C的解释:       In addition, if the

JS子元素oumouseover触发父元素onmouseout

原文:JS子元素oumouseover触发父元素onmouseout JavaScript中,父元素包含子元素: 当父级设置onmouseover及onmouseout时,鼠标从父级移入子级,则触发父级的onmouseout后又触发onmouseover:从子级移入父级后再次触发父级的oumouseout后又触发onmouseover.而如果onmouseover内又应用了计时器便会存在较大的问题.下面针对此问题给出解决方案. 首先,在给出解决方案之前,必须先弄清楚几个对象及方法,分别如下: 1

子窗口关闭后父窗口数据更新问题

问题描述 今天写了个简单的通讯录小应用程序,新增和编辑按钮会弹出一个窗口供添加联系人或编辑用的,但是在提交后,之前那个主窗口数据没有更新过来,需要点击查询等按钮执行一次更新才可以.这个BUG怎么修正,用手机敲的,希望得到解答,谢谢!下面是局部代码:Main.javamodify(eve){OperationDialog od = new OperationDialog(this);od.setModal(true);od.initData(aid);od.setVisible(true);ini

css中overflow解决float浮动后高度自适应的问题

header 城市导航 北京 上海 天津 南京 广州 重庆 济南 杭州 郑州 北京 上海 天津 南京 广州 重庆 济南 杭州 郑州 热门文章 本月20日起入境日本须留指纹 本月20日起入境日本须留指纹 本月20日起入境日本须留指纹 本月20日起入境日本须留指纹 本月20日起入境日本须留指纹 本月20日起入境日本须留指纹 本月20日起入境日本须留指纹 本月20日起入境日本须留指纹 本月20日起入境日本须留指纹 右侧内容 footer

CSS中clear清除元素容器浮动

1. 问题的由来 有这样一种情形:在一个容器(container)中,有两个浮动的子元素,如图一.   (图一 设计视图是一个父容器中含有二个浮动的子元素) 请问HTML代码应该怎么写? 很简单啦,几行字就够了.  代码如下 复制代码 <div> <div style="float:left;width:45%;"></div> <div style="float:right;width:45%;"></div&

子元素scroll父元素容器不跟随滚动JS实现

一.开场暖身 网上常见蹲来蹲去的小段子,比方说:"李代沫蹲,李代沫蹲,李代沫蹲完黄海波蹲:黄海波蹲,黄海波蹲,黄海波蹲完宁财神蹲:宁财神蹲,宁财神蹲,宁财神蹲完张耀扬蹲;张耀扬蹲,张耀扬蹲,张耀扬蹲完郭美美蹲;郭美美蹲,郭美美蹲,郭美美蹲完--".应该源自"萝卜蹲,萝卜蹲,萝卜蹲完苹果蹲--". 在网页中,滚动条的滚动行为也是类似的调调,如果页面出现多个内嵌滚动条,则行为表现是:子元素滚,子元素滚,子元素滚完父元素滚:父元素滚,父元素滚,父元素滚完容器滚-- 比方说

IE6/7 and IE8/9/10(IE7模式)依次隐藏具有absolute或relative的父元素和子元素后再显示父元素_javascript技巧

如下 1,两个div,d1中包含d2 2,d1,d2都设置了absolute或relative 3,隐藏d1 4,隐藏子元素d2 5,显示d1 这时IE6/7 and IE8/9/10(IE7模式)中会发现,子元素d2也能显示出了(别忘了,d2被display:none 了哦).但IE8/9/10/Firefox5/Safari4/Chrome12中子元素d2仍然是被隐藏的. 重现代码 复制代码 代码如下: <!DOCTYPE HTML> <HTML> <HEAD> &

CSS技巧学习:我们一起认识CSS闭合浮动元素

css|浮动|技巧 按照CSS规范,浮动元素(floats)会被移出文档流,不会影响到块状盒子的布局而只会影响内联盒子(通常是文本)的排列.因此当其高度超出包含容器时,一般父容器不会自动伸长以闭合浮动元素.但是有时我们却需要这种自动闭合行为,具体如何处理呢? 有一种做法就是在父容器内再插入一个额外的标签,并令其清除浮动(clear)以撑大父容器.这种方法浏览器兼容性好,没有什么问题,缺点就是需要额外的(而且通常是无语义的)标签,所以我个人不大喜欢.后来又有了一种新的方式,使用 :after 伪类