Dies ist ein mittleres Niveau Tutorial und ist die Fortsetzung einer früheren Tutorial, das gefunden werden kann hier . Es setzt voraus, dass der Leser über gute Kenntnisse und Verständnis für HTML und CSS. Einführung In unserem vorherigen Tutorial, sahen wir, wie wir Multi-Spalten-Layouts mittels semantischer Markup und CSS, um Container zu manipulieren erstellen können. Die Methoden, die wir verwendet benötigt keine Workarounds, Hacks oder Browser-spezifischen Behandlungen. Hier, gut mit dem weiterhin durch die Untersuchung, wie die Techniken Mängel und Gefahren, ohne das Layout zu überwinden.
Hier sind die Markup-und CSS benutzt, waren wir mit am Ende des vorherigen Tutorial links.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>My Website</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div id="page_container">
<div id="header">
<h1>My Web Site</h1>
</div>
<div id="left_column">
<ul>
<li><a href="#">Menu 1</a></li>
<li><a href="#">Menu 2</a></li>
<li><a href="#">Menu 3</a></li>
</ul>
</div>
<div id="center_column">
<h2>My Document</h2>
<p>Vivamus elementum ligula gravida neque. Cras adipiscing ligula non turpis. Sed cursus scelerisque libero. Sed at arcu. Vestibulum metus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Phasellus id turpis. Sed purus. Integer eget ligula elementum felis aliquet rhoncus. Morbi augue.</p>
</div>
<div id="right_column">
<h3>Sidebar</h3>
<p>Vivamus non urna eget nisi placerat vehicula. Vivamus semper molestie lacus. Proin a tellus et massa placerat ultricies. Curabitur viverra convallis felis.</p>
</div>
<div id="footer">
<p>Copyright Information</p>
</div>
</div>
</body>
</html>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html>
- <head>
- <title>My Website</title>
- <link rel="stylesheet" type="text/css" href="style.css" />
- </head>
-
- <body>
- <div id="page_container">
- <div id="header">
- <h1>My Web Site</h1>
- </div>
- <div id="left_column">
- <ul>
- <li><a href="#">Menu 1</a></li>
- <li><a href="#">Menu 2</a></li>
- <li><a href="#">Menu 3</a></li>
- </ul>
- </div>
- <div id="center_column">
- <h2>My Document</h2>
- <p>Vivamus elementum ligula gravida neque. Cras adipiscing ligula non turpis. Sed cursus scelerisque libero. Sed at arcu. Vestibulum metus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Phasellus id turpis. Sed purus. Integer eget ligula elementum felis aliquet rhoncus. Morbi augue.</p>
- </div>
- <div id="right_column">
- <h3>Sidebar</h3>
- <p>Vivamus non urna eget nisi placerat vehicula. Vivamus semper molestie lacus. Proin a tellus et massa placerat ultricies. Curabitur viverra convallis felis.</p>
- </div>
- <div id="footer">
- <p>Copyright Information</p>
- </div>
- </div>
- </body>
- </html>
/* Intrinsic HTML Elements */
body{margin:0;padding:0;}
div{margin:0;padding:0;}
h1, h2, h3, p{margin:0;padding:10px;}
ul{margin:0;padding:0;}
li{list-style-type:none;padding:10px;}
/* Uniquely Identified Containers */
#page_container{width:760px;margin:0 auto;}
#header{background:#999;}
#left_column{width:180px;float:left;background:#CCC;}
#center_column{width:400px;float:left;background:#ECECEC;}
#right_column{width:180px;float:left;background:#CCC;}
#footer{clear:both;background:#999;}
- /* Intrinsic HTML Elements */
- body{margin:0;padding:0;}
- div{margin:0;padding:0;}
- h1, h2, h3, p{margin:0;padding:10px;}
- ul{margin:0;padding:0;}
- li{list-style-type:none;padding:10px;}
-
- /* Uniquely Identified Containers */
- #page_container{width:760px;margin:0 auto;}
- #header{background:#999;}
- #left_column{width:180px;float:left;background:#CCC;}
- #center_column{width:400px;float:left;background:#ECECEC;}
- #right_column{width:180px;float:left;background:#CCC;}
- #footer{clear:both;background:#999;}
Derzeit muss unser Dokument zu machen fast identisch in allen aktuellen Browsern * (
Abbildung 1 ).
Figure 1 - Rendered markup and CSS (Opera 9.26)
* Mit dem "Strom", lose Im Bezug auf Internet Explorer 7, Firefox 2, Opera 9 und Safari 3. Die aktuelle Version von Konquorer sollte in diese Liste aufgenommen werden, jedoch habe ich keinen Zugang zu diesem Browser. Arbeiten mit dem Content-Box Box-Modell und Padding Das erste, was wir brauchen, zu diskutieren und zu verstehen, ist das Box-Modell. Dies zu verstehen ist wichtig, wenn wir eine feste Pixel-Breite definieren für ein Block-Element. In diesem Fall ist die <div> Elemente, die wir für die Spalten.
Es gibt zwei Arten von Box-Modelle, die "content-box" und die "border-box". Der Unterschied zwischen ihnen ist, wie wir ihren Dimensionen zu betrachten. Wo die Breite einer border-Feld gemessen Form Grenze zu Grenze, ein Content-Box ist in Bezug auf den Content-Bereich gemessen. Dies ist unten dargestellt (
Abbildungen 2 und 3 ).
Figure 2 - The border-box
box_content.gif
Das Box-Modell am häufigsten unterstützte heute ist der Inhalt-Box.
Da weve definiert bestimmten Breiten für die Spalten, wir wollen nicht zu ihrer Polsterung oder Margining berühren. Ausbau dieser wäre in der Tat, erweitern Sie den kumulativen Breite der Spalte und führen unsere Spalten zu wickeln. Deshalb haben wir diese zu normalisieren, indem sie auf "0".
Um diese Idee zu formulieren, wenn ich ein Content-Box erstellen und die Breite 200 Pixel, dann hat 10 Pixel Padding auf allen Seiten, würde die Box optisch machen als 220 Pixel.
Auch wenn es die counter-intuitive, anstatt der padding einmal, um den Container, wenden wir es mit den Text-Elemente innerhalb. Diese Elemente wurden nicht gegeben bestimmten Breiten und damit natürlich in Einklang mit den Behältern Content-Bereich. Dies war das letzte Stück von CSS Wir haben in den letzten Tutorial.
h1, h2, h3, p{margin:0;padding:10px;}
Wir könnten natürlich, genauer gesagt mit den Abmessungen unserer padding, indem Sie oben, rechts, unten und von links Dimensionen. Lets dazu vorübergehend mit dem <li> Element mit der Kurzschrift.
li{list-style-type:none;padding:5px 10px 5px 10px;}
"Wie bekomme ich alle Spalten gleichermaßen expandieren?" Die kurze Antwort ist: "Wir nicht. "Was wir allerdings, den Eindruck entstehen zu tun, dass dies vorkommen, indem Sie einen grafischen Hintergrund. Wir gelten nicht der Hintergrund für jede Spalte, individuell. Stattdessen nutzen wir einen einzigen Hintergrund-Bild auf die pare keine Container. In diesem Fall die <div> als "page_conatiner" identifiziert. In
Abbildung 4 Sehen wir, wie die entsprechende Hintergrund aussehen wird. Um dies zu erreichen, müssen auch zu schaffen oder zu erhalten, eine Grafik, die 760 Pixel breit und 1 Pixel groß ist.
Figure 4 - Background design
In der CSS können, entfernen wir den festen Farben, die wir früher für den angegebenen Spalten.
#left_column{width:180px;float:left;}
#center_column{width:400px;float:left;}
#right_column{width:180px;float:left;}
- #left_column{width:180px;float:left;}
- #center_column{width:400px;float:left;}
- #right_column{width:180px;float:left;}
Weiter, gut für unsere Grafik, die standardmäßig wiederholen, oder Fliesen.
#page_container{width:760px;margin:0 auto;background:url(background.gif);}
Wenn wir die Seite zu machen, scheint es, als ob die Spalten vertikal zu erweitern und auch unabhängig davon, wer viel Inhalt haben wir in einer bestimmten Spalte.
Figure 5 - Rendered with page_container background (Opera 9.26)
Arbeiten mit dem <ul> als Menü Das nächste, was gut Blick auf das Menü. Die Gründe für die Verwendung von unsortierten Listen als Menü und die fortschrittliche Manipulation von ihnen wäre ein gutes Thema für ein Tutorial, es ist jedoch nicht in den Anwendungsbereich dieser ein.
Ändern einer <ul> als Menü verwendet zu sein scheint ein Stolperstein für viele von uns. In der Regel ist das Ziel der Gestaltung des Menüs ist es, daß jedes Glied erstrecken sich auf die horizontale Breite der Spalte. Darüber hinaus, wie für die Benutzer den Cursor mit der gesamten Region zu interagieren sowie mi.
Das Ziel ist erreicht, einfach, indem angewiesen diese Links als Block-Level-Produkten zu machen, im Gegensatz zu Inline-Level-Produkten. Nun auch zu einer Verminderung der Polsterung der <li> Container auf "0" Fügen Sie stattdessen das gewünschte padding den <a> Elemente. Nun werden die Schaffung einer neuen Auswahl in unserem CSS.
li{list-style-type:none;padding:0;}
li a{display:block;background:#CCC;padding:5px 10px 5px 10px;}
- li{list-style-type:none;padding:0;}
- li a{display:block;background:#CCC;padding:5px 10px 5px 10px;}
Für die Zwecke des Sehens den Cursor-Interaktionen, und fügen Sie noch einen weiteren neuen Selektor, als auch - einen Pseudo-Zustand der <a> Element.
li a:hover{background:#F00;}
Figure 6 - Final render (Opera 9.26)
Fazit In diesem Tutorial weve gesehen, wie die Errichtung und Aufrechterhaltung eines drei-Spalten-Layout mit semantischen Markup und CSS - ohne Umwege. Darüber hinaus erforscht weve, wie Sie häufige Fehler, die, sonst brechen unsere Aufteilung überwinden.
Während dieses Tutorial nicht ihn richten, kann die gleiche Technik, um Anteil Layouts angewendet.
Bitte PM mich mit Anregungen zur Verbesserung dieses Tutorial.
Danke!
dM
Figure 3 - The content-box