2012-03-23 23 views
6

No estoy seguro de cómo titular la pregunta. Tengo una estructura HTML así:¿Cómo mantener la div posición fija alineada con div centrado?

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

Con un poco de css de esta manera:

#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; 
} 

El envoltorio es más ancho que el contenido, y el contenido se centra en el envoltorio. Mi problema es mantener el nav div, que se fija en la parte superior de la página, centrado/alineado con el contenido div cuando la ventana es más pequeña que el div envoltorio. Los problemas surgen cuando se desplaza hacia la izquierda y hacia la derecha, el div fijo permanece centrado en la ventana y el div de contenido se desplaza hacia la izquierda y hacia la derecha. Estoy tratando de lograr esto sin javascript.

Aquí hay un jsfiddle de lo que estoy encontrando, cambie el tamaño de la ventana de resultados para ver cómo el nav div no se mantendrá centrado/alineado con el contenido div cuando la ventana sea más pequeña que el div wrapper.

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

Gracias de antemano!

+0

¿Con qué navegador estás? En Chrome, esto funciona para mí. –

+0

Actualmente Safari, y no está funcionando en Chrome en mi extremo. Intente reducir la ventana de resultados para que sea más pequeño que el divisor de envoltura. Necesito la navegación para estar en línea con el contenido. – codybuell

Respuesta

5

La solución más fácil sería poner #nav en su #wrapper y darle un margen horizontal de 25 píxeles:

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; 
} 

Véase también la fiddle .

+1

Si reduce la ventana de resultados y luego se desplaza hacia la derecha, las divisiones de navegación y contenido no permanecen alineadas. – codybuell

+0

Intenta hacer que la ventana de resultados tenga la mitad del tamaño de la div del contenedor y desplácese hacia la derecha. El nav div y el contenido div no se mantienen alineados.¿Alguna idea sobre cómo mantenerlos juntos? Aquí hay una jsfiddle más grande para enfatizar el problema: http://jsfiddle.net/p2Mzx/24/ – codybuell

+0

@codybuell Tienes razón, cambié el tamaño de la ventana y parecía funcionar. No creo que pueda resolver esto usando css solo a menos que use consultas de medios para generar un diseño receptivo en lugar de uno fijo. – jeroen

0

Creo que usted puede agregar margin: 0 auto para la navegación también.

Luego nav se colocará en el elemento principal como envoltorio, centrado. pero eliminado el navegador de forma fija position:fixed lo coloca en la ventana del navegador y fuera del flujo narmal. ¿Es eso lo que quieres?

0

Sería más apropiado poner el navegador dentro del contenedor, justo encima del contenido.

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

El CSS de la navegación puede tener márgenes izquierdo y derecho de 25px. También el posicionamiento absoluto y el ancho no son necesarios.

#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; 
}​ 

Consulte este violín: http://jsfiddle.net/p2Mzx/20/

+0

El nav div debe permanecer en la parte superior de la ventana. – codybuell

0

Puede fijo la NAV y el contenido para dar padding-top.

Considerar este enlace jsfiddle

+0

Intenta hacer que la ventana de resultados tenga la mitad del tamaño de la div del contenedor y desplácese hacia la izquierda y hacia la derecha. El nav div y el contenido div no se mantienen alineados. ¿Alguna idea sobre cómo mantenerlos juntos? Aquí hay una jsfiddle más grande para enfatizar el problema: http://jsfiddle.net/p2Mzx/23/ – codybuell

Cuestiones relacionadas