Заполнение для цвета фона встроенного текста с text-indent

Я в основном пытаюсь сделать ЭТО с абзацем, содержащим текстовый отступ, но не могу его получить, потому что display:inline не позволяет текстовый отступ. Есть идеи?

2 ответа

Решение

Использование псевдоэлементов

Я создал пример JSFiddle, который использует span элементы, которые inline а затем добавляет before а также after псевдоэлементы, чтобы добавить дополнительный интервал спереди и в конце каждого выделенного блока текста.

В случае, если вам нужно манипулировать количеством этого пространства, отрегулируйте font-size внутри этих псевдоэлементов, и вы должны быть хорошими, чтобы пойти.

Трюк просто:

.highlight {
    font-family: Helvetica, Sans-serif;
    font-size: 48pt;
    font-weight: bold;
    text-transform: uppercase;
}
    .highlight:before,
    .highlight:after {
        /* no-breaking-space (nbsp) entity */
        content: "\00a0";
    }

Количество контролируемого пространства

Используя соответствующие символы в :before а также :after псевдоэлементы можно фактически контролировать количество добавленного расстояния до отдельных пикселей.

Лучший способ - это использовать thin space который в типографских терминах 1/5 или иногда 1/6 от em. Если мы установим font-size из этих двух псевдоэлементов с тонким пространством 6 пикселей всегда должно быть приблизительно 1 ширина пикселя независимо от расхождений размеров.

.highlight:before,
.highlight:after {
    content: "\2009";
    font-size: 6px;
}

Верхнее определение стиля добавит 1 пиксель пространства с каждой стороны. Если мы поместим 5 тонких пробелов в контент, мы получим 5 пикселей пространства...

Или используйте один тонкий пробел и добавьте к нему отступы и таким образом управляйте его шириной. Или даже отменить любой контент и просто использовать отступы:

.highlight:before,
.highlight:after {
    content: "";
    padding: 0 5px; /* will give 10px space */
}

Как бы то ни было, можно контролировать количество места вплоть до зернистости пикселей.

Без тега br: демо здесь: http://jsfiddle.net/korigan/jzm3qu1q/1/

HTML

 <div class="wrap">
     <p class="highlight">
        <span class="text">Amet assumenda atque eos excepturi harum ipsa</span>
     </p>
 </div>

CSS

.wrap {
    width: 150px;
}
.highlight {
    color: #fff;
    display: inline;
    background: blue;
    font-size: 25px;
    font-weight: normal;
    line-height: 1.2;
}
.highlight .text {
        padding: 4px;
        box-shadow: 4px 0 0 blue, -4px 0 0 blue;
        background-color: blue;
        box-decoration-break: clone; /* For Firefox */
}
Другие вопросы по тегам