次のエディターは、CSS の等高レイアウトの 6 つの方法を紹介します。編集者はこれがとても良いと思ったので、皆さんの参考として共有したいと思います。エディターを追って見てみましょう
前述の通り
等高レイアウトとは、親要素内で子要素の高さが同じになるレイアウト方法を指します。等高レイアウトの実装には、擬似等高と真の等高が含まれます。擬似等高は高さが等しいように見えるだけですが、真の等高は実際の等高です。この記事では、ボーダーシミュレーション、ネガティブマージン2つの擬似輪郭、およびテーブル実装、絶対実装、フレックス実装、およびこれら4つの真の輪郭レイアウトのjs判定を紹介します
擬似輪郭
borderシミュレーション
要素の境界線と要素の高さは常に同じ高さであるため、要素の境界線の色は、左右の兄弟要素の背景色を隠すために使用されます。次に、絶対値を使用して、中央の要素の左右の境界線にある透明な背景で左右の要素を覆い、視覚的に同じ高さの効果を実現します
[注] 左側と右側の要素の高さは、次の値を超えることはできません中央の要素の高さ、それ以外の場合はコンテナーの高さです
CSSコードコンテンツをクリップボードにコピーします
<style> body,p{margin: 0;} .parent{ position: relative; } .center{ box-sizing:border-box; padding: 0 20px; background-clip: content-box; border-left: 210px solid lightblue; border-right: 310px solid lightgreen; } .left{ position: absolute; top: 0; left: 0; width: 200px; } .rightright{ position: absolute; top: 0; rightright: 0; width: 300px; } </style>
XML/HTMLコードコンテンツをクリップボードにコピーします
<p class="parent" style="background-color: lightgrey;"> <p class="left"> <p>left</p> </p> <p class="center" style="background-color: pink;"> <p>center</p> <p>center</p> </p> <p class="right"> <p>right</p> </p> </p>
negative margin
padding領域に背景が表示されるため、padding-bottomの値を大きく設定し、同様に負のmargin-bottomを設定します値を設定して、背景色が要素領域を覆い、要素のボックス モデルの計算式に準拠して、視覚的な高さが等しい効果を実現します
[注] ページがジャンプ時に アンカー を使用している場合、文字情報は非表示になります
[注意] ページの背景画像が下に配置されている場合、背景画像は表示されません
CSSコード内容をクリップボードにコピーします
<style> body,p{margin: 0;} .parent{ overflow: hidden; } .left,.centerWrap,.rightright{ float: left; width: 50%; padding-bottom: 9999px; margin-bottom: -9999px; } .center{ margin: 0 20px; } .left,.rightright{ width: 25%; } </style>
XML/HTMLコードコンテンツをクリップボードにコピー
<p class="parent" style="background-color: lightgrey;"> <p class="left" style="background-color: lightblue;"> <p>left</p> </p> <p class="centerWrap"> <p class="center" style="background-color: pink;"> <p>center</p> <p>center</p> </p> </p> <p class="right" style="background-color: lightgreen;"> <p>right</p> </p> </p>
本当に等しい高さ
table
table要素内のtable-cell要素高さは~によって等しいデフォルト
CSSコードボード
<style> body,p{margin: 0;} .parent{ display: table; width: 100%; table-layout: fixed; } .left,.centerWrap,.rightright{ display: table-cell; } .center{ margin: 0 20px; } </style>
XML/HTMLコード内容をクリップボードにコピー
<p class="parent" style="background-color: lightgrey;"> <p class="left" style="background-color: lightblue;"> <p>left</p> </p> <p class="centerWrap"> <p class="center" style="background-color: pink;"> <p>center</p> <p>center</p> </p> </p> <p class="right" style="background-color: lightgreen;"> <p>right</p> </p> </p>
絶対
すべての子要素の高さが親要素の高さと同じになるように、子要素の top:0;bottom:0; を設定し、同じ高さの効果を実現します
CSS コードコピーコンテンツをクリップボードにコピーします
<style> body,p{margin: 0;} .parent{ position: relative; height: 40px; } .left,.center,.rightright{ position: absolute; top: 0; bottombottom: 0; } .left{ left: 0; width: 100px; } .center{ left: 120px; rightright: 120px; } .rightright{ width: 100px; rightright: 0; } </style>
XML/HTMLコードコンテンツをクリップボードにコピーします
<p class="parent" style="background-color: lightgrey;"> <p class="left" style="background-color: lightblue;"> <p>left</p> </p> <p class="center" style="background-color: pink;"> <p>center</p> <p>center</p> </p> <p class="right" style="background-color: lightgreen;"> <p>right</p> </p> </p>
フレックス CSS Code复制内容到剪贴板 XML/HTML Code复制内容到剪贴板 js 当子元素高度不同时,进行js判断,增加较低子元素的padding-bottom,使得各个子元素实现等高效果 CSS Code复制内容到剪贴板 XML/HTML Code复制内容到剪贴板 JavaScript Code复制内容到剪贴板 以上这篇浅析CSS等高布局的6种方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持PHP中文网。 以上がCSSの等高レイアウトの6つの方法を紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。<style>
body,p{margin: 0;}
.parent{
display: flex;
}
.left,.center,.rightright{
flex: 1;
}
.center{
margin: 0 20px;
}
</style>
<p class="parent" style="background-color: lightgrey;">
<p class="left" style="background-color: lightblue;">
<p>left</p>
</p>
<p class="center" style="background-color: pink;">
<p>center</p>
<p>center</p>
</p>
<p class="right" style="background-color: lightgreen;">
<p>right</p>
</p>
</p>
<style>
body,p{margin: 0;}
.parent{overflow: hidden;}
.left,.center,.rightright{
float: left;
width: 25%;
}
.center{
width: 50%;
padding: 0 20px;
background-clip: content-box;
box-sizing: border-box;
}
</style>
<p class="parent" id="parent" style="background-color: lightgrey;">
<p class="left" style="background-color: lightblue;">
<p>left</p>
</p>
<p class="center" style="background-color: pink;">
<p>center</p>
<p>center</p>
</p>
<p class="right" style="background-color: lightgreen;">
<p>right</p>
</p>
</p>
<script>
function getCSS(obj,style){
if(window.getComputedStyle){
return getComputedStyle(obj)[style];
}
return obj.currentStyle[style];
}
var oParent = document.getElementById('parent');
var oLeft = oParent.getElementsByTagName('p')[0];
var oCenter = oParent.getElementsByTagName('p')[1];
var oRight = oParent.getElementsByTagName('p')[2];
function eqHeight(obj1,obj2){
var oDis = obj1.clientHeight - obj2.clientHeight;
if(oDis > 0){
obj2.style.paddingBottom = parseFloat(getCSS(obj2,'padding-bottom')) + oDis + 'px';
}else{
obj1.style.paddingBottom = parseFloat(getCSS(obj1,'padding-bottom')) + Math.abs(oDis) + 'px';
}
}
eqHeight(oLeft,oCenter);
eqHeight(oLeft,oRight);
</script>