Использовать псевдоэлемент для создания фонового наложения
Моя цель состоит в том, чтобы иметь div с любым фоном, который затем использует псевдоэлемент для создания прозрачного белого наложения, таким образом, "осветляя" фон div. Однако "наложение" должно быть под содержимым div. Итак, в следующем примере:
<div class="container">
<div class="content">
<h1>Hello, World</h1>
</div>
</div>
.container {
background-color: red;
width: 500px;
height: 500px;
position: relative;
}
.content {
background-color: blue;
width: 250px;
}
.container::before {
content:"";
display: block;
height: 100%;
position: absolute;
top: 0;
left: 0;
width: 100%;
z-index: 1;
background-color: rgba(255, 255, 255, .8);
}
.content
div
не должен быть "под" белым наложением, ака .container::before
.
Я бы предпочел не использовать z-index
в .content
, но я могу, если это единственное решение.
Конечная цель: красный цвет должен быть покрыт, а текст и синий - нет.
JS скрипт: http://jsfiddle.net/1c5j9n4x/
Ответы
Ответ 1
Если псевдоэлемент имеет z-index
, вам нужно будет поместить элемент .content
и добавить значение z-index
в установить стекирование контекст.
Обновленный пример
.content {
background-color: blue;
width: 250px;
position: relative;
z-index: 1;
}
.. вы также можете удалить z-index
из псевдоэлемента, а затем просто поместить элемент .content
. При этом ни один из элементов не нуждается в z-index
. Причина этого в том, что псевдо-элемент :before
является, по существу, предыдущим элементом брата. Таким образом, следующий элемент .content
расположен сверху.
Альтернативный пример
.content {
background-color: blue;
width: 250px;
position: relative;
}
.container::before {
content:"";
display: block;
height: 100%;
position: absolute;
top: 0;
left: 0;
width: 100%;
background-color: rgba(255, 255, 255, .8);
}