14.08.2008 - geschrieben von mrvn in Tutorials
12 Ersten Artikel automatisch mit CSS hervorheben
![]()
Nehmen wir mal an, wir haben eine Seite, auf der eine Reihe von Artikeln in gleicher HTML-Struktur ausgegeben werden! Nun wollen wir aber den ersten Eintrag ein wenig hervorheben, ohne aber die HTML Struktur noch erweitern zu müssen.
Hierfür eignet eignet sich CSS, durch verschiedene Pseudo Klassen & Elemente besonders gut. Mit z.b. :before und :first-child kann man da einiges erreichen! Im Folgenden werde ich das an einem Beispiel präsentieren!
Definieren der Artikel
<div id="gesamt"> <div class="eintrag"> <h1>Lorem ipsum dolor</h1> <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</p> </div> <div class="eintrag"> <h1>Lorem ipsum dolor</h1> <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</p> </div> </div>
Wie man sieht besteht das Markup eines Artikels also aus einem div – Container mit der Klasse “Eintrag” (class="eintrag"), der eine Überschrift (h1) und einen Fließtext bzw. Absatz (p) beinhaltet. Diese Elemente werden wir nun in der CSS für die Gestaltung gebrauchen!
Der CSS Teil
/* CSS Abstands Reset*/
* { margin:0px;}
/* Allgemein */
body {
font-family:Arial;
font-size:0.8em;
background:#444;
color:#666;}
/* Gesamter Container */
#gesamt {
padding:10px;
background:#fff;
margin:50px auto;
width:750px; }
/* Container für ein Artikel */
.eintrag {
padding:10px;}
Das wäre also nun unser Grundgerüst (HTML+CSS), das wie folgt aussieht:
Nun sehen beide Artikel jedoch noch identisch aus. Genau das wollen wir aber bei gleichem HTML-Markup nun verändern und versuchen den obersten Artikel anders zu stylen, da dieser hervorstechen soll! Das lässt sich mit CSS sehr einfach realisieren, indem wir, wie bereits erwähnt, die Pseudo Klasse :first-child benutzen!
Hier der zusätzlich nötige CSS Code:
/* Selektor für den ersten Artikel */
.eintrag:first-child {
background:#f0f0f0;
font-size:1.3em;}
/* Selektor für die erste Artikel-Überschrift */
.eintrag:first-child h1 {
color:#679fbf;
font-family:Georgia;
padding-bottom:5px;
margin-bottom:5px;
border-bottom:1px dotted #679fbf; }
/* Selektor für den ersten Fließtext */
.eintrag:first-child p {
font-weight:bold; }
Jetzt kommt :before ins Spiel
Um nicht nur das Styling zu ändern, sondern sogar noch einen Hinweis zur Überschrift (z.b. Aktuell:) per CSS hinzuzufügen, können wir noch zusätzlich das Element :before nutzen. Es bestimmt den Inhalt vor einem Element! Der folgende CSS-Selektor bestimmt sozusagen den Inhalt vor (:before) der Überschrift (h1) im ersten Kind (first-child) der Klasse .eintrag
.eintrag:first-child h1:before {
content:"Aktuell: ";}
Beides im Stylesheet ergänzt, sieht meine kleine Artikelseite wie folgt aus:
Hinweis:
Leider unterstützt IE6 “before” und “first-child” nicht, aber das sollte nicht weiter schlimm sein! Des weiteren ist das lediglich ein Beispiel, um zu verdeutlichen was man alleine mit CSS alles entwickeln kann, ohne das HTML-Markup anzufassen! Wenn man zusätzlich noch ein wenig mit :first-line und :first-letter rumexperimentiert sind der Phantasie fast keine Grenzen gesetzt, außer vielleicht ein paar Gestaltungsgrundsätze ;)
Hoffe euch hat das Tutorial gefallen. Wenn Fragen auftreten sollten, könnt ihr diese natürlich in die Kommentare schreiben! Vielen Dank für das Interesse!
Tags: css
12 Kommentare
Trackback - RSS Kommentare zu "Ersten Artikel automatisch mit CSS hervorheben"
1 Nils Riel
schrieb am 15. August 2008 um 17:10
“Leider unterstützt IE6 “before” und “first-child” nicht, aber das sollte nicht weiter schlimm sein!”
Das ist wohl kaum akzeptabel, was das Tutorial für die nächsten Jahre noch unbrauchbar macht. Ob es jedoch weiter schlimm ist, dass im Internet Explorer 6 der erste Artikel dem zweiten gleicht, sei mal so dahingestellt.
2 Marvin
schrieb am 15. August 2008 um 18:36
1. meine Seite wird z.b. kaum mit dem IE6 besucht. also wenn man weiss wer seine Zielgruppe ist, finde ich das Tutorial schon brauchbar.
2. kommt es ja im IE6 zu keiner fehlerhaften Darstellung, deswegen meinte ich das es nicht weiter schlimm ist.
danke trotzdem für den netten Kommentar :/
3 daswebdesignblog
schrieb am 18. August 2008 um 21:07
Der IE kann so viel nicht :/. Meine Seite wird auch sehr sehr selten von diesem Browser heimgesucht *puh*. Das Tutorial finde ich super.
4 flek
schrieb am 19. August 2008 um 10:47
Trotzdem ist der IE6 noch immer der am weitesten verbreite Webbrowser. In den meisten Schulen, Unternehmen oder öffentlichen Plätzen kann man _nur_ IE6 verwenden.
5 Stefan Golz
schrieb am 19. August 2008 um 16:39
zu flek: Da muss ich dir wiedersprechen. Schulen/Unternehmen wollen der Zukunft nachgehen, sodass Sie auch die neuste Version stehst parat haben. Und Allgemeinschulen zählen nicht zu den Zielgruppen von dieser Webseite. Gestalterische Schulen ist die Zielgruppe und die haben meistens Mac´s.
6 Marvin
schrieb am 19. August 2008 um 16:40
@ flek, und für diese ensteht ja kein nachteil, denn die seite wird nicht fehlerhaft dargestellt, bloss nicht mit allen feinheiten.
7 flek
schrieb am 22. August 2008 um 14:17
@Stefan Golz – Diese Seite wird (in Zukunft) auch von Google-Suchenden gefunden, welche nicht zu der genannten Zielgruppe gehören können. Außerdem entwickeln die meisten Unternehmen (leider) noch immer mit IE6 bzw. für IE6, weil oft ein Firmen-Internes-XP vorhanden ist, welches sicherer ist wie die aktuelle Version. Dasselbe gilt für den Browser.
@Marvin – Es ging auch nicht darum, dass man es nicht einsetzen darf. Lediglich darum, das man speziell bei Webseiten für Unternehmen/ Kunden, diesen Selektor (noch) nicht einsetzen sollte, weil es nicht akzeptabel ist wenn die Seite im Firefox anders, wie im Internet Explorer (auch wenn nur optisch), ist.
Trotzdem ein schöner Artikel.
8 Marvin
schrieb am 22. August 2008 um 15:54
@flek, das weiss ich.
aber ich kenn auch viele, die die komination XP+IE7 haben.
Der Hinweis hat mich dennoch auf eine weitere Idee gebracht. Ich werde den Artikel demnächst noch erweitern, denn mit jQuery kann man das Ganze auch browserübergreifend durchsetzen. Dann sind nur noch die “benachteiligt”, die kein JS angeschaltet haben, was herzlich wenige sind.
9 Trends
schrieb am 30. August 2008 um 20:07
Ich habe letzthin in einem Blogbeitrag sinngemäß gelesen: … ich erstelle die Seiten regelkonfom, wenn die Darstellung im IE 6 “nicht crasht”, ist das OK…
Hier wird eine Erweiterung gut beschrieben, die eben durch den IE 6 nicht dargestellt wird. Ist doch in Ordnung so!
@ flek:
Ab welchen Prozentsatz der Browsernutzung ist es deiner Meinung akzeptabel, dass eine unterschiedliche Darstellung erfolgt?
10 Trends
schrieb am 30. August 2008 um 20:11
PS:
Leider habe ich erst jetzt nachgesehen:
@flek: Genau das ist nämlich er Punkt! Wenn ein User eine seite ansurft, erwartet er Inhalte, die geschickt und ansprechend präsentiert sind. Eine leere WP-Installation ist es, meiner Auffassung nach nicht!
11 Tartanrocker
schrieb am 13. September 2008 um 11:40
Da muss ich auch deutlich widersprechen, einen Browser bewusst nicht einbeziehen geht nicht, vor allem wenn es einfache(!) browserübergreifende Lösung gibt. Beispiel WordPress: Erst mit if…the-post den ersten bzw. neuesten Artikel abfragen, dann die weiteren mit while. Für den ersten kann man so eine andere CSS-Auszeichnung vergeben.
Andererseits kann man wieder fluchen, was Microsoft den Webdesignern/entwicklern mit dem IE eingebrockt hat *g*
12 Marvin
schrieb am 13. September 2008 um 12:44
wie gesagt ist es auch nicht als browserübergreifende Lösung, sondern als zielgruppenorientierte Lösung gedacht. ich könnte es z.b. machen denn mich besucht fast keiner mit dem IE6.