2015-11-10 3 views
5

Я пытаюсь применить стиль к тексту HTML. То, что я хочу, это в основном:Как применять стили CSS только для текста

What I want to get

Что я получаю в основном:

What I actually get

Как вы можете видеть, первая строка с отступом, но не какой-либо другой линии. До сих пор у меня есть текст внутри <span>, который находится внутри <div>.

.slide-text .text { 
 
    background-color: rgba(0, 0, 0, .6); 
 
    color: #FFF; 
 
    padding: 8px 17px; 
 
} 
 
.slide-text .slide-title { 
 
    font-family: "Titillium Web", Arial, Helvetica, sans-serif; 
 
    font-weight: 700; 
 
} 
 
.slide-text .slide-content { 
 
    font-family: "Open Sans", Arial, Helvetica, sans-serif; 
 
    font-weight: 500; 
 
}
My HTML code is: 
 
<div class="slide-text"> 
 
    <div class="slide-title"><span class="text">[TITLE]</span> 
 
    </div> 
 
    <div class="slide-content"><span class="text">[TEXT]</span> 
 
    </div> 
 
</div>

Они отлично работают, до тех пор, как ни название или содержание более чем одна строка. Как только они пройдут две или более линии, пролет теряет внутреннюю прокладку. Изменение внутреннего интервала на display: inline-block; дает ему отображение блока, как только оно переходит в две строки. Есть ли способ получить эффект, который я ищу?

+3

Всегда проверять CSS-Tricks :) https://css-tricks.com/multi-line-padded-text/ –

+1

Не могли бы вы перепечатывать, что в качестве действительного ответа? Просто чтобы я мог счесть вас решением. Мне никогда не приходило в голову добавить слово «несколько» в мой поиск, иначе я мог бы найти его сам. Примеры работают на моем телефоне, поэтому я полон надежды. Спасибо! – Nate

ответ

4

У гуру CSS Криса Койера есть статья о CSS-трюках listing several methods to solve this. Один из методов - один с box-shadow. Это уже упоминается как ответ, но ему нужно еще больше любить работать в современном Firefox :).

.multi-line-padded { 
 
    background: black; 
 
    color: white; 
 
    
 
    /* For the top and bottom padding */ 
 
    padding: 0.5em 0; 
 
    
 
    /* Text height (1.0) + compensate for padding (0.5 * 2) */ 
 
    line-height: 2; 
 
    
 
    /* For the left and right padding */ 
 
    /* Vendor prefixes FIRST */ 
 
    -webkit-box-shadow: 1em 0 0 black, -1em 0 0 black; 
 
    -moz-box-shadow: 1em 0 0 black, -1em 0 0 black; 
 
    box-shadow: 1em 0 0 black, -1em 0 0 black; 
 
    
 
    /* Firefox defaults to `box-decoration-break: split`, we need `clone` */ 
 
    box-decoration-break: clone; 
 
}
<p><span class="multi-line-padded">You think water moves fast? You should see ice. It moves like it has a mind. Like it knows it killed the world once and got a taste for murder.</span></p> 
 

 
<p style="text-align: right;"><span class="multi-line-padded"><a href="http://slipsum.com/" style="color: white;">Samuel L. Ipsum</a></span></p>

+0

Спасибо. Это отлично работает и даже учитывает любой интервал между строками с моим полупрозрачным цветом фона. Спасибо. – Nate

3

Попробуйте следовать примеру в лучшем ответе this similar question. По сути, он предлагает использовать тень для создания прокладки.

span { 
    background:#ff0;color:#000; 
    box-shadow:0.2em 0 0 #ff0,-0.2em 0 0 #ff0; 
    -moz-box-shadow:0.2em 0 0 #ff0,-0.2em 0 0 #ff0; 
    -webkit-box-shadow:0.2em 0 0 #ff0,-0.2em 0 0 #ff0; 
} 

будет отступ всего текста в равной степени и добавить желтый отступы (изменить #ff0 любого значение HTML цвета вам нужно). Однако вам придется переформатировать существующий код, поскольку он будет отступать дальше тени.

+0

Спасибо. Он работает очень хорошо, хотя я получил правильный ответ Йозефу только потому, что он учитывает межстрочный интервал, но в основном ящик-тень экономит день. Позор Я не могу дать два правильных ответа ... – Nate

Смежные вопросы