2016-12-08 2 views
1

Ich habe ein dreispaltiges Layout erstellt, aber trotz der Verwendung von display: flex auf dem Container werden die untergeordneten Elemente nicht automatisch die gleiche Höhe erhalten. Ich bin kein Flexbox-Experte, daher bemühe ich mich, das Problem zu identifizieren.Mit Flexbox konnte keine automatische Höhe erreicht werden

Hier ist mein Code:

.events-row { 
 
    display: flex; 
 
} 
 
.events-row .event-card:hover { 
 
    margin-top: -5px; 
 
} 
 
.events-row .event-card .event-card-img { 
 
    position: relative; 
 
} 
 
.events-row .event-card .event-card-img:hover { 
 
    opacity: 0.5; 
 
} 
 
.events-row .event-card .event-card-img img { 
 
    display: block; 
 
    width: 100%; 
 
} 
 
.events-row .event-card .event-card-img .series-caption { 
 
    position: absolute; 
 
    top: 0; 
 
    left: 0; 
 
    padding: 5px 10px; 
 
    font-size: 1.5em; 
 
    color: #fff; 
 
    background: #666; 
 
} 
 
.events-row .event-card .event-card-info { 
 
    padding: 15px; 
 
    text-align: left; 
 
    color: #666; 
 
    background: #eaeaea; 
 
} 
 
.events-row .event-card .event-card-info h1 { 
 
    font-size: 2.5em; 
 
    color: #000; 
 
} 
 
.events-row .event-card .event-card-info h2 { 
 
    font-size: 2em; 
 
    line-height: 1.5; 
 
} 
 
.events-row .event-card .event-card-info p { 
 
    padding: 15px 0; 
 
    font-size: 1.75em; 
 
} 
 
.events-row .event-card .event-card-info p a { 
 
    font-size: 1.1em; 
 
} 
 
.events-row .event-card .event-card-info .button-cont { 
 
    text-align: center; 
 
} 
 
.events-row .event-card .event-card-info .button-cont .button { 
 
    display: inline-block; 
 
    margin: 30px; 
 
    padding: 10px 30px; 
 
    font-size: 1.8em; 
 
}
<div class="events-row"> 
 
    <div class="event-card"> 
 
    <div class="event-card-img"> 
 
     <a href="#"> 
 
     <img src="http://placeholdit.imgix.net/~text?txtsize=36&txt=Event%20Photo&w=382&h=275" /> 
 
     </a> 
 
    </div> 
 
    <div class="event-card-info"> 
 
     <h1>Event title</h1> 
 
     <h2>Event date</h2> 
 
     <h2>Event venue</h2> 
 
     <p> 
 
     Cu cum quem eros periculis, volutpat tractatos accommodare eu has, ex singulis assueverit usu. 
 
     <a href="#">Learn More <span class="chevron right"></span></a> 
 
     </p> 
 
     <div class="button-cont"> 
 
     <a class="button blue-button" href="#">Buy Tickets</a> 
 
     </div> 
 
    </div> 
 
    </div> 
 
    <div class="event-card"> 
 
    <div class="event-card-img"> 
 
     <a href="#"> 
 
     <img src="http://placeholdit.imgix.net/~text?txtsize=36&txt=Event%20Photo&w=382&h=275" /> 
 
     </a> 
 
     <div class="series-caption">Series title</div> 
 
    </div> 
 
    <div class="event-card-info"> 
 
     <h1>Event title</h1> 
 
     <h2>Event date</h2> 
 
     <h2>Event venue</h2> 
 
     <p> 
 
     Cu cum quem eros periculis, volutpat tractatos accommodare eu has, ex singulis assueverit usu. 
 
     <a href="#">Learn More <span class="chevron right"></span></a> 
 
     </p> 
 
    </div> 
 
    </div> 
 
    <div class="event-card"> 
 
    <div class="event-card-img"> 
 
     <a href="#"> 
 
     <img src="http://placeholdit.imgix.net/~text?txtsize=36&txt=Event%20Photo&w=382&h=275" /> 
 
     </a> 
 
     <div class="series-caption">Series title</div> 
 
    </div> 
 
    <div class="event-card-info"> 
 
     <h1>Event title</h1> 
 
     <h2>Event date</h2> 
 
     <h2>Event venue</h2> 
 
     <p> 
 
     Cu cum quem eros periculis, volutpat tractatos accommodare eu has, ex singulis assueverit usu. 
 
     <a href="#">Learn More <span class="chevron right"></span></a> 
 
     </p> 
 
    </div> 
 
    </div> 
 
</div>

Demo: http://codepen.io/ourcore/pen/gLKeLV.

+0

Sie sind die gleiche Höhe für mich in Chrom. Das heißt, wenn Sie .button-cont unterhalb der ersten Spalte nicht einschließen. – sol

+0

Mit Ausnahme der Kauf-Tickets unten und dem Schweben, es sieht alles gut für mich aus, können Sie genauer sein? – Brad

+0

Nun, ohne die Taste wäre es die gleiche Höhe, ob ich Flexbox verwendet oder nicht, weil der Inhalt derselbe wäre. Ich versuche unabhängig vom Inhalt die gleiche Höhe zu erreichen. Also, ich möchte den Button hinzufügen. –

Antwort

1

Sie sind von gleicher Höhe. Wenn Sie einen Rahmen hinzufügen:

border: 1px solid #ccc; 

Sie sehen die gleiche Höhe aus. Sie müssen lediglich den Hintergrund zum übergeordneten Element hinzufügen, also .event-card.

Alternative Lösung Wesen Zugabe den Hintergrund der .event-card:

.events-row .event-card { 
    background: #eaeaea; 
} 

.events-row { 
 
    display: flex; 
 
} 
 
.events-row .event-card { 
 
    border: 1px solid #ccc; 
 
    background: #eaeaea; 
 
} 
 
.events-row .event-card:hover { 
 
    margin-top: -5px; 
 
} 
 
.events-row .event-card .event-card-img { 
 
    position: relative; 
 
} 
 
.events-row .event-card .event-card-img:hover { 
 
    opacity: 0.5; 
 
} 
 
.events-row .event-card .event-card-img img { 
 
    display: block; 
 
    width: 100%; 
 
} 
 
.events-row .event-card .event-card-img .series-caption { 
 
    position: absolute; 
 
    top: 0; 
 
    left: 0; 
 
    padding: 5px 10px; 
 
    font-size: 1.5em; 
 
    color: #fff; 
 
    background: #666; 
 
} 
 
.events-row .event-card .event-card-info { 
 
    padding: 15px; 
 
    text-align: left; 
 
    color: #666; 
 
    background: #eaeaea; 
 
} 
 
.events-row .event-card .event-card-info h1 { 
 
    font-size: 2.5em; 
 
    color: #000; 
 
} 
 
.events-row .event-card .event-card-info h2 { 
 
    font-size: 2em; 
 
    line-height: 1.5; 
 
} 
 
.events-row .event-card .event-card-info p { 
 
    padding: 15px 0; 
 
    font-size: 1.75em; 
 
} 
 
.events-row .event-card .event-card-info p a { 
 
    font-size: 1.1em; 
 
} 
 
.events-row .event-card .event-card-info .button-cont { 
 
    text-align: center; 
 
} 
 
.events-row .event-card .event-card-info .button-cont .button { 
 
    display: inline-block; 
 
    margin: 30px; 
 
    padding: 10px 30px; 
 
    font-size: 1.8em; 
 
}
<div class="events-row"> 
 
    <div class="event-card"> 
 
    <div class="event-card-img"> 
 
     <a href="#"> 
 
     <img src="http://placeholdit.imgix.net/~text?txtsize=36&txt=Event%20Photo&w=382&h=275" /> 
 
     </a> 
 
    </div> 
 
    <div class="event-card-info"> 
 
     <h1>Event title</h1> 
 
     <h2>Event date</h2> 
 
     <h2>Event venue</h2> 
 
     <p> 
 
     Cu cum quem eros periculis, volutpat tractatos accommodare eu has, ex singulis assueverit usu. 
 
     <a href="#">Learn More <span class="chevron right"></span></a> 
 
     </p> 
 
     <div class="button-cont"> 
 
     <a class="button blue-button" href="#">Buy Tickets</a> 
 
     </div> 
 
    </div> 
 
    </div> 
 
    <div class="event-card"> 
 
    <div class="event-card-img"> 
 
     <a href="#"> 
 
     <img src="http://placeholdit.imgix.net/~text?txtsize=36&txt=Event%20Photo&w=382&h=275" /> 
 
     </a> 
 
     <div class="series-caption">Series title</div> 
 
    </div> 
 
    <div class="event-card-info"> 
 
     <h1>Event title</h1> 
 
     <h2>Event date</h2> 
 
     <h2>Event venue</h2> 
 
     <p> 
 
     Cu cum quem eros periculis, volutpat tractatos accommodare eu has, ex singulis assueverit usu. 
 
     <a href="#">Learn More <span class="chevron right"></span></a> 
 
     </p> 
 
    </div> 
 
    </div> 
 
    <div class="event-card"> 
 
    <div class="event-card-img"> 
 
     <a href="#"> 
 
     <img src="http://placeholdit.imgix.net/~text?txtsize=36&txt=Event%20Photo&w=382&h=275" /> 
 
     </a> 
 
     <div class="series-caption">Series title</div> 
 
    </div> 
 
    <div class="event-card-info"> 
 
     <h1>Event title</h1> 
 
     <h2>Event date</h2> 
 
     <h2>Event venue</h2> 
 
     <p> 
 
     Cu cum quem eros periculis, volutpat tractatos accommodare eu has, ex singulis assueverit usu. 
 
     <a href="#">Learn More <span class="chevron right"></span></a> 
 
     </p> 
 
    </div> 
 
    </div> 
 
</div>

Hinweis: Verwenden Sie den Vollbildmodus und überprüfen.

CodePen: http://codepen.io/anon/pen/JbZLya

+1

Das macht Sinn. Vielen Dank! –

1

Geben background-color-.event-card, wie:

.event-card { 
    background: #eaeaea; 
} 

Hier finden Sie aktuelle aktualisiert Codepen das Snippet unten (Verwendung Vollbild):

.events-row { 
 
    display: flex; 
 
} 
 
.events-row .event-card { 
 
    background: #eaeaea; 
 
} 
 
.events-row .event-card:hover { 
 
    margin-top: -5px; 
 
} 
 
.events-row .event-card .event-card-img { 
 
    position: relative; 
 
} 
 
.events-row .event-card .event-card-img:hover { 
 
    opacity: 0.5; 
 
} 
 
.events-row .event-card .event-card-img img { 
 
    display: block; 
 
    width: 100%; 
 
} 
 
.events-row .event-card .event-card-img .series-caption { 
 
    position: absolute; 
 
    top: 0; 
 
    left: 0; 
 
    padding: 5px 10px; 
 
    font-size: 1.5em; 
 
    color: #fff; 
 
    background: #666; 
 
} 
 
.events-row .event-card .event-card-info { 
 
    padding: 15px; 
 
    text-align: left; 
 
    color: #666; 
 
    background: #eaeaea; 
 
} 
 
.events-row .event-card .event-card-info h1 { 
 
    font-size: 2.5em; 
 
    color: #000; 
 
} 
 
.events-row .event-card .event-card-info h2 { 
 
    font-size: 2em; 
 
    line-height: 1.5; 
 
} 
 
.events-row .event-card .event-card-info p { 
 
    padding: 15px 0; 
 
    font-size: 1.75em; 
 
} 
 
.events-row .event-card .event-card-info p a { 
 
    font-size: 1.1em; 
 
} 
 
.events-row .event-card .event-card-info .button-cont { 
 
    text-align: center; 
 
} 
 
.events-row .event-card .event-card-info .button-cont .button { 
 
    display: inline-block; 
 
    margin: 30px; 
 
    padding: 10px 30px; 
 
    font-size: 1.8em; 
 
}
<div class="events-row"> 
 
    <div class="event-card"> 
 
    <div class="event-card-img"> 
 
     <a href="#"><img src="http://placeholdit.imgix.net/~text?txtsize=36&txt=Event%20Photo&w=382&h=275" /></a> 
 
    </div> 
 
    <div class="event-card-info"> 
 
     <h1>Event title</h1> 
 
     <h2>Event date</h2> 
 
     <h2>Event venue</h2> 
 
     <p> 
 
     Cu cum quem eros periculis, volutpat tractatos accommodare eu has, ex singulis assueverit usu. 
 
     <a href="#">Learn More <span class="chevron right"></span></a> 
 
     </p> 
 
     <div class="button-cont"> 
 
     <a class="button blue-button" href="#">Buy Tickets</a> 
 
     </div> 
 
    </div> 
 
    </div> 
 
    <div class="event-card"> 
 
    <div class="event-card-img"> 
 
     <a href="#"><img src="http://placeholdit.imgix.net/~text?txtsize=36&txt=Event%20Photo&w=382&h=275" /></a> 
 
     <div class="series-caption">Series title</div> 
 
    </div> 
 
    <div class="event-card-info"> 
 
     <h1>Event title</h1> 
 
     <h2>Event date</h2> 
 
     <h2>Event venue</h2> 
 
     <p> 
 
     Cu cum quem eros periculis, volutpat tractatos accommodare eu has, ex singulis assueverit usu. 
 
     <a href="#">Learn More <span class="chevron right"></span></a> 
 
     </p> 
 
    </div> 
 
    </div> 
 
    <div class="event-card"> 
 
    <div class="event-card-img"> 
 
     <a href="#"><img src="http://placeholdit.imgix.net/~text?txtsize=36&txt=Event%20Photo&w=382&h=275" /></a> 
 
     <div class="series-caption">Series title</div> 
 
    </div> 
 
    <div class="event-card-info"> 
 
     <h1>Event title</h1> 
 
     <h2>Event date</h2> 
 
     <h2>Event venue</h2> 
 
     <p> 
 
     Cu cum quem eros periculis, volutpat tractatos accommodare eu has, ex singulis assueverit usu. 
 
     <a href="#">Learn More <span class="chevron right"></span></a> 
 
     </p> 
 
    </div> 
 
    </div> 
 
</div>

Hoffe, das hilft!

+0

Bekam es. Vielen Dank! –

1

Es gibt zwei Konzepte, die Sie im Auge behalten müssen, wenn Ihren Code revidieren:

  • Die Flex gleiche Höhe Spalte Funktion nur für Geschwister gilt
  • Der Umfang des Flex-Layouts auf das Eltern-Kind begrenzt Beziehung

Sie haben einen Top-Level-Container (.events-row) ein Flex-Container gemacht. Das bedeutet, dass nur das Kind (.event-card) Flex-Eigenschaften akzeptiert (und diese untergeordneten Elemente sind in der Tat Geschwister gleicher Höhe).

Aber Sie wollen Nachkommen weiter unten im Baum, die gleiche Höhe teilen. Wenn Sie dem übergeordneten Container display: flex oder display: inline-flex nicht geben oder height: 100% verwenden, haben sie nicht die gleiche Höhe.

Hier sind weitergehende Erklärungen: