我想我有一个你正在尝试做的工作示例,但有几个问题。
使用您发布的示例作为基础,您可以将 UL 中 LI 的 HTML 标记替换为容器 DIV 中的 DIV。例如:
<div class="sliderGallery">
<div class="div-that-gets-cropped">
<div class="text-and-images-chunk">Some text!<br /><img class="pb-airportexpress" src="slider-gallery_files/pb_airport_express.jpg" /></div>
<div class="text-and-images-chunk">Some text!<br /><img src="slider-gallery_files/pb_airport_extreme.jpg" /></div>
<div class="text-and-images-chunk">Some text!<br /><img src="slider-gallery_files/pb_timecapsule_20080115.jpg" /></div>
...
</div>
然后修改页面中的 jQuery 代码以针对该容器 DIV 而不是 UL:
window.onload = function () {
var container = $('div.sliderGallery');
var divThatGetsCropped = $('div.div-that-gets-cropped', container);
var itemsWidth = divThatGetsCropped.innerWidth() - container.outerWidth();
$('.slider', container).slider({
minValue: 0,
maxValue: itemsWidth,
handle: '.handle',
stop: function (event, ui) {
divThatGetsCropped.animate({'left' : ui.value * -1}, 500);
},
slide: function (event, ui) {
divThatGetsCropped.css('left', ui.value * -1);
}
});
};
然后,您需要进行一些重要的 CSS 更改...最初的示例依赖于 LI 的样式以显示:内联,在隐藏溢出的容器内部。如果您只是将这些“text-and-images-chunk” DIV 设置为内联显示,那么尝试让所有内容正确显示将是一件令人头疼的事情。您可能希望将它们全部浮动。
但是,浮动元素不会很好地与容器“div-that-gets-cropped”DIV 配合使用,因为它被“sliderGallery”DIV“显示”的方式(至少这是我在 Firefox 3.03 中所经历的) )。我通过为“div-that-gets-cropped”DIV(10000 px)设置一个非常大的宽度来解决这个问题:
.sliderGallery div.div-that-gets-cropped {
position: absolute;
list-style: none;
overflow: none;
white-space: nowrap;
padding: 0;
margin: 0;
width: 10000px;
}
.sliderGallery div.div-that-gets-cropped div.text-and-images-chunk {
float: left;
margin-right: 24px;
}
而且您必须调整 .slider-lbl1, .slider-lbl2 的“左”值以匹配最终的宽度(如果文本的大小最终改变了“文本和图像块”元素)。
我注意到的一个问题是,当您将图像放在块级元素中时,没有一种好方法可以让它们“拥抱”底部,就像在使用内联的示例中所做的那样。您可能可以通过调整元素的位置来完成这项工作(我不能),但希望这在您的具体使用中不会有什么大不了的。
综上所述,jCarousel 似乎完全适合您正在做的事情,即使它确实增加了一些代码量。