2016-09-04 2 views
0

Ich mache eine Einrichtung, wo zwei Bilder und ein Text-Container nebeneinander sind mit Float links, aber ich brauche auch eine Overlay-Div mit etwas Text, wenn der Benutzer über schwebt, aber Dies unterbricht die Anzeige.Absolute Position für Kind, wenn Eltern Float verwenden

Hier ist mein HTML-Code:

<div class="container"> 
    <div class="parent-container"> 
    <div class="child-container"> 
     <img src="http://blog.hdwallsource.com/wp-content/uploads/2016/02/solid-color-wallpaper-21953-22506-hd-wallpapers.jpg" alt="" /> 
     <div class="overlay"> 
     <p>Some text</p> 
     </div> 
    </div> 
    <div class="child-container"> 
     <img src="http://www.pixelstalk.net/wp-content/uploads/2016/06/Solid-Color-HD-Wallpapers-For-Desktop-768x432.jpg" alt="" /> 
    </div> 
    <div class="child-container-text"> 
     <p>hhohdoioadoasabs</p> 
    </div> 
    </div> 
</div> 

Und hier ist mein CSS:

.parent-container { 
    position: relative; 
    width: 100%; 
} 

.child-container { 
    float: left; 
    position: relative; 
    width: 30%; 
} 

.child-container img { 
    position: absolute; 
    height: 100px; 
    width: 100%; 
} 

.child-container-text { 
    background-color: #000; 
    float: left; 
    height: 100px; 
    position: absolute; 
    width: 40%; 
} 

.overlay { 
    background-color: #FFF; 
    opacity: 0.3; 
    position: absolute; 
    z-index: 999; 
} 

Und hier ist ein CodePen mit ihm: https://codepen.io/leofontes/pen/ORPJWd?editors=1100

Jede Idee, warum sie gestapelt werden immer ? Ich hatte den gleichen Trick absoluter Positionierung für Overlays vor und es funktionierte, warum bricht der Schwimmer es?

Danke

+0

Ich habe auch Probleme, das Problem zu finden. Nachdem ich mit dem Code herumgespielt hatte, wurde mir klar, dass er genau das tut, was man von diesem Code erwartet. – NoobishPro

Antwort

1

https://jsfiddle.net/37LsfmLa/ die Geige für ein Arbeits Beispiel. (Sorry, ich habe keine Ahnung, wie Codepen funktioniert!)

Ihre Frage ist vage, aber ich glaube, das ist, was Sie suchen. Das Problem mit Ihrem Code ist, dass Sie den Bildern eine absolute Position gegeben haben, während Sie sie in einem floated div haben. Standard float Verhalten wird alle leeren div kollabieren Es wird jedes Element auf seine Inhaltsgröße verkleinern. Ihre Elemente haben ihren width Satz, der dieses Problem beheben sollte, aber es gibt noch einen anderen: sie haben keine Höhe. Das Ergebnis: Sie kollabieren. - Beachten Sie, dass Elemente mit position:absolute tun nicht als Inhalt zählen, die ihre Eltern dehnen.

Das war, wo Ihr Problem war. Sie müssen Ihren divs eine statische Höhe geben, damit so etwas funktioniert, obwohl ich mich wundere, warum Ihre Bilder sogar position:absolute haben? Aber, was auch immer dein Boot schwimmt. (Ich würde nicht position:absolute auf ein beliebiges Bild verwenden, das ein Element füllen sollte, aber das ist nur meine Vorliebe)

.child-container { 
    float: left; 
    position: relative; 
    width: 30%; 
    display: block; 
    height: 100px; 
} 

^die oben ist, was es festgelegt. Eine einfache height Eigenschaft.

+0

Ich brauchte sie, um absolut positioniert zu sein, damit ich das Overlay über ihnen machen konnte. Danke, das erklärte, warum das Verhalten passierte und löste mein Problem. – leofontes

+0

Ich persönlich würde Ihnen empfehlen, 'background-image' über CSS zu verwenden. Dadurch können Sie CSS verwenden, um die Bilder zu beschneiden und sicherzustellen, dass sie immer in die angegebenen Dimensionen passen. Dann könnten Sie das Overlay verwenden, ohne das zusätzliche HTML eines img oder so ziemlich jedes andere Overlay-Problem zu haben. Aber das liegt an dir! – NoobishPro