Mit Selektoren bestimmt man den Bereich, der mit CSS angesprochen werden soll, um ihm CSS Eigenschaften zuzuweisen. Hier gibt es viele Möglichkeiten angefangen von einfachen HTML- Element Selektoren oder Klassen- und ID- Selektoren bis hin zu sehr spezifischen Selektoren, welche auf User Eingaben reagieren, wie beispielsweise Mausberührung oder Mausklick.
Man kann mehrere CSS Dateien einbinden und zusätzlich auf der einzelnen Seite definieren.
Generell gilt die vom Browser zuletzt aufgerufene Style Anweisung überschreibt frühere Formatvorgaben. Das ist das Prinzip der Kaskadierung.
Von dieser Rangfolge unabhängig überschreiben genauere Angaben ungenauere Angaben. Was das im einzelnen zu bedeuten hat, kann man an dem Punktesystem der Spezifität ermitteln.
| Selektor | Beispiel | Spezifität (Punkte) |
| Globalselektor | * | |
| Elementselektor Pseudoelement |
body, div, p, b, a a::before |
1 |
| Klassenselektor Attributselektor Pseudoklasse |
.grau, .name |
10 |
| ID-Element | #leinwand, #kopf, #fusszeile | 100 |
| Style als HTML Attribut | style="color: red" | 1000 |
| Selektor | A | B | C | D |
|---|---|---|---|---|
style= (HTML) |
1 | 0 | 0 | 0 |
#nav a.xy |
0 | 1 | 1 | 1 |
#nav li a |
0 | 1 | 0 | 2 |
#nav a |
0 | 1 | 0 | 1 |
#nav |
0 | 1 | 0 | 0 |
ul li .xy |
0 | 0 | 1 | 2 |
a:link |
0 | 0 | 1 | 1 |
a.xy |
0 | 0 | 1 | 1 |
ul[id="nav"] |
0 | 0 | 1 | 1 |
*.xy |
0 | 0 | 1 | 0 |
li a |
0 | 0 | 0 | 2 |
a |
0 | 0 | 0 | 1 |
In Visual Studio Code bekommt man die Spezifität angezeigt, wenn man einen markierten Selektor berührt.
Eine weitere Ansicht mit Beispielen der Spezifität findet man auch unter Spezifität bei Selfhtml.
!important
Die mit !important ausgezeichneten Deklarationen überschreiben die Spezifität. Die Zeichenkette !important wird nach einem Leerzeichen hinter dem Wert notiert. Sie muss für jede Eigenschaft extra gesetzt werden.
Benutzen Sie die !important Regel jedoch nicht, weil es einfach ist, sondern suchen Sie erst nach dem Grund, warum eine Regel nicht so funktioniert, wie Sie es erwarten. Das Problem bei important ist, dass es die Spezifität außer Kraft setzt. Um ein !important auzuhebeln braucht man wieder ein !important. Daher greift dann nur noch die Reihenfolge.
p { font-size:1em !important; }
Mit dem Sternchen werden alle Elemente ausgewählt. Diesen Selektor kann man dazu einsetzen, eine einheitliche Ausgangssituation zu schaffen. Siehe dazu das Thema Reset
* {Eigenschaft: Wert}
* {color: #000;}
Html-Element {Eigenschaft: Wert}
Beispiel
p {color: #000;}
Die einfachste Art eine CSS Eigenschaft zuzuweisen ist per Element Selektor. Gerade in HTML5, wo es viele neue semantische Elemente gibt.
.Klassenname {Eigenschaft: Wert}
.tipp {background-color: #fab;}
Wenn die sematischen Elemente in HTML5 nicht mehr ausreichen kann man eigene Klassen definieren. Es sind Elemente mit Gemeinsamkeiten. Man weist einem HTML Element eine Klasse mit dem Schlüsselwort class zu.
<p class="tipp">Das p- Element steht für Absatz</p> In der Style
Defininition wird der Klassenselektor ein Punkt vorangestellt, gefolgt vom Namen der Klassen. Es gelten die
üblichen Regeln für die Namensvergabe und der Klassenname sollte nicht mit einer Zahl beginnen.
Man kann einem Element auch mehrere Klassen zuweisen. Die Namen werden innerhalb der Wertzuweisung mit Leerzeichen aufgeführt. Im folgenden Beispiel wurden dem p- Element die Klassen tipp und wichtig zugewiesen.
<p class="tipp wichtig">Das P Element</p>
#IdName {Eigenschaft: Wert}
#werbung {background-color: #fab;}
Ähnlich wie der Klassenselektor erstellt man eigene IDs und weist diese einem HTML Element zu. Im Gegensatz zur Klasse, darf eine ID mit einem Wert dokumentweit nur einmal zugewiesen werden. Eine Klasse kann man auch mehreren Element zuweisen. Eine id dient als eindeutige Identifizierung einer bestimmten Stelle im HTML Dokument. Sie wird auch für Programierungen und für Ankerlinks verwendet. Es gelten die Reglen der Namensvergabe und eine Id sollte nicht mit einer Zahl beginnen.
<div id="werbung">Werbebanner</div>
Gebundene Selektoren werden ohne Leerzeichen aneinander gesetzt.
Mit gebundenen Selektoren kann man eine Klasse oder Id an ein Element binden. Das bedeutet, dass diese Formatierung nur dann zutrifft, wenn das Element die Klasse besitzt.
Im folgenden Fall würde die Klasse .wichtig an ein h1 gebunden die Schriftfarbe red bekommen ansonsten green.
.wichtig{color:green;}
h1.wichtig{color:red;}
Es ist ein Bedingung im Sinne von das und das und das muss zugewiesen sein.
#firma.wichtig.info{color:purple;}
<div id="firma" class="wichtig info">
Bevor man sich mit diesem Thema beschäftigt sollte Pseudoklassen und / oder Pseudoelemente kennen. Siehe auch das Thema Nachfahren-Selektor
Der Verschatelungsselektor & gibt die Beziehung zwischen übergeordneten und untergeordneten
Regeln an. Er setzt die untergeordnete Regel relativ zum übergeordnetem Element. Das kann man besonders gut
bei Pseudoklassen und Pseudoelementen einsetzen. Ein
Beispiel
button{
background-color: green;
&:hover{
background-color: red;
}
}
Voriges Beispiel bedeutet das gleiche wie folgendes:
button{
background-color: green;
}
button:hover{
background-color: red;
}
Ohne das kaufmännische & ist die verschachtelte CSS Anweisung gleichbedeutetnd wie ein Nachfahren-Selektor.
Der & Verschachtelungs-Selektor kann auch angehängt werden. Dadurch wird der Kontext der Regeln umgekehrt. Bezogen auf folgendes Beispiel wäre ohne das kaufmännische & section als verschachteltes Element des div anzusehen. Mit angehängtem kaufmännischen & ist es umgekehrt, das div ist ein Nachfolgeelement von section.
div{
color:red;
section &{
font-weight: bold;
}
}
Vorige Regel bedeutet das gleiche wie folgende:
section div{
font-weight: bold;
}
div{
color:red;
}
Man kann das & auch mehrfach anhängen.
div {
border: 1px solid #000;
padding: 15px;
width: max-content;
section & & {
background-color: #c8c8a0;
}
}
Voriges Beispiel bedeutet das Gleiche wie folgendes.
div {
border: 1px solid #000;
padding: 15px;
width: max-content;
}
section div div {
background-color: #c8c8a0;
}
Selektor[Attribut="Wert"] {Eigenschaft: Wert}
a[rel]{
background-color: #fab;
}
input[type="radio"]{
width: 1rem;
}
Mit dem Attribut Selektor kann man bestimmte Elemente mit einem Attribut auswählen. Im vorigen Beispiel alle a- Elemente mit dem Attribut rel. Es ist außerdem möglich, die Werte der Attribute abzufragen. So dass ein Element nur ausgewählt wird, wenn das Attribut einen bestimmten Wert hat, oder wenn in der Wertzuweisung bestimmte Phrasen vorkommen. Hierzu gibt es ein paar ausgeklügelte Abfragen.
[Attribut] |
a[rel] {background-color: #fab;} |
Jedes Element mit diesem Attribut. Wert spielt keine Rolle. |
[Attribut="Wert"] |
a[rel="external"] {background-color: #fab;} |
Das = Gleichheitszeichen bedeutet: ein Attribut mit dieser Wertzuweisung. |
[Attribut*="Wert"] |
p[class*="foo"] {background-color: #fab;} |
Das *= Sternchen bedeutet die Zeichenfolge muss irgendwo im Wert vorkommen. |
[Attribut~="Wert"] |
p[class~="foo"] {background-color: #fab;} |
Das ~= Tilde-Zeichen bedeutet die Zeichenfolge muss irgendwo im Wert vorkommen und mit Leerzeichen getrennt werden. |
[Attribut^="Wert"] |
p[class^="foo"] {background-color: #fab;} |
Das ^= Zeichen bedeutet Ein Attribut dessen Wert mit diesen Zeichen beginnt. |
[Attribut|="Wert"] |
p[class|="foo"] {background-color: #fab;} |
Das |= Pipe-Zeichen bedeutet eine Zeichenfolge die am Anfang des Wertes steht und mit einem einem Minuszeichen endet. |
[Attribut$="Wert"] |
p[class$="foo"] {background-color: #fab;} |
Das $= Dollar-Zeichen bedeutet die Zeichenfolge steht am Ende des Wertes. Beispielsweise für verschiedene Bilddateitypen, alle Attribute src mit der Endung jpg. siehe Beispiel |
Kombinatoren sind Zeichen, mit denen Selektoren miteinander verkettet werden. Das zuletzt aufgeführte Element wird angesprochen.
Selektor1 Selektor2 {Eigenschaft: Wert}
Beispiel
p b {color: #000;}
Ein Leerzeichen ist ein Nachfahren Kombinator. Mit dem Nachfahren Kombinator kann man bestimmen, dass Elemente nur ausgewählt werden, wenn sie sich innerhalb anderer Elemente befinden. Im Beispiel oben wird b nur dann formatiert, wenn es sich in einem p befindet. Man spricht hier auch von abhängigen Selektoren.
Es lassen sich auch mehrere Nachfahren bestimmen. Im folgenden Beispiel wird eine untergeordnete, verschachtelte Liste angeprochen.
ul li ul
Anstatt den Nachfahren Kombinator einzusetzen, kann man die Verschachtelung der Elemte auch folgendermaßen definieren. Im folgendem Beispiel wird ein div angesprochen und ein p welches sich in einem div befindet.
div{color:green;
p{color:red;
}
}
Siehe auch Verknüpfungsselektor.
Selektor1 > Selektor2 {Eigenschaft: Wert}
Beispiel
p > b {color: #000;}
Der Kind Selektor ist ein direkter Nachfahre.
Im folgenden wird die CSS Eigenschaft dem Selektor2 zugewiesen.
Selektor1 ~ Selektor2 {Eigenschaft: Wert}
Beispiel
CSS
cite ~ b {background-color: #fab;}
HTML
<cite>Brazil</cite> ist das Meisterwerk von <b>Terry Gilliams</b>
Folgende Reihenfolge ist beim oben aufgeführten CSS nicht erlaubt.
<b>Terry Gilliams</b>der Regisseur von <cite>Brazil</cite>
Der general sibling combinator weist die Eigenschaft dem Selektor2 nur zu, wenn Selektor1 und Selektor2 dasselbe Eltern Element besitzen und Selektor 2 auf Selektor 1 folgt (er muss nicht unbedingt direkt darauf folgen). Siehe dazu auch den nachfolgenden Beitrag Nachbar Selektor.
Der Geschwister Selektor wird im Zusammenhang mit einer Pseudoklasse wie .hover oder .selected interessant.
Selektor1 + Selektor2 {Eigenschaft: Wert}
Beispiel
cite + small {background-color: #fab;}
Der adjascent sibling combinator weist die Eigenschaft dem Selektor2 nur zu, wenn Selektor1 und Selektor2 direkt aufeinander folgen und wenn beide dasselbe Eltern Element besitzen.
Hier ein weiteres typisches Beispiel mit Überschriften
Hier ein weiteres typisches Beispiel mit einer Definition List. Hier wird immer die erste der beiden dd-Elemente angefasst.
siehe auch Pseudoelemente
/
Siehe Pseudoklassen bei
Selfhtml /
Siehe die Übersicht Pseudoklassen
/ Pseudoelemente /
Siehe Pseudoklassen w3schools
Bei Pseudoklassen handelt es sich um einfache Selektoren, die ein Element dann ansprechen, wenn es eine bestimmte Eigenschaft besitzt oder sich in einen bestimmten Zustand befindet, wie beispielsweise einer Mausberührung (:hover) durch den User.
Oder der Selektor ergibt sich aus einem bestimmten Umstand heraus. So lassen sich zum Beispiel Elemente auswählen, die das erste Kindelement eines anderen Elementes sind.
Pseudoklassen werden mit einem Doppelpunkt notiert und sollten an einen einfachen Selektor angehängt werde siehe gebundene Selektoren
a:visited
:link und :visitedBesuchte und unbesuchte Hyperlinks, also a Elemente mit dem Attribut href werden vom Default Style des Browsers anders eingefärbt. Hier kann man mit den Pseudoklassen :link und :visited eigene Formatierungen vornehmen. :link steht für unbesuchte und :visited für besuchte Links. Sie hängen ab von der Navigationshistorie des Browsers.
:link {Eigeschaft:Wert;}
:visited {Eigeschaft:Wert;}
Wenn man die :link Eigenschaft des Browsers überschreiben möchte notiert man einfach das a
Ankerelement, denn das hat eine höhere Spezifität. a {Eigenschaft: Wert;}
:hover :active :focus :focus-visible :focus-withinAm häufigsten wird man :hover einsetzen, denn es bedeutet, der Link wird mit Maus berührt. :active steht für Klick und :focus wenn der Fokus auf den Link gesetzt wird, das kann auch mit der Tabulator Taste geschehen. :
Mit :hover kann man einem Element, welches mit der Maus berührt wird, ansprechen.
a:hover{color: red;}
Es gibt kein Hover auf Smartphones!
Tabletts und Smartphones übersetzen ein :hover direkt in eine Touch-Ereignis.
a:active {color:red;}
:active wirkt nur auf den Klick in dem Moment, wenn man draufdrückt.
Da das :hover einem Touch Event entspricht, ist es eine gute Idee für :hover und :active die gleichen Eigenschaften zu definieren.
Wenn man jedoch unterschiedliche Eigenschaften definieren möchte, sollte man bedenken, dass das angeklickte Element (:active) auch gleichzeitig mit der Maus berührt (:hover) wird. Daher sollte man den Selektor :active nach dem Selektor :hover notieren, damit :active das CSS von :hover überschreibt.
Ein focus funktioniert nur bei Elementen, die anklickbar oder auswählbar sind. Die Elemente sind: a, input, button. Mit dem HTML- Attribut tabindex kann man jedes Element anklickbar machen.
a:focus {color: red;}
a:focus-visible wendet Stile nur dann an, wenn ein Element den Fokus erhält und der Browser anzeigt, dass ein Fokusindikator (Outline) für den Benutzer hilfreich ist (z.B. bei Tastaturnavigation).
:focus vs :focus-visible
Ein klassisches Problem sind Buttons, die nach einem Klick einen unschönen blauen Rahmen behalten. Mit :focus-visible kannst du diesen Rahmen für Tastatur-Nutzer beibehalten (wichtig für die Orientierung), ihn aber für Maus-Nutzer ausblenden.
/* 1. Standard-Fokus für alle (optional entfernen/neutralisieren) */
button:focus {
outline: none;
}
/* 2. Fokus-Stil NUR für Tastatur-Nutzer (Tab-Taste) */
button:focus-visible {
outline: 3px solid #ff0055;
outline-offset: 4px;
border-radius: 4px;
}
Die Pseudoklasse :focus-within ist extrem nützlich, weil sie ein Element markiert, wenn dieses selbst oder eines seiner Kinder den Fokus erhält.Man kann es sich wie einen „Fokus-Detektor“ für Container vorstellen.
Stell dir vor, du hast eine Box mit einem Label und einem Input. Du möchtest, dass sich das Design der
ganzen Box ändert (z. B. ein Schatten oder eine andere Hintergrundfarbe), sobald der User in das Feld
klickt.
Beispiel
HTML
<div class="input-group">
<label>Benutzername:</label>
<input type="text" placeholder="Tippen...">
</div>
CSS
.input-group {
padding: 20px;
border: 1px solid #ccc;
transition: all 0.3s ease;
}
/* Sobald das Input-Feld darin fokussiert wird: */
.input-group:focus-within {
background-color: #f0f8ff;
border-color: #007bff;
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
}
.input-group:focus-within label {
color: #007bff;
font-weight: bold;
}
Typische Anwendungsfälle
:checkedMit der Pseudoklasse checked kann man überprüfen, ob eine Checkbox, ein Radiobutton oder ein Element einer Auswahlliste Liste aktiviert ist.
Hier wird das Geschwisterlement .info eingeblendet. In dem Beispiel wurde auch ein Geschwister Kombinator eingesetzt.
Das lässt sich wunderbar dazu einsetzen, ein Menü ein und auszublenden. Außerdem wurde das <input
type="checkbox"> ausgeblendet, da man auch über das Label Element die Checkbox steuern kann.
Weitere Beispiele zum Thema Menüs ein- und ausblenden.
Dieser Selektor zielt auf Formularelemente ab, die das HTML-Attribut disabled besitzen. Ein deaktiviertes Element kann vom Nutzer weder angeklickt noch fokussiert oder beschrieben werden.
input:disabled {
background-color: #f5f5f5; /* Hellgrau */
color: #999; /* Blasse Schrift */
cursor: not-allowed; /* Zeigt ein Sperrsymbol beim Drüberfahren */
border: 1px dashed #ccc;
}
Dieser Selektor ist etwas subtiler: Er markiert ein <input> oder eine <textarea> genau dann, wenn der Platzhalter-Text gerade sichtbar ist. Das ist praktisch gleichbedeutend damit, dass das Feld leer ist.
Wichtiger Unterschied
:first-childli:first-child{background-color: #fab;}
Das erste Kindelement eines übergeordneten Elements. In diesem Falle das erste li Element.
:nth-child(n)nth-child Selfhtml Wiki / nth-test
Beispiel mit mehreren Pseudo Selektoren
Hiermit lässt sich das soundsovielte Kindelement des Elternelements auswählen. nth kommt vom englischen the seventh. In der Kurzschreibweise 7th. Nun braucht man nur noch anstatt 7 n für Number einsetzen und es macht Sinn.
Hier wird das 3 li Element seines Elternelements ausgewählt.
li:nth-child(3) {background-color: #fab;}
h3:nth-child(1) würde in der unten stehenden Aufführung nicht greifen, weil die h3 kein erstes
Kind vom body ist
<body>
<h1></h1>
<section></section>
<h3></h3>
</body>
Mit anderen Worten, wenn es auch Kindelemente eines anderen Typs gibt, werden diese mitgezählt.
so sieht`s aus
| Regel | Bedeutung | |
|---|---|---|
| :nth-child(b) | (3) | selektiert nur das b-te Kindelement. |
| :nth-child(n) | (n) | selektiert alle Kindelemente. Das kann man auch mit dem Offsetwert kombinieren. (n+3) wählt alle ab dem dritten aus. |
| :nth-child(an+b) | (3n+0) |
Das Beispiel wählt jedes dritte. Die 0 ist ein Offsetwert oder Startwert. Umgangsprachlich ausgedrückt selektiert es jedes "a"te Element ab den "b"ten Element. Mathematisch ausgedrückt selektiert es all diejenigen Kindelemente deren „Platznummer“ bei Division durch a den Rest b lässt. |
| :nth-child(n+b) | (-n+6) | alle bis zum b-ten / In diesem Beispiel die ersten 6. Mathematisch ausgedrückt 0 + 6. Oder man könnte auch n wählt alle aus, -n wählt alle nicht aus. |
| :nth-child(odd) | (odd) | ist identisch zu :nth-child(2n+1) und :nth-child(2n-1) (ungerade Platznummer). |
| :nth-child(even) | (even) | ist identisch zu :nth-child(2n) (gerade Platznummer). Diese beiden Selektoren werden auch gerne eingesetzt, um Tabellenreihen einzufärben. Siehe Beispiel |
:nth-last-child(n)li:nth-last-child(3) {background-color: #fab;}
Hierbei wird von hinten gezählt.
Pseudo :nth-last-child()
:nth-of-type(n)p:nth-of-type(2n) {color: #fab;}
Im diesem Beispiel werden nur die Elemente gleichen Typs, also alle p-Elemente eingefärbt.
Was genau der Unterschied zwischen nth-child und nth-of-type ist, kann man an
diesen beiden Beispiele sehen.
Beispiel nth-child
Beispiel nth-of-type
Diese Klasse kann man verwenden, wenn das Elternelement nur ein einziges Kindelement hat. Zum Beispiel in li Elementen von Navigationen, die nur ein a-Element haben, aber nicht noch eine untergeordnete Liste.
li a:only-child
In einer typischen ul-Listen Navigation kann man durch den Einsatz mehrerer Selektoren allen Linktiteln, welche ein Untermenü haben, ein Pluszeichen anhängen.
nav li > a:not(:only-child):after{
content: " +";
:not()siehe auch Wiki
div:not(#footer) {color: #fab;}
Hiermit lassen sich Elemente ausschließen. Im Beispiel werden alle divs ausgewählt, bis auf das div, in dem die id="footer" zugewiesen wurde. Früher durfte man in :not() nur einfache Selektoren (wie eine einzelne Klasse) verwenden. Heute kannst du darin fast alles kombinieren – sogar :not(:has(img)), um zum Beispiel alle Artikel zu finden, die kein Bild enthalten.
Ein anderes nützliches Beispiel ist, dass man alle a- Elemente auswählt die als Links fungieren, bis auf die a- Elemente welche mit dem veraltetem name Attribut versehen sind, um als Anker zu dienen.
a:not([name]) {background-color: #fab;}
so sieht`s aus
In diesem Navigationsbeispiel mit mehreren Seiten, werden auf einem kleinen Bildschirm alle untergeordneten Listen, die nicht zur aktuellen Seite gehören ausgeblendet. download Zoo.zip Beispiel
In der CSS Datei sieht man wie es gemacht ist.
Im HTML Markup, haben die übergeordneten Listen Elemente zur aktuellen Seite die Klasse:
class="aktuell"
<nav><ul>
<li class="aktuell>Tiere
<ul>....</ul>
</li>
<li>Impressum</li>
</ul>
</nav>
Mit diesem CSS werden alle untergeordneten ul Listen ausgeblendet, bis auf diejenigen, die im li - Element
mit der class="aktuell" liegen:
nav ul li:not(.aktuell) ul {
display: none;
}
Diese Selektoren vereinfachen lange Selektorlisten und verbessern die Lesbarkeit.
/* Wähle h2, h3, h4 innerhalb von .content, aber nicht innerhalb von .sidebar */
.content :is(h2, h3, h4):not(.sidebar *) {
color: green;
}
Dies ist eine der bedeutendsten Neuerungen. :has() ermöglicht es, ein Element basierend darauf auszuwählen, was es enthält.
Beispiel: div:has(img) wählt nur <div>-Elemente aus, die ein <img>-Element
enthalten.
/* Wähle Artikel, die ein figcaption-Element enthalten */
article:has(figcaption) {
border: 1px solid black;
}
:langdiv:lang(en) {color: #fab;}
Dieser Selektor bildet eine ganz eigene Kategorie. Er bezieht sich weder auf die Struktur noch auf Nutzeraktionen, sondern auf die Metadaten des Dokuments.Er prüft die Sprache des Elements, die entweder über das HTML-Attribut lang="" oder über HTTP-Header (Content-Language) festgelegt wurde.
Das folgende CSS fügt französichen Texten die passenden Anführungszeichen zu.
p:lang(fr) { quotes: "« " " »"; }
:targetsiehe auch w3schools
Mit Ankerlinks hat man die Möglichkeit zu einem bestimmten Bereich der Webseite per Link zu springen. Nun hat man die Möglichkeit den aufgerufenen target-Bereich mit CSS Formatierungen zu versehen, nachdem man auf den Link geklickt hat. Das bietet viele Möglichkeiten von drop Down Menüs bis hin zu Modals.
Achtung Die target-id erscheint oben in der Adresszeile des Browsers.
meineSeite.html#meineId
Achte beim Testen und Neuladen darauf, dass die Seite ohne die Id geladen wird um den ursprünglichen Zustand
wieder herzustellen. meineSeite.html
Beispiel 1 im neuen Fenster
CSS .ziel {
display: none;
}
:target {
display: block;
}
HTML
<a href="#link1">Link 1</a>
<a href="#link2">Link 2</a>
<a href="#link3">Link 3</a>
<div id="link1" class="ziel">Target 1</div>
<div id="link2" class="ziel">Target 2</div>
<div id="link3" class="ziel">Target 3</div>
Im folgendem Beispiel werden Bereiche ein- und ausgeblendet. Im Beispiel befinden sich die Erklärungen.
Ein ähnlich aufgebautes Beispiel, schöner formatiert aber ohne Erklärungen
Ein Modal nennt man die Darstellung von Inhalten, welche auf Mausklick erscheinen und über der gesamten Seite liegen. Sie haben in der Regel einen halbtransparenten Hintergrund, so dass im Hintergrund die eigentliche Seite durchscheint.
Ich habe hier 2 Beispiele, die jeweils in 2 Schritten vorgestellt werden.
Beispiel 2 Step 1 im neuen Fenster / Beispiel 2 Step 2 im neuen Fenster / Beispiel 2 Step 3 im neuen Fenster
Modal oder Lightbox mit mehreren Bildern. Das Modal wird mittels flex Eigenschaften mittig auf der Seite plaziert.
Für derlei Galerien gibt es komfortable Frameworks siehe hier
Auch das folgende Beispiel wird in 2 Schritten vorgestellt. Hier wird lediglich ein Modal eingeblendet.
display:table eingesetzt.Siehe Pseuoelemente bei Selfhtml
Pseudoelemente beschreiben Elemente, die nicht vom Document Tree DOM abgeleitet werden können. Ein Pseudoelement erzeugt einen nicht im Elementbaum vorhandenen Abschnitt, der formatiert oder mit Inhalt gefüllt werden kann. Pseudoelemente sind Elemente wie etwa das erste Zeichen oder die erste Zeile eines Absatzes. Mit Pseudoelementen können Strukturen vor oder nach dem Inhalt eines Elementes eingefügt werden, etwa eine automatische Numerierung oder Anführungszeichen bei Zitaten, aber es können auch inhaltlich nicht relevante Texte oder Bilder hinzugefügt werden.
Pseudoelemente werden mit 2 Doppelpunkten notiert und sollten an einen einfachen Selektor angehängt werden siehe gebundene Selektoren
::selection
https://wiki.selfhtml.org/wiki/CSS/Selektoren/Pseudoelement
Es gibt folgende Pseudoelemente.
::first-line und
::first-letter
p::first-line {Eigeschaft:Wert;}
article::first-letter {Eigeschaft:Wert;}
Mit :first-line wird die erste Zeile ausgewählt. Mit first-letter der erste Buchstabe. Hiermit lassen sich in der Tradition der alten Bibeln große Anfangsbuchstaben erzeugen.
::before und ::aftersiehe auch Details Summary
a::before {Eigenschaft: Wert;}
a::after {Eigenschaft: Wert;}
Mit diesen beiden Pseudo Elementen kann man beispielsweise Bilder oder Text vorne oder hinten an das Element hinzufügen. Dazu verwendet man die Eigenschaft content mit einem url() Wert. Eine andere Möglichkeit wäre es die Währung hinter den Preis zu notieren.
Achtung! Es ist wichtig zu verstehen, dass die angehängten Elemente nicht nach dem Blockelement aufgeführt werden sondern innerhalb davon, an erster oder an letzter Stelle.
h1.gebet::before {content: url("../../img/gebet.gif");
td:nth-child(3)::after{content:" EUR";}
Man kann zwar ein Sonderzeichen direkt von Symbol.cc kopieren. Es ist jedoch sicherer den Code zu nutzen. Hier gibt es einen Unterschied zwischen HTML und CSS. Nehmen wir das Zeichen ☞ Es hat den Code U + 261E.
Wenn man ein Zeichen eingefügt hat kann man es ganz normal mit weiteren CSS Eigenschaften versehen. Manchmal liegt es nicht ganz mittig. vertical-align: middle oder ein Pixelwert korrigiert die Abweichgung.
.link-button::after {
content: "\261E";
margin-left: 8px; /* Schafft Platz zwischen Text und Symbol */
color: #ff6600; /* Macht die Hand z. B. orange */
font-size: 1.2rem; /* Macht das Symbol etwas größer als den Text */
font-weight: bold; /* Macht die Linien des Symbols dicker */
vertical-align: 12px;
}
Im Beispiel wird der Text des rel-Attributs angehängt. Man kann jedes beliebige Attribut verwenden. Hier bietet
sich auch das data-* Attribut an, welches man mit beliebigen Werten versehen kann. siehe
hier
a:after{content:attr(rel);}
HTML
<a href="#" rel="external">Ein Link </a>
weitere Varianten Sprechblasen: mit after
Siehe auch das Beispiel clearfix
Beispiel mit animierten Unterstrich
Hiermit kann die Hintergrundfarbe und die Schriftfarbe eines ausgewählten Textes formatiert werden.
Im nachfolgenden Beispiel wird bei der Auswahl des Textes eines pre Elements eine weiße Schrift auf schwarzem
Grund angezeigt.
pre::selection{
background-color: black;
color: white;
}
::backdrop siehe auch Wiki
Das Pseudoelement ::backdrop erzeugt einen Hintergrund, zwischen dem Dokument und einem Element
welches auf dem top
layer liegt, beispielsweise das HTML dialog Element. Mittels
::backdrop kann man diesem erzeugten Hintergrund verschiedene CSS Eigenschaften zuweisen. In der
Regel ist das aber nur eine halbtransparente Hintergrundfarbe.
Ein HTML dialog Element erscheint erst, wenn man es mittels Javascript öffnet. Es ist zwar auch
möglich das standalone Attribut open im dialog Element einzufügen, um es beim Aufruf der Seite
sichtbar zu machen, aber dann greift die Eigenschaft ::backdrop nicht, weil kein Hintergrund
erzeugt wurde.
Die Javascript Befehle zum öffnen und schließen lauten:
dialog.show(); dialog.showModal(); dialog.close();
Nur der Befehl dialog.showModal() legt das dialog auf den Top-Layer, um einen Hintergrund zu
ermöglichen.
CSS
dialog::backdrop {
background: rgba(0,0,0,0.6);
}
HTMl & Javascript
<button
onClick="document.getElementsByTagName('dialog')[0].showModal()">Open</button>
<dialog>Text im Dialog Element.... <button onClick="document.getElementsByTagName('dialog')[0].close()">Close</button> </dialog>
Die [0] verweist auf das erste dialog Element auf der Seite. Wenn es mehrere geben würde, könnte man das zweite mit [1] ansprechen.
document.getElementsByTagName('dialog')[0]
::placeholder
Ein Pseudo-Element, um den Platzhaltertext in
<input> - oder <textarea>
-Feldern gezielt zu stylen.
siehe auch ::placeholder bei Wiki
Mit ::placeholder kann man den Placeholder Text eines Input- oder Textarea- Elements
formatieren.
HTML
<input type="text" placeholder="Bitte eingeben">
CSS
input::placeholder{color: green;}
::marker
siehe auch CSS Listen
Hier mit kann man die Eigenschaften einzelner Listzeichen aber auch die Pfeile von details / summary verändern. Farbe, Schriftgröße etc.
CSS
li::marker {
color: red;
}
Nehmen wir an du hast ein aufklappbares Details-Element. Im Summary-Element könnte ein Pfeil und der Text: "mehr lesen..." stehen. Wie kann man mit CSS das Ganze gestalten und mit unterschiedlichem Text versehen, wenn es aufgeklappt ist. Die Lösung ist, wie so oft, eine Kombination einiger Selektoren.
HTML
<details> <summary><summary> <p>Lorem ipsum...</p> </details>
Der Text im summary sollte sich ändern, je nach Zustand auf oder zu. Deswegen lassen wir das Element summary in HTML leer. Stattdessen wird der Text "mehr lesen..." und "Schließen" mittels Selektor ::after oder ::before eingefügt. Mittels details[open] können wir den geöffneten Zustand ermitteln.
Die Pfeile werden über den ::marker Selektor eingefügt.
CSS
details summary::marker {
content: " 🡺 ";
}
details[open] summary::marker {
content: " 🡻 ";
}
details summary::after {
content: "mehr dazu...";
}
details[open] summary::after {
content: "Schließen";
}
summary {
cursor: pointer;
font-weight: bold;
color: #842222;
}
siehe auch developer.mozilla
Bei Webkit-Browsern können Sie die folgenden Pseudoelemente verwenden, um die Bildlaufleiste des Browsers anzupassen:
::-webkit-scrollbar die Bildlaufleiste.
::-webkit-scrollbar-button die Schaltflächen auf der Bildlaufleiste (Pfeile zeigen nach oben
und unten).
::-webkit-scrollbar-thumb der verschiebbare Scroll-Griff.
::-webkit-scrollbar-track die Spur (Fortschrittsbalken) der Bildlaufleiste.
::-webkit-scrollbar-track-piece Die Spur (Fortschrittsbalken) wird NICHT vom Griff verdeckt.
::-webkit-scrollbar-corner die untere Ecke der Bildlaufleiste, wo sich sowohl horizontale als
auch vertikale Bildlaufleisten treffen.
::-webkit-resizer der verschiebbare Größenänderungsgriff, der in der unteren Ecke einiger
Elemente angezeigt wird.
::-webkit-scrollbar-button:single-button hiermit lassen sich die Buttons an den Enden der
Scrollleisten gestalten
::-webkit-scrollbar-button:single-button:vertical:decrement
::-webkit-scrollbar-button:single-button:vertical:increment
::-webkit-scrollbar-button:single-button:horizontal:decrement
::-webkit-scrollbar-button:single-button:horizontal:increment