2010-02-22 14 views
8

http://www.stumbleupon.com/Cómo estirar una cabecera a través de un fondo de páginas web con CSS

http://www.mixx.com/

Ambos de estos sitios web tienen un encabezado fondo extendía a través de la página mientras que el contenido se centra y se cubre como digamos el 80% de el ancho, y que también se alinea perfectamente con el resto del diseño.

Estoy particularmente interesado en estos dos sitios, porque el encabezado tiene dos colores de fondo, no solo uno.

Estoy seguro de que hay un montón de tutoriales en la web, pero no las palabras clave para buscar.

Respuesta

6

Analizando stumbleupon.com:

La "cabecera" se compone en realidad de dos divs: wrapperHeader y wrapperNav. Esos dos tienen diferentes colores de fondo.Estos divs tienen un solo hijo cada uno que tiene la propiedad CSS

margin: 0 auto 

Esto se traduce en un centrado horizontal.

Esta propiedad también está asignada al contenido div, por lo que el encabezado, la navegación y el contenido están siempre centrados. Por supuesto, esto requiere establecer algo de ancho para estos elementos.

La estructura se parece a esto:

<div id="wrapperHeader"> 
    <div class="" id="header"> 
      <!-- mnore stuff here, like logo --> 
    </div> <!-- end header --> 
</div> 
<div id="wrapperNav"> 
    <ul id="navMain"> 
     <li class="discover first"><a href="/discover/toprated/">Discover</a></li> 
     <li class="favorites"><a href="/favorites/">Favorites</a></li> 
     <li class="stumblers"><a href="/stumblers/onlinenow/">Stumblers</a></li> 
    </ul> <!-- end navMain --> 
</div> 
<div id="wrapperContent"> 
    <div class="clearfix" id="content"> 
    </div> <!-- end content --> 
</div> 

Si obtiene Firebug para Firefox, puede analizar fácilmente los elementos usted mismo.

+0

Esta es una gran respuesta. Sin embargo, aquí hay un truco que puede atrapar a algunas personas, ¡sin duda me atrapó! Un colega mío estaba haciendo algunas depuraciones y necesitaba averiguar qué diseño se estaba utilizando en varias partes de nuestra aplicación web. La forma más simple de resolver esto fue poner un comentario en la parte superior del archivo de plantilla ... antes de la declaración DOCTYPE. Lo adivinaste: el sitio se procesaba perfectamente en Firefox y la única diferencia notable en IE era que la barra superior no se estiraba del todo en toda la página. La solución era asegurarse de que no había nada antes del DOCTYPE. – JamesG

7

es background-image conjunto de body con la propiedad background-repeat:

background-repeat: repeat-x; 

más: http://www.w3schools.com/css/pr_background-repeat.asp

Edición: Como para centrar su contenido- que hacerlo de esta manera:

<body> 
<div id="wrapper"> 
    <!-- here is wrapper *everything* else --> 
</div> 
</body> 

luego establezca width de contenedor a valor (principalmente 960px). Luego, cuando establece su margen en 0 auto, se centra solo.

#wrapper{ 
    margin: 0 auto; 
} 
1

Puede utilizar una imagen de fondo de 1px de ancho con la repetición de fondo establecida en horizontal.

background-image:url('paper.gif'); 
background-repeat:repeat-x; 

Y luego alinee su contenido, de la forma que desee.

1

Esto es solo un diseño de ancho fijo, pero con márgenes automáticos izquierdo y derecho. El efecto de esto es centrar todo el bloque de contenido si el tamaño de la página es más ancho que el ancho del contenido.

el fondo se acaba de establecer como una imagen repetitiva (repeat-x) para que parezca que el elemento del menú realmente se extiende a todo el ancho de la página.

0

creo que está hablando el diferencial ancho de 100%/80% ....

Esto debería ayudar a empezar:

<div id="header" style="width:100%; margin: 0px;"> 
    <!-- header content --> 
</div> 
<div id="content" style="display: block; width: 80%; margin: 0px auto"> 
    <!-- content --> 
</div> 

El margen: auto sobre el contenido hace que el bloque centrado.

Liike Adam dice, agrega el fondo de repetición para darle el elemento gratamente agradable.

4

Adición de imágenes de fondo tiene 2 inconvenientes:

  1. cada vez que quiera cambiar el color de su cabecera tiene que abrir el Photoshop y cambiar el color de allí y luego cambiar de nuevo en su CSS.

  2. Ahora quiere que el color de fondo del encabezado se extienda por la página, pero ¿y si también quiere hacer eso con el pie de página?

La solución más sencilla es la siguiente:

(que no sólo crean una forma fácil de estirar el color a través de la página, pudiendo utilizar diferentes colores en todos los contenidos de encabezado y pie de página, sino también salva a sí mismo desde el problema de doble margen de IE (cuando se utiliza el ancho y el margen en los mismos elementos)

index.html:.

<html> 
    <body id="body"> 
    <div id="header"> 
     <div class="container"> 
      <!-- header's content here --> 
     </div><!-- .container --> 
    </div><!-- #header --> 
    <div id="content"> 
     <div class="container"> 
      <!-- main content here --> 
    <div id="footer"> 
     <div class="container"> 
      <!-- footer's content here --> 
     </div><!-- .container --> 
    </div><!-- #footer --> 
    </body> 
    </html> 

style.css:

.container { 
    margin: 0 auto; 
    overflow: hidden; 
    padding: 0 15px; 
    width: 960px; 
} 

#header { 
    background: #EEE; 
} 

#content { 
    background-color: #F9F9F9; 
} 

#footer { 
    background-color: #333; 
    color: #BBB; 
    clear: both; 
} 

En este ejemplo, el div.container centros de los elementos y también les da un ancho y el color de fondo puede extenderse a través de la página porque # header, #content y #footer no tienen el ancho . Y en el futuro simplemente aplique margen y relleno a los divs dentro de .container, y ahorrará muchos problemas con IE en el futuro.

+0

Gran respuesta: muy simple, conciso, etc. +1 – nicorellius

0

Con CSS 2, no puede estirar una imagen de fondo. No hay propiedad para establecer las dimensiones de la imagen de fondo. Puedes repetirlo en X, Y o en ambos ejes.

CSS 3 permitirá ese estiramiento.

2

Disiento, hay una manera fácil de hacer esto. Compatible con Google Chrome y Firefox, IE no probado.

En su archivo CSS:

body{ 
    overflow-x:hidden; 
} 

div#headerbg{ 
    width:110%; 
    margin-left:-20px; 
    background-color:black; 
} 

y ahora simplemente lo utilizan en su archivo HTML. Puede agregar posicionamiento y qué no a esto.

+0

+1, solo quiero señalar que si alguno de tus contenidos es más ancho que la ventana gráfica, la falta de desplazamiento horizontal podría convertirse en un problema. – ametren

0

Muy simple sin mucho bullicio.

Pega esto entre medio - contenedor de cuerpo y div. Puedes tener todo lo que quieras allí también, pero en mi página es así: (Intenté que se envolviera, no ir, solo copiar y pasta)

<body> 

<div id="bv_ImageMap1" style="margin:0;padding:0;position:absolute;left:0px; top:187px;width:100%;height:5px;text-align:left;z-index:0;"> <img src="files/IMG_2.jpg" id="ImageMap1" alt="" usemap="#ImageMapImageMap0" border="0" style="width:100%; height:5px;"> 

<map name="ImageMapImageMap0"> 
</map> 
</div> 

<div container> 

a continuación, cambiar la información que necesita para la tapa:. px de altura: _px img src = "yourfile/yourimg.jpg y IMPORTANTE no se olvide de la siguiente altura: _ _px

No se necesita nada más en ninguna parte. Pruébalo

Cuestiones relacionadas