Полупрозрачный цветной слой поверх фонового изображения?
У меня есть DIV, и я хотел бы использовать шаблон в качестве фона. Этот шаблон серый. Поэтому, чтобы сделать его немного более приятным, я бы хотел нанести легкий прозрачный цветной "слой" поверх. Ниже я попробовал, но это не сработало. Есть ли способ нанести цветной слой поверх фонового изображения?
Вот мой CSS:
background: url('../img/bg/diagonalnoise.png');
background-color: rgba(248, 247, 216, 0.7);
Ответы
Ответ 1
Вот он:
.background {
background:url('../img/bg/diagonalnoise.png');
position: relative;
}
.layer {
background-color: rgba(248, 247, 216, 0.7);
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
HTML для этого:
<div class="background">
<div class="layer">
</div>
</div>
Конечно, вам нужно определить ширину и высоту класса .background
, если в нем нет других элементов
Ответ 2
Я знаю, что это действительно старая нить, но она отображается вверху в Google, так что вот еще один вариант.
Этот является чистым CSS и не требует дополнительного HTML.
box-shadow: inset 0 0 0 1000px rgba(0,0,0,.2);
Существует огромное количество применений для функции box-shadow.
Ответ 3
Из CSS-хитрости... есть один шаг, чтобы сделать это без z-индексации, а добавление псевдо elements-- требует линейного градиента, что, я думаю, означает, что вам нужна поддержка CSS3
.tinted-image {
background-image:
/* top, transparent red */
linear-gradient(
rgba(255, 0, 0, 0.45),
rgba(255, 0, 0, 0.45)
),
/* your image */
url(image.jpg);
}
Ответ 4
Вы также можете использовать линейный градиент и изображение:
http://codepen.io/anon/pen/RPweox
.background{
background: linear-gradient(rgba(0,0,0,.5), rgba(0,0,0,.5)),
url('http://www.imageurl.com');
}
Это связано с тем, что функция линейного градиента создает изображение, которое добавляется в фоновый стек. https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient
Ответ 5
Затем вам понадобится оберточный элемент с изображением bg и в нем элемент контента с цветом bg:
<div id="Wrapper">
<div id="Content">
<!-- content here -->
</div>
</div>
и css:
#Wrapper{
background:url(../img/bg/diagonalnoise.png);
width:300px;
height:300px;
}
#Content{
background-color:rgba(248,247,216,0.7);
width:100%;
height:100%;
}
Ответ 6
Попробуйте это. Работает для меня.
.background {
background-image: url(images/images.jpg);
display: block;
position: relative;
}
.background::after {
content: "";
background: rgba(45, 88, 35, 0.7);
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 1;
}
.background > * {
z-index: 10;
}
Ответ 7
Я использовал это как способ как применить цветовые оттенки, так и градиенты к изображениям, чтобы упростить стиль динамического наложения текста для четкости, когда вы не можете управлять профилями цветовых оттенков. Вам не нужно беспокоиться о z-index.
HTML
<div class="background-image"></div>
SASS
.background-image {
background: url('../img/bg/diagonalnoise.png') repeat;
&:before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(248, 247, 216, 0.7);
}
}
CSS
.background-image {
background: url('../img/bg/diagonalnoise.png') repeat;
}
.background-image:before {
content: '';
position: absolute;
top: 0;
bottom: 0;
right: 0;
left: 0;
background: rgba(248, 247, 216, 0.7);
}
Надеюсь, что это поможет
Ответ 8
См. мой ответ на fooobar.com/questions/52021/... для всестороннего обзора возможных решений:
- с использованием нескольких фонов с линейным градиентом,
- несколько фонов с сгенерированным PNG или
- styling an: после псевдоэлемента действовать как вторичный фоновый слой.
Ответ 9
Почему так сложно? Ваше решение было почти правильным, за исключением того, что вы можете сделать шаблон прозрачным, а фон - сплошным. PNG может содержать прозрачные пленки. Так что используйте Photoshop, чтобы сделать рисунок прозрачным, установив слой на 70% и сохранив изображение. Тогда вам нужен только один селектор. Работает кросс-браузер.
CSS:
.background {
background: url('../img/bg/diagonalnoise.png');/* transparent png image*/
background-color: rgb(248, 247, 216);
}
HTML:
<div class="background">
...
</div>
Это основные. Ниже приведен пример использования, где я переключился с background
background-image
но оба свойства работают одинаково.
body { margin: 0; }
div {
height: 110px !important;
padding: 1em;
text-transform: uppercase;
font-family: Arial, Helvetica, sans-serif;
font-weight: 600;
color: white;
text-shadow: 0 0 2px #333;
}
.background {
background-image: url('https://www.transparenttextures.com/patterns/arabesque.png');/* transparent png image */
}
.col-one {
background-color: rgb(255, 255, 0);
}
.col-two {
background-color: rgb(0, 255, 255);
}
.col-three {
background-color: rgb(0, 255, 0);
}
<div class="background col-one">
1. Background
</div>
<div class="background col-two">
2. Background
</div>
<div class="background col-three">
3. Background
</div>
Ответ 10
Вы можете использовать полупрозрачный пиксель, который вы можете создать, например, здесь, даже в base64
Вот пример с белым 50%:
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=),
url(../img/leftpanel/intro1.png);
background-size: cover, cover;
Ответ 11
Вот более простой трюк только с css.
<div class="background"> </div>
<style>
.background {
position:relative;
height:50px;
background-color: rgba(248, 247, 216, 0.7);
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAJElEQVQYV2NctWrVfwYkEBYWxojMZ6SDAmT7QGx0K1EcRBsFAADeG/3M/HteAAAAAElFTkSuQmCC);
}
.background:after {
content:" ";
background-color:inherit;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
</style>
Ответ 12
.background
{
background: linear-gradient(rgba(248, 247, 216, 0.7), rgba(248, 247, 216, 0.7)), url('../img/bg/diagonalnoise.png') no-repeat center fixed;
background-size:cover;
}