mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-03-28 05:00:53 -04:00
245 lines
5.0 KiB
Markdown
245 lines
5.0 KiB
Markdown
---
|
|
id: 5a9d7295424fe3d0e10cad14
|
|
title: CSS-Variablen erben
|
|
challengeType: 0
|
|
videoUrl: 'https://scrimba.com/c/cyLZZhZ'
|
|
forumTopicId: 301088
|
|
dashedName: inherit-css-variables
|
|
---
|
|
|
|
# --description--
|
|
|
|
Wenn du eine Variable erstellst, steht sie innerhalb des Selektors, in dem du sie verwendest, zur Verfügung. Sie ist auch in allen Nachfahren (descendants) dieses Selektors verfügbar. Dies passiert, weil CSS-Variablen wie gewöhnliche Eigenschaften vererbt werden.
|
|
|
|
Um die Vererbung zu nutzen, werden CSS-Variablen oft im <dfn>:root</dfn>-Element definiert.
|
|
|
|
`:root` ist ein <dfn>pseudo-class</dfn>-Selektor, der mit dem Wurzelelement des Dokuments übereinstimmt. Normalerweise entspricht dies dem `html`-Element. Indem du deine Variablen in `:root` erstellst, machst du sie global verfügbar und sie können von jedem anderen Selektor im Stylesheet abgerufen werden.
|
|
|
|
# --instructions--
|
|
|
|
Definiere eine Variable namens `--penguin-belly` im `:root`-Selektor und gib ihr den Wert `pink`. Du kannst dann sehen, dass die Variable vererbt wird und dass alle untergeordneten Elemente, die sie verwenden, rosa Hintergründe erhalten.
|
|
|
|
# --hints--
|
|
|
|
Die `--penguin-belly`-Variable sollte in `:root` deklariert werden und den Wert `pink` zugewiesen bekommen.
|
|
|
|
```js
|
|
assert(
|
|
code.match(/:root\s*?{[\s\S]*--penguin-belly\s*?:\s*?pink\s*?;[\s\S]*}/gi)
|
|
);
|
|
```
|
|
|
|
# --seed--
|
|
|
|
## --seed-contents--
|
|
|
|
```html
|
|
<style>
|
|
:root {
|
|
/* Only change code below this line */
|
|
|
|
/* Only change code above this line */
|
|
}
|
|
|
|
body {
|
|
background: var(--penguin-belly, #c6faf1);
|
|
}
|
|
|
|
.penguin {
|
|
--penguin-skin: gray;
|
|
--penguin-beak: orange;
|
|
position: relative;
|
|
margin: auto;
|
|
display: block;
|
|
margin-top: 5%;
|
|
width: 300px;
|
|
height: 300px;
|
|
}
|
|
|
|
.right-cheek {
|
|
top: 15%;
|
|
left: 35%;
|
|
background: var(--penguin-belly, white);
|
|
width: 60%;
|
|
height: 70%;
|
|
border-radius: 70% 70% 60% 60%;
|
|
}
|
|
|
|
.left-cheek {
|
|
top: 15%;
|
|
left: 5%;
|
|
background: var(--penguin-belly, white);
|
|
width: 60%;
|
|
height: 70%;
|
|
border-radius: 70% 70% 60% 60%;
|
|
}
|
|
|
|
.belly {
|
|
top: 60%;
|
|
left: 2.5%;
|
|
background: var(--penguin-belly, white);
|
|
width: 95%;
|
|
height: 100%;
|
|
border-radius: 120% 120% 100% 100%;
|
|
}
|
|
|
|
.penguin-top {
|
|
top: 10%;
|
|
left: 25%;
|
|
background: var(--penguin-skin, gray);
|
|
width: 50%;
|
|
height: 45%;
|
|
border-radius: 70% 70% 60% 60%;
|
|
}
|
|
|
|
.penguin-bottom {
|
|
top: 40%;
|
|
left: 23.5%;
|
|
background: var(--penguin-skin, gray);
|
|
width: 53%;
|
|
height: 45%;
|
|
border-radius: 70% 70% 100% 100%;
|
|
}
|
|
|
|
.right-hand {
|
|
top: 0%;
|
|
left: -5%;
|
|
background: var(--penguin-skin, gray);
|
|
width: 30%;
|
|
height: 60%;
|
|
border-radius: 30% 30% 120% 30%;
|
|
transform: rotate(45deg);
|
|
z-index: -1;
|
|
}
|
|
|
|
.left-hand {
|
|
top: 0%;
|
|
left: 75%;
|
|
background: var(--penguin-skin, gray);
|
|
width: 30%;
|
|
height: 60%;
|
|
border-radius: 30% 30% 30% 120%;
|
|
transform: rotate(-45deg);
|
|
z-index: -1;
|
|
}
|
|
|
|
.right-feet {
|
|
top: 85%;
|
|
left: 60%;
|
|
background: var(--penguin-beak, orange);
|
|
width: 15%;
|
|
height: 30%;
|
|
border-radius: 50% 50% 50% 50%;
|
|
transform: rotate(-80deg);
|
|
z-index: -2222;
|
|
}
|
|
|
|
.left-feet {
|
|
top: 85%;
|
|
left: 25%;
|
|
background: var(--penguin-beak, orange);
|
|
width: 15%;
|
|
height: 30%;
|
|
border-radius: 50% 50% 50% 50%;
|
|
transform: rotate(80deg);
|
|
z-index: -2222;
|
|
}
|
|
|
|
.right-eye {
|
|
top: 45%;
|
|
left: 60%;
|
|
background: black;
|
|
width: 15%;
|
|
height: 17%;
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.left-eye {
|
|
top: 45%;
|
|
left: 25%;
|
|
background: black;
|
|
width: 15%;
|
|
height: 17%;
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.sparkle {
|
|
top: 25%;
|
|
left: 15%;
|
|
background: white;
|
|
width: 35%;
|
|
height: 35%;
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.blush-right {
|
|
top: 65%;
|
|
left: 15%;
|
|
background: pink;
|
|
width: 15%;
|
|
height: 10%;
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.blush-left {
|
|
top: 65%;
|
|
left: 70%;
|
|
background: pink;
|
|
width: 15%;
|
|
height: 10%;
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.beak-top {
|
|
top: 60%;
|
|
left: 40%;
|
|
background: var(--penguin-beak, orange);
|
|
width: 20%;
|
|
height: 10%;
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.beak-bottom {
|
|
top: 65%;
|
|
left: 42%;
|
|
background: var(--penguin-beak, orange);
|
|
width: 16%;
|
|
height: 10%;
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.penguin * {
|
|
position: absolute;
|
|
}
|
|
</style>
|
|
<div class="penguin">
|
|
<div class="penguin-bottom">
|
|
<div class="right-hand"></div>
|
|
<div class="left-hand"></div>
|
|
<div class="right-feet"></div>
|
|
<div class="left-feet"></div>
|
|
</div>
|
|
<div class="penguin-top">
|
|
<div class="right-cheek"></div>
|
|
<div class="left-cheek"></div>
|
|
<div class="belly"></div>
|
|
<div class="right-eye">
|
|
<div class="sparkle"></div>
|
|
</div>
|
|
<div class="left-eye">
|
|
<div class="sparkle"></div>
|
|
</div>
|
|
<div class="blush-right"></div>
|
|
<div class="blush-left"></div>
|
|
<div class="beak-top"></div>
|
|
<div class="beak-bottom"></div>
|
|
</div>
|
|
</div>
|
|
```
|
|
|
|
# --solutions--
|
|
|
|
```html
|
|
<style>:root {--penguin-belly: pink;}</style>
|
|
```
|