Как подчеркнуть пустое пространство в CSS?
Я делаю отчет, который должен быть доступен для печати из веб-браузера. В нижней части находится поле для заполнения получателя, поэтому оно подчеркивается. Я бы предпочел не заглядывать в определенное количество подчеркиваний, и у них, похоже, все равно есть пробелы.
То, что я собираюсь, это...
Сумма платежа: $ ___________________
До сих пор я управлял этим CSS:
<div>
<p style="border-bottom: 1px solid black;">
Amount Paid: $
</p>
</div>
Это рисует линию к краю родительского div
- который я хочу. Однако он также рисует строку под "Amount Paid: $", которую я не хочу. Каждая комбинация p
s, span
s и т.д. Я думал, что сбой:
Если я помещаю текст в span
, который нажимает на границу, это не имеет значения, я полагаю, поскольку он все еще является частью p
, и граница по-прежнему рисуется.
Я могу добавить подчеркивание к пробелу после текста, но это не работает. Кажется, что требуется только подчеркнуть пустое пространство, когда стиль границы находится в элементе p
.
Аналогично, если я заменил p
на span
, он не получит заметку о том, что она должна полностью расширять границу:
<p>
<span>Amount Paid: $ </span>
<span style="border-bottom: 1px solid black;"> </span>
</p>
Ничего не делает. Линия никогда не рисуется. Если я добавлю письмо ко второму пролету, оно будет нарисовано под этим, но не более. И если я заменю p
на что-нибудь еще, например, divs или spanans, это не похоже на работу...
Любые идеи? Спасибо заранее.
Ответы
Ответ 1
Измените display
(CSS) второго диапазона на inline-block
и установите его width
(CSS).
UPD:
Или попробуйте что-то вроде:
<p style="width: 200px; display: table;">
<span style="display: table-cell; width: 100px;">Amount Paid: $ </span>
<span style="display: table-cell; border-bottom: 1px solid black;"></span>
</p>
Ответ 2
Это работает в 2014 году.
Amount Paid: $ <span style="text-decoration: underline; white-space: pre;"> </span>
Ответ 3
Если вы не возражаете вручную указывать ширину линии, вы можете сделать это:
<span style="border-bottom: 1px solid black; padding-left: 50px"> </span>
Ответ 4
Если вы не беспокоитесь о поддержке старых браузеров (генерация IE6), всегда используется свойство min-width, чтобы получить размер пробела по умолчанию, который расширяется при необходимости.
<p>
<span>Amount Paid: $ </span>
<span style="border-bottom: 1px solid black; min-width: 100px;"> </span>
</p>
Обратите внимание, что для IE7 вам нужно добавить элемент overflow: visible
в элемент min-width, чтобы он правильно обрабатывал минимальную ширину, в отличие от по умолчанию (багги) поведения обработки его как ширины.
Ответ 5
Другое решение с использованием disply: flex;
и flex-grow
:
.container {
width: 200px;
}
.row {
display: flex;
}
.underline {
flex-grow: 1;
border-bottom: 1px solid black;
margin-left: 5px;
}
<div class='container'>
<div class='row'>
<div class='label'>Count:</div>
<div class='underline'></div>
</div>
<div class='row'>
<div class='label'>Amount Paid:</div>
<div class='underline'></div>
</div>
</div>