私は多くの類似の質問を見つけ、いくつかのソリューション(いわゆる「聖杯」CSSレイアウトを含む)を試しましたが、私が必要とすることをしなさい。ピクセルとパーセンテージ幅divs side-by-side
idがright
のcontaining div(CSSを含むブロック)があります。それの左側には、固定幅のdiv(スプリッターバーですが、それが何を使用しているかは関係ありません; id splitpane
);右側のスペースに残りのdiv(別名div right-box
)を埋めます。 3px - 私は左に1 width: 3px
に設定し、2つの内部のdiv display: inline-block
(vertical-align: top
で)作ってみましたが、その後、幅が100%を持っている権利を設定する方法はありませんしました
。私もfloat: left
/margin-left: -100%
/margin-left: 3px
のトリックで試してみましたが、同じ問題があります:100%+ 3pxが親を含むブロックをオーバーフローさせ、スクロールバーをポップアップさせます。 (もちろん、スクロールバー自体は問題ではなく、overflow: hidden
を使用して削除できますが、右側のコンテンツは切り捨てられます)
現在、私は右のdivにはwidth: 99.5%
を使用していますが、これはひどいハックです(画面の幅に応じてオーバーフローする可能性があります)。それは見えます。このようなビット:
#right {
display: inline-block;
vertical-align: top;
height: 100%;
width: 85%; /* this is part of a larger div */
}
#right-box {
width: 99.5%; /* stupid hack; actually want 100% - 3px for splitter */
height: 100%;
}
#splitpane {
float: left;
width: 3px;
height: 100%;
background: white;
border-left: solid gray 1px;
border-right: solid gray 1px;
cursor: e-resize;
}
はこれを行うことも可能です:(floatバージョンが、インラインブロックのバージョンが似ている)を、次のようにCSSで
<div id="right"><div id="splitpane"></div><div id="right-box">
...
</div></div>
?これは社内向けのものなので、ソリューションはFirefox 3でのみ動作する必要があります(ただし、FF3に固有の場合は、ソリューションが標準に準拠しているが、他のブラウザはそうではなく、Firefox専用ですコード)。
divを参照してくださいは、最初の場所でセマンティックではありません。意味を持たないものをマークアップするためにdivを使用するはずです。そのため、div(任意の除算)と呼ばれています。 – Rahul
はいdivのセマンティックは分かりませんが、 "空の要素"は意味がありませんでした – Dels
スプリッタ以外の絶対幅を指定したくありません。 – dbrobins