2012-03-23 14 views
6

Non sai come intitolare la domanda. Ho una struttura html come questo:Come mantenere il div di posizione fissa allineato al div centrato?

<div id="nav"></div> 
<div id="wrapper"> 
    <div id="content"> 
    </div> 
</div>​ 

Con un po 'di CSS in questo modo:

#nav { 
    width: 200px; 
    height: 50px; 
    margin: 0 0 0 -100px; 
    position: fixed;  
    left: 50%; 
    background: red; 
} 

#wrapper { 
    width: 250px; 
    height: 1000px; 
    margin: 0 auto; 
    background: blue; 
} 

#content { 
    width: 200px; 
    height: 1000px; 
    margin: 0 auto; 
    background: green; 
} 

L'involucro è più ampia rispetto al contenuto, e il contenuto è centrato nella confezione. Il mio problema è mantenere il div del nav, che è fissato in cima alla pagina, centrato/allineato al div del contenuto quando la finestra è più piccola del div del wrapper. I problemi sorgono quando si scorre a sinistra ea destra, il div fisso rimane centrato nella finestra e il contenuto div scorre a sinistra ea destra. Sto cercando di farlo senza javascript.

Ecco un jsfiddle di quello che sto correndo, ridimensionare la finestra dei risultati per vedere come il div di nav non resterà centrato/allineato con il div di contenuto quando la finestra è più piccola del div del wrapper.

http://jsfiddle.net/p2Mzx/1/

Grazie in anticipo!

+0

Con quale browser si sta effettuando il test? In Chrome questo funziona per me. –

+0

Attualmente Safari, e non funziona su Chrome sulla mia parte. Prova a ridurre la finestra dei risultati in modo che sia più piccola del div wrapper. Ho bisogno di nav per essere in linea con i contenuti. – codybuell

risposta

5

La soluzione più semplice sarebbe quella di mettere #nav nel vostro #wrapper e dargli un margine orizzontale di 25px:

html:

<div id="wrapper"> 
    <div id="nav"></div> 
    <div id="content"> 
    </div> 
</div> 

css:

#nav { 
    width: 200px; 
    height: 50px; 
    margin: 0 25px; 
    position: fixed; 
    top: 0; 
    background: red; 
} 

#wrapper { 
    width: 250px; 
    height: 1000px; 
    margin: 0 auto; 
    background: blue; 
} 
#content { 
    width: 200px; 
    height: 1000px; 
    margin: 0 auto; 
    background: green; 
} 

vedere anche la fiddle .

+1

Se si riduce la finestra dei risultati e si scorre a destra, il nav e il contenuto div non rimangono allineati. – codybuell

+0

Provare a fare la finestra dei risultati a metà della dimensione del wrapper div, quindi scorrere verso destra. Il nav div e il content div non rimangono allineati.Qualche idea su come tenerli insieme? Ecco un jsfiddle più grande per enfatizzare il problema: http://jsfiddle.net/p2Mzx/24/ – codybuell

+0

@codybuell Hai ragione, ho appena ridimensionato la finestra e sembrava funzionare. Non penso che tu possa risolvere questo problema usando solo css a meno che non usi le media query per generare un design reattivo invece di uno fisso. – jeroen

0

Penso che sia possibile aggiungere margin: 0 auto anche per nav.

Quindi nav verrà posizionato sull'elemento padre proprio come wrapper, centrato. ma rimosso modulo fisso nav. position:fixed lo posiziona nella finestra del browser e fuori dal flusso narmale. E 'quello che vuoi?

0

Sarebbe più appropriato inserire il nav all'interno del wrapper, appena sopra il contenuto.

<div id="wrapper"> 
    <div id="nav"></div> 
    <div id="content"></div> 
</div>​ 

Il CSS del nav può avere margini sinistro e destro di 25px. Anche il posizionamento assoluto e la larghezza non sono necessari.

#nav { 
    height: 50px; 
    margin: 0px 25px 0px 25px; 
    background: red; 
} 

#wrapper { 
    width: 250px; 
    height: 1000px; 
    margin: 0 auto; 
    background: blue; 
} 

#content { 
    width: 200px; 
    height: 1000px; 
    margin: 0 auto; 
    background: green; 
}​ 

Si prega di vedere questo violino: http://jsfiddle.net/p2Mzx/20/

+0

Il div nav deve rimanere in cima alla finestra. – codybuell

0

È possibile fissato la navigazione e contenuti per dare padding-top.

Prendere in considerazione questo collegamento jsfiddle

+0

Prova a fare la finestra dei risultati a metà della dimensione del wrapper div, quindi scorri verso sinistra e verso destra. Il nav div e il content div non rimangono allineati. Qualche idea su come tenerli insieme? Ecco un jsfiddle più grande per enfatizzare il problema: http://jsfiddle.net/p2Mzx/23/ – codybuell

Problemi correlati