CSS height Problem mit dem flex-box-innen flex-box

Ich habe ein problem mit flex-Boxen darin enthaltenen flex-Boxen. Die JS-Fiddle auf http://jsfiddle.net/fr077nn2/ die den folgenden code enthält:

CSS:

    #container{
      position: absolute;
      height: 100%;
      width: 100%;
      border: 3px solid yellow;
    }
    .app {
      display: flex;
      flex-direction: column;
      height: 100%;
      border: 3px solid black;
    }
    .app-header {
      border: 3px solid red;
    }
    .app-content {
      border: 3px solid green;
      flex: 1;
      overflow: hidden;
    }
    .app-footer {
      border: 3px solid blue;
    }

HTML:

   <div id="container">
      <div class="app">
        <div class="app-header">HEADER1</div>
        <div class="app-content">
          <div class="app">
            <div class="app-header">HEADER2</div>
            <div class="app-content">CONTENT2</div>
            <div class="app-footer">FOOTER2</div>
          </div>
        </div>
        <div class="app-footer">FOOTER1</div>
      </div>
    </div>

Ich versuche dem .app-content-DIVs füllen den verbleibenden Raum der Eltern .app DIV. Es funktioniert gut für die äußeren Boxen, wie gezeigt, in der fiddle. Jedoch, für die inneren Boxen, CONTENT2 nicht füllen den übrigen Raum. Ich vermute, dass height:100% funktioniert nicht in diesem Fall, weil die Höhe des übergeordneten DIV-Element nicht ordnungsgemäß bekannt... jeder Vorschlag, wie das zu erreichen ist die oben richtig?

Edit: Funktioniert auf Firefox wie erwartet, nicht auf Chrome.

  • Funktioniert gut für Firefox, das problem liegt am Chrome.
  • Zusätzliche Höhe: 100% auf die .app-Inhalte hat funktioniert... es sei denn, ich bin fehlt etwas? (Anzeige im Chrome) Aktualisiert Fiddle: jsfiddle.net/gqjx0wr8/2
  • dies führt nicht die erwartete Ausgabe: Zugabe von 100% auf .app-Inhalt wird das div mehr Speicherplatz verwendet wird, die nur den verbleibenden Platz, das ist 100% von den Eltern, daher drängen die Fußzeile außerhalb. Das Ziel ist, zu haben .app-Inhalten verwenden Sie nur den verbleibenden Platz.
  • du hast Recht, es scheint gut zu funktionieren auf FF34 und IE11. WTH Chrom...?
  • Ist mit JavaScript eine option?
  • Leider Nein. Ich möchte stick zu CSS hier. In jedem Fall, wenn Sie Chrome/webkit ist nicht vollständig kompatibel ist, würde ich eher nicht verwenden, es auf die Produktion von websites für jetzt.
  • Ihre re-Einsatz von class-Namen macht diese unneccessarily verwirrend... egal, dein code ist fast richtig. Ich habe behoben, die CSS für Sie in diese JS-Fiddle

InformationsquelleAutor Nick | 2014-12-15
Schreibe einen Kommentar