Полупрозрачный цветной слой поверх фонового изображения?

У меня есть 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;
  • без загрузки

  • без дополнительного html

  • Я думаю, что загрузка должна быть быстрее, чем коробка-тень или линейный градиент

Ответ 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;
}