CSS граница сверху и снизу, но не на всю ширину

Я пытаюсь определить глобальный стиль для кавычек на сайте, над которым я работаю.

Цель состоит в том, чтобы оформить блочные кавычки так, чтобы они выглядели как на изображении ниже Я хотел бы избежать необходимости изменять структуру DOM.

Используя псевдоклассы, я хотел бы отобразить горизонтальные параллельные границы выше и ниже элемента, но линии должны быть только вдвое меньше ширины самого элемента и центрированы по горизонтали.

Макет цитаты

Это насколько я дошел до сих пор, но линии не отцентрированы должным образом.

blockquote {
    margin: 0 auto;
    position: relative;
    text-align: center;
    display: table;
    font-size: 15px;
}

blockquote:before {
    content: '\A';
    height: 1px;
    width: 40%;
    position: absolute;
    background: #000;
    top: -8px;
}

blockquote:after {
    content: '\A';
    height: 1px;
    width: 40%;
    position: absolute;
    background: #000;
    bottom: -8px;
}
<blockquote>
  Neque porro quisquam e porro quisquest qui dolorem ipsum quia dolor sit<br />
 est qui dolorem ipsum quia dolor sit amet rem ipsum quia 
</blockquote>

1 ответ

Решение

Если ширина фиксирована, вы можете использовать отрицательное поле слева от центра элемента. В твоем случае margin-left: -20%;:

blockquote { 
    margin: 0 auto;
    position: relative;
    text-align: center;
    display: table;
    font-size: 15px;
}
blockquote:before, blockquote:after {
    content: '';
    position: absolute;
    top: 0;
    left: 50%;         /* <-- put left edge in the middle */
    margin-left: -20%; /* <-- shift to the left by half of the width */
    width: 40%;
    height: 1px;
    background: #000;
}
blockquote:after {
    top: inherit;
    bottom: 0;
}
<blockquote>
  Neque porro quisquam e porro quisquest qui dolorem ipsum quia dolor sit<br>
 est qui dolorem ipsum quia dolor sit amet rem ipsum quia 
</blockquote>

Другие вопросы по тегам