2017-05-19 2 views
-2

Ich versuche, ein Layout mit Flex-Box aufzubauen, das für bestimmte Anwendungsfälle dynamisch sein muss. Ich habe einen Wrapper namens .app-content-inside, der 100% Höhe des Ansichtsfensters verwendet - die Kopfzeile und 100% des Ansichtsfensters - die Navigationsleiste auf der linken Seite. Das funktioniert soweit gut.Flexbox-Säule auf Childs-Höhe dehnen?

.app-body-inner { 
    padding: 0 !important; 
    position: relative; 
    width: inherit; 
    height: calc(100vh - 40px); /* changed for demo */ 
    overflow: hidden; 
} 

Ich verwende die Klasse .nrow-col flex Feld Spalte auf bestimmte div hinzuzufügen. Wenn in diesem div ein anderes mit der Klasse .nrow-row existiert, sollte dieses flexbox column child auf den verbleibenden vertikalen freien Platz gestreckt werden.

.nrow-col { 
    display: flex; 
    flex-direction: column; 
    height: inherit; 
} 

.nrow-col > .nrow-row { 
    flex: auto; 
} 

flex Feld Zeile hinzuzufügen verwende ich die folgende Klasse:

.nrow-row { 
    display: flex; 
    flex-direction: row; 
} 

Das für die erste Instanz funktioniert, aber wenn ich HTML wie folgt verwenden die innere Flexbox Spalte Kind nicht mehr gestreckt wird:

<div class="app-body-inner"> 
    <div class="nrow-col"> 
    <div class="p-a top"> 
     topbar 
    </div> 
    <div class="row no-gutter nrow-row"> 
     <div class="col-sm-2"> 
     <div class="nrow-col"> 
      <div class="p-a top"> 
      coltop 
      </div> 
      <div class="nrow-row"> 
      <div class="nrow-body"> 
       <div class="nrow-inner"> 
       /\<br> 
       this should stretch between coltop and colbottom<br> 
       \/ 
       </div> 
      </div> 
      </div> 
      <div class="p-a bottom"> 
      colbottom 
      </div> 
     </div> 
     </div> 
     <div class="col-sm-10"> 
     <div class="nrow-col"> 
      <div class="p-a top"> 
      coltop 
      </div> 
      <div class="p-a top"> 
      coltop_another 
      </div> 
      <div class="row nrow-row"> 
      <div class="nrow-body"> 
       <div class="nrow-inner"> 
       /\<br> 
       this should stretch between coltop_another and colbottom<br> 
       \/ 
       </div> 
      </div> 
      </div> 
      <div class="p-a bottom"> 
      colbottom 
      </div> 
     </div> 
     </div> 
    </div> 
    <div class="p-a bottom"> 
     bottombar 
    </div> 
    </div> 
</div> 

es in der Tat sehr schwierig ist mein Problem in Text zu bekommen, so habe ich ein plunkr, das das Problem, das ich mit bin konfrontiert visualisiert ...

sie automatisch align-items: stretch an die Kinder, die verschachtelten geordneten Container in Flex-Container machen gelten, sie alle verfügbaren Höhe zu verbrauchen Wenn Sie jemand kann mir

Vielleicht helfen

+1

Ist das, was Sie wollen? Fügen Sie 'display: flex' zu' .col-sm-2' und '.col-sm-10' hinzu. https://plnkr.co/edit/EsfplenxorYoINC13mO8x?p=preview –

+0

ja das ist es !!! –

Antwort

2

verursacht.

Hier ist, was Sie hinzufügen müssen:

.col-sm-2, .col-sm-10 { 
    display: flex; 
} 

revised demo

+0

das funktioniert, aber wenn der Inhalt innerhalb wie in diesem Plunks https://plnkr.co/edit/hQrxJTm9UR22U9a7NZPF?p=preview "lang" bekommt, wie könnte ich den Überlauf machen, um versteckt zu werden, anstatt den colbottom zu überschreiben? der colbottom sollte auch auf dem Bildschirm bleiben und der Inhalt des '.row-body-inner' sollte scrollbar sein –

+0

' .row-body-inner' sollte scrollbar sein, 'coltop' und' colbottom' sollten auf dem Bildschirm bleiben –

+0

Für 'overflow: auto' zu arbeiten, müssen Sie eine Höhe auf dem Überlaufelement definieren. Etwas wie: Coltop: 5%, Colbottom: 5%, Nrow: 90%; Überlauf: Automatisch. Damit "Überlauf" funktioniert, müssen Sie ein Limit setzen. Hier ist ein Beispiel: https://plnrkr.co/edit/OXZ70RnkaxumBYhYb5Km?p=preview –

Verwandte Themen