探していたものを検索してみましたが、内部divでcss用のものを探し続けました。
とにかく、私がやろうとしているのは、divの2つの列を互いに整列させ、右側の列を常に左側の列の上部に整列させることです。これは私が空白を描いているところです、私はそれを行う方法を理解できないようです。
左側の列のサイズは動的であるため、:heightプロパティを使用して物事を整理することはできません。
これが私がやろうとしていることです:
できることは、インラインdivを透明なdivでラップすることです。例えば:
<div class="transparent-container">
<div class="inline-div">
</div>
<div class="inline-div">
</div>
<div class="clearfix"></div>
</div>
これは、次の3つの方法で実行できます。
<table>
<tr>
<td><div>div</div></td>
<td><div>div</div></td>
</tr>
<tr>
<td><div>div</div></td>
<td><div>div</div></td>
</tr>
</table>
<div class="outer-container">
<div class="box-container">
<div class="left-box">
Left Box content
</div>
<div class="right-box">
Right Box Content
</div>
</div>
</div>
左ボックスのJsで高さを計算し、それを右ボックスに渡してギャップを維持します。
これは非常に美しくトリックを行います:
.div1, .div2{
vertical-align:top;
}
.div1{
float:left;
width:70px;
}
.div2{
display: table-cell;
width:200px;
}
.div3{
display:table-cell;
width:200px;
}
<div class='div1'>1</div>
<div class='div2'>ABCDE FGHIJ KLMNO PQRST UVWXY Z</div>
<div class='div1'>2</div><div class='div2'>ABCDE FGHIJ KLMNO PQRST UVWXY Z</div>
等
解決策1:テーブルを使用できます
解決策2:jQueryを使用して、各列を各divで取得し、それらの高さを取得します。次に、高さを比較し、両方のdivをその最大の高さに設定します。しかし、私はこれを解決するためにテーブルを使用することを好みます。
以下のように作成できます。
つまり、すべての行でdivでラップし、そのdivには2つの列のdivがあります。後にクリアフロート
同様の状況で私が行ったことは、2つの列を作成する代わりに、2 divの各行にコンテナーを作成し、コンテナー自体をフローティングせずに、そのコンテナーにdivをフロートすることでした。このようにして、コンテナの高さはdivの最高の高さまで拡張されます。次のコンテナはその下に配置されます。
ここで結果と私のHTMLを見ることができます。
グリッドを作成したかったのですが、単純なテーブルとネストされたdivにより、一度に行をレイアウトする必要がありました。これにより、レスポンシブデザインのために列を積み重ねることが困難になりました。
これは、フレックスボックスを使用してグリッドを作成するコードペンです。1つ目は一度に行を指定でき、2つ目は一度に列を指定できます。
https://codepen.io/chaimleib/pen/zPPGgj
HTML:
<h2>By row</h2>
<div class="table table3cols">
<div class="table-cell"><h3>Eddard Stark</h3></div>
<div class="table-cell">Sword named Ice</div>
<div class="table-cell">No direwolf</div>
<div class="table-cell"><h3>Jon Snow</h3></div>
<div class="table-cell">Sword named Longclaw</div>
<div class="table-cell">Direwolf: Ghost</div>
<div class="table-cell"><h3>Arya Stark</h3></div>
<div class="table-cell">Sword named Needle</div>
<div class="table-cell">Direwolf: Nymeria</div>
</div>
<h2>By column</h2>
<div class="table table3cols">
<div style="order:1;" class="table-cell"><h3>Eddard Stark</h3></div>
<div style="order:2;" class="table-cell">Sword named Ice</div>
<div style="order:3;" class="table-cell">No direwolf</div>
<div style="order:1;" class="table-cell"><h3>Jon Snow</h3></div>
<div style="order:2;" class="table-cell">Sword named Longclaw</div>
<div style="order:3;" class="table-cell">Direwolf: Ghost</div>
<div style="order:1;" class="table-cell"><h3>Arya Stark</h3></div>
<div style="order:2;" class="table-cell">Sword named Needle</div>
<div style="order:3;" class="table-cell">Direwolf: Nymeria</div>
</div>
以下:
/* Variables
================================== */
@bw: 3px; // border width
/* Tables
================================== */
.table {
display: flex;
flex-wrap: wrap;
margin: 0 0 3em 0;
padding: 0;
}
.table-cell {
box-sizing: border-box;
flex-grow: 1;
width: 100%; // Default to full width
padding: 0.8em 1.2em;
overflow: hidden; // Or flex might break
list-style: none;
border: solid @bw white; // margins would overflow row and cause early wrapping
background: fade(slategrey,20%);
> h1, > h2, > h3, > h4, > h5, > h6 { margin: 0; }
}
/* Table column sizing
================================== */
.table2cols > .table-cell { width: 50%; }
.table3cols > .table-cell { width: 33.33%; }
.table4cols > .table-cell { width: 25%; }
/* Page styling
================================== */
body {
border: 1px solid grey;
margin: 0 auto;
max-width: 800px;
padding: 2em;
}
h1, h2, h3, h4, h5, h6 { margin-top: 0; }
このテクニックの功績は、デザインをレスポンシブにするための巧妙な方法も示しているDavideRizzoにあります。