Wie baut man ein CSS "richtig" auf? . oder #

Pingu schrieb:
Oder man nimmt einfach den DOM Inspector, der bereits Bestandteil von Firefox ist.

Hätte ich jetzt auch vorgeschlagen. :D

Noch etwas einfacher geht's mit dem "Web Developer".
Das Megatool für die realtime Analyse!

http://www.erweiterungen.de/
(Pfad: Firefox im Menü oben anklicken, Werkzeuge für Entwickler in der SubNav rechts)

Bei der benutzerdefinierten Installation der Version 1.5.0.1 sollte das mit dabei sein.

Grüße Naomi
 
Bei so viel konzentriertem Sachverstand möchte ich auch noch eine Frage anbringen.
Ich habe beim Analysieren einer interessanten Seite folgende Konstrukte gefunden:
HTML:
<h1><span>Bla Fasel</span></h1>
und
HTML:
<p class="eineKlasse"><span>Bla Fasel</span></p>
Das Ganze in verschachtelten div Containern.
Steckt da ein tieferer Sinn dahinter, der sich mir nicht auf Anhieb erschließt?
 
meistens wird dieses konstrukt dazu genutzt, um die Inhalte auszublenden (bzw zu verstecken) um statt dem Text ein Bild (welches dann als Hintergrund eingebunden wird) anzuzeigen.

mit dieser technik erhält man die barrierefreiheit und hat trotzdem eine möglichkeit, die schrift genauer zu gestalten.

HTML:
Code:
<h1 id="text" title="Text"><span>Text</<span></h1>
CSS:
Code:
h1#text{
  height:50px;
  width:300px;
  background: url('bild.png') center no-repeat;
}
h1 span{
  display:block;
  height:0;
  overflow:hidden;
}
Der CSS-Code definiert den <h1> als Kasten mit 50*300px und dem Hintergrund "bild.png", der zentriert wird und nur einmal angezeigt (also nicht wiederholt) wird. Der zweite Teil dient dazu den eigentlichen Text (also das was zwischen <h1> und </h1> steht) zu verstecken.
Der im HTML angegebene "title" dient dazu, die bei mouseover erscheinende info bei einem "normalen" bild (<img />) nachzuahmen um dem User weitere Informationen zukommen zu lassen.

(wäre es möglich, dass du auf meiner Seite warst? :D )
 
Ich wende ähnliche Konstrukte hin und wieder auch an. Es gibt viele Fälle in denen man ohne sowas nicht weiter kommt oder nette Effekte realisieren kann. Grundsätzlich gibt es einem mehr Felxibilität. Ein Konkretes Beispiel zu Deinem H1:

Code:
<h1><span>Bla Fasel</span></h1>
Code:
h1 {
   background-image:url(bla_fasel.gif);
}
h1 span {
   display:none;
}
Der Text wird nicht angezeigt. Stattdessen wird eine entsprechende Grafik im Hintergrund eingeblendet.

Die Hovereffekte im Menü auf dieser Seite wären z.B. auch nicht ohne solche Verschachtelungen möglich gewesen.
 
die methode von dms geht auch, ist aber nicht barrierefrei, da nahezu alle textbrowser und lesegeräte per "display:none;" ausgeblendete VISUELLE elemente ebenfalls nicht anzeigen/vorlesen.
 
pichfl schrieb:
(wäre es möglich, dass du auf meiner Seite warst? :D )
Nicht bis Du gefragt hast :D.

@dms
Da komm ich noch nicht ganz mit. Wenn ich den Text ausblende, kann ich ihn doch auch ganz weg lassen und wenn ich ein Bild an einer bestimmten Stelle anzeigen möchte, kann ich es auch in einen anderen Container stecken.
Ich kann das nur dann nachvollziehen, wenn ich zB verschiedene Stylesheets für eine Seite habe. Mal wird der Text angezeigt, mal nicht.
 
man kann das z.b. dazu verwenden:

die Kopfzeile auf meiner Seite (also der dunkle Balken) ist eben so ein <h1> mit einem span.

der enthält den text "einserver.de".

Wenn man die seite druckt, druckt man eben nur diesen Text und nicht das Bild, gleiches passiert, wenn man mit textbrowser die seite besucht. der textbrowser markiert das "einserver.de" als die erste überschrift auf der seite und eben nicht als völlig zusammenhangloses bild (bzw dessen alternativtext).


EDIT:
(daher kam mir auch der gedanke, dass du auf meiner seite gewesen sein könntest)

und noch ein Nachtrag:
http://www.mezzoblue.com/tests/revised-image-replacement/
diese Seite listet alle Techniken incl. vor- und nachteilen.
 
@ MACeis

vielleicht hilft dir das ganze hier auch weiter:

http://www.frixon.de/tuts/imageheadline.html

Dieses Konstrukt dient dann quasi zur logischen Gliederung, d.h. ein Bild oben (ja auch gern als Header betitelt) wird dann auch Ueberschrift ausgegegeben...was ja das Bild auf der Webseite "eigentlich" auch ist...

insgesamt muss ich sagen, dass das wirklich schon frimellei ist, und man es auch einfacher realisieren koennte...aber logisch ist es halt exakt.

mfg
m0mo
 
Im Prinzip ist mir das jetzt schon klar.
Schade finde ich nur, dass der eigentliche Grundgedanke von CSS (einfache, leicht durchschaubare Formatierung) durch solche Geschichten aufgeweicht wird.
Viel schlimmer ist das aber noch mit den diversen Browserbesonderheiten, die einen zu - teilweise komplizierten - Hacks 'zwingen'.
Aber da kann man wohl nix machen.
 
maceis schrieb:
Im Prinzip ist mir das jetzt schon klar.
Schade finde ich nur, dass der eigentliche Grundgedanke von CSS (einfache, leicht durchschaubare Formatierung) durch solche Geschichten aufgeweicht wird.
Viel schlimmer ist das aber noch mit den diversen Browserbesonderheiten, die einen zu - teilweise komplizierten - Hacks 'zwingen'.
Aber da kann man wohl nix machen.

Da kann ich Dir nur zustimmen, wobei es, was die Browser-Probleme angeht, immer besser geht, seitdem man den MacMSIE links liegen lassen kann, und man nicht mehr darauf achten muss, dass man in Tabellenzellen am besten alles ohne Zeilenumbruch schreibt, damit den NN4.7 nicht aussteigt. Insofern kann man sich mit ein wenig Erfahrung ganz gut auch Browser-übergreifend arbeiten (in Grenzen), und trotzdem auf CSS-Hacks verzichten kann.
 
maceis schrieb:
Im Prinzip ist mir das jetzt schon klar.
Schade finde ich nur, dass der eigentliche Grundgedanke von CSS (einfache, leicht durchschaubare Formatierung) durch solche Geschichten aufgeweicht wird.
Viel schlimmer ist das aber noch mit den diversen Browserbesonderheiten, die einen zu - teilweise komplizierten - Hacks 'zwingen'.
Aber da kann man wohl nix machen.
Aber anders kann man soetwas halt nicht machen: www.csszengarden.com
Außerdem stellt sich die Frage: Wird es wirklich aufgeweicht? Man hat HTML wo man die Überschriften genau spezifiziert. Und man hat CSS, wo mit man dann alles nach gut dünken formatieren kann. Da bin ich als Programmierer zufrieden. Weil ich habe nicht wirklich ein graphisches Verständnis. Und da sind die Graphiker (Designer auf Neudeutsch) zufrieden, weil die alles so umsetzten können wie sie meinen, daß es gut aussieht ;).

Pingu
 
maceis schrieb:
Viel schlimmer ist das aber noch mit den diversen Browserbesonderheiten, die einen zu - teilweise komplizierten - Hacks 'zwingen'.
Aber da kann man wohl nix machen.

Pingu schrieb:
Aber anders kann man soetwas halt nicht machen:
www.csszengarden.com

Das ist so nicht richtig. Es gibt jemanden, der hat bereits 2003 eine Lösung entwickelt, mit der man jedes Design pixelgenau umsetzten kann und das vollkommen ohne einen einzigen CSS-Hack. Die Lösung ist Cross-Browser-Kompatibel und absolut robust, da sie eine Lösung für den IE-Box-Model-Bug beinhaltet. Egal ob das falsche Box-Model oder das richtige Box-Model vom Browser angewandt wird, die Seite wird immer absolut richtig angezeigt. Damit kann man sogar die XML-Deklaration setzen und der Quirks-Modus beim IE zeigt die Seite immer noch richtig und pixelgenau an.
 
naomi_watts schrieb:
Das ist so nicht richtig. Es gibt jemanden, der hat bereits 2003 eine Lösung entwickelt, mit der man jedes Design pixelgenau umsetzten kann und das vollkommen ohne einen einzigen CSS-Hack. Die Lösung ist Cross-Browser-Kompatibel und absolut robust, da sie eine Lösung für den IE-Box-Model-Bug beinhaltet. Egal ob das falsche Box-Model oder das richtige Box-Model vom Browser angewandt wird, die Seite wird immer absolut richtig angezeigt. Damit kann man sogar die XML-Deklaration setzen und der Quirks-Modus beim IE zeigt die Seite immer noch richtig und pixelgenau an.

Sei bitte so lieb, und versorge uns mit einer Quelle/Link. Danke!
 
das waere wirklich _genial_ :)

wieso ist dieser Mann nicht schon unglaublich reich und wir ueberall zitiert? :)

mfg
m0mo
 
m0mo schrieb:
wieso ist dieser Mann nicht schon unglaublich reich und wir ueberall zitiert? :)
liegt wohl daran dass dieser Weg nicht wirklich eine Vereinfachung bedeutet. Soweit ich mich erinnern kann ist der einzige Trick, Elementen nicht gleichzeitig eine Breite(Höhe) und Margin oder Padding zu geben. Somit hat der IE auch nix zum falsch interpretieren.
 
Hilarious schrieb:
Sei bitte so lieb, und versorge uns mit einer Quelle/Link. Danke!

Soweit ich mich erinnern kann hat er seinen Ansatz erstmal öffentlich Ende 2003 / Anfang 2004 bei spotleid.de im Forum vorgestellt. Es gab damals die Diskussion Liquid Design versus Absolut Positioning, zwischem ihm und Prefix.
Prefix war Befürworter des Liquid-Ansatzes. Den dort vorgestellten Lösungansatz, der hier gleich kurz dargestellt wird, hat sich Lars im Jahr 2003 ausgedacht.

Der Trick ist erstens als Basis den Absolut-Positioning-Ansatz zu nehmen anstatt den Liquid-Ansatz. Innerhalb des Absolut-Positioning-Ansatzes kann man wenn man will dann auch wieder Teile liquid machen.
Statt also einen Dokumentenfluß zu haben, ähnlich wie Word, wird voll auf Boxen gesetzt, die man beliebig positioneren kann, das ähnelt dann schon der Denk- und Arbeitsweise von Photoshop/InDesign/Quark - ein Layout-Ansatz eben. (Das dürfte allen Designer die aus der Print-Ecke kommen das Herz aufgehen lassen.)
Damit ist man dann schon einmal die ganzen Probleme mit dem CSS-Floating los, wozu die allermeisten CSS-Hacks da sind.

Um die Seite nun auch gegen den Box-Modul-Bug robust zu machen geht man wie folgt vor. Beim falsch implementieren Box-Model vom IE 5.0 (was anfangs auch von Opera übernommen wurde), ist das Problem, dass Angaben bzgl Padding und Border zur Größe der Box dazugerechnet werden.
Der erste Lösungsansatz ist diese Angaben zu vermeiden, allerdings will man oft nicht darauf verzichten. Der Trick ist nun zwei Boxen zu schachteln, die äußere bekommt die Angaben bzgl Weite und bei Bedarf auch der Höhe. In der inneren Box (die erstmal mit der äußeren identisch ist) kann man nun Padding, Margin und Border verwenden.
Das hat erstmals den kleinen Nachteil, dass ein paar Boxen mehr gesetzt werden müssen, allerdings kann man dann auch global und zentral für die innere Box ein Padding für den Text setzen, was die Wartung der Seite dann vereinfacht. Von daher ist es kein reiner Workaround sondern bringt auch einen Benefit.

Ist die ganze Seite nach dem Absolut-Positioning-Ansatz gebaut und benutzt man seinen Trick mit den zwei Boxen (da wo es nötig ist), erübrigt es sich fast völlig die Seite mit diversen Browsern zu testen.
Die Zeit als man Stunden und Tage damit zubringen mußte die Seite auf unzähligen Browsern zu testen und unzählige CSS-Hacks einzubauen ist damit vorbei. Und der Code ist Standard-Konform.

Es lohnt sich absolut so vorzugehen. Eure Projekte werden schneller fertig, ihr könnt günstiger produzieren und habt mehr Freizeit.

Lars hat 2003 noch ein paar weitere Lösungen entwickelt, darunter auch ein Cross-Browser JavaScript mit dem sich Ebenen ein- und ausblenden lassen (DOM), damit ist dann ein Content-Fokusierter-Ansatz möglich womit man auf scrollen verzichten kann. Weiterhin auch ein JS mit dem sich Angaben von Positionen korrigieren lassen (DOM), falls man z.B. einen Spaltensatz benutzt der in der Höhe liquid ist und noch ein Footer drunter soll.
Falls man ein Layout hat, bei dem ein Teil in der Breite variabel sein soll, je nach Fenstergröße, kann man dies damit auch lösen.

Der Einsatz von JS sollte unproblematisch sein, da 99,95% aller UAs dies aktiviert haben, die restlichen 0,05% sind Suchmaschinen. Denen ist die Darstellung egal und an die Inhalte kommen sie ran.

Für die INFO bekomme ich aber jetzt den MacUser-Pokal :D

Edit: Ein Wort im Satzbau vergessen und nachgereicht
 
Zuletzt bearbeitet:
Noch ein kleiner Tip:
Falls man testen möchte, ob das Layout robust ist kann man einfach kurzzeitig die XML-Deklaration in den Header schreiben und den IE 6.0 so in den Quirks-Modus schicken, dann verwendet er wieder das falsche Boxenmodell vom IE 5.0.
 
Falls ihr mal wieder bzgl. des Box-Model-Bugs selbiges hört:

"Die einfachste Möglichkeit ist, die Seite flexibel genug zu gestalten, so dass es bei den Größen von Elementen nicht auf ein paar Pixel mehr oder weniger ankommt."

Dann habt ihr jetzt eine Lösung mit der sich genauso pixelgenau wie mit Tabellen-Layoutkrücken arbeiten läßt.
 
Zurück
Oben Unten