序文: 私は一般的に UI の専門家ではないので、CSS について大きな誤解がある場合はご容赦ください。この質問は、数時間の調査/壁に頭をぶつけた後のものであることを知っておいてください:)
基本的に、私がやろうとしているのは、未知の数の要素を、既知の幅の2つの要素の間の未知の幅のスペースに引き伸ばすことです.
入力しているうちに、どれだけクレイジーに聞こえるかがわかったので、これをグラフィカルに実行してみましょう。
html
|-------------------------------------------------------------------------|
| #container |
| |-----------------------------------------------------------------| |
| |#header | |
| ||---------------------------------------------------------------|| |
| || #logo | #menu | #social || |
| || | |---| |---| |---| |---| | || |
| || | | A | | B | | C | ... ... ... | N | | || |
| || | |---| |---| |---| |---| | || |
| ||---------------------------------------------------------------|| |
| | | |
| |#body | |
| ||---------------------------------------------------------------|| |
| || || |
| ||---------------------------------------------------------------|| |
|-------------------------------------------------------------------------|
どこ:
#container
中央に配置され、ドキュメントの幅の 80% を占めます#logo
、#menu
、および#social
はそれぞれ<div/>
sに含まれます#logo
#social
既知の幅があります。#menu
ではない| A |
...内の要素の| N |
数は不明です<li/>
<ul/>
HTML は次のようになります。
<body>
<div id="container">
<div id="header">
<div id="logo">Logo here</div>
<div id="nav">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Home</a></li>
<li><a href="#">Home</a></li>
</ul>
</div>
<div id="social"><a href="#">Link</a><a href="#">Link</a></div>
</div>
<div id="body"> </div>
</div>
</body>
と要素A..N
の間の残りのスペースにメニュー項目を広げることができません。それらは一緒にスムーズに処理されるか、.#logo
#social
#container
私がすでに試したいくつかのこと:
私ができない/やろうと思わないこと:
- メニュー項目を
<table/>
- あらゆる種類の JavaScript アプローチ
- CSS
calc()
関数の使用
最後に 1 つ注意してください。これらのメニュー項目に割り当てられたスペースに十分なスペースがないことは心配していません。#menu
ただし、オーバーフローした場合は、内部(つまり、A
メニュー項目の下)の別の行にオーバーフローすると予想されます。
これには純粋な CSS ソリューションが必要です...それは何ですか?