3

我刚刚完成了 jQuery 手风琴与 jQuery Slider 的结合。IE

显示 3 张图片。用户可以使用PREVNEXT按钮查看下一个/上一个 3 图像。他们还可以使用滑块浏览所有图像。

下一步是让这个滑块看起来像一个时间线。左侧需要从 1970 年开始,到 2010 年结束。对于每个项目(在这种情况下,一个项目是一组 3 张图像)我需要它在时间轴上显示一个日期。

IE:替代文字

我知道我可以创建一个日期宽度分开的图像,但理想情况下这需要是动态的,以便可以放入更多项目并且时间线自我更新。

4

1 回答 1

4

在高层次上,以下应该起作用:

  1. 获取滑块 UI 元素的总宽度,以像素为单位。
  2. 将此数字除以[total number of labels] - 1得到分配给每个标签的像素总数。
  3. 在滑块 div 之后立即添加一系列 div,其中包含您在步骤 2 中获得的宽度和float:left样式。
  4. 使用带有clear: both样式的空 div 跟随所有内容。

这是一个基本示例:

CSS

.timeline {
    width: 500px;
    border: 1px solid black;
}
.timelineEntry {
    float: left;
}
.first {
    position: relative; left: 5px;
}
.last {
    position: relative; left: -10px;
}
.clear {
    clear: both;
}

标记

<div id="timelineContainer">
    <div class="timeline" id="slider">
        Slider UI Goes Here
    </div>
</div>
<div class="clear"></div>

JavaScript

var container = document.getElementById("timelineContainer");
var labels = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"];
var totalWidth = $("#slider").width();
var labelWidth = Math.floor(totalWidth / (labels.length - 1));
for (var index = 0; index < labels.length; index++) {
    var nextLabel = document.createElement("div");
    nextLabel.className = "timelineEntry";
    if (index == 0) {
        nextLabel.className += " first";
    }
    else if (index == labels.length - 1) {
        nextLabel.className += " last";
    }
    nextLabel.style.width = labelWidth + "px";
    nextLabel.innerHTML = labels[index];
    container.appendChild(nextLabel);
}
于 2011-03-27T03:41:56.230 回答