table/table-cell タグを含む水平メニューがあります。
.menu {
display: table;
width: 100%;
}
.menu li {
display: table-cell;
}
<!doctype html>
<html>
<body>
<div style="width: 960px">
<ul class="menu">
<li><span>Selected Menu Item</span></li>
<li><a href="#item">Another Item</a></li>
<li><a href="#item">Another Item</a></li>
<li><a href="#item">Another Item</a></li>
</ul>
</div>
</body>
</html>
これは正常に機能していますが、次のようなサブメニューもあります
<ul class="menu">
<li><span>Selected Menu Item</span></li>
<li><a href="#item">Another Item</a>
<ul class="submenu">
<li><a href="#sub">Submenu Item</a></li>
<li><a href="#sub">Submenu Item</a></li>
</ul>
</li>
</ul>
通常は、第 1 レベルの liposition: relative
と第 2 レベルの ulを作成position: absolute
し、li 要素に指定したのと同じサイズにします。しかし、この場合、私はliの固定を持っていないので、これを試しました:
.menu li {
position: relative;
}
ul.submenu {
position: absolute;
width: 100%;
}
しかし、私が予想するように、親 (li) の 100% 幅に拡大するのではなく、指定された最も近い要素の幅を取得します (この場合、幅 960px の div だと思いますが、それよりも大きい可能性もあります)。 )。
私の質問は次のとおりです。JavaScript にフォールバックせずに、第 2 レベルの ul 要素をその親である表セル スタイルの li の幅に拡張することは可能ですか?
IE <= 7 のような無効なブラウザー用のスクリプトを作成する必要があることは承知しています。実行例を次に示します: http://jsfiddle.net/hy73d/
編集#1:これが実際にwebkit-browsersとoperaで機能することが私の注意を喚起しました。本当の質問は、gecko の解決策はあるのでしょうか?