Web サイトのユーザーにスクロール可能な (水平) コンテンツを提供するために、jQuery 用の jCarousel プラグインを使用しようとしています。
私が言及しているコンテンツは、基本的にユーザー定義<li>
の要素であり、タブの感触と外観を持つようにスタイル設定されています。基本的に、pageflakes.com のタブと同じ効果を達成しようとしています。ご想像のとおり、ユーザーは自分でタブを作成し、タブ名を提供しています。
jCarousel では、コンテンツの固定幅を指定する必要があります。たとえば、すべての例は、高さと幅が固定された画像に基づいています。しかし、私の場合、ユーザーが自分のタブに何を付けるかを制御できません...合計コンテナdivの幅を推測することは不可能です。
各文字が約5ピクセルであると仮定してプログラムで幅を推測し、タブの名前として指定した単語の長さに5を掛けるなど、ばかげた方法を使用してみました。この場合でも、cssファイルを動的に操作する必要がありましたが、その方法がわからず、実行可能であっても..
どんな解決策も感謝します...
<lu>
<li class='MyTab' id='578'>This is my tab</li>
<li class='MyTab' id='579'>of which I can</li>
<li class='MyTab' id='580'>never guess</li>
<li class='MyTab' id='581'><img src='img/bullet_key.png' /> The length of</li>
</lu>
上記の html は、ajax_tabs_output.aspx を介してプログラムで生成され、javascript 配列に読み込まれ、jCarousel が残りを処理します。
function outputTabsArray() {
$.ajax({
url: 'ajax_tabs_output.aspx',
type: 'get',
data: 'q=array',
async: false,
success: function(out)
{
tabs_array = out;
}
});
}// end outputTabsArray
function mycarousel_itemLoadCallback(carousel, state)
{
for (var i = carousel.first; i <= carousel.last; i++) {
if (carousel.has(i)) {
continue;
}
if (i > tabs_array.length) {
break;
}
carousel.add(i, mycarousel_getItemHTML(tabs_array[i-1]));
}
};
/**
* Item html creation helper.
*/
function mycarousel_getItemHTML(item)
{
return '<div class="MyTab" id="' + item.tab_id + "'>" + item.tab_name + '</div>';
};
$('#mycarousel').jcarousel({
size: tabs_array.length,
itemLoadCallback: {onBeforeAnimation: mycarousel_itemLoadCallback}
});