Hoe kan ik een afbeelding met kleur overlappen in CSS?

Ik wil een kleuroverlay op dit kopelement. Hoe kan ik dit doen met CSS?

Code

#header {
  /* Original url */
  /*background: url(../img/bg.jpg) 0 0 no-repeat fixed;*/
  background: url(https://fakeimg.pl/250x100/) 0 0 no-repeat fixed;
  height: 100%;
  overflow: hidden;
  color: #FFFFFF
}
<header id="header">
  <div class="row">
    <div class="col-xs-12">
      ...
    </div>
  </div>
</header>

Antwoord 1, autoriteit 100%

Je zou rgba moeten gebruiken om je element te bedekken met photos.rgba is een manier om een kleur in CSS te declareren die ondersteuning voor alfatransparantie bevat. je kunt .rowals overlaag gebruiken als volgt:

#header {
    background: url(../img/bg.jpg) 0 0 no-repeat fixed;
    height: 100%;
    overflow: hidden;
    color: #FFFFFF
 }
.row{
    background: rgba(39,62,84,0.82);
    overflow: hidden;
    height: 100%;
    z-index: 2;
}

Antwoord 2, autoriteit 25%

Je kunt dat doen in één regel CSS.

 background: linear-gradient(to right, #3204fdba, #9907facc), url(https://picsum.photos/1280/853/?random=1) no-repeat top center;

Hou ook de muisaanwijzer op de kleur in VS-codeen klik op de kleur om een hexadecimale kleur te zijn, en u kunt de ondoorzichtigheid van de kleuren eenvoudig wijzigen, in plaats van de rgba (rgba(48, 3, 252, 0.902), rgba(153, 7, 250, 0.902)), het kan kort zijn om
(#3204fde6, #9907fae6)

header{
   height: 100vh;
   color: white;
   font: bold 2em/2em monospace;
   display: flex;
   justify-content: center;
   align-items: center;
  background: linear-gradient(to right,#3204fdba, #9907facc), url(https://picsum.photos/1280/853/?random=1) no-repeat top center;
}
<header>is simply dummy text of the printing and<br> typesetting industry.</header>

Antwoord 3, autoriteit 19%

U kunt een negatieve superdikke semi-transparante rand gebruiken…

.red {
    outline: 100px solid rgba(255, 0, 0, 0.5) !important;
    outline-offset: -100px;
    overflow: hidden;
    position: relative;
    height: 200px;
    width: 200px;
}
<div class="red">Anything can be red.</div>
<h1>Or even image...</h1>
<img src="https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-logo.png?v=9c558ec15d8a" class="red"/>

4, Autoriteit 9%

#header.overlay {
    background-color: SlateGray;
    position:relative;
    width: 100%;
    height: 100%;
    opacity: 0.20;
    -moz-opacity: 20%;
    -webkit-opacity: 20%;
    z-index: 2;
}

zoiets. Voeg gewoon de overlayklasse aan de kop toe, uiteraard.


5, Autoriteit 6%

Gebruik het overgeslagen backgorund op het element en gebruik een lineaire gradiënt als uw kleur overlay door zowel start- als eindkleur-stops als dezelfde waarde te verklaren.

Houd er rekening mee dat lagen in een verklaring met meerdere achtergronden worden gelezen zoals ze worden weergegeven, van boven naar beneden, dus plaats eerst uw overlay en vervolgens uw bg-afbeelding:

#header {
  background: 
    linear-gradient(to bottom, rgba(100, 100, 0, 0.5), rgba(100, 100, 0, 0.5)) cover,
    url(../img/bg.jpg) 0 0 no-repeat fixed;
  height: 100%;
  overflow: hidden;
  color: #FFFFFF
}

Antwoord 6, autoriteit 5%

Je kunt met dergelijke instellingen ook een extra klas toevoegen. Overlay overlapt de inhoud niet en er is geen extra tag nodig

.overlay {
  position: relative;
  z-index: 0;
}
.overlay::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: red;
    opacity: .6;
    /* !!! */
    z-index: -1;
}

https://codepen.io/zeroox003/pen/yLYbpOB


Antwoord 7, autoriteit 5%

Hier is een creatief idee met box-shadow:

#header {
    background-image: url("apple.jpg");
    box-shadow: inset 0 0 99999px rgba(0, 120, 255, 0.5);
}

Wat gebeurt er

  1. De backgroundstelt de achtergrond voor je element in.

  2. De box-shadowis het belangrijkste onderdeel. Het plaatst in feite een heel grote schaduw aan de binnenkant van het element, bovenop de achtergrond, die semi-transparant is


Antwoord 8

Als je het niet erg vindt om absolute positionering te gebruiken, kun je je achtergrondafbeelding positioneren en vervolgens een overlay toevoegen met dekking.

div {
    width:50px;
    height:50px;
    background:   url('https://images1.wikia.nocookie.net/__cb20120626155442/adventuretimewithfinnandjake/images/6/67/Link.gif');
    position:absolute;
    left:0;
    top:0;
}
.overlay {
   background:red;
   opacity:.5;
}

Zie hier: http://jsfiddle.net/4yh9L/


Antwoord 9

In helpshift gebruikten ze de klas home-pageals

HTML

<div class="page home-page">...</div>

CSS

.home-page {
    background: transparent url("../images/backgrounds/image-overlay.png") repeat 0 0;
    background: rgba(39,62,84,0.82);
    overflow: hidden;
    height: 100%;
    z-index: 2;
}

je kunt zoiets proberen


Antwoord 10

Als je alleen een klas wilt toevoegen om de overlay toe te voegen:

span {
  padding: 5px;
}
.green {
  background-color: green;
  color: #FFF;
}
.overlayed {
  position: relative;
}
.overlayed::before {
  content: ' ';
  z-index: 1;
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  background-color: #00000080;
}
.stand-out {
  position: relative;
  z-index: 2;
}
<span class="green overlayed">with overlay</span>
<span class="green">without overlay</span>
<br>
<br>
<span class="green overlayed">
  <span class="stand-out">I stand out</span>
</span>

Other episodes