Необходимо реализовать оформление, которое выглядит как оглавление в книге:
часть текста на строке прижата влево, часть - вправо, а расстояние между концом левого и началом правого заполняется точками.
Строк будет несколько.
При этом длина текста с обоих концов заранее неизвестна, может изменяться, и на каждой строке она будет разной.
Я бы вот так сделал.
ul li,
ol li {
list-style: none;
}
ol li {
display: flex;
justify-content: space-between;
}
li div:nth-child(2) {
flex: 1 0;
border-bottom: 1px dotted #000;
height: 1em;
margin: 0 .4em;
}
<div class="book">
<h1>Оглавление</h1>
<ul>
<li>Предисловие</li>
<li>
<ol>
<li>
<div>Завязка</div>
<div></div>
<div>стр. 1</div>
</li>
<li>
<div>Кульминация</div>
<div></div>
<div>стр. 10</div>
</li>
<li>
<div>Развязка</div>
<div></div>
<div>стр. 100</div>
</li>
</ol>
</li>
<li>Послесловие</li>
<li>Об авторе</li>
</div>
Необходимо добавить псевдоэлемент :after
для элемента, который формирует строку. Контентом для этого псевдоэлемента будет большое число точек, которыми надо заполнить строку (лучше брать с небольшим запасом). Добавление свойства overflow: hidden
позволит обрезать "лишние" точки, когда она дойдут до начальной границы правого текста. Свойства display: block
и white-space: nowrap
отключат перенос строки при переполнении её контентом, т.к. точки в псевдоэлементе определённо сделают строку длинее, чем ширина контейнера.
Для красоты можно добавлять отступы для текста перед точками и после них, а также отступ слева в начале строки, чтобы сформировать каскадную вложенность пунктов - заполнение пустой строки точками нарушено не будет.
.book {
width: 250px;
}
p {
overflow: hidden;
}
p:after { content:'..................................................';
display: block;
white-space: nowrap;
overflow: hidden;
}
p span:first-of-type {
float:left;
margin-right: 10px;
}
p span:last-of-type {
float:right;
margin-left: 10px;
}
p:last-of-type{
margin-left: 20px;
}
<div class="book">
<h1>Оглавление</h1>
<p><span>Предисловие</span><span></span></p>
<p><span>1. Завязка</span><span>стр. 1</span></p>
<p><span>2. Кульминация</span><span>стр. 10</span></p>
<p><span>3. Развязка</span><span>стр. 100</span></p>
<p><span>Послесловие</span><span></span></p>
<p><span>Об авторе</span><span></span></p>
</div>
Виртуальный выделенный сервер (VDS) становится отличным выбором
Проблема такая - пишу на стилусе и часто вставляю код из инструмента для разработчиков в браузереВыходит грязно, потому что в stylus нет двоеточия...
В чем причина изменения левого div, когда вставляешь в правой большую таблицу с overflow-x: auto;Пример кода
Господа, есть div с шириной и высотой 400px в котором есть ещё один div(content)Мне надо при нажатии кнопки на сайте подвинуть родительский div на 400px влево...