Couche de couleur Semi-transparente sur Fond-image?

j'ai une DIV Et je voudrais mettre un motif comme arrière-plan. Ce modèle est de couleur grise. Afin de le rendre un peu plus agréable, je voudrais mettre un peu de couleur transparente "couche". Voici ce que j'ai essayé, mais qui n'a pas fonctionné. Y a-t-il un moyen de mettre la couche de couleur sur l'image de fond?

Voici mon CSS:

background: url('../img/bg/diagonalnoise.png');
background-color: rgba(248, 247, 216, 0.7);
145
demandé sur Duncan Jones 2012-02-07 23:59:10

11 réponses

le voici:

.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 pour ceci:

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

bien sûr, vous devez définir une largeur et une hauteur à la classe .background , s'il n'y a pas d'autres éléments à l'intérieur de celui-ci

159
répondu Johannes Klauß 2012-02-07 20:04:08

je sais que c'est un fil très ancien, mais il apparaît en haut dans Google, donc voici une autre option.

celui-ci est CSS pur, et ne nécessite pas de HTML supplémentaire.

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

il y a un nombre surprenant d'utilisations pour la fonction box-shadow.

216
répondu BevansDesign 2014-06-06 14:48:49

de CSS-Tricks... il y a un moyen en une étape pour le faire sans z-indexation et l'ajout de pseudo éléments -- nécessite un gradient linéaire qui je pense signifie que vous avez besoin de soutien 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
répondu Tom 2018-09-26 14:19:28

vous pouvez également utiliser un gradient linéaire et une image: 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');
}

c'est parce que la fonction de gradient linéaire crée une Image qui est ajoutée à la pile de fond. https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient

36
répondu TorranceScott 2015-04-23 20:17:55

vous avez alors besoin d'un élément d'enrubannage avec l'image bg et dans lui l'élément de contenu avec la couleur bg:

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

et la 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
répondu Sven Bieder 2014-08-06 14:17:08

essayez ceci. Fonctionne pour moi.

.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
répondu yaufaniadam 2014-01-11 02:46:00

j'ai utilisé ceci comme un moyen d'appliquer des teintes de couleur aussi bien que des gradients aux images pour rendre le texte de superposition dynamique plus facile au style pour la lisibilité quand vous ne pouvez pas contrôler les profils de couleur d'image. Vous n'avez pas à vous soucier de 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);
  }

Espérons qu'il aide

12
répondu d4ncer 2016-05-04 02:06:13

voir ma réponse à https://stackoverflow.com/a/18471979/193494 pour un aperçu complet des solutions possibles:

  1. utilisant des fonds multiples avec un gradient linéaire,
  2. arrière-plans multiples avec PNG généré, ou
  3. Style an: après pseudoelement pour agir comme couche de fond secondaire.
4
répondu Kevin C. 2017-05-23 11:55:03

pourquoi si compliqué? Votre solution était presque juste, sauf qu'il est beaucoup plus facile de rendre le modèle transparent et la couleur de fond solide . PNG peut contenir des transparences. Utilisez donc photoshop pour rendre le motif transparent en réglant la couche à 70% et en resavant votre image. Alors vous n'avez besoin que d'un seul sélecteur. Les œuvres de la croix-navigateur.

CSS:

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

HTML:

<div class="background">
   ...
</div> 
3
répondu Hexodus 2015-02-23 14:13:12

vous pouvez utiliser un pixel semi-transparent, que vous pouvez générer par exemple ici , même en base64 Voici un exemple avec blanc 50%:

background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=),
url(../img/leftpanel/intro1.png);
background-size: cover, cover;
  • sans téléchargement

  • sans extra html

  • je suppose que le chargement devrait être plus rapide que le box-shadow ou la pente linéaire

2
répondu Fanky 2017-12-05 15:27:16

voici un truc plus simple avec seulement 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
répondu Zortext 2018-10-06 14:36:06