我正在尝试为 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}
});