2015-02-13 2 views
1

Следующий HTML-код визуализируется CMS (я не могу изменить HTML, но я могу изменить CSS).CSS: inline paragraph clear/margin-bottom

.teaser p { 
 
    display: inline; 
 
    clear: both; 
 
    background-color: red; 
 
    margin-bottom: 20px; 
 
}
<div class="teaser"> 
 
<p>This is paragraph one</p> 
 
<p>This is paragraph two...</p> 
 
</div>

Я хочу добиться того, чтобы каждая строка абзаца имеет цвет фона - не весь абзац как ящик. Что-то вроде этого:

enter image description here

Изображение выше был использован в следующем после - они добавили пролетами в P-тег, который я не могу сделать: CSS : Background-color on multi-line text?

Есть ли вешать добавить перерыв после каждого абзаца и добавление нижней границы с помощью чистого CSS?

ответ

1

Используйте символы новой строки как содержимое: после?

.teaser { 
 
    display: block; 
 
    width: 4em; 
 
} 
 
.teaser p { 
 
    display: inline; 
 
    background-color: red; 
 
    margin-bottom: 20px; 
 
} 
 
.teaser p:after { 
 
    content: "\A\A"; 
 
    white-space:pre; 
 
}
<div class="teaser"> 
 
    <p>This is paragraph one</p> 
 
    <p>This is paragraph two...</p> 
 
</div>

+0

Фон должен занимать столько места, сколько необходимо, шириной текста, а не 100%. Проверьте изображение в вопросе. – dfsq

+0

Отредактировано ......... –

+0

«display: inline-block;» показывает фоновый цвет для всего блока, а не линию, как показано на снимке экрана. – chris

1

Вы должны быть в состоянии достичь, установив display свойство table значение:

.teaser p { 
 
    background-color: red; 
 
    margin-bottom: 20px; 
 
    display: table; 
 
}
<div class="teaser"> 
 
    <p>This is paragraph one</p> 
 
    <p>This is paragraph two...</p> 
 
</div>

+0

«дисплее p«s: table "показывает цвет фона абзаца как блок, а не линию. – chris

0

Не уверен, что если я полностью понимаю ваш вопрос, но это должно сделать трюк:

.teaser p { 
display: block; 
clear: both; 
background-color: red; 
margin-bottom: 20px; 
} 

Конечно, если вы хотите удалить поля, просто добавьте поле:

+0

Мне нужно «display: inline;» потому что я не хочу иметь фоновый цвет позади всего абзаца, но за каждой строкой. См. Снимок экрана. – chris

0

Отказ от ответственности: Это модифицированная версия кода, используемого на www.webdesignerdepot.com/ (парить в блоге название)

Вы можете достичь что-то подобное с фоном градиент, но настройка line-height приведет к разрыву между рядами. Он также полагается на элемент inline, что означает, что вертикальные поля не будут работать. Поэтому <br> 's, чтобы отделить p' S:

Edit: вы можете получить вокруг вопроса высоты линии, добавляя некоторое дополнение к

.teaser { 
 
    width: 60%; 
 
} 
 

 
.teaser p { 
 
    display: inline; 
 
    color: #FFF; 
 
    margin-bottom: 20px; 
 
    line-height: 130%; 
 
    padding: 3px; 
 

 
    background-size: 202.22% auto; 
 
    -webkit-background-size: 202.22% auto; 
 
    -moz-background-size: 202.22% auto; 
 
    background-image: linear-gradient(to right, rgba(255,255,255,0) 50%, #000 50%); 
 
    transition: background-position 0.5s ease-out; 
 
    -webkit-transition: background-position 0.5s ease-out; 
 
    background-position: -98.99% 0; 
 
}
<div class="teaser"> 
 
    <p>This is paragraph one This is paragraph one This is paragraph one This is paragraph one</p> 
 
    <br><br> 
 
    <p>This is paragraph one This is paragraph one This is paragraph one This is paragraph one</p> 
 
</div>

+0

В вашем примере «

» делает нижний край, но я не могу добавить дополнительный html :-( – chris

+0

Да, извините, я понял потом. Я пытался найти способ сделать эту работу без бр но я борюсь – Turnip