Подтвердить что ты не робот

Как добавить наложение на фоновое изображение?

Я много видел этот вопрос как в SO, так и в Интернете. Но ни один из них не был тем, что я ищу.

Как добавить наложение цвета на фоновое изображение, используя только CSS?

Пример HTML:

<div class="testclass">
</div>

Пример CSS:

.testclass {
    background-image: url("../img/img.jpg");
}

Пожалуйста, обратите внимание:

  • Я хочу решить эту проблему, используя только CSS. т.е. я не хочу добавлять дочерний div в div "testclass" для наложения цвета.

  • Это не должен быть "эффект наведения", я просто хочу добавить цветовой фон к фоновому изображению.

  • Я хочу иметь возможность использовать непрозрачность, то есть я ищу решение, которое позволяет цвет RGBA.

  • Я ищу только один цвет, скажем, черный. Не градиент.

Это возможно? (Я был бы удивлен, если нет, но я не смог ничего найти по этому поводу), и если так, каков наилучший способ достичь этого?

Все предложения и советы приветствуются!

4b9b3361

Ответ 1

Я вижу 2 простых варианта:

  • многократный фон с прозрачным единственным градиентом по изображению
  • Hudge Inset Shadow

опция градиента:

html {
  min-height:100%;
  background:linear-gradient(0deg,rgba(255,0,150,0.3),rgba(255,0,150,0.3)),url(http://lorempixel.com/800/600/nature/2);
  background-size:cover;
  }
  

Ответ 2

Вы можете использовать псевдоэлемент для создания наложения.

.testclass {
  background-image: url("../img/img.jpg");
  position: relative;
}
.testclass:before {
  content: "";
  position: absolute;
  left: 0; right: 0;
  top: 0; bottom: 0;
  background: rgba(0,0,0,.5);
}

Ответ 3

background-image принимает несколько значений.

поэтому комбинация только одного цветового линейного градиента и css blend modes сделает трюк.

.testclass {
    background-image: url("../images/image.jpg"), linear-gradient(rgba(0,0,0,0.5),rgba(0,0,0,0.5));
    background-blend-mode: overlay;
}

Обратите внимание, что поддержки IE/Edge для blend-режимов CSS вообще нет.

Ответ 4

Попробуйте это, это просто и понятно. Я нашел это отсюда: https://css-tricks.com/tinted-images-multiple-backgrounds/

.tinted-image {

  width: 300px;
  height: 200px;

  background: 
    /* top, transparent red */ 
    linear-gradient(
      rgba(255, 0, 0, 0.45), 
      rgba(255, 0, 0, 0.45)
    ),
    /* bottom, image */
    url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/3/owl1.jpg);
}

Ответ 5

Вы можете добавить оттенок

Html  (<div class=tint>img src chose picture of what color overlay you want</div>)

Css (.tint img{"tranparrent:50%;"}) ****