CSSにおけるいくつかのクリアフローティング法による高度陥没の解決
24330 ワード
問題の原因:サブエレメントにフローティングを設定したが、親エレメントに高さを設定しなかった場合、高さ陥没の問題が発生します.
解決策かいけつほうしき:フローティングのクリアふぉーるのじょきょ
フローティングをクリアする方法:
説明:この場合、高度に固定されたレイアウトの場合に使用するのが望ましいが、一般的には使用を推奨しない
説明:この方式のコードは比較的に少なくて、比較的に簡単ですが、もしページのフローティングのレイアウトが多いならば、多くの空のdivを増加して、ラベルを浪費して、人を不快にさせます
説明:この方法はブラウザのサポートが良いので、大きな問題が発生しにくいです.現在のいくつかの大手サイト、例えば(テンセント、網易、新浪)はこの方法を使用しています.
説明:positionと組み合わせて使用することはできません.超えたサイズは非表示になりますから.
説明:内部の幅が親divを超えると、スクロールバーが表示されますので、スクロールバーが表示される必要がある場合や、コードがスクロールバーが表示されないことを保証する必要がある場合は使用します.
解決策かいけつほうしき:フローティングのクリアふぉーるのじょきょ
フローティングをクリアする方法:
1.
<style type="text/css">
*{
margin: 0;
padding: 0;
}
.box1{
background-color: #0f2;
width: 100%;
margin-bottom: 20px;
/* */
height: 210px;
}
.left{
height: 120px;
width: 200px;
background-color: #aaa;
float: left;
}
.right{
height: 210px;
width: 200px;
background-color: #763;
float: left;
}
.box2{
width: 100%;
height: 150px;
background-color: #15d;
}
style>
<body>
<div class='box1'>
<div class='left'>leftdiv>
<div class='right'>rightdiv>
div>
<div class='box2'>testdiv>
body>
2. div clear:both
説明:この場合、高度に固定されたレイアウトの場合に使用するのが望ましいが、一般的には使用を推奨しない
<style type="text/css">
*{
margin: 0;
padding: 0;
}
.box1{
background-color: #0f2;
width: 100%;
margin-bottom: 20px;
/* 1*/
/*height: 210px;*/
}
.left{
height: 120px;
width: 200px;
background-color: #aaa;
float: left;
}
.right{
height: 210px;
width: 200px;
background-color: #763;
float: left;
}
.box2{
width: 100%;
height: 150px;
background-color: #15d;
}
/* 1*/
.clear{
clear: both;
}
style>
<body>
<div class='box1'>
<div class='left'>leftdiv>
<div class='right'>rightdiv>
<div class='clear'>div>
div>
<div class='box2'>testdiv>
body>
説明:この方式のコードは比較的に少なくて、比較的に簡単ですが、もしページのフローティングのレイアウトが多いならば、多くの空のdivを増加して、ラベルを浪費して、人を不快にさせます
: div :after zoom
<style type="text/css">
*{
margin: 0;
padding: 0;
}
.box1{
background-color: #0f2;
width: 100%;
margin-bottom: 20px;
}
.left{
height: 120px;
width: 200px;
background-color: #aaa;
float: left;
}
.right{
height: 210px;
width: 200px;
background-color: #763;
float: left;
}
.box2{
width: 100%;
height: 150px;
background-color: #15d;
}
/* */
.clear:after{
display: block;
clear: both;
content: "";
height: 0;
visibility: hidden;
}
.clear{
zoom:1;
}
style>
<body>
<div class='box1 clear'>
<div class='left'>leftdiv>
<div class='right'>rightdiv>
div>
<div class='box2'>testdiv>
body>
説明:この方法はブラウザのサポートが良いので、大きな問題が発生しにくいです.現在のいくつかの大手サイト、例えば(テンセント、網易、新浪)はこの方法を使用しています.
: overflow:hidden;
<style type="text/css">
*{
margin: 0;
padding: 0;
}
.box1{
background-color: #0f2;
width: 100%;
margin-bottom: 20px;
/* */
overflow: hidden;
}
.left{
height: 120px;
width: 200px;
background-color: #aaa;
float: left;
}
.right{
height: 210px;
width: 200px;
background-color: #763;
float: left;
}
.box2{
width: 100%;
height: 150px;
background-color: #15d;
}
style>
<body>
<div class='box1'>
<div class='left'>leftdiv>
<div class='right'>rightdiv>
div>
<div class='box2'>testdiv>
body>
説明:positionと組み合わせて使用することはできません.超えたサイズは非表示になりますから.
: div overflow:auto
<style type="text/css">
*{
margin: 0;
padding: 0;
}
.box1{
background-color: #0f2;
width: 100%;
margin-bottom: 20px;
/* */
overflow: auto;
}
.left{
height: 120px;
width: 200px;
background-color: #aaa;
float: left;
}
.right{
height: 210px;
width: 200px;
background-color: #763;
float: left;
}
.box2{
width: 100%;
height: 150px;
background-color: #15d;
}
style>
<body>
<div class='box1'>
<div class='left'>leftdiv>
<div class='right'>rightdiv>
div>
<div class='box2'>testdiv>
body>
説明:内部の幅が親divを超えると、スクロールバーが表示されますので、スクロールバーが表示される必要がある場合や、コードがスクロールバーが表示されないことを保証する必要がある場合は使用します.