子元素设置浮动样式,父元素高度为0

子元素如果设置了浮动样式,那么它就会脱离文档流,从而导致父元素高度变成0,当然不能说这是一个Bug,float的出现的初衷就是为了实现文字环绕图片来实现图文混排和流式布局,所以只能说这种情况只能是由于浮动样式的特性决定的。

测试用例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript" src="jquery-1.9.1.js"></script>
<style type="text/css">
	*{margin:0;padding:0;font-family:微软雅黑;}
	.inner{height:30px;width:30px;border:1px solid #AFAFAF;float:left}
</style>
</head>

<body>
	<div class="outer">
		<div class="inner"></div>
	</div>
</body>
<script type="text/javascript">
jQuery(document).ready(function(){
	alert($(".outer").height());
})(window);
</script>
</html>

这个时候打印出来就是0了。

解决方式:利用clear:both;清楚浮动即可。需要在outer div层里在加上一句:(所以说在使用浮动样式之后,最好加上这句代码)

<div style="clear:both"></div>

解决方式2:直接在outer div层上加上样式overflow:hidden;

.outer{overflow:hidden;}

当然还有其它方式,这里不一一列举。

2、如果最外层outer是一个a标签,那么我们知道直接对a标签设置高度和宽度是不能成功的,这时候我们可以考虑以下解决办法:

方式1:对a标签加上display:block,但是会导致该a标签独成一行。如果要其他的标签浮动有效,这个a标签也得设定浮动样式。

方式2:设置float。变成浮动。

<a class="outer" style="float:left;height:30px;width:30px;background:#FF0000;">

方式3:设置padding。

<a class="outer" style="padding:20px 20px;background:#FF0000;">
时间: 2024-08-24 07:43:28

子元素设置浮动样式,父元素高度为0的相关文章

内层元素设置浮动,外层元素不设置浮动和高度,内层元素不能撑开外层元素高度问题

<style> .par {    border: 5px solid #fcc;    width: 300px;    /*height:110px;  注意这里给外层元素设置相应高度,外层元素会包裹内层元素,并占用文档流*/    /*float:left;   或者给外层元素设置浮动,外层元素也会包裹内层元素,但不会占用文档流空间*/} .child {    border: 5px solid #f66;    width:100px;    height: 100px;    fl

解决:子元素设置margin-top,父元素也受影响的问题

<!doctype html><html> <head> <title>子元素设置margin-top,父元素也受影响</title></head><style type="text/css"> * { margin: 0px; padding: 0px; } .father { width: 500px; height: 800px; background: #ccc; cursor: pointer

子元素设置margin-top,父元素也受影响

外边距合并问题常见于第一个子元素的margin-top会顶开父元素与父元素相邻元素的间距,而且只在标准浏览器下 (FirfFox.Chrome.Opera.Sarfi)产生问题,IE下反而表现良好.例子可以查看下面代码(IE下表现"正常",标准浏览器下查看出现"bug"): <!doctype html> <html> <head> <title>子元素设置margin-top,父元素也受影响</title>

当子元素需要相对父元素定位时,父元素无法被子元素撑大该怎么办

今天遇到了子元素相对父元素定位之后,父元素无法被撑开的问题,那是因为绝对定位之后,子元素已经脱离文档流了所以无法用自身的高度把父元素撑开,这个时候只能用js来解决这个问题了: function psize(){ $("父元素").css('height',$("子元素").innerHeight()); } 上面是封装了一个函数,可以通过调用使用. height与innerHeight 的具体情况请看上一篇随笔.

点击子元素事件不触发父元素事件

<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <script src="http://cdn.bootcss.com/jquery/2.1.0/jquery.min.js"></script> <style type="text/css">

关于子元素的margin-top溢出和元素浮动对父元素高度影响解决方案

以下是个人学习笔记,仅供学习参考. 1.关于子元素的margin-top作用在无margin-top-border的父元素上导致子元素的margin-top溢出问题. 在给没有margin-top-border父元素中的子元素添加margin-top时,发现没有直接表现出来,而是作用到父元素身上,就会导致子元素的margin-top溢出. 条件: 1.父元素没有上边框 2.为第一个子元素设置上外边距时 解决方案: 1.为父元素增加上边框 弊端:父元素会变高 2.通过为父元素设置上内边距来取代子元

子元素浮动,父元素高度为0现象解释和原理浅见

有的人在写页子的时候常常会碰见这样的一个问题,就是有一个父级的div下面有子元素,子元素浮动起来后,父元素的高度变成0,撑不起来父级了. 现在先不说解决办法,先说下float属性,float定义:float 属性定义元素在哪个方向浮动.以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动.浮动元素会生成一个块级框,而不论它本身是何种元素.(摘自:w3c). 从定义看出,其实float属性一开始是被应用与图片,来形成文字环绕效果的,任何的元素只要定义了float属

清除盒子内子元素浮动导致父元素塌陷的5种方法

更详细的解释请移动到: 地址1:http://www.cnblogs.com/chedabang/p/5973601.html 地址2:https://www.cnblogs.com/libin-1/p/5975367.html 盒子塌陷是什么? 何为盒子塌陷,盒子塌陷是由于子元素浮动导致的子元素脱离标准文档流,父元素无法获取子元素的高度而出现的一种现象. 盒子塌陷(如下): 盒子未塌陷(如下):   HTML/CSS代码 .... // css .box-wrapper { border: 5

html事件-子元素事件不触发父元素事件

<div class="list-row" onclick="showChatDialog('dy','100000001',true);"> <img class="icon" src="/icon/default.ico" onclick="personData(event,100000001);"> <a class="nickname">dy&