2016-04-07 4 views
1

Gibt es eine CSS-Möglichkeit, um Bilder an einer (unteren) Zeile auszurichten, wobei der Text nach oben ausgerichtet ist? Mit anderen Worten, wie diese <li> Elemente gleiche Höhe geben? min-height ist eine schlechte Idee, weil die Anzahl der Buchstaben unbekannt ist, und der Überlauf: versteckt ist, kann auch nicht verwendet werden, da die Benutzer den vollständigen Text sehen sollten.Anzeige: Inline-Blockhöhe

HTML:

<ul> 
    <li><div class="text">Some random text.<div class="image"></div></div></li> 
    <li><div class="text">Some random text.<div class="image"></div></div></li> 
    <li><div class="text">Some random text.<div class="image"></div></div></li> 
    <li><div class="text">Some random text. Some random text. Some random text.<div class="image"></div></div></li> 
    <li><div class="text">Some random text.<div class="image"></div></div></li> 
</ul> 

CSS:

li { 
    float: left; 
    list-style: none; 
    background-color: #fff; 
} 

li div.text { 
    display: inline-block; 
    vertical-align: baseline; 
    width: 200px; 
    border: 1px solid #eee; 
} 

li div.image { 
    background-image: url('https://www.google.com/logos/doodles/2016/pandit-ravi-shankars-96th-birthday-6265541272535040-hp2x.jpg'); 
    background-size: cover; 
    height: 200px; 
    width: 200px; 
} 

JSFiddle

+0

dies ist Sie versuchen, zu tun? https://jsfiddle.net/9m2vnan1/1/ float und vertical-align gehen nicht mit. –

+0

@GCyrillus nein, ich brauche den Text nach oben und Bild nach unten ausgerichtet. – Martin

+0

okay, inbriced flex li/.text könnte eine Lösung sein https://jsfiddle.net/9m2vnan1/3/ –

Antwort

1

Versuchen ohne eine Liste und verwenden display: table sie alle die gleiche Höhe zu machen. Da wir wissen, dass das Bild 200px groß ist, werden wir es absolut an den unteren Rand der Box positionieren, mit einer zusätzlichen Füllung von 200px.

<div class="boxes"> 
<div class="row"> 
    <div class="box"> 
    <span>Here's some random text</span> 
    <img src="https://www.google.com/logos/doodles/2016/pandit-ravi-shankars-96th-birthday-6265541272535040-hp2x.jpg" /> 
    </div> 
    <div class="box"> 
    <span>Here's some random text. text text text text text</span> 
    <img src="https://www.google.com/logos/doodles/2016/pandit-ravi-shankars-96th-birthday-6265541272535040-hp2x.jpg" /> 
    </div> 
</div> 
    <div class="row"> 
    <div class="box"> 
    <span>Here's some random text</span> 
    <img src="https://www.google.com/logos/doodles/2016/pandit-ravi-shankars-96th-birthday-6265541272535040-hp2x.jpg" /> 
    </div> 
    <div class="box"> 
    <span>Here's some random text</span> 
    <img src="https://www.google.com/logos/doodles/2016/pandit-ravi-shankars-96th-birthday-6265541272535040-hp2x.jpg" /> 
    </div> 
</div> 
<div class="row"> 
    <div class="box"> 
    <span>Here's some random text</span> 
    <img src="https://www.google.com/logos/doodles/2016/pandit-ravi-shankars-96th-birthday-6265541272535040-hp2x.jpg" /> 
    </div> 
    <div class="box"> 
    <span>Here's some random text. Mooooooooooore Text. And more</span> 
    <img src="https://www.google.com/logos/doodles/2016/pandit-ravi-shankars-96th-birthday-6265541272535040-hp2x.jpg" /> 
    </div> 
</div> 
</div> 

Und hier ist die CSS

boxes{ 
    display: table; 
} 
.row{ 
    display: table-row; 
} 
.box{ 
    position: relative; 
    width: 200px; 
    background: #fff; 
    border: 1px solid #eee; 
    display: table-cell; 
    padding-bottom: 200px; // making space for our image 
} 
img{ 
    position: absolute; 
    height: 200px; 
    width: 200px; 
    bottom: 0; 
} 
span{ 
    display: block; 
    margin: 10px 0; 
} 

https://jsfiddle.net/L5mk352r/2/

+0

In diesem Beispiel werden die Elemente nicht in eine neue Zeile übertragen, sie sollten das automatisch mit Inline-Box oder Float machen: Links. – Martin

+0

@Martin ja, das sind sie. alles Wrapper in einer

ist eine Zeile. Das ist was anzeigen: Tabellenzeile; tut. – Paidenwaffle

+0

Entschuldigung, ich verstehe nicht: Wenn ich die Fensterbreite ändere, werden Elemente nicht auf die neue Zeile übertragen. Ich brauche ein ähnliches Verhalten wie "float: left" oder "inline-block" (es ist in meinem Beispiel zu sehen). In Ihrem Beispiel sind es immer 2 Einträge in der Zeile und außerdem wird die Breite verringert, wenn die Bildschirmbreite zu klein ist. – Martin