Heute möchte ich etwas über das verwendete Design schreiben. Da das Projekt Schulungszwecken dient, habe ich mich für ein recht einfaches Design entschieden. Auch muss ich zugeben bin ich nicht der wirkliche Kreative in diesem Bereich.
Screen-Design
Das Design besitzt den klassischen Aufbau eines 2spaltigen Layouts mit einem Kopfbereich und einer Fußzeile. So können alle wichtigen Informationen übersichtlich untergebracht werden.
+------------------------------------+ | Website-Titel | | Slogan | +---------------+--------------------+ | Seitentitel | Sidebar | | Einführung | +----------------+ | | +-----------+ | | Navigation | | | | Box-Titel | | +----------------+ | | | Box-Text | | +----------------+ | | +-----------+ | | Administration | | | | +----------------+ | +---------------+--------------------+ | Copyright | +------------------------------------+
Reset-Datei
Um die unterschiedlichen CSS-Werte der verschiedenen Browser besser in den Griff zu bekommen, wird als erstes eine Reset-Datei geladen die alle wichtigen Style-Angaben für mich vordefiniert.
- body, div, dl, dt, dl, ul, ol, li, h1, h2, h3, h4, h5, h6,
- pre, form, fieldset, input, p, blockoute, th, td {
- margin:0;
- padding:0;
- }
- h1, h2, h3, h4, h5, h6 {
- font-size:100%;
- }
- ol, ul {
- list-style:none;
- }
- adress, caption, cite, code, dfn, em, strong, th, var {
- font-style:normal;
- font-weight:normal;
- }
- table {
- border-collapse:collapse;
- border-spacing:0;
- font-size:100%;
- }
- fieldset, img {
- border:0;
- }
- caption, th, td {
- text-align:left;
- vertical-align: top;
- }
- q:before, q:after {
- content:”;
- }
Bei umfangreicheren Designs im Webbereich hat sich weiterhin eingebürgert, dass man das Layout der Site vom Design getrennt behandelt. Auch ich habe zwei separate Datei („layout.css“ und „design.css“) dazu erstellt.
Layout-Datei
Als Erstes möchte ich das Layout erklären. Um die Website zu zentrieren, habe ich um den gesamten Inhaltsbereich eine „div“-Container erstellt. Somit kann ich alles gut mittig mit einer Breite von 720 Pixeln platzieren.
- body {
- margin: 0;
- padding: 0;
- text-align: center;
- }
- #page {
- width: 720px;
- margin: 0 auto;
- text-align: left;
- }
Die Überschriften innerhalb meines Kopfbereichen sind jetzt sehr nah am Rand weswegen ich ihnen etwas Abstand gegeben habe.
- #branbing {
- padding: 5px;
- }
Im Prinzip werde ich jedem „div“-Container diesen Abstand geben. Ich habe ihn bewusst in die Layout-Datei und nicht in die Design-Datei geschrieben, weil er die Breiten der „div“-Container beeinflusst.
Um die zwei Spalten zu platzieren, habe ich beide per „float“-Befehl angeordnet, ihnen Breiten und Abstände gegeben.
- #content {
- float: left;
- width: 500px;
- margin-right: 10px;
- padding: 5px;
- }
- #sidebar {
- float: left;
- width: 190px;
- padding: 5px;
- }
Damit der Fußbereich dann auch wieder unterhalb dieses Bereiches weiterläuft, habe ich auch ihn in der Layout-Datei ein paar Werte gegeben.
- #copyright {
- clear: both;
- padding: 5px;
- }
Zum Schluss habe ich noch den Inhalt der Administrationsbox layoutet. Dabei rücke ich den Code per Tab weiterein je tiefer die Verschachtelung ist.
- #content .adminBox {
- font-size: 0.8em;
- }
- #content .adminBox p {
- margin: 0;
- }
- #content .adminBox li {
- display: inline;
- }
- #content .adminBox li a {
- float: left;
- display: block;
- }
Design-Datei
Zur Zeit habe ich nur wenige design-technische Änderungen vorgenommen. Als erstes habe ich allgemeinen Definitionen erstellt.
- body {
- color: #FFF;
- background-color: #CCC;
- font: 14px/1.4em “Trebuchet MS”, Arial, Helvetica, sans-serif;
- }
- input:focus, textarea:focus, select:focus {
- color: #000;
- background: #fff;
- border: 1px solid red;
- }
Div-Page
Der „page“-Container bekommt zusätzlich noch eine kleine Überarbeitung.
- #page {
- color: #000;
- background-color: #FFF;
- }
Div-Branding
Da in meinem Fall der Kopfbereich nur Angaben über das Projekt enthalten soll besteht dieser nur aus zwei Überschriften.
-
<div id="branding">
-
<h1>RE-Design</h1>
-
<h2>REDcms Advents</h2>
-
</div>
In der CSS-Datei wird dann folgende Formatierung darauf angewendet:
- #branding {
- background-color: #333;
- color: #FFF;
- font-family: Georgia,”Time New Roman”, Times, serif;
- font-style: italic;
- }
- #branding h1 {
- font-size: 3em;
- line-height: 1em;
- }
- #branding h2 {
- font-size: 1.5em;
- line-height: 1em;
- color: #3C0;
- }
Div-Content
Als nächstes werden alle wichtigen Tags im „content“-Container definiert.
- #content h2, #content h3, #content h4, #content h5, #content h6 {
- font-family: Georgia,”Time New Roman”, Times, serif;
- font-style: italic;
- line-height: 1em;
- margin-bottom:0.5em;
- }
- #content h2 {
- font-size: 2em;
- }
- #content h3 {
- font-size: 1.4em;
- }
- #content h4 {
- font-size: 1.2em;
- }
- #content h5 {
- font-size: 1.1em;
- }
- #content h6 {
- font-size: 1em;
- }
- #content p {
- margin-bottom: 1em;
- text-align: justify;
- }
Zusätzlich werden noch die Listen der Metaangaben gestylt.
- #content ul.meta {
- font-size: 0.8em;
- }
- #content ul.meta li {
- margin-bottom: 0.5em;
- }
Auch die angezeigten Formulare sind nicht von der Überarbeitung durch das Design-CSS verschont geblieben.
- #content .add fieldset {
- border: 1px solid #333;
- padding: 5px;
- margin-bottom: 1em;
- }
- #content .add legend {
- border: 1px solid #333;
- background-color: #CCC;
- padding: 0 1em;
- }
- #content .add label {
- font-size: 0.8em;
- }
- #content .add label.before {
- display: block;
- }
- #content .add input,
- #content .add textarea {
- width: 470px;
- font-family: sans-serif;
- font-size: 1em;
- padding: 5px;
- }
- #content .add option:hover {
- background-color: #CCC;
- }
Div-Sidebar
Da in der Sidebar mehrere Boxen existieren können, habe ich als erstes grundlegende Einstellungen vorgenommen.
- #sidebar .box {
- border:1px solid;
- margin-bottom: 1em;
- }
- #sidebar .box h4 {
- background-color:#333;
- color: #FFF;
- text-align: center;
- margin-bottom: 0.2em;
- }
Für die Navigation gab es dann noch separate Einstellungen.
- #sidebar #navigation {
- }
- #sidebar #navigation ul {
- margin: 5px 5px 1em 5px;
- }
- #sidebar #navigation ul ul {
- margin: 0 0 0 1.5em;
- }
Ebenso für den Login bzw. das Logout und die Box „über mich“.
- #sidebar #login {
- }
- #sidebar #login p {
- font-size: 0.8em;
- margin: 5px;
- }
- #sidebar #login legend {
- font-style: italic;
- margin: 0;
- padding: 0;
- text-transform: uppercase;
- }
- #sidebar #login strong {
- font-weight: bold;
- text-transform: uppercase;
- }
- #sidebar #login ul {
- margin: 5px;
- }
- #sidebar #login a {
- padding-left: 20px;
- }
- #sidebar #login .page {
- background: transparent url(“/REDcms/templates/images/icons/page.png”) no-repeat;
- }
- #sidebar #login .box {
- background: transparent url(“/REDcms/templates/images/icons/box.png”) no-repeat;
- border: none;
- }
- #sidebar #login .menu {
- background: transparent url(“/REDcms/templates/images/icons/menu.png”) no-repeat;
- }
- #sidebar #about_us {
- }
- #sidebar #about_us p {
- font-size: 0.8em;
- margin: 5px;
- }
Div-Footer
Was noch fehlt, ist der Fußbereich. Hier sind nur die Farben geändert worden.
- #copyright {
- background-color: #333;
- color: #FFF;
- }
- #copyright a {
- color: #FFF;
- }
Div-Debug
Eine kleine Besonderheit habe ich meinen Debugging gegeben. Jedes mal wenn die allgemeine Funktion „code()“ aufrufe, erzeuge ich eine „div“-Container mit der Klasse „debug“.
- function code($msg, $code=HTML_CODE)
- {
- $msg = print_r($msg, true);
- if($code == HTML_CODE)
- {
- $msg = htmlentities($msg);
- }
- echo ‘<div class=”debug”><pre>’.$msg.‘</pre></div>’;
- }
Zusätzlich designe ich per CSS das dieser Container über allem anderen angezeigt werden soll. Somit sehen ich ihn immer.
- .debug {
- position:absolute;
- width: 300px;
- height: 400px;
- overflow: auto;
- text-align: left;
- padding: 5px;
- color: #FFF;
- background-color: #300;
- border: 1px solid #000;
- }
Print-Design
Eigentlich wollte ich eine spezielle Druckversion per CSS für die Ausgabe erstellen – doch leider fehlte mir dafür die Zeit. Da sie aber auch schon auf meiner ToDo-Liste steht, wird sie bestimmt im nächsten Release vorhanden sein.
Ich hoffe ihr habt Verständnis dafür.
Downloads
Ich wollte heute eigentlich einen Artikel über die Möglichkeiten von CSS 3 schreiben. Aber leider sind die interessanten Thema nicht mit den Windows Browsern behandelbar. Egal ob ich nun Firefox 2.0.0.11, Internet Explorer 7.0.6000, Opera 9.23, Flock 1.0.3 oder Safari 3.0.4 benutze. Fast alle zeigen nichts an. Einzig der Safari hat mir multiple Hintergründe angezeigt.
Was ich hier vorstellen wollte, waren neben die Hintergründen das Spaltensystem und die Zusätzlichen Möglichkeiten von Rahmen. All diese Dinge funktionierten überhaupt noch nicht. Eigentlich sehr schade, denn dadurch wären viel Umstände im Designen von Websites Geschichte.
Immer wieder werden ähnlich bzw. gleiche Layouts beim Webdesign gebraucht. Ich habe einmal versucht eine relative einfaches Framework zur schnellen Erzeugung von verschiedenen Layouts zu erstellen.
Um die Verwaltung des Framework einfach zu halten, habe ich mich dazu entschlossen die CSS-Dateien aufzuteilen. In der HTML-Datei existieren zwar nur 3 relative Verlinkungen zu den jeweiligen Ausgabedesigns, aber für jedes Design sind dann weitere 3 Dateien zuständig. Um die Designs flexibel administrieren zu können, benutze ich eine Layout-Datei für die Positionierung der Boxen, eine Color-Datei für die Farbgebung und eine Typographie-Datei für die Texteinstellung.
Websites sollten sich immer dem Benutzer anpassen, so zumindest steht es in vielen Dokumentationen über Benutzerfreundlichkeiten. Aber was ist damit eigentlich gemeint? Welche Anpassung braucht der Benutzer bzw. will er überhaupt haben? Welche ist die Richtige?
Die einfachste Lösung ein Layout für die Website zu erstellen ist mit festen Größenangaben zu arbeiten. Sie ist aber auch am Unflexibelsten, denn das Layout kann sich dann nicht den Bedürfnissen des Betrachters anpassen. Viele heutige Design haben als Maßeinheit für ihr Layout Pixel. Der große Vorteil liegt in der genauen Platzierung von Elementen, wie z.B. Spalten oder aber auch Designelemente wie Hintergrundbilder. Der große Nachteil liegt aber auch gerade in diesen festen Größenangaben. Und hier setzen die flexiblen Design an.
Fast jeder kennt wohl das Problem nichts mehr zu finden wenn es nicht richtig beschriftet wurde. Auch ich suche immer wieder nach den verschiedensten Dinge und das nicht nur im Web oder auf meinen Schreibtisch, sondern auch im gesamten Büro. Aber darum soll es in diesem Artikel nicht gehen. Viel mehr möchte ich mal kurz meine Gedanken über die sinnvolle Benennung von Containern beim Layouten los werden.
Eine sinnvolle und immer wiederkehrende Beschriftung von Container man natürlich nicht nur beim Arbeiten in einem Team, sondern bringt auch für einen selbst mehr Sicherheit. Dabei sollte immer darauf geachtet werden den HTML-Code nicht unnötig aufzublähen. Gerade im mobilen Web sind kline Datenmengen Gold wert.
Letzte Woche hatte ich ein Seminar zum Thema CSS und eins über Dreamweaver gehalten. Es waren Teilnehmer sowohl von Roche Diagnostics als auch von Landessport Bund dabei, die mittels CMS die Inhalte ihrer Website betreuen. In diesen Seminaren kam die Frage nach einen flexiblen System zum Erzeugen eines CSS gesteuerten Layouts auf.
Nach ein paar Überlegungen kamen wir dann auf die Teilung des CSS-Designs in 4 Dateien:
- basic.css
- 2column.css
- 3column.css
- content.css