DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> CSS入門知識 >> CSS特效代碼 >> Float問題及其解決方法
Float問題及其解決方法
編輯:CSS特效代碼     

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>
[聲明]:本博所有文章版權歸作者所有(除特殊說明以外),轉載請注明出處.
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved