Я только что натолкнулся на эту проблему, когда клиенту «нужно» иметь раздел заметок на распечатке с введенным пользователем текстом заметки, подчеркнутым, как на спиральной бумаге. (Я научился перестать спрашивать, почему.) Почему я не использовал фоновое изображение? Он не будет распечатываться, поэтому не вариант.
Вот структура (идентификаторы для ясности):
<p id = "p">
<span id = "span1">
<span id = "span2">
sadfa sdfhkas dfjkahsd fhjklasdg f askjldfh jklas djklfh aljks hfjkl hasjdklfg hjlashdjlfgh jlkashdjkl gfhloashdfgh jkladshjkgl haskl dhfiu hajkl fghuasbhfljbahuk bfkljabwehrf bajkls bflaskdjf ljakdfk
</span>
</span>
</p>
Применяются следующие стили:
#p {
border-bottom: 1px solid black;
text-align: justify;
}
#span1 {
display: block;
margin-bottom: -1px;
}
#span2 {
border-bottom: 1px solid black;
}
Давайте начнем с внутренней стороны здесь ...
#span2
задается нижняя граница для создания объемного вида бумаги с подкладкой. Однако, если мы остановимся здесь, у нас возникнет проблема: линии не доходят до правого поля, как было упомянуто ранее. К этой проблеме мы вернемся чуть позже.
#span1
, упаковка # span2, составляет 50% решения этой проблемы слишком короткой линии. Я дал ему свойство display блока, которое позволит мне применить нижнее поле -1px, эффективно «прикрывая» последнюю выступающую линию #span2
нижним краем # span1. Эффект от этого не стоит много, пока мы не доберемся до ...
#p
Здесь стили, которые мы применили к # span1, окупаются. Во-первых, у нас есть text-align: justify
, который заботится о том, чтобы большинство линий нижней границы достигли правого поля, за исключением, конечно, последней строки, которая теперь выглядит действительно неуместной. Чтобы позаботиться об этом, мы применяем border-bottom: 1px solid black
к #p
, который - из-за нижнего поля -1px на нашем блочном стиле #span1
- перекрывает последнюю короткую нижнюю границу и завершает иллюзию.
Да, это немного глупо, но когда дело доходит до провода и требования клиента не могут быть скорректированы, иногда вам нужен именно клад.
(Примечание: я не ожидал бы, что это сработает для форматирования электронной почты ... Как я уже говорил ранее, это то, что мне нужно для имитации того, как выглядит подкладка на печатной странице.)