Półprzezroczysta warstwa kolorów nad obrazem tła?

Mam DIV I chciałbym umieścić wzór jako tło. Ten wzór jest szary. Aby było trochę przyjemniej, chciałbym położyć jasną przezroczystą "warstwę" koloru. Poniżej jest to, co próbowałem, ale co nie zadziałało. Czy istnieje sposób na umieszczenie kolorowej warstwy na obrazie tła?

Oto mój CSS:

background: url('../img/bg/diagonalnoise.png');
background-color: rgba(248, 247, 216, 0.7);
Author: Duncan Jones, 2012-02-07

11 answers

Oto jest:

.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 dla tego:

<div class="background">
    <div class="layer">
    </div>
</div>

Oczywiście musisz zdefiniować szerokość i wysokość do klasy .background, jeśli nie ma w niej innych elementów

 159
Author: Johannes Klauß,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-07 20:04:08

Wiem, że to naprawdę stary wątek, ale pojawia się na górze w Google, więc tu jest inna opcja.

Ten jest czystym CSS i nie wymaga żadnego dodatkowego HTML.

box-shadow: inset 0 0 0 1000px rgba(0,0,0,.2);

Istnieje zaskakująca liczba zastosowań funkcji box-shadow.

 216
Author: BevansDesign,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-06 14:48:49

Z CSS-Tricks... istnieje jeden krok, aby to zrobić bez indeksowania z i dodawania pseudo elementów-- wymaga gradientu liniowego, co myślę, że oznacza, że potrzebujesz wsparcia 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);
}
 81
Author: Tom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-26 14:19:28

Możesz również użyć gradientu liniowego i obrazu: 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');
}

Dzieje się tak, ponieważ funkcja gradientu liniowego tworzy obraz, który jest dodawany do stosu tła. https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient

 36
Author: TorranceScott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-23 20:17:55

Następnie potrzebujesz elementu zawijającego obrazek bg, a w nim elementu zawartości z kolorem bg:

<div id="Wrapper">
  <div id="Content">
    <!-- content here -->
  </div>
</div>

I 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%;
}
 23
Author: Sven Bieder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-06 14:17:08

Spróbuj tego. Mi pasuje.

.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;
}
 16
Author: yaufaniadam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-11 02:46:00

Użyłem tego jako sposobu zarówno do nakładania tintów kolorów, jak i gradientów na obrazy, aby dynamiczne nakładanie tekstu było łatwiejsze do stylizacji w celu uzyskania czytelności, gdy nie można kontrolować profili kolorów obrazu. Nie musisz się martwić o 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);
  }

Hope it helps

 12
Author: d4ncer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-04 02:06:13

Zobacz moją odpowiedź na https://stackoverflow.com/a/18471979/193494 dla wszechstronnego przeglądu możliwych rozwiązań:

  1. używanie wielu tła z gradientem liniowym,
  2. Wiele tła z wygenerowanym PNG, lub
  3. stylizacja an: after pseudoelement to act as a secondary background layer.
 4
Author: Kevin C.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:55:03

Dlaczego tak skomplikowane? Twoje rozwiązanie było prawie słuszne, ale łatwiej jest uczynić wzór przezroczystym, a kolor tła jednolitym . PNG może zawierać przezroczystości. Użyj programu photoshop, aby uczynić wzór przezroczystym, ustawiając warstwę na 70% i ponownie zapisując obraz. Następnie potrzebujesz tylko jednego selektora. Działa między przeglądarkami.

CSS:

.background {
   background: url('../img/bg/diagonalnoise.png');/* transparent png image*/
   background-color: rgb(248, 247, 216);
}

HTML:

<div class="background">
   ...
</div> 
 3
Author: Hexodus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-23 14:13:12

Możesz użyć półprzezroczystego piksela, który możesz wygenerować na przykład tutaj , nawet w base64 Oto przykład z białym 50%:

background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=),
url(../img/leftpanel/intro1.png);
background-size: cover, cover;
  • Bez wgrywania

  • Bez dodatkowego html

  • Myślę, że ładowanie powinno być szybsze niż box-shadow lub liniowy gradient

 2
Author: Fanky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-05 15:27:16

Oto prostsza sztuczka tylko z 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>
 0
Author: Zortext,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-06 14:36:06