2016-08-30 3 views
0

Ich möchte, dass die gelbe Box den gesamten verfügbaren Platz sowohl vertikal als auch horizontal füllt, ohne das Bild zu überlagern.Floating Child div um nur verbleibenden Platz zu füllen

(Ich versuche, es zu tun, ohne Tabelleneigenschaften zu verwenden)

Irgendwelche Ideen?

Dies ist, wie es jetzt aussieht:

This is how it looks now

und das ist, was ich will:

and this is what i want

.content-block-body{ 
 
    width: 100%; 
 
    background-color: brown; 
 
    overflow:auto; 
 
} 
 
.content-block-text{ 
 
    float:left; 
 
    background-color: red; 
 
    padding:2%; 
 
} 
 
.content-block-image{ 
 
    background-color: greenyellow; 
 
    float: right; 
 
}
<div class="content-block-body"> 
 
    <div class="content-block-text"> 
 
    <div>月額固定と成果報酬が選べます</div> 
 
    <div>成果報酬額に上限おもうけられます</div> 
 
    <div>料金が明瞭で予算に合わせた対策が可能</div> 
 
    </div> 
 
    <div class="content-block-image"> <img src="image-1.jpg"> </div> 
 
</div>

+0

ist Position: absolut; Außer Frage? edit: Egal, die Sache, über die ich nachgedacht habe, hilft dir dabei nicht. – ravb79

+0

Ihr Schnipsel ist ein bisschen anders als Ihre Screenshots ... – kukkuz

+0

Aus Neugier: Warum nicht 'display: table' und' display: table-cell'? – Seb

Antwort

1

Der p Problem ist die float: left macht den gelben Bereich nicht "strecken". Damit das Bild rechts vom Text schwebt, muss es vor dem Text stehen. So ändern wir die Reihenfolge der Inhaltsblöcke:

<div class="content-block-body"> 
    <div class="content-block-image"> <img src="image-1.jpg"> </div> 
    <div class="content-block-text"> 
    <div>月額固定と成果報酬が選べます</div> 
    <div>成果報酬額に上限おもうけられます</div> 
    <div>料金が明瞭で予算に合わせた対策が可能</div> 
    </div> 
</div> 

Und dann die CSS anpassen:

.content-block-body { 
    width: 100%; 
    background-color: brown; 
    overflow:auto; 
} 
.content-block-text{ 
    /*float:left;*/ /* this we remove */ 
    background-color: red; 
    padding:2%; 
    /* this we add: */ 
    overflow: auto; 
} 
.content-block-image{ 
    background-color: greenyellow; 
    float: right; 
} 

Beachten Sie, dass, wenn Sie die Dinge schweben Sie wahrscheinlich hinzufügen müssen, was ein „clearfix“ genannt . In diesem Fall gelten die clearfix zum .content-block-body, um es vertikal zu machen erstrecken sich die Floats http://nicolasgallagher.com/micro-clearfix-hack/

+0

Dies ist die richtige Antwort. Der 'float: left' ist der Grund dafür, dass Ihr gelber Bereich nicht die gesamte Breite ausfüllt und nicht den gesamten Raum ausfüllt. – henry

+0

@henry und so werden wir unser Markup jedes Mal ändern, wenn das passiert? hmmm OK – dippas

+0

Wie immer gibt es mehr als einen Weg zum Ziel. In einer perfekten Welt wären HTML und CSS vollständig entkoppelt, aber je nach Grafikdesign müssen sie sich dabei manchmal aneinander anpassen. Der Trick, nur ein Element zu schweben und 'overflow: auto' auf andere Funktionen in vielen Browsern zu setzen, verwendet nicht flex, der 4 verschiedene Syntaxen hat, und verwendet keine Tabelleneigenschaften, die der Verfasser vermeiden wollte. Man muss entscheiden, wofür man was tradet. – Seb

0

Sie passen müssen Breite des linken Blocks und rechten Block in CSS angeben und Bildbreite 100%

.content-block-body{ 
 
    width: 100%; 
 
    background-color: brown; 
 
    overflow:auto; 
 
} 
 
.content-block-text{ 
 
    float:left; 
 
    background-color: yellow; 
 
    padding:2%; 
 
    width:56%; 
 
} 
 
.content-block-image{ 
 
    background-color: greenyellow; 
 
    float: right; 
 
    min-width:200px; 
 
    width:40%; 
 
} 
 
.content-block-image img{ 
 
    width:100%; 
 
}
<div class="content-block-body"> 
 
    <div class="content-block-text"> 
 
    <div>月額固定と成果報酬が選べます</div> 
 
    <div>成果報酬額に上限おもうけられます</div> 
 
    <div>料金が明瞭で予算に合わせた対策が可能</div> 
 
    </div> 
 
    <div class="content-block-image"> <img src="image-1.jpg"> </div> 
 
</div>
machen

0

Sie können css3 flex verwenden. Das ist die einzige Sache, die gut funktioniert, wenn es darum geht, die Höhe des Elternknotens für den Kindknoten zu erhalten. Alle Hacks für alte Browser funktionieren nicht immer.

.content-block-body{ 
 
    width: 100%; 
 
    background-color: brown; 
 
    overflow:auto; 
 
    display: flex; 
 
    clear: both; 
 
} 
 
.content-block-text{ 
 
    float:left; 
 
    background-color: red; 
 
    align-items: stretch; 
 
} 
 
.content-block-image{ 
 
    flex: 1; 
 
    background-color: greenyellow; 
 
} 
 

 
.content-block-image img{ 
 
    float: right; 
 
}
<div class="content-block-body"> 
 
    <div class="content-block-text"> 
 
    <div>月額固定と成果報酬が選べます</div> 
 
    <div>成果報酬額に上限おもうけられます</div> 
 
    <div>料金が明瞭で予算に合わせた対策が可能</div> 
 
    </div> 
 
    <div class="content-block-image"> 
 
    <img src="//placehold.it/250x250"> 
 
    </div> 
 
</div>

auch diesen kühlen Ort für Schnipsel Code Besuche auf centering in css.

Verwandte Themen