8. Unterrichtsblock
CSS Display
Die display
-Eigenschaft ist eine der wichtigsten CSS-Eigenschaften zur Steuerung des Layouts.
Die display
-Eigenschaft gibt an, ob und wie ein Element angezeigt wird.
Jedes HTML-Element hat einen Standardanzeigewert, je nachdem, um welchen Elementtyp es sich handelt. Der Standardanzeigewert für die meisten Elemente ist block
oder inline
.
Klicken Sie hier, um das Bedienfeld anzuzeigen
Elemente auf Blockebene
Ein Element auf Blockebene beginnt immer in einer neuen Zeile und nimmt die gesamte verfügbare Breite ein (dehnt sich so weit wie möglich nach links und rechts aus). Das Element <div>
ist z. B. ein Element auf Blockebene.
Rückblick: https://webentwicklerkurs.de/1-jahr/html/5-unterrichtsblock/
Inline-Elemente
Ein Inline-Element beginnt nicht in einer neuen Zeile und nimmt nur so viel Breite wie nötig ein.
Dies ist ein Inline-<span>
-Element innerhalb eines Absatzes.
Beispiele für Inline-Elemente:
<span>
<a>
<img>
display: none;
display: none;
blendet Elemente aus. Die Eigenschaft wird häufig mit JavaScript verwendet, um Elemente auszublenden und anzuzeigen, ohne sie zu löschen und neu zu erstellen. Für das <script>
-Element wird standardmäßig display: none;
verwendet.
Überschreiben des Standardanzeigewerts
Wie bereits erwähnt, hat jedes Element einen Standardanzeigewert. Man kann diesen jedoch überschreiben. Das Ändern eines Inline-Elements in ein Blockelement oder umgekehrt kann nützlich sein, um der Seite ein bestimmtes Aussehen zu verleihen und dennoch den Webstandards zu folgen.
Ein gängiges Beispiel ist das Erstellen von Inline- <li>
Elementen für horizontale Menüs:
Beispiel
li {
display: inline;
}
Hinweis: Das Festlegen der Anzeigeeigenschaft eines Elements ändert nur, wie das Element angezeigt wird , NICHT um welche Art von Element es sich handelt. Ein Inline-Element mit
display: block;
darf also keine anderen Blockelemente enthalten.
Das folgende Beispiel zeigt alle <span>
– und <a>-Elemente als Blockelemente an:
span, a {
display: block;
}
Unterschied display: none; und visibility: hidden;
Aufgabe
Finde den Unterschied heraus. Erstelle hierfür 3 <p>-Elemente mit Lorem-Ipsum Text im Code-Editor. Probiere beide Eigenschaften am mittleren <p>-tag aus.
Baue zudem Block-Elemente ein, die anschließend als Inline-Elemente gekennzeichnet werden und umgekehrt, um zu sehen was passiert.
Ein Element kann ausgeblendet werden, indem die display
Eigenschaft auf gesetzt wird none
. Das Element wird ausgeblendet und die Seite wird so angezeigt, als wäre das Element nicht vorhanden:
h1 {
display: none;
}
visibility: hidden;
verbirgt ebenfalls Elemente.
Das Element nimmt jedoch immer noch den gleichen Platz wie zuvor ein. Das Element wird ausgeblendet, wirkt sich aber immer noch auf das Layout aus:
h1 {
visibility: hidden;
}
Position
Die position
-Eigenschaft gibt die Art der Positionierungsmethode an, die für ein Element verwendet wird. Es gibt fünf verschiedene Positionswerte:
static
relative
fixed
absolute
sticky
Elemente werden dann unter Verwendung der top
-, bottom
-, left
– und right
-Eigenschaften positioniert. Diese Eigenschaften funktionieren jedoch nur, wenn die position
Eigenschaft zuerst festgelegt wird. Sie arbeiten auch je nach Positionswert unterschiedlich.
position: static;
HTML-Elemente werden standardmäßig statisch positioniert. Statisch positionierte Elemente werden von den Eigenschaften top
, bottom
, left
und right
nicht beeinflusst.
Ein Element mit position: static;
wird nicht besonders dargestellt; es wird immer entsprechend dem normalen Fluss der Seite positioniert.
Hier ist das verwendete CSS:
div {
position: static;
border: 2px solid tomato;
padding: 10px;
}
position: relativ;
Ein Element mit position: relative;
wird relativ zu seiner normalen Position positioniert.
Das Festlegen der oberen, rechten, unteren und linken Eigenschaften eines relativ positionierten Elements führt dazu, dass es von seiner normalen Position weg angepasst wird. Andere Inhalte werden jedoch nicht angepasst, um in die Lücke zu passen, die das Element hinterlassen hat.
Dieses <div>
-Element hat die position: relative;
Hier ist das verwendete CSS:
div {
position: relative;
left: 30px;
border: 2px solid tomato;
padding: 10px;
}
position: fixed;
Ein Element mit position: fixed;
wird relativ zum Viewport positioniert, d.h. es bleibt immer an der gleichen Stelle, auch wenn die Seite gescrollt wird. Die Eigenschaften top
, right
, bottom
und left
werden verwendet, um das Element zu positionieren.
Ein fixiertes Element hinterlässt keine Lücke auf der Seite, wo es sich normalerweise befinden würde. Zudem überlappen fixierte Elemente die normale Seite.
Beachte das fixierte Element in der linken unteren Ecke der Seite.
Hier ist das verwendete CSS:
div {
position: fixed;
bottom: 0;
left: 0;
width: 300px;
border: 2px solid tomato;
padding: 10px;
background-color: white;
}
position: absolut;
Ein Element mit position: absolute;
wird relativ zum nächsten positionierten Vorfahren platziert (anstatt relativ zum Ansichtsfenster, wie z. B. bei position: fixed;
).
Hinweis: Wenn ein absolut positioniertes Element keine Vorgängerelemente mit der Eigenschaft
position
hat, verwendet es den Textkörper des Dokuments.
Hinweis: Absolut positionierte Elemente werden aus dem normalen Fluss entfernt und können Elemente überlappen.
Hier ist das verwendete CSS:
div1 {
position: relative;
width: 400px;
height: 200px;
border: 2px solid tomato;
padding: 5px;
background-color: silver;
}
div2 {
position: absolute;
top: 80px;
right: 10px;
width: 200px;
height: 100px;
border: 2px solid tomato;
padding: 5px;
background-color: grey;
}
position: sticky;
Ein Element mit position: sticky;
wird basierend auf der Bildlaufposition des Benutzers positioniert.
Ein Sticky-Element wechselt zwischen relative
und fixed
, je nach Scroll-Position. Es wird relativ positioniert, bis eine bestimmte Versatzposition im Ansichtsfenster erreicht wird – dann „klebt“ es an Ort und Stelle (wie position: fixed;).
Hinweis: Internet Explorer unterstützt keine Sticky-Positionierung. Safari erfordert ein -webkit- Präfix (siehe Beispiel unten). Sie müssen außerdem mindestens eines von , oder angeben top
, damit right
die Sticky-Positionierung funktioniert.bottomleft
In diesem Beispiel bleibt das Sticky-Element oben auf der Seite ( top: 0
), wenn Sie seine Bildlaufposition erreichen.
Hier ist das CSS:
div {
position: sticky;
top: 0;
border: solid 2px tomato;
padding: 10px;
background-color: white;
}
Text in einem Bild positionieren
So positioniert man Text über einem Bild:
Aufgabe
Gehe in den Code-Editor und baue folgende Dinge nach:
- Bild mit überlappendem Text
- Ein sticky Element
Z-Index
Mit dem Z-Index können Elemente übereinander gelegt werden. Z-Index funktioniert dabei über Ebenen. Ein Element mit einer höheren Ebenen-Ziffer ist immer über den Elementen mit niedrigeren Ziffern.
.weisse-box {
position: relative;
z-index: 1;
border: 2px solid black;
height: 100px;
margin: 30px;
}
.graue-box {
position: absolute;
z-index: 3; /* Das graue Element wird über dem grünen und dem weißen Element liegen */
background: slategray;
height: 60px;
width: 70%;
left: 50px;
top: 50px;
}
.gruene-box {
position: absolute;
z-index: 2; /* Das grüne Element wird über dem weißen Element platziert*/
background: greenyellow;
width: 35%;
left: 270px;
top: -15px;
height: 100px;
}
CSS Float
Die CSS float
-Eigenschaft gibt an, wie sich Elemente anordnen sollen, wie sie fließen sollen. Die CSS clear
-Eigenschaft gibt an, welche Elemente neben dem gelöschten Element „schweben“ können und auf welcher Seite.
float: left;
float: right;
Die float
-Eigenschaft wird zum Positionieren und Formatieren von Inhalten verwendet, z. B. kann man dadurch ein Bild links neben dem Text in einem Container „schweben“ lassen.
Die float
-Eigenschaft kann einen der folgenden Werte haben:
left
– Das Element schwebt links neben seinem Containerright
– Das Element schwebt rechts neben seinem Containernone
– Das Element schwebt nicht (wird genau dort angezeigt, wo es im Text vorkommt). Dies ist Standardinherit
– Das Element erbt den Wert seines Elternelements
In ihrer einfachsten Verwendung kann die float
-Eigenschaft verwendet werden, um Text um Bilder fließen zu lassen.
Beispiel – Float: rechts;
Das folgende Beispiel gibt an, dass ein Bild in einem Text nach rechts schweben soll :
In der SEO-Küche gibt es spannende Praktikumsplätze in den Bereichen Webdesign, Social Media, SEO und viele mehr ;D
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
Hier ist das CSS:
img {
float: right;
}
Beispiel – float: left;
Das folgende Beispiel gibt an, dass ein Bild in einem Text nach links schweben soll:
In der SEO-Küche gibt es spannende Praktikumsplätze in den Bereichen Webdesign, Social Media, SEO und viele mehr ;D
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
img {
float: left;
}
Beispiel – float: none;
Im folgenden Beispiel wird das Bild genau dort angezeigt, wo es im Text vorkommt (float: none;
):
In der SEO-Küche gibt es spannende Praktikumsplätze in den Bereichen Webdesign, Social Media, SEO und viele mehr ;D
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
img {
float: none;
}
Beispiel – div-Elemente nebeneinander platzieren
Normalerweise werden div-Elemente übereinander angezeigt. Wenn wir jedoch float: left
verwenden, können wir Elemente nebeneinander platzieren:
<div style="float: left; width: 150px; padding: 15px; margin-right: 10px; margin-top: 10px; background-color: grey;">Div 1</div>
<div style="float: left; width: 150px; padding: 15px; margin-right: 10px; margin-top: 10px; background-color: grey;">Div 2</div>
<div style="float: left; width: 150px; padding: 15px; margin-right: 10px; margin-top: 10px; background-color: grey;">Div 3</div>
<div style="float: left; width: 150px; padding: 15px; margin-right: 10px; margin-top: 10px; background-color: grey;">Div 4</div>
<div style="float: left; width: 150px; padding: 15px; margin-right: 10px; margin-top: 10px; background-color: grey;">Div 5</div>
<div style="float: left; width: 150px; padding: 15px; margin-right: 10px; margin-top: 10px; background-color: grey;">Div 6</div>
<div style="float: left; width: 150px; padding: 15px; margin-right: 10px; margin-top: 10px; background-color: grey;">Div 7</div>
<div style="float: left; width: 150px; padding: 15px; margin-right: 10px; margin-top: 10px; background-color: grey;">Div 8</div>
<div style="float: left; width: 150px; padding: 15px; margin-right: 10px; margin-top: 10px; background-color: grey;">Div 9</div>
<div style="float: left; width: 150px; padding: 15px; margin-right: 10px; margin-top: 10px; background-color: grey;">Div 0</div>
CSS clear & clearfix
Wenn man die float
-Eigenschaft verwendet und das nächste Element wieder normal angeordnet werden soll bzw. man dieses Element darunter haben möchte (nicht rechts oder links), dann muss die clear
-Eigenschaft verwenden.
Die clear
-Eigenschaft gibt an, was mit dem Element passieren soll, das sich neben einem schwebenden Element befindet.
Die clear
-Eigenschaft kann einen der folgenden Werte haben:
none
– Das Element wird nicht unter linke oder rechte schwebende Elemente geschoben. Dies ist Standardleft
– Das Element wird unter die linken schwebenden Elemente geschobenright
– Das Element wird unter die rechts schwebenden Elemente geschobenboth
– Das Element wird sowohl unter das linke als auch das rechte schwebende Element geschobeninherit
– Das Element erbt den klaren Wert von seinem übergeordneten Element
Wenn man float
-Eigenschaften löschen möchte, sollten man clear
mit float
abgleichen: Wenn ein Element nach links gefloatet ist, sollte man es nach links löschen. Das gefloatete Element wird weiterhin floaten, aber das geclearte Element wird darunter auf der Webseite angezeigt.
Ohne „clear“
Mit „clear“
Dieses Beispiel löscht den float
nach links. Hier bedeutet dies, dass das <div4>-Element unter das links schwebende <div3>-Element geschoben wird:
.div1 {
float: left;
padding: 10px;
border: 3px solid #73AD21;
}
.div2 {
padding: 10px;
border: 3px solid red;
}
.div3 {
float: left;
padding: 10px;
border: 3px solid #73AD21;
}
.div4 {
padding: 10px;
border: 3px solid red;
clear: left;
}
clearfix
Wenn ein schwebendes Element größer als das enthaltende Element ist, wird es außerhalb seines Containers „überlappen“. Man kann dann eine clearfix-Eigenschaft hinzufügen, um dieses Problem zu lösen:
Ohne clearfix
Mit clearfix
.clearfix {
overflow: auto;
}
Das overflow: auto
; Clearfix funktioniert gut, solange man die Kontrolle über die borders und paddings behalten kann (andernfalls sieht man möglicherweise Fehler). Der neue, moderne clearfix-Hack ist jedoch sicherer in der Verwendung, und der folgende Code wird für die meisten Webseiten verwendet:
.clearfix::after {
content: "";
clear: both;
display: table;
}
Mehr über das ::after
Pseudoelement besprechen wir in einem anderen Unterrichtsblock.
Aufgabe
Erstelle ein Navigationsmenü mit 5 Links in einem Listenelement. Die Liste darf keine Punkte haben und die einzelnen Elemente müssen nebeneinander links ausgerichtet angeordnet sein.
Auf der rechten Seite des Navigationsmenüs sollen ebenfalls zwei Links einer Liste enthalten sein. Allerdings sollen diese nach rechts fließen und keinen Text, sondern ein E-Mail-Icon und ein Telefon-Icon enthalten.