Горизонтальная временная шкала - перекрытие меток
Я строю горизонтальную шкалу времени, используя абсолютно позиционированные div.
Однако у меня возникла проблема, когда метки для каждого элемента div перекрываются, когда даты слишком близки друг к другу. Вы можете увидеть это в следующем Plunker (метка один и метка два перекрываются)
https://plnkr.co/edit/fhff4V6Zo8ko2Sllv2DZ?p=preview
Мне нужно ввести какое-то поле, однако я не уверен, как это сделать, поскольку ширина будет создаваться динамически (на основе определенного значения даты)
Любой совет будет полезен!
HTML
<div class='timeline' style='width:100%;position:relative'>
<div class='one timeline-milestone'>
<div class='timeline-label'>
Label One
</div>
</div>
<div class='two timeline-milestone'>
<div class='timeline-label'>
Label Two
</div>
</div>
<div class='three timeline-milestone'>
<div class='timeline-label'>
Label Three
</div>
</div>
<div class='four timeline-milestone'>
<div class='timeline-label'>
Label Four
</div>
</div>
</div>
CSS
.timeline-milestone {
height:10px;
margin-bottom:20px;
width:10%;
text-align:right;
position:absolute;
}
.one {
width:10%;
}
.two {
width:15%;
}
.three {
width:50%;
}
.four {
width:90%;
}
Plunker
3 ответа
Добавьте следующий CSS:
.timeline{
display: table;
}
.timeline-milestone {
display: table-cell;
height:10px;
width: auto;
text-align:right;
}
Преобразование его в таблицу гарантирует, что они никогда не пересекаются. Display:table и table-cell будут обрабатывать динамические ширины автоматически.
Обновлен плункер
Вы можете просто изменить свой CSS и поставить это, и он никогда не будет наложения
/* Styles go here */
.timeline-milestone {
height:10px;
margin-bottom:20px;
width:10%;
text-align:right;
position:absolute;
}
.one {
margin-left: 0%;
}
.two {
margin-left: 33.5%;
}
.three {
margin-left: 66.5%;
}
.four {
margin-left: 100%;
}
Вы дали 100% в основном блоке, а общий субблок должен быть ниже или равен 100%, если он превысит, попробуйте этот код..
<head>
<link rel="stylesheet" href="style.css">
<script src="script.js"></script>
</head>
<body>
<div >
<table style='width:100%;position:relative'>
<tr>
<td style='width:25%;position:relative'>
<div>
<div>
Label One
</div>
</div>
</td>
<td style='width:25%;position:relative'>
<div>
<div>
Label Two
</div>
</div>
</td>
<td style='width:25%;position:relative'>
<div >
<div >
Label Three
</div>
</div>
</td>
<td style='width:25%;position:relative'>
<div >
<div >
Label Four
</div>
</div>
</td>
</tr>
</table>