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下方。
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>
[聲明]:本博所有文章版權歸作者所有(除特殊說明以外),轉載請注明出處.