2013-07-10 19 views
6

saluti Overflowers,CSS Larghezza automatica non funziona con Flexbox

Ho una pagina HTML come segue:

  1. HTML, BODY, div e campate vengono resettati ad avere 0px bordo, padding, margini e delineare
  2. HTML, BODY e elementi DIV ha visualizzazione: -webkit-flex e -webkit-flex: 0 0 auto
  3. HTML e corpo con altezza: 100VH e larghezza: 100vw
  4. all'interno del corpo, un DIV chiamato # cursore con display: -web kit-flex e -webkit-flex: 0 0 auto
  5. All'interno di questo #slider, due DIV #sidebar e #main con display: -webkit-flex e -webkit-flex: 0 0 auto per entrambi, larghezza: 10rem per #sidebar e larghezza: 100vw per #main

Problema: mi aspettavo la larghezza di #slider di essere 10rem + 100vw, ma è solo 100vw anche se cambio la larghezza di #main a qualcosa di più piccolo, come 50vw!

Mi manca qualcosa qui?

Cordiali saluti

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8" /> 
     <link type="text/css" rel="stylesheet" href="style.css" /> 
    </head> 
    <body ng:controller="Docs"> 
     <div class="slider"> 
      <div id="main" class="region vertical"> 
       <div id="header" class="region"> 
        <div id="search" class="button"></div> 
        <div id="center" class="region stretch"> 
        </div> 
        <div id="filter-sort" class="button"></div> 
       </div> 
       <div id="doc-types" class="region"> 
        <div class="slider"> 
         <div id="doc-type" class="button"></div> 
        </div> 
       </div> 
       <div id="docs" class="region"> 
        <div class="slider stretch vertical"> 
         <div id="doc" class="region"> 
          <div id="east" class="region"> 
           <div id="preview" class="region"></div> 
          </div> 
          <div id="center" class="region stretch vertical"> 
           <span id="title" class="label"></span> 
          </div> 
         </div> 
        </div> 
       </div> 
      </div> 
      <div id="west" class="region"> 
       <div class="slider"> 
        <div id="filter-sort" class="region vertical"> 
         <div id="header" class="region"> 
          <span id="title" class="label">Filter and Sort</span> 
         </div> 
         <div id="grades" class="region"> 
          <div id="center" class="region stretch vertical"> 
           <span id="grades" class="label">Grade</span><br /> 
           <span id="grades" class="field"></span> 
          </div> 
          <div id="west" class="region"></div> 
         </div> 
         <div id="doc-topic" class="region"> 
          <div id="center" class="region stretch vertical"> 
           <span id="doc-topic" class="label">Doc Topic</span><br /> 
           <span id="doc-topic" class="field"></span> 
          </div> 
          <div id="west" class="region"></div> 
         </div> 
         <div id="course" class="region"> 
          <div id="center" class="region stretch vertical"> 
           <span id="course" class="label">Course</span><br /> 
           <span id="course" class="field"></span> 
          </div> 
          <div id="west" class="region"></div> 
         </div> 
         <div id="sort" class="region"> 
          <div id="center" class="region stretch vertical"> 
           <span id="sort" class="label">Sort</span><br /> 
           <span id="sort" class="field"></span> 
          </div> 
          <div id="west" class="region"></div> 
         </div> 
        </div> 
        <div id="filter-sort-options" class="region vertical"> 
         <div id="header" class="region"> 
          <div id="back" class="button"></div> 
          <div id="center" class="region stretch"> 
           <span id="title" class="label">Options</span> 
          </div> 
         </div> 
         <div id="grades" class="region"> 
          <div class="slider vertical"> 
           <span id="grade" class="label"></span> 
          </div> 
         </div> 
         <div id="doc-topics" class="region"> 
          <div class="slider vertical"> 
           <span id="doc-topic" class="label"></span> 
          </div> 
         </div> 
         <div id="courses" class="region"> 
          <div class="slider vertical"> 
           <span id="course" class="label"></span> 
          </div> 
         </div> 
         <div id="sorts" class="region"> 
          <div class="slider vertical"> 
           <span id="sort" class="label"></span> 
          </div> 
         </div> 
        </div> 
       </div> 
      </div> 
     </div> 
    </body> 
</html> 


/* 
    unicode-bidi: bidi-override; 
    -webkit-user-modify: read-write-plaintext-only; 
    -webkit-touch-callout: none; 
    -webkit-text-size-adjust: none; 
    -webkit-overflow-scrolling: touch; 
    -webkit-transition: -webkit-transform 1s ease; 
*/ 

body, div, html, span { 
    background: transparent; 
    border: 0px; 
    cursor: default; 
    direction: rtl; 
    margin: 0px; 
    outline: none; 
    padding: 0px; 
    position: relative; 
    -webkit-tap-highlight-color: transparent; 
    -webkit-user-select: none; 
} 

body, html, div { 
    background: black; 
    display: -webkit-flex; 
    overflow: hidden; 
    -webkit-flex: none; 
} 

body, html { 
    height: 100vh; 
    width: 100vw; 
} 

span { 
    background: white; 
} 

.stretch { 
    -webkit-flex: 1; 
} 

.vertical { 
    -webkit-flex-flow: column; 
} 

body>.slider { 
    /*-webkit-transform: translateX(10rem);*/ 
} 

#main { 
    width: 100vw; 
} 

body>.slider>#west { 
    width: 10rem; 
} 

#filter-sort.region, #filter-sort-options.region { 
    width: 10rem; 
} 

#doc>#east { 
    background: orange; 
    height: 6rem; 
    width: 6rem; 
    -webkit-align-items: center; 
    -webkit-justify-content: center; 
} 

#doc>#center { 
    background: green; 
} 

#header, #doc-types { 
    height: 2.75rem; 
} 

#preview { 
    max-height: 6rem; 
    max-width: 6rem; 
} 

#search.button, #filter-sort.button { 
    background: red; 
    width: 3rem; 
} 

#doc-type { 
    background: blue; 
    width: 5rem; 
} 
+0

Il markup e l'esatto CSS utilizzato è dove? E quale browser? – cimmanon

+0

Si prega di consultare l'aggiornamento. Viene utilizzato l'ultimo Chrome 27. Sembra che quando hai usato 100rem invece di 100rem per #main ha funzionato! Ma ho bisogno di vw. – geeko

+0

Scusa Intendevo 100vw anziché 100rem – geeko

risposta

2

Vedi http://codepen.io/anon/pen/fluKI che funziona come ci si aspetterebbe (Chrome 27)

Per quanto posso dire dalla tua descrizione, è necessario impostare la larghezza e l'altezza del flex contenitore (#slider). L'utilizzo di flex: 0 0 auto; su #slider non farà ciò che ci si aspetta dato che si tratta di un contenitore flessibile e non di un oggetto flessibile stesso (leggi: non si trova in un contenitore flessibile).

Si prega di notare che flex: 0 0 auto; è lo stesso che dire flex: none; che rimuove la flessibilità dell'articolo.

+0

Ho modificato HTML e BODY per essere contenitori flessibili in modo che #slider sia anche un elemento flessibile ma senza fortuna! Tuttavia quando ha cambiato 100vw di #main a 100rem ha funzionato !! Ma ho bisogno di non rem. – geeko

Problemi correlati