На высоком уровне должно работать следующее:
- Получите общую ширину элемента пользовательского интерфейса ползунка в пикселях.
- Разделите это число на
[total number of labels] - 1
, чтобы получить общее количество пикселей для каждой метки.
- Добавьте серию div сразу после div слайдера с шириной, полученной на шаге 2, и стилем
float:left
.
- Следуйте за всем с пустым div в стиле
clear: both
.
Вот базовый пример:
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);
}