2016-08-02 3 views
1

Ich versuche Text über ein transluzentes div zu bekommen. Dies ist in Chrome, wenn das relevant ist (z. B. ein Chrome-Fehler). Aus irgendeinem Grund ist der Text, wenn der Text oben auf dem Div liegt (durch einen negativen Rand oben verschoben), auch teilweise transparent.Text über einem transluzenten div bewirkt, dass der Text transluzent ist

HTML ist wie folgt (Dies ist eine vereinfachte Näherung):

<div class="background-image-div"></div> 

<div class="content"> 
    <p>Text goes here</p> 
</div> 

CSS ist wie folgt (dies ist eine vereinfachte Näherung): absolut

.background-image-div { 
    background: url(../images/Image.png) no-repeat right; 
    opacity: .5; 
} 

.content { 
    height: 480px; 
    margin-top: -271px; 
    max-width: 1200px; 
    padding-top: 15px; 
    padding-bottom: 15px; 
} 

So sollten background-image-div transparent sein, aber aus irgendeinem Grund ist der Text im Inhalts-div, der nicht sein sollte und der kein Kind von background-image-div ist, ebenfalls durchscheinend. Wenn ich die Opazität des background-image-divs deaktiviere, scheint es nicht auf dem Inhalts-div zu liegen, und ebenso, wenn ich keinen negativen margin-top auf dem content-div verwende (um es an dieselbe Position wie zu schieben) background-image-div), scheint es auch nicht durchscheinend zu sein.

Was passiert genau? Soweit ich das beurteilen kann, ist das nicht WAD. Ist es ein Fehler in Chrome?

+1

nur etwas Licht in diesen Schuppen, Ihr Text nicht durchscheinend erscheint. Es ist nur, dass es * unter * deiner transluzenten DIV gezogen wird, was eine gewisse Illusion schafft. Wenn Sie im 'content'-CSS einen' cursor: pointer; 'setzen, werden Sie feststellen, dass sich der Cursor nicht ändert - dies bedeutet, dass er unter dem Hintergrundelement liegt. – Santi

+0

@TylerRoper ~ Sie könnten dies als Antwort geschrieben haben. – sheriffderek

+0

@sheriffderek Ich habe die Frage vielleicht beantwortet, aber ich fühlte, dass es nicht wert war, als eine tatsächliche Antwort geschrieben zu werden, da ich keine Lösung für das Problem bereitstellte. – Santi

Antwort

0

Versuchen Sie dies und sagen Sie mir, wie es funktioniert, es hat für mich funktioniert.

HTML

<div id="picture"> 
    <div class="background-image-div"></div> 

    <div class="content"> 
     <p>Text goes here</p> 
    </div> 
    </div> 

CSS

.content { 
top:400px; 
left:200px; 
background-color:red; 
position:absolute; 
} 

.background-image-div { 
/*place your image in here*/ background: url('http://hk.blouinartinfo.com/sites/default/files/1349378871-56591.jpg') no-repeat; 
opacity: .5; 
background-size:cover; 
/*or whatever size you want*/ 
height:500px; 
width:500px; 
} 
+0

Dies beschreibt keine Lösung . – sheriffderek

1

Der Text ist nicht durchscheinend. Was passiert, ist, dass das transluzente Bild über Ihrem Text ist, so dass Sie den Text leichter sehen.

Hier ist eine modifizierte Version Ihres CSS. Die wichtige Ergänzung ist position:relative und z-index: -1 auf den .background-image-div

.content { 
    height: 480px; 
    margin-top: -271px; 
    max-width: 1200px; 
    padding-top: 15px; 
    padding-bottom: 15px; 
    color: black; font-size: 40px; font-weight: bold; 
} 

.background-image-div { 
    position: relative; 
    z-index: -1; 
    width: 600px; 
    height: 600px; 
    background: url(https://upload.wikimedia.org/wikipedia/commons/2/21/EverestfromKalarPatarcrop.JPG) no-repeat right; 
    opacity: .5; 
} 

Auf CodePen: https://codepen.io/vic3685/pen/PzdEEJ

+0

Um klar zu sein, müssen Sie eine explizite 'Position' für ein Element gesetzt haben, um den 'Z-Index'-Wert zu berücksichtigen. Sie könnten den Text auch einfach tiefer in das Markup einfügen und es wäre standardmäßig "oben". Im Allgemeinen gibt es wahrscheinlich eine viel bessere Möglichkeit, dies zu schreiben/ohne negative Margen usw. – sheriffderek