2016-08-03 17 views
0

Ich schreibe ein Plugin für WordPress. Das Layout ist wie folgend, in einer horizontalen Reihe dargestellt:DIV-Layout mit CSS ändern? (Alternierende Divs)

<div class="row"> 
    <div class="thumbnail"> 
    <div class="information"> 
</div> 

die PHP-Funktion wechselt die divs so jede zweite Zeile ist die umgekehrte Reihenfolge, etwa so:

<div class="row"> 
    <div class="information"> 
    <div class="thumbnail"> 
</div> 

Dies ist alles Ausarbeiten in einer Vollbildseite, aber auf einem kleineren Bildschirm möchte ich die "Zeile" vertikal nicht alternierend angezeigt bekommen.

So möchte ich zuerst die Miniaturansicht angezeigt bekommen, dann die Informationen für jede Zeile.

Wenn die @media Aussagen Zugabe für die div Pop nach unten, erhalte ich die falschen Reihenfolge aufgrund der Wechsel divs wie so:
1. Thumbnail
1. Informationen
2. Informationen
2. Thumbnail

Also frage ich mich, ob es sogar möglich ist, über CSS zu ändern? Ich habe viele verschiedene Floats und n-te Kinder probiert, aber am Ende habe ich dieselben Ergebnisse.

ist hier ein jsbin das Layout zu zeigen, ich bin mit: JSBIN

Antwort

1

Sie order mit einem mediaquery verwenden oder mit einem min-width einen Haltepunkt zu setzen.

.row { 
 
    margin: 0; 
 
    padding: 0; 
 
    height: 100%; 
 
    display: flex; 
 
    flex-wrap:wrap; 
 
} 
 

 
.information { 
 
    flex: 1; 
 
    padding: 5%; 
 
    min-width:250px;/* set a breakpoint at 500px where thumb is set at 50% */ 
 
} 
 

 
.thumbnail { 
 
    flex: 1; 
 
    min-width: 50%;/* min-width will allow to spray on the whole line when alone */ 
 
    background: teal; 
 
} 
 
@media screen and (max-width: 640px) { 
 
.row:nth-child(odd) .thumbnail { 
 
    order:1; 
 
} 
 
    }
<div class="row"> 
 
    <div class="thumbnail">thumb</div> 
 
    <div class="information">information goes here</div> 
 
    </div> 
 
    <div class="row"> 
 
    <div class="information">information goes here</div> 
 
    <div class="thumbnail">thumb</div> 
 
    </div> 
 
    <div class="row"> 
 
    <div class="thumbnail">thumb</div> 
 
    <div class="information">information goes here</div> 
 
    </div>

min-width + bestellen http://jsbin.com/xupurikuxu/1/edit?html,css,output

mediaquerie http://jsbin.com/senobugubi/1/edit?html,css,output

+0

Hey das ist eine große Lösung, aber ich bin das gleiche Problem haben und nicht Flexbox verwenden können. Irgendwelche Ideen? Sollte ich das auch als neue Frage posten oder wäre das ein Duplikat? Ich habe ein Beispiel für mein Problem hier, können Sie sehen, dass der floated Inhalt nicht vertikal ausgerichtet ist: http://codepen.io/benjibee/pen/mAxPGL – Benji

+0

@Benji Sie können eine andere Frage stellen, wo Sie Ihren Code bereitstellen und angeben können flex ist nicht zu benutzen. Von diesem Code hier könnten wir Richtung und Anzeige verwenden: Tabelle/Block, um ein ähnliches Ergebnis zu haben, denke ich. Beispiel http://codepen.io/gc-nomade/pen/qaokLj –

+0

Das ist genau die Lösung, es ist perfekt. Danke! Ich habe meine Frage unter diesem Link gestellt, wenn Sie so nett sein würden, sie erneut für Google-Nutzer zu beantworten: http://stackoverflow.com/q/39938950/401980 – Benji