CSSの等高レイアウトの6つの方法を紹介

高洛峰
リリース: 2017-03-13 17:49:31
オリジナル
1429 人が閲覧しました

次のエディターは、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>
ログイン後にコピー


CSSの等高レイアウトの6つの方法を紹介

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>
ログイン後にコピー


CSSの等高レイアウトの6つの方法を紹介

本当に等しい高さ

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>
ログイン後にコピー


CSSの等高レイアウトの6つの方法を紹介

絶対

すべての子要素の高さが親要素の高さと同じになるように、子要素の 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の等高レイアウトの6つの方法を紹介

フレックス

CSS Code复制内容到剪贴板

<style>   
body,p{margin: 0;}   
.parent{   
    display: flex;   
}   
.left,.center,.rightright{   
    flex: 1;   
}   
.center{   
    margin: 0 20px;   
}   
</style>
ログイン後にコピー



XML/HTML Code复制内容到剪贴板

<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の等高レイアウトの6つの方法を紹介

js  

当子元素高度不同时,进行js判断,增加较低子元素的padding-bottom,使得各个子元素实现等高效果


CSS Code复制内容到剪贴板

<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>
ログイン後にコピー



XML/HTML Code复制内容到剪贴板

<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>
ログイン後にコピー



JavaScript Code复制内容到剪贴板

<script>   
function getCSS(obj,style){   
    if(window.getComputedStyle){   
        return getComputedStyle(obj)[style];   
    }   
    return obj.currentStyle[style];   
}   
var oParent = document.getElementById(&#39;parent&#39;);   
var oLeft = oParent.getElementsByTagName(&#39;p&#39;)[0];   
var oCenter = oParent.getElementsByTagName(&#39;p&#39;)[1];   
var oRight = oParent.getElementsByTagName(&#39;p&#39;)[2];   
function eqHeight(obj1,obj2){   
    var oDis = obj1.clientHeight - obj2.clientHeight;   
    if(oDis > 0){   
        obj2.style.paddingBottom = parseFloat(getCSS(obj2,&#39;padding-bottom&#39;)) + oDis + &#39;px&#39;;   
    }else{   
        obj1.style.paddingBottom = parseFloat(getCSS(obj1,&#39;padding-bottom&#39;)) +  Math.abs(oDis) + &#39;px&#39;;   
    }   
}   
eqHeight(oLeft,oCenter);   
eqHeight(oLeft,oRight);   
</script>
ログイン後にコピー


CSSの等高レイアウトの6つの方法を紹介

以上这篇浅析CSS等高布局的6种方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持PHP中文网。


以上がCSSの等高レイアウトの6つの方法を紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
css
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート