リキッド レイアウトの左の列である div の中央に ul を配置したいと考えています。そのためには、ul をラップするために使用した div の幅を設定する必要があります。注: リスト項目 (およびコンテンツ) は、php を使用してデータベースから取得されます。
jquery を使用してこれを行う方法についての提案に興味があります。
以下のマークアップを検討してください。
<div id="wrapper">
<div id="left-column">
<div id="list-wrap">
<ul>
<li>Dynamic content 1</li>
<li>Dynamic content 2</li>
<li>Dynamic content 3</li>
<li>Dynamic content 4</li>
</ul>
</div><!--/list-wrap-->
</div><!--/left-column-->
<div id="right-column">
Content
</div><!--/right-column-->
<div style="clear: both;"></div>
</div><!--/wrapper-->
このCSSを使用:
#wrapper {}
#left-column { float: left; width: 50%; }
#right-column { float: right; width: 50%; }
#list-wrap { margin: 0 auto 0 auto; padding: 40px; }
#list-wrap ul { list-style-type: none; }
#list-wrap ul li { float: left: width 160px; height: 160px; margin: 20px; }
JavaScriptに関してはあまり賢くはありませんが、解決策には次のようなものが必要だと思います:
- #left-column の使用可能なコンテンツ領域の幅を見つけます。
- その幅に収まる li の数を計算します (#list-wrap のマージンとパディングを考慮して)。
- 図を最も近い 200 ピクセル (幅 160 ピクセル + 余白 2x20 ピクセル) に丸めますか?
- 幅を #list-wrap に適用します。
これは、開始するための基準の一部を満たす以前に使用したものです。
var menuWidth = 0;
$(".menu > ul > li > a").each(function(i) {
menuWidth += $(this).outerWidth(true);
});
$(".menu").css("width", menuWidth);
よろしくお願いいたします。
ニールス