Красная строка в HTML: как сделать отступ первой строки абзаца
Разбивать текст на абзацы следует с помощью тега <p>
.
У тега <p>
могут быть следующие дочерние элементы [w3.org]: a, abbr, area, audio, b, bdi, bdo, br, button, canvas, cite, code, data, datalist, del, dfn, em, embed, i, iframe, img, input, ins, kbd, keygen, label, map, mark, math, meter, noscript, object, output, progress, q, ruby, s, samp, script, select, small, span, strong, sub, sup, svg, template, textarea, time, u, var, video, wbr.
Если тегу <p>
задать значение text-indent
, то все его содержимое, находящееся на первой строке, сдвигается.
Неудобно, что свойство text-indent
наследуется и у inline-block элементов тоже присутствует отступ слева до содержимого. На inline элементы оно не распространяется, так как должно быть задано только блочным элементам.
<style> p { text-indent: 2em; } mark { display: inline-block; } </style> <p>Разбивать текст на абзацы следует с помощью тега <code><p></code>. <p><a href="https://www.w3.org/TR/2014/REC-html5-20141028/grouping-content.html#the-p-element">У тега <code><p></code> могут быть следующие дочерние элементы [w3.org]</a>: a, abbr, area, audio, b, bdi, bdo, br, button, canvas, cite, code, data, datalist, del, dfn, em, embed, i, iframe, img, input, ins, kbd, keygen, label, map, mark, math, meter, noscript, object, output, progress, q, ruby, s, samp, script, select, small, span, strong, sub, sup, svg, template, textarea, time, u, var, video, wbr. <p><img alt="Заяц" src="http://2.bp.blogspot.com/-RWS2ZhrFw80/U_7VcA6huTI/AAAAAAAAEtc/4d_LRNPGfQU/s100/zayats.jpg" height="100" width="86"> Если тегу <code><p></code> задать значение <code>text-indent</code>, то все его содержимое, находящееся на первой строке, сдвигается. <p>Неудобно, что свойство <code>text-indent</code> наследуется и у <mark>inline-block элементов</mark> тоже присутствует отступ слева до содержимого. На <i>inline элементы</i> оно не распространяется, так как должно быть задано только блочным элементам.
text-indent
- отступ добавляется
- к первой строке блока,
- к каждой строке после принудительного разрыва строки (Enter и
<br>
),
не поддерживается браузерами на Blink - отступ добавляется ко всем строкам, кроме первой,
не поддерживается браузерами на Blink - 0
- наследует значение родителя
- наследует значение родителя
- наследует значение родителя
text-indent
определяет длину отступа первой строки элемента.
Отрицательное значение — длину выступа.Значение
text-indent
в процентах устанавливает отступ или выступ первой строки элемента в процентах от ширины элемента.<style>
div {
text-indent: 0; /* свойство text-indent
наследуется, применяется к блочным элементам, изменяет текст и строчные элементы */
}
</style>
<div>Положительное значение свойства <code>text-indent</code> определяет длину отступа первой строки элемента. Отрицательное значение — длину выступа.<br>Значение <code>text-indent</code> в процентах устанавливает отступ или выступ первой строки элемента в процентах от ширины элемента.</div>
Запретить наследование text-indent
Теперь свойство не наследуется и у inline-block элементов отсутствует отступ слева до содержимого.
<style> p { text-indent: 2em; } p * { text-indent: initial; /* начальное значение (по умолчанию) */ } mark { display: inline-block; } </style> <p>Теперь свойство не наследуется и у <mark>inline-block элементов</mark> отсутствует отступ слева до содержимого.
Отодвигать только текст красной строки абзаца
Предложение после картинки не смещёно, так как оно находится уже на второй строке.
<style>
p {
text-indent: 2em;
}
p img:first-child {
display: block; /* на блочный элемент не действует text-indent
*/
}
</style>
<p><img alt="Заяц" src="http://2.bp.blogspot.com/-RWS2ZhrFw80/U_7VcA6huTI/AAAAAAAAEtc/4d_LRNPGfQU/s100/zayats.jpg" height="100" width="86"> Предложение после картинки не смещёно, так как оно находится уже на второй строке.
Вместо text-indent
можно использовать margin
для псевдоэлемента ::first-letter
.
Предложение после картинки не смещёно, так как первой букве первой строки блока предшествует другой элемент строки.
<style> p::first-letter { margin-left: 2em; } </style> <p>Вместо <code>text-indent</code> можно использовать <code>margin</code> для <a href="http://shpargalkablog.ru/2012/02/before-after-css.html">псевдоэлемента <code>::first-letter</code></a>. <p><img alt="Заяц" src="http://2.bp.blogspot.com/-RWS2ZhrFw80/U_7VcA6huTI/AAAAAAAAEtc/4d_LRNPGfQU/s100/zayats.jpg" height="100" width="86"> Предложение после картинки не смещёно, так как первой букве первой строки блока предшествует другой элемент строки.