Как сделать перенос строки с помощью CSS, не используя <br />?
Вопрос: Как получить такой же вывод без использования <br>
?
Я пытался использовать следующий HTML-код:
<p>hello <br> How are you</p>
Но мне нужно получить аналогичный вывод без применения тега <br>
.
Ожидаемый вывод:
hello
How are you
Как это можно сделать?
5 ответ(ов)
Невозможно сделать это с той же структурой HTML, вам нужно что-то, чтобы различать Hello
и How are you
.
Я предлагаю использовать элементы <span>
, которые затем можно будет отобразить как блочные элементы (на самом деле, как <div>
).
p span {
display: block;
}
<p><span>Hello</span><span>How are you?</span></p>
Команда "\a" в CSS генерирует перевод строки. Это CSS, а не HTML, поэтому она ближе к тому, что вам нужно: без дополнительной разметки.
В приведённом ниже примере для элемента blockquote
отображаются как заголовок, так и ссылка на источник, между которыми вставляется перевод строки ("\a"
):
blockquote[title][cite]:after {
content: attr(title) "\a" attr(cite);
}
Таким образом, вы можете использовать content
в сочетании с атрибутами, чтобы добавить текст, организованный на несколько строк без необходимости добавления лишних элементов в вашу HTML-структуру.
В CSS используйте следующий код:
p {
white-space: pre-line;
}
С помощью этого CSS любое нажатие клавиши "Enter" внутри тега P
будет восприниматься как перенос строки в HTML. Это означает, что текст будет отображаться с сохранением всех переводов строк, добавленных в коде, что особенно полезно, если вам нужно сохранить форматирование текста.
В дополнение к ранее сказанному, вот чистое CSS-решение, которое работает:
<style>
span {
display: inline;
}
span:before {
content: "\a ";
white-space: pre;
}
</style>
<p>
Первая строка текста. <span>Следующая строка.</span>
</p>
В данном примере перед элементом <span>
создаётся перенос строки с помощью псевдоэлемента :before
, что позволяет добиться переноса текста на новую строку без использования дополнительных HTML-элементов.
Чтобы заставить элемент иметь разрыв строки после себя, присвойте ему:
display: block;
Нефлоатные элементы после блочного уровня будут появляться на следующей строке. Многие элементы, такие как <p>
и <div>
, уже являются блочными элементами, так что вы можете просто использовать их.
Однако хотя это полезно знать, в действительности это зависит больше от контекста вашего содержимого. В вашем примере не стоит использовать CSS для принудительного разрыва строки. Тег <br />
уместен, потому что семантически тег <p>
является наиболее подходящим для текста, который вы отображаете. Избыточная разметка только для того, чтобы обложить её CSS, не нужна. Технически это не является точно параграфом, но тега <greeting>
не существует, так что используйте то, что у вас есть. Хорошее описание вашего содержимого с помощью HTML гораздо важнее — после этого уже можно подумать, как сделать его привлекательным.
Перенос строки в HTML с использованием '\n'
Как принудительно сделать перенос строки в длинном слове в DIV?
Как расположить div внизу своего контейнера?
Как отключить перенос строк в HTML?
Установить фиксированную ширину столбца таблицы независимо от количества текста в ячейках?