2017-01-28 3 views
0

Ich muss die Reihenfolge meiner gesamten Seite für mobile Geräte mit Flex ändern. Ich kann das innerhalb des einzelnen Containers arbeiten, aber ist es möglich, es mit allen Containern auf der Seite zu machen? Hier ein Beispiel:Gesamte Seite mit CSS Flexbox neu anordnen

.outer { 
 
    display: flex; 
 
    flex-direction: column; 
 
} 
 
#a { 
 
    order: 4; 
 
    background: #ccc; 
 
} 
 
#b { 
 
    order: 1; 
 
    background: #aaa; 
 
} 
 
#c { 
 
    order: 3; 
 
    background: #d33; 
 
} 
 
.one { 
 
    order: 2; 
 
    background: #aaa; 
 
} 
 
.two { 
 
    order: 5; 
 
    background: #aaa; 
 
}
<div class="outer"> 
 
    <div id="flex"> 
 
    <div id="a">A</div> 
 
    <div id="b">B</div> 
 
    <div id="c">C</div> 
 
    </div> 
 
    <div id="flex2"> 
 
    <div class="one">Show me 2nd</div> 
 
    <div class="two">Show me 5th</div> 
 
    </div> 
 
</div>

Die 'Show me 2.' und 'Zeig mir 5.' sitzen gerade am Ende eher als in der neuen Ordnung. Zur Bestätigung kann der HTML-Code nicht geändert werden.

JsFiddle

+1

Anzeige: Inhalte helfen würde, wenn avalaible an anderer Stelle als firefox http://jsfiddle.net/chotd9sv/3/ wie es ist, können benötigen Sie Javascript um die dom https neu zu erstellen: // Entwickler .mozilla.org/de-DE/docs/Web/CSS/Anzeige Anzeige: Box für eine Erklärung oder https://www.w3.org/TR/css-display-3/#box-generation –

+0

Danke. Dies gilt nur für mobile Geräte. Könnte also anzeigen: Inhalte funktionieren dafür? – IVCatalina

+0

Sie müssen einige Tests auf verschiedenen mobilen/Browsern ausführen, aber ich fürchte, es wird noch nicht funktionieren –

Antwort

1

Sie können nicht einen Auftrag mit Flex auf Elemente anwenden, die nicht den gleichen Behälter teilen:

Die ‚Ordnung‘ Eigenschaft der Reihenfolge ihrer in denen innerhalb flex Elemente erscheinen steuert flex container, indem Sie sie Ordnungsgruppen zuweisen.

Soucre

Sie können Ihre HTML-Struktur ändern, so dass alle Elemente den gleichen Behälter, teilen und dann wird die Bestellung der Regel arbeiten.

+0

"Zur Bestätigung kann der HTML-Code nicht geändert werden." – IVCatalina

+0

Sorry Kumpel :) dann ist die Antwort nein ... –

0

über jquery können Sie clone() und remove() bis display:contents zu den Standards kommt.

Eigentlich usable in Firefox zu Testzwecken (fiddle).

$('#flex2 > div, #flex > div').clone().insertAfter('#flex2'); 
 
$('#flex2 , #flex').remove();
.outer { 
 
    display: flex; 
 
    flex-direction: column; 
 
} 
 
#a { 
 
    order: 4; 
 
    background: #ccc; 
 
} 
 
#b { 
 
    order: 1; 
 
    background: #aaa; 
 
} 
 
#c { 
 
    order: 3; 
 
    background: #d33; 
 
} 
 
.one { 
 
    order: 2; 
 
    background: #aaa; 
 
} 
 
.two { 
 
    order: 5; 
 
    background: #aaa; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="outer"> 
 
    <div id="flex"> 
 
    <div id="a">A</div> 
 
    <div id="b">B</div> 
 
    <div id="c">C</div> 
 
    </div> 
 

 
    <div id="flex2"> 
 
    <div class="one">Show me 2nd</div> 
 
    <div class="two">Show me 5th</div> 
 
    </div> 
 

 
</div>