大まかに言えば、次のように動作するはずです。
- スライダー UI 要素の合計幅をピクセル単位で取得します。
- この数値を で割る
[total number of labels] - 1
と、各ラベルに割り当てるピクセルの総数が得られます。
float:left
ステップ 2 で取得した幅とスタイルを使用して、スライダー div の直後に一連の div を追加します。
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);
}