2016-04-17 47 views
20

Widziałem to pytanie zarówno na SO, jak i na stronie internetowej. Ale żaden z nich nie jest tym, czego szukam.Jak dodać nakładkę kolorów do obrazu tła?

Jak dodać nakładkę koloru do obrazu tła przy użyciu tylko CSS?

Przykład HTML:

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

Przykład CSS:

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

Uwaga:

  • Chcę rozwiązać ten problem tylko za pomocą CSS. tj. NIE chcę dodawać elementu div dziecka w klasie div "testclass" dla nakładki kolorów.

  • Nie powinien to być efekt "hover" Chcę po prostu dodać kolorowy overay do obrazu tła.

  • Chcę móc używać nieprzezroczystości, tj. Szukam rozwiązania, które pozwala na kolor RGBA.

  • To nie jest garstka, szukam tylko jednego koloru, powiedzmy czarnego.

Czy to możliwe? (Byłbym zaskoczony, gdyby nie, ale nie byłem w stanie nic na ten temat znaleźć), a jeśli tak, to w jaki najlepszy sposób to osiągnąć? Wszystkie sugestie i porady są aprobowane!

+0

nakładka koloru na wierzchu obrazu tła lub za nim? –

+0

Są tysiące pytań na ten temat ... Naprawdę jestem zaskoczony, że nie znalazłeś oczywistych duplikatów pytań. –

+0

Tak, to pytanie jest duplikatem. – Fiido93

Odpowiedz

53

widzę 2 jest łatwy opcje:

  • wielokrotność tło z pojedynczym gradientem translucide o wersja obrazu
  • hudge wstawka cień

opcja gradient:

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; 
 
    }

cień opcjonalnie:

html { 
 
    min-height:100%; 
 
    background:url(http://lorempixel.com/800/600/nature/2); 
 
    background-size:cover; 
 
    box-shadow:inset 0 0 0 2000px rgba(255,0,150,0.3); 
 
    }

stary codepen kopalni z nielicznych przykładów

+0

Dzięki! Zaznacza, że ​​odpowiedź jest poprawna, ponieważ myślę, że twoja odpowiedź była tą, która najbardziej pasuje do moich potrzeb, a także sprawia, że ​​kod jest czystszy niż inne rozwiązania :) – Alex

4

background-image ma wiele wartości.

, więc kombinacja liniowego gradientu tylko jednego koloru i css blend modes wystarczy.

.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; 
} 

Należy zauważyć, że w ogóle nie ma obsługi trybów mieszania IE/Edge dla CSS.

+2

Lepiej wspomnieć o tabelach obsługi przeglądarek - http://caniuse.com/#feat=css-backgroundblendmode – Stickers

+0

masz rację, biorąc pod uwagę, że IE/Edge nie obsługuje całkowicie, a Safari spada trochę z tyłu. dzięki za wskazanie! – Uzi

8

Możesz użyć pseudo elementu do utworzenia nakładki.

.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

Możesz dodać odcień

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

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

+2

Czy nawet *** przeczytałeś *** pytanie? –

0

spróbować, to proste i jasne. Znalazłem go stąd: 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); 
}