2010-02-22 5 views
8

http://www.stumbleupon.com/Wie über eine Web-Seite Hintergrund mit CSS

http://www.mixx.com/

Beide Seiten haben zentriert auf der Seite, während der Inhalt gestreckt, um einen Header strecken ein Hintergrund-Header und deckt wie sagen 80% die Breite, und das passt auch perfekt zum Rest des Layouts.

Ich bin besonders an diesen beiden Seiten interessiert, weil die Kopfzeile zwei Hintergrundfarben hat, nicht nur eine.

Ich bin sicher, es gibt Tonnen von Tutorials im Web, aber ich suche nicht nach den Schlüsselwörtern.

Antwort

6

stumbleupon.com Analyse:

Die "header" besteht eigentlich aus zwei divs: wrapperHeader und wrapperNav. Diese zwei haben unterschiedliche Hintergrundfarben. Diese divs haben nur ein Kind jeder, der die CSS-Eigenschaft hat

margin: 0 auto 

Dies führt zu einer horizontalen Zentrierung.

Diese Eigenschaft ist auch dem Inhalt div zugeordnet, so dass die Kopfzeile, Navigation und Inhalt immer zentriert sind. Natürlich erfordert dies eine gewisse Breite für diese Elemente.

Die Struktur sieht wie folgt aus:

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

Wenn Sie Firebug für Firefox erhalten Sie leicht die Elemente selbst analysieren.

+0

Dies ist eine großartige Antwort. Allerdings ist hier ein Problem, das einige Leute auffangen kann - es hat mich auf jeden Fall erwischt! Ein Kollege von mir machte etwas Debugging und musste herausfinden, welches Layout in verschiedenen Teilen unserer Web-App verwendet wurde. Der einfachste Weg, dies herauszufinden, war, einen Kommentar am Anfang der Vorlagedatei ... vor der DOCTYPE-Deklaration zu setzen. Sie haben es erraten: Die Seite wurde in Firefox perfekt gerendert und der einzige bemerkenswerte Unterschied in IE war, dass die obere Leiste sich nicht ganz über die Seite erstreckte. Die Lösung bestand darin, sicherzustellen, dass vor dem DOCTYPE nichts war. – JamesG

7

es ist background-image Satz body mit Immobilien background-repeat:

background-repeat: repeat-x; 

mehr: http://www.w3schools.com/css/pr_background-repeat.asp

bearbeiten: Was Ihre Content- Zentrierung ich es tun auf diese Weise:

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

dann setzen Sie width Wrapper auf Wert (meist 960px). Wenn Sie dann den Rand auf 0 auto setzen, zentriert es sich.

1

Sie können ein Hintergrundbild 1px Breite mit Hintergrundwiederholung horizontal verwenden.

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

Und dann richten Sie Ihren Inhalt, wie Sie möchten.

1

Dies ist nur ein Layout mit fester Breite, aber mit automatischem linken und rechten Rand. Dadurch wird der gesamte Inhaltsblock zentriert, wenn die Seitengröße größer als die Inhaltsbreite ist.

Der Hintergrund wird einfach als sich wiederholendes Bild (repeat-x) gesetzt, damit es so aussieht, als würde das Menüelement die gesamte Breite der Seite erweitern.

0

Ich glaube, Sie reden über die 100%/80% Breite Differential ....

Dies sollte Ihnen den Einstieg erleichtern:

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

Die margin: auto auf den Inhalt macht die Block zentriert.

Liike Adam sagt, fügen Sie die Hintergrund-Wiederholung, um es das grafisch erfreuliche Element zu geben.

4

Hinzufügen von Hintergrundbilder haben 2 Nachteile:

  1. Jedes Mal, wenn Sie die Farbe Ihres Kopfes Sie Ihren Photoshop ändern mögen öffnen und die Farbe dort ändern und es dann wieder in Ihrem CSS ändern.

  2. Jetzt möchten Sie die Hintergrundfarbe der Kopfzeile über die Seite strecken, aber was, wenn Sie das mit der Fußzeile auch tun möchten?

Die einfachste Lösung ist diese:

(Sie nicht nur eine einfache Möglichkeit zu schaffen, die Farbe über die gesamte Seite zu strecken, unterschiedliche Farbe in jedem Header Inhalt und Fußzeilen, verwenden zu können, sondern auch es spart sich aus der Doppel Marge Problem des IE (wenn Sie Breite und Marge in den gleichen Elementen verwenden)

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

In diesem Beispiel zentriert die div.container die Elemente und gibt ihnen auch eine Breite, und die Hintergrundfarbe kann über die Seite, weil # header, #content und #footer nicht haben Breite strecken . Und in Zukunft nur Rand und Padding auf divs innerhalb .container anwenden, und Sie werden viele Probleme mit IE in der Zukunft speichern.

+0

Große Antwort - sehr einfach, prägnant, etc ... +1 – nicorellius

0

Mit CSS 2 können Sie ein Hintergrundbild nicht strecken. Es gibt keine Eigenschaft zum Festlegen von Hintergrundbilddimensionen. Sie können es einfach auf X, Y oder beiden Achsen wiederholen.

CSS 3 wird diese Dehnung zulassen.

2

Ich bitte zu unterscheiden, gibt es eine einfache Möglichkeit, dies zu tun. Kompatibel mit Google Chrome und Firefox, IE nicht getestet.

In Ihrer CSS-Datei:

body{ 
    overflow-x:hidden; 
} 

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

und jetzt einfach verwenden Sie es in Ihrer HTML-Datei. Sie können Positionierung hinzufügen und was nicht.

+0

+1, möchte nur darauf hinweisen, dass, wenn einer Ihrer Inhalte breiter als das Ansichtsfenster sein wird, das Fehlen des horizontalen Scrollens ein Problem werden könnte. – ametren

0

Sehr einfach ohne eine ganze Reihe von Hoopla.

Fügen Sie diesen zwischen - body - and - div container - Sie können was auch immer Sie wollen drin haben, aber auf meiner Seite ist es so: (Ich habe versucht, es zu wickeln, nicht gehen, nur kopieren und Paste)

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

dann die Informationen, die Sie für Top benötigen ändern. px Höhe: _px img src = "yourfile/yourimg.jpg und WICHTIG Sie die nächste Höhe nicht vergessen: _ _px

Kein anderes Gerät benötigt sonst. Versuchen Sie es.