2015-05-08 23 views
5

Ho riscontrato un problema con questo scenario in Firefox. #pager prende la larghezza dei suoi figli. Tuttavia, in Chrome, prende la larghezza del suo genitore. Come posso fare in modo che # elenco-articoli rispetti la larghezza del suo genitore in Firefox?Larghezza flexbox CSS 100% Firefox

dai un'occhiata! https://jsfiddle.net/owmpatbh/2/

HTML:

<div id="wrapper"> 
    <div id="sidebar"></div> 
    <div id="main"> 
     <div id="content"> 
     <p id="stuff">blahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblah</p>    
     </div> 
     <div id="pager"> 
      <div id="item-list"> 
       <div class="item"></div> 
       <div class="item"></div> 
       <div class="item"></div> 
       <div class="item"></div> 
       <div class="item"></div> 
       <div class="item"></div> 
       <div class="item"></div> 
       <div class="item"></div> 
       <div class="item"></div> 
       <div class="item"></div> 
       <div class="item"></div> 
       <div class="item"></div> 
       <div class="item"></div> 
       <div class="item"></div> 
      </div> 
     </div> 
    </div> 
</div> 

CSS:

#wrapper { 


display: flex; 
    width: 100%; 
    height: 100%; 
} 

#sidebar { 
    overflow: auto; 
    flex: 0.25; 
    border:3px solid green; 
    min-height: 200px; 
} 

#main { 
    display: flex; 
    flex: .75; 
    flex-direction: column; 
    border:3px solid orange; 
} 

#content { 
    position: relative; 
    width: 100%; 
    flex: 0.85; 
    border: 3px solid blue; 
} 

#pager { 
    display: flex; 
    position: relative; 
    width: 100%; 
    background-color: #fff; 
    border: 3px solid pink; 
    flex: 0.15; 
} 

#item-list { 
    border: 1px solid black; 
    width: 100%; 
    overflow-x: scroll; 
    overflow-y: hidden; 
    white-space: nowrap; 
} 

.item { 
    display: inline-block; 
    padding: 5px; 
    width: 200px; 
    height: 200px; 
    background-color: red; 
} 

#stuff { 
    height: 200px; 
} 

*{ 
    margin: 3px; 
} 
+0

non sembra gradire la larghezza fissa di 200 px per qualche motivo. non so ancora perché – redbmk

+0

Dato che stai usando flex, non dovresti aver bisogno di usare 'width: 100%' ovunque. Toglierlo non infrange nulla in Chrome e non fa peggiorare niente in Firefox. Firefox sembra voler una larghezza fissa per '# item-list', ma ancora una volta, non sono sicuro del perché. Non sembra voler gestire correttamente i bambini del blocco inline (o forse il comportamento non è ancora ben definito?) – redbmk

risposta

3

firefox ha problemi con la larghezza dell'oggetto #item-list. Non riesco a pensare a nient'altro che questo è un bug, almeno Chrome è meno schizzinoso sulla larghezza. Quindi, quello che devi fare è dargli una larghezza fissa come detto da redbmk. Quindi, ecco la soluzione:

impostare la posizione #item-list per absolute e dargli un width di 100% (nell'esempio meno il confine del div).

#pager { 
    display: flex; 
    position: relative; 
    background-color: #fff; 
    border: 3px solid pink; 
    height:246px; 
} 

#item-list { 
    border: 1px solid black; 
    position:absolute; 
    width: calc(100% - 9px); 
    overflow-x: scroll; 
    overflow-y: hidden; 
    white-space: nowrap; 
} 

Ho anche modificato alcune piccole cose (non molto importanti) nel codice.

vedono qui:

Jsfiddle

Cheers!

1

ecco un collegamento di funzionamento https://jsfiddle.net/ymvmf6zz/1/

apparentemente impostare esplicitamente la larghezza su #sidebar e #main reso lavoro.

#sidebar{ 
    width: 25%; 
} 
#main{ 
    width: 75%; 
} 
+0

Beh, potrebbe essere vero, ma perché non funzionerà? – aboutqx

+0

Questo ha funzionato perfettamente per me. Grazie :) – nickspiel

Problemi correlati