2012-06-11 32 views
43

Tengo un encabezado (altura dinámica) con una posición fija.cabecera fija de posición en html

necesito para colocar el contenedor div justo debajo de la cabecera. Como la altura del encabezado es dinámica, no puedo usar el valor fijo para el margen superior.

¿Cómo se puede hacer esto?

Aquí es mi CSS:

#header-wrap { 
    position: fixed; 
    height: auto; 
    width: 100%; 
    z-index: 100 
} 
#container{ 
    /*Need to write css to start this div below the fixed header without mentioning top margin/paading*/ 
} 

... y HTML:

<div id="header-wrap"> 
    <div id="header"> 
    <div id="menu"> 
     <ul> 
     <li><a href="#" class="active">test 0</a></li> 
     <li><a href="#">Give Me <br />test</a></li> 
     <li><a href="#">My <br />test 2</a></li> 
     <li><a href="#">test 4</a></li> 
     </ul> 
    </div> 
    <div class="clear"> 
    </div> 
    </div> 
</div><!-- End of header --> 

<div id="container"> 
</div> 
+5

La cabecera fija no es parte de la disposición. Está flotando. Necesitas darle al contenido un 'margen-top' para que actúe como si el encabezado estuviera allí. – Blender

+3

lea esto http://css-tricks.com/absolute-relative-fixed-positioining-how-do-they-differ/ – sandeep

+0

Posible duplicado de [Tabla desplazable CSS-Only con encabezados fijos] (http: // stackoverflow. com/questions/11891065/css-only-scrollable-table-with-fixed-headers) –

Respuesta

6

Bien! Cuando vi mi pregunta ahora, me di cuenta de que no quería mencionar el valor de margen fijo debido a la altura dinámica del encabezado.

Aquí es lo que he estado utilizando para tales escenarios.

calcular la altura de cabeza usando jQuery y aplicar que como valor del margen superior.

var divHeight = $('#header-wrap').height(); 
$('#container').css('margin-top', divHeight+'px'); 

Demo

53

Su #container debe estar fuera de la cabecera #-wrap, a continuación, especifique una altura fija para # Header wrap, after, especifica margin-top para #container igual al # header-wrap's height. Algo como esto:

#header-wrap { 
    position: fixed; 
    height: 200px; 
    top: 0; 
    width: 100%; 
    z-index: 100; 
} 
#container{ 
    margin-top: 200px; 
} 

espero que esto es lo que necesita: http://jsfiddle.net/KTgrS/

+0

Sí, está fuera. pero no puedo arreglar el margen superior ya que el contenido en el encabezado varía de una página a otra dinámicamente, donde hay menos contenido, entonces la brecha entre el encabezado y el contenedor será más – Sowmya

+0

JsFiddle añadido: http: // jsfiddle.net/KTgrS/ – micnic

+0

has probado 'position: absolute'? – poepje

1

Asumo que su cabecera se fija porque quiere que se quede en la parte superior de la página, incluso cuando el usuario se desplaza hacia abajo, pero no quieres que cubra el contenedor. Sin embargo, el ajuste position: fixed elimina el elemento del diseño lineal de la página, por lo que necesitaría establecer el margen superior del elemento "siguiente" para que sea igual al alto del encabezado o (si por alguna razón no lo hace) t quiero hacer eso), ponga un elemento de marcador de posición que ocupe espacio en el flujo de la página, pero que aparezca debajo de donde se muestra el encabezado.

1

La position :fixed es diferente a la otra disposición. Una vez que fixedposition para su header, tenga en cuenta que tiene que configurar el margin-top para el content div.

0

conjunto #container div superior a cero

#container{ 


top: 0; 



} 
3
body{ 
    margin:0; 
    padding:0 0 0 0; 
} 
div#header{ 
    position:absolute; 
    top:0; 
    left:0; 
    width:100%; 
    height:25; 
} 
@media screen{ 
body>div#header{ 
    position: fixed; 
} 
} 
* html body{ 
    overflow:hidden; 
} 
* html div#content{ 
    height:100%; 
    overflow:auto; 
} 
+1

Referencia - http://limpid.nl/lab/css/fixed/header – Sorter

Cuestiones relacionadas