2017-10-19 8 views
1

私はコンテナdivdisplay: table、そして3つの内側divにdisplay: table-cellを持っています。100%幅のテーブルセルの内側にあるフッタdiv div

2つの外側テーブルセルは固定幅を持ち、内側テーブルセルはwidth:100%です。そのため、ブラウザのサイズに合わせてサイズが変わります。

中間セルの一番下に配置するフッタdivがあります(width: 100%)。しかし、それは真ん中のテーブルセルの幅を超えて伸びます。

この問題を解決するにはどうすればよいですか?

例:https://jsfiddle.net/9opnx9r8/

HTML

html, 
 
body { 
 
    height: 100%; 
 
} 
 

 
.cell { 
 
    display: table-cell; 
 
    border: 1px solid red; 
 
} 
 

 
.cell1, 
 
.cell3 { 
 
    min-width: 150px; 
 
} 
 

 
.cell2 { 
 
    width: 100%; 
 
} 
 

 
.text { 
 
    border: 1px solid green; 
 
    position: absolute; 
 
    left: inherit; 
 
    bottom: 0; 
 
    width: 100%; 
 
    height: 70px; 
 
}
<div style="display:table; min-height: 100%;"> 
 
    <div class="cell cell1"> 
 
    <h1>C1</h1> 
 
    </div> 
 
    <div class="cell cell2"> 
 
    <h1>C2</h1> 
 
    <ul> 
 
     <li>List</li> 
 
     <li>must</li> 
 
     <li>stay</li> 
 
     <li>top</li> 
 
    </ul> 
 
    <div class="text">FOOTER TEXT HERE</div> 
 
    </div> 
 
    <div class="cell cell3"> 
 
    <h1>C3</h1> 
 
    </div> 
 
</div>

+0

あなたはそれが一番下にあるか、単にページの下部にある中央のコンテナになりたいでしたが、私はあなたがする必要があるすべては 'ポジションを追加だと思う途中 – Keith

+0

に整列: 'セル2 'に相対的です。 – Mark

+0

あなたは位置を取り除くだけです:.textクラスのための絶対は、底の中央のコンテナでそれを得るために – Keith

答えて

1

絶対配置要素のための包含ブロックは、最も近い位置付け祖先です。

配置された祖先がない場合、その包含ブロックがビューポートになります。

したがって、フッタの包含ブロックである要素にposition: relativeを追加します。

html,body { 
 
    height: 100%; 
 
} 
 

 
.cell { 
 
    display: table-cell; 
 
    border: 1px solid red; 
 
} 
 

 
.cell1, .cell3 { 
 
    min-width: 150px; 
 
} 
 

 
.cell2 { 
 
    width: 100%; 
 
    position: relative; /* NEW */ 
 
} 
 

 
.text { 
 
    border: 1px solid green; 
 
    position: absolute; 
 
    left: inherit; 
 
    bottom:0; 
 
    width: 100%; 
 
    height: 70px; 
 
}
<div style="display:table; min-height: 100%;"> 
 
    <div class="cell cell1"> 
 
     <h1>C1</h1> 
 
    </div> 
 
    <div class="cell cell2"> 
 
     <h1>C2</h1> 
 
     <ul> 
 
     <li>List</li> 
 
     <li>must</li> 
 
     <li>stay</li> 
 
     <li>top</li> 
 
     </ul> 
 
     <div class="text">FOOTER TEXT HERE</div> 
 
    </div> 
 
    <div class="cell cell3"> 
 
     <h1>C3</h1> 
 
    </div> 
 
</div>

+0

しかし、これはOPの現在の設定https://jsfiddle.net/9opnx9r8/1/ – Huangism

+0

@Huangismとのオーバーラップを作成しますが、これは別の問題です。フッターは、現在の位置にあります。問題はサイジングとアラインメントに関するものではありません。 –

+0

これは私が必要としていたものです。オーバーラップは問題ありません。ありがとう。 – Vivendi

関連する問題