Float问题及其解决方法

Float问题及其解决方法

float 属性:

定义元素向哪个方向浮动。在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。Float的属性值可以为:left、right、none、inherit等。

注意:

假如在一行上不够容纳整个浮动元素,则该元素会自动跳到下一行,依次往下跳,直到空间足够为止。

例如:

<style>

.content{

width:800px;

float:left;

border:1px solid #000;

}

.left,.right{

width:500px;

height:200px;

border:1px solid #666;

}

.left{

float:left;

}

.right{

float:right;

}

</style>

<body>

<div class="content">

<div class="left">向左浮动</div>

<div class="right">向右浮动</div>

</div>

</body>

//  元素right最终在left下方。

Float属性带来的问题和解决方法:

1.float元素挡住了普通元素。

例如:

<style>

.content{

height:600px;

border:1px solid #CCC;

}

.left{

width:20%;

height:400px;

float:left;

border:1px solid #CCC;

}

.right{

width:20%;

height:400px;

float:right;

border:1px solid #CCC;

}

.main{

margin-left:21%;

margin-right:21%;

height:200px;

    border:1px solid #CCC;

}

.footer1{

height:100px;

border:1px solid #CCC;

}

</style>

<body>

<div class="content">

<div class="left">left</div>

<div class="right">right</div>

<div class="main">main</div>

<div class="footer1">footer没有清除浮动的状态</div>

</div>

</body>

//  left和right元素将漂浮在footer1元素上面,挡住了footer1的左右。

解决方法:采用clear属性清除浮动。

例如:

<style>

.content{

height:600px;

border:1px solid #CCC;

}

.left{

width:20%;

height:400px;

float:left;

border:1px solid #CCC;

}

.right{

width:20%;

height:400px;

float:right;

border:1px solid #CCC;

}

.main{

margin-left:21%;

margin-right:21%;

height:200px;

    border:1px solid #CCC;

}

.footer2{

height:100px;

clear:both;

border:1px solid #CCC;

}

</style>

<body>

<div class="content">

<div class="left">left</div>

<div class="right">right</div>

<div class="main">main</div>

<div class="footer2">采用clear清楚浮动后的状态,footer元素出现在底端而且上面有float元素</div>

</div>

</body>

2.普通元素包含了浮动元素时,如果浮动元素高大于普通元素,则浮动元素将会溢出普通元素的范围。

注意:接下来的例子均以浮动一张较大的图片为例,可以自行链接一张图片。

例如:

<style>

img{

float:left;

}

h1{

border:1px solid #000;

}

</style>

<body>

<div class="content1">

<h1><img src="img.jpg" />未处理</h1>

<p>如果非浮动元素中有高于它的浮动元素时,浮动元素会超出非浮动元素的范围。

例如:图片高度超出了h1标签的高度</p>

</div>

</body>

解决方法1:加大父级元素高度,但扩展性不好,因为有时不能完全确定浮动元素的宽高。

<style>

img{

float:left;

}

h1{ 

    height:300px;

border:1px solid #000;

}

</style>

<body>

<div class="content">

<h1><img src="img.jpg" />加大父级元素高度。</h1>

</div>

</body>

解决方法2:采用设置浮动元素的父级元素。

<style>

img{

float:left;

}

h1{ 

    float:left;

border:1px solid #000;

}

</style>

<body>

<div class="content">

<h1 class="h1float"><img src="img.jpg" />采用设置浮动元素的父级元素</h1>

</div>

</body>

解决方法3:采用在浮动元素尾部增加设置了浮动的br元素。

<style>

img{

float:left;

}

h1{ 

border:1px solid #000;

}

br{

clear:both;

}

</style>

<body>

<div class="content">

<h1><img src="img.jpg" />采用增加设置浮动的br标签<br /></h1>

</div>

</body>

解决方法4:采用给父级元素加overflow。

<style>

img{

float:left;

}

h1{ 

overflow:hidden;

border:1px solid #000;

}

</style>

<body>

<div class="content">

<h1 class="h1overflow"><img src="img.jpg" />采用给父级元素加overflow</h1>

</div>

</body>

解决方法5:加类名clear,采用after伪类统一处理。(比较推荐)

<style>

img{

float:left;

}

h1{ 

border:1px solid #000;

}

.clear:after{

content:"";

display:block;

clear:both;

}

</style>

<body>

<div class="content">

<h1 class="clear"><img src="img.jpg" />加类名clear,采用after伪类统一处理</h1>

</div>

</body>

解决方法6:采用dispay:inline-block;但是margin:auto会失效。

<style>

img{

float:left;

}

h1{ 

display:inline-block;

border:1px solid #000;

}

</style>

<body>

</div>

<div class="content">

<h1 class="h1dispay"><img src="img.jpg" />采用dispay:inline-block;</h1>

</div>

</body>
时间: 2024-08-01 18:59:17

Float问题及其解决方法的相关文章

bootstrap栅格错位问题的解决方法

bootstrap 3的栅格系统有时会出现错位情况,原因是上一行的元素高度不一,导致元素float错误. 解决方法 使用栅格系统的时候,应该在每一行都使用row单独包裹起来,不要直接在一行中连续加入col让他自动换行. 注意所有元素的高度,最好是固定元素高度

IE6/IE7浏览器中&quot;float: right&quot;自动换行的解决方法

在项目中,调试IE6/IE7,发现一个bug,那就是:在同一个div包裹着,几个块级元素并列为一行的情况下,设置了float:right的块级元素会自动换行: 代码如下: <p> <span>版权所有</span> <span style="float=right;"> <a href="#">申请入驻</a> <a href="#">申请合作</a>

CSS关于子元素设置了float属性后父元素高度为0的解释和解决方法

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 2 <html lang="en"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8&q

1.Float精度在JS的解决方法

最近做了一个有关折扣价的计算的功能,所有的运算都是在前台通过js来做,做完之后经过手工核算发现了一个问题,当时做的一个例子是10*0.94,按照我们正常的思维,这个结果应该是9.4,但是在js中的计算结果是9.39999999......其实按照二进制的算法来说js的这个结果是最精确的,但是按照我们正常人的思维来看结果只能是9.4,并且业务要求是不能四舍五入,要强制保留小数位数,所有这样一来就出问题了,后来在一个技术交流群了里有群友推荐了下面的解决方法,成功的解决了这个问题,请往下看: 核心代码

css的兼容性问题和解决方法

1. 默认的内外边距不同 问题: 各个浏览器默认的内外边距不同 解决: *{margin:0;padding:0;} 2. 水平居中的问题 问题: 设置 text-align: center ie6-7文本居中,嵌套的块元素也会居中 ff /opera /safari /ie8文本会居中,嵌套块不会居中 解决: 块元素设置 1.margin-left:auto;margin-right:auto 2.margin:0 auto; 3. <div align=”center”>div> 3

QWebView崩溃 “Qt5WebKitd.dll!WTFCrash() 行 345 C++” 的解决方法

今天使用 QWebView 来做个简易的浏览器,出现了几个崩溃的问题,我的 Qt 版本是最新的5.4.2,相信 5.3.2 或者更低版本也会出现这些问题. 问题重现: 1.QWebView::load(URL),当界面还没加载完的时候,双击此控件会出现崩溃: 2.当 load()  过程中,界面出现垂直滚动条而又未完全加载完成的时间,使用鼠标滑轮或者直接拖动滚动条至最顶或者最底时出现崩溃(有些页面出现). 崩溃的堆栈如下: Qt5WebKitd.dll!WTFCrash() 行 345 C++

用bootstrap兼容ie各大浏览器的解决方法

以bootstrap为框架常常会出现不兼容ie各大浏览器的问题,用以下代码基本可以解决,一般在<head></head>加入以下代码后,网页可能还一些比较不美观,再写一点css hack就可以了,如果加入以下代码网页还是特别乱,请检查一下你的css和js的文件顺序,有加载顺序的... <!--[if lte IE 6]> <link rel="stylesheet" type="text/css" href="st

IE6 Bug解决方法HACK汇总

1.终极方法:条件注释<!--[if lte IE 6]> 这段文字仅显示在 IE6及IE6以下版本. <![endif]--><!--[if gte IE 6]> 这段文字仅显示在 IE6及IE6以上版本. <![endif]--><!--[if gt IE 6]> 这段文字仅显示在 IE6以上版本(不包含IE6). <![endif]--><!--[if IE 5.5]> 这段文字仅显示在 IE5.5. <![e

img标签下多余空白BUG解决方法

在进行页面的DIV CSS排版时,遇到IE6(当然有时Firefox下也会偶遇)浏览器中的图片元素img下出现多余空白的问题绝对是常见的 对于该问题的解决方法也是“见机行事”. 1.将图片转换为块级对象 即,设置img为“display:block;”.在本例中添加一组CSS代码:“#sub img {display:block;}”. 2.设置图片的垂直对齐方式 即设置图片的vertical-align属性为“top,text-top,bottom,text-bottom”也可以解决.如本例中