Хорошо, основываясь на ответе @b_benjamin на комментарий выше, я думаю, что у меня может быть одно возможное решение, но я также думаю, что оно будет опираться на некоторый CSS, который может не очень хорошо работать в старых браузерах, но это простая концепция, которая может, вероятно, быть приспособленным с другими уловками.
Кажется, это работает в последних версиях FF, Chrome и IE9.
Сначала HTML:
<div style="width:340px;">
<!-- a list of text, with some time's marked up -->
<ul class="sched">
<li><b>17:55</b><b>18:10</b> <a href="#">Lorem ipsum dolor</a> sit posuere.</li>
<li><b>18:20</b><b>18:30</b> <a href="#">Lorem ipsum dolor</a> sit amet orci aliquam.</li>
<li><b>18:20</b><b>18:30</b> <a href="#">Class aptent</a> taciti sociosqu ad sed ad.</li>
<li><b>19:05</b><b>19:17</b> <a href="#">Mauris et urna et</a> ante suscipit ultrices sed.</li>
<li><b>19:05</b><b>19:17</b> <a href="#">Proin vulputate pharetra tempus.</a> Quisque euismod tortor eget sapien blandit ac vehicula metus metus.</li>
</ul>
</div>
Теперь немного CSS: (я использовал простую цветовую тему, основанную на образце фотографии b_benjamin)
/* reset default list styles */
.sched, .sched li{
list-style:none;
font-size:14px;
padding:0;
margin:0;
}
.sched li{
position:relative;
padding:0 10px;
margin:10px 0;
background:#631015;
color:#FFF;
}
.sched b{
position:relative;
left:-10px;
display:inline-block;
padding:2px 10px;
font-weight:none;
background:#FFF;
color:#666;
}
/* some light styling for effect */
body{
background:#cc222c;
}
.sched li a{
color:#FF9;
}
Пояснение:
Блочная модель требует определенного процесса мысли о том, как добиться заполнения для встроенных элементов (текст). Одна вещь, которую вы можете сделать, это просто поместить отступ вокруг всего контейнера.
В своей концепции я использовал список UL, и каждый элемент LI является контейнером. Я использовал 10px отступ на контейнере.
.sched li{
padding:0 10px;
}
Это даст нам наше заполнение, но оно заставит наши элементы времени также иметь это заполнение. Мой «трюк» состоит в том, чтобы «исправить» это, используя отрицательное относительное положение, равное отступу:
.sched b{
display:inline-block; /* make these items act like block level elements */
position:relative; /* give the b elements a relative position*/
left:-10px; /* offset them equal to the padding */
}
Еще одна вещь, которую нужно сделать, это убедиться, что родительский элемент также является position: относительным, поэтому дочерний элемент будет использовать содержащиеся в нем измерения:
.sched li{
position:relative; /* needed for B elements to be offset properly */
padding:0 10px;
}
Вот пример того, как это выглядит в Chrome.
![enter image description here](https://i.stack.imgur.com/V2q4F.jpg)
Конечно, вы можете поиграть с отступами. Возможно, есть также некоторые решения, чтобы заставить элементы "B" плавать, но это, похоже, хорошо работает.
Надеюсь, это поможет!