下の画像とこの jsfiddleのように、最初の列が最初の列を占め、残りが右側の列を占めるように<div>
、2 つの列に配置する必要がある3 つの連続した s があります。jsfiddle では、制約を使用して s を強制的に配置しています。これは、制約を使用せずに別の方法で達成できますか? sの順序は変更できません。<div>
width
float
width
<div>
<div>
できるだけ少ない固定幅を使用するソリューションをお勧めします。
下の画像とこの jsfiddleのように、最初の列が最初の列を占め、残りが右側の列を占めるように<div>
、2 つの列に配置する必要がある3 つの連続した s があります。jsfiddle では、制約を使用して s を強制的に配置しています。これは、制約を使用せずに別の方法で達成できますか? sの順序は変更できません。<div>
width
float
width
<div>
<div>
できるだけ少ない固定幅を使用するソリューションをお勧めします。
固定配置とパーセンテージ幅を使用してそれを行うことができます。
CSS コード:
.image {
position:fixed;
top:0px;
left:0px;
width:75%;
height:100%;
}
.summary {
position:fixed;
top:0px;
left:75%;
width:25%;
height:50%;
}
.info {
position:fixed;
top:50%;
left:75%;
width:25%;
height:50%;
}
右の div からを削除し、左の div の幅よりも少し大きいものfloat
を追加できます- http://jsfiddle.net/cx6VJ/2/margin-left
左の div の幅を固定したくない場合は、幅とマージン左の両方をパーセンテージで設定できます。
@ Amit と @ user1823713 によって提供されたヘルプのおかげで、私はそれらの回答の組み合わせを使用して、<div>
s の相対位置を保持し、幅をコンテナーの幅に適合させるものを取得しました。結果のjsfiddleは次のとおりです。
このレイアウトは変更せずにコンテナーにプラグインでき、最終的にコンテナーに単一の幅を設定して、レイアウト全体の幅を制限します。
Flexboxはこれに理想的な選択肢かもしれませんが、サポートはまだ普及していません。columns
IE9以前では機能しないことを気にしない場合は、これを使用できます。MozillaとWebkitのプレフィックスを追加する必要があります。
#container {
background-color: orange;
width: 408px;
columns: 2;
}
#container > div {
/* break-inside: avoid-column;*/
}
#left {
border: 2px solid green;
min-height: 200px;
break-after: column;
}
.right {
border: 2px solid blue;
height: 50px;
}
#red {
border: 2px solid red;
}
意図的にright
要素をデモよりも小さくしましたが、サイズを200ピクセルに増やすことができ、それでも目的のレイアウトを維持できます。
これを提供しているのは、次のように求められたからです。
できるだけ少ない固定幅を使用するソリューションをお勧めします。
div のないソリューションを次に示します (テーブルを使用します)。
<table>
<tr><td rowspan="2">Image</td>
<td>summary</td></tr>
<tr><td>info</td></tr>
</table>