Mit CSS und CSS3 können Sie viele Dinge tun, doch das Einstellen einer Opazität für einen CSS-Hintergrund gehört nicht dazu. Wenn Sie jedoch kreativ werden, gibt es eine Menge kreativer Möglichkeiten, es aussehen zu lassen, als würden Sie die Opazität des CSS-Hintergrundbildes ändern. Beide folgenden Methoden haben eine hervorragende Browserunterstützung bis hinunter zu Internet Explorer 8.

Methode 1: Verwenden absoluter Positionierung und eines Bildes

der illustration for: Methode 1: Verwenden absoluter Positionierung und eines Bildes

Diese Methode ist genau so, wie sie klingt. Sie verwenden einfach die absolute Positionierung auf einem normalen img-Tag und lassen es so aussehen, als ob Sie die CSS-Eigenschaft background-image verwendet hätten. Sie müssen nur das Bild in einen Container position: relative; platzieren. Hier sehen Sie, wie das HTML-Markup generell aussieht:

				
					
<div class="demo_wrap">

  <h1>Hello World!</h1>

  <img src="https://www.progressiverobot.com/images/how-to-change-a-css-background-images-opacity-de-section-1.png">

</div>

				
			

Und hier, wie Ihr CSS aussehen wird:

				
					
.demo_wrap {

    position: relative;

    overflow: hidden;

    padding: 16px;

    border: 1px dashed green;

}

.demo_wrap h1 {

    padding: 100px;

    <^>position: relative;<^>

    <^>z-index: 2;<^>

}

.demo_wrap img {

    <^>position: absolute;<^>

    left: 0;

    top: 0;

    width: 100%;

    height: auto;

    <^>opacity: 0.6;<^>

}

				
			

Der Trick dabei ist, das Bild absolut zu positionieren und zu strecken, damit es den gesamten übergeordneten Container ausfüllt. Und alles andere relativ zu positionieren, damit Sie einen z-index setzen können, der es über das Bild zieht.

Hier ist eine Live-Demo:

<style>

.demo_wrap {

position: relative;

overflow: hidden;

padding: 16px;

border: 1px dashed green;

}

.demo_wrap h1 {

padding: 50px;

position: relative;

z-index: 2;

}

.demo_wrap img {

position: absolute;

left: 0;

top: 0;

width: 100%;

height: auto;

opacity: 0.6;

border: none;

}

</style>

				
					&lt;div class="demo_wrap"&gt;
				
			

<h1>Hallo Welt!</h1>

<img src="images/how-to-change-a-css-background-images-opacity-de-section-1.png;

</div>

Methode 2: Verwenden von CSS-Pseudo-Elementen

Diese Methode ist einfach, sobald Sie sie sehen, und ist definitiv meine bevorzugte Methode. Mit CSS-Pseudo-Elementen von entweder :before oder :after erstellen Sie ein div mit einem Hintergrundbild und legen eine Opazität darauf fest. Hier sehen Sie, wie Ihr HTML-Markup etwa aussehen würde:

				
					
&lt;div class="demo_wrap"&gt;

  &lt;h1&gt;Hello World!&lt;/h1&gt;

&lt;/div&gt;

				
			

Und hier, wie das CSS aussieht:

				
					
   .demo_wrap {

    position: relative;

    background: #5C97FF;

    overflow: hidden;

}

.demo_wrap h1 {

    padding: 50px;

    &lt;^&gt;position: relative;&lt;^&gt;

    &lt;^&gt;z-index: 2;&lt;^&gt;

}

/* You could use :after - it doesn't really matter */

.demo_wrap:before {

    content: ' ';

    display: block;

    &lt;^&gt;position: absolute;&lt;^&gt;

    left: 0;

    top: 0;

    width: 100%;

    height: 100%;

    &lt;^&gt;z-index: 1;&lt;^&gt;

    &lt;^&gt;opacity: 0.6;&lt;^&gt;

    background-image: url('images/how-to-change-a-css-background-images-opacity-de-section-1.png');

    background-repeat: no-repeat;

    background-position: 50% 0;

    background-size: cover;

}

				
			

Auch hier müssen wir den z-index des Inhalts (in diesem Fall das <h1>) über das Hintergrund-Pseudoelement verschieben, und wir müssen die position: absolute; und den z-index: 1 auf dem Pseudoelement :before explizit definieren.

Die restlichen Attribute des Pseudoelements dienen dazu, es so zu positionieren, dass es 100 % des übergeordneten Elements überschneidet. Außerdem verwenden wir eine clevere neue CSS-Eigenschaft: background-size: cover, die den Hintergrund so dimensioniert, dass er das Element bedeckt, ohne die Proportionen zu verändern. Hier ist eine schöne kleine Demo dieser Methode:

<style>

.demo_wrap2 {

position: relative;

overflow: hidden;

padding: 16px;

border: 1px dashed green;

}

.demo_wrap2 h1 {

padding: 50px;

position: relative;

z-index: 2;

}

.demo_wrap2:before {

content: ' ';

display: block;

position: absolute;

left: 0;

top: 0;

width: 100%;

height: 100%;

z-index: 1;

opacity: 0.6;

background-image: url('images/how-to-change-a-css-background-images-opacity-de-section-1.png;);

background-repeat: no-repeat;

background-position: 50% 0;

background-size: cover;

}

</style>

				
					&lt;div class="demo_wrap2"&gt;
				
			

<h1>Hallo Welt!</h1>

</div>