* fix: added info and solutions for stubs * fix: made title match main header * fix: removed wrong closing tag Co-Authored-By: Oliver Eyton-Williams <ojeytonwilliams@gmail.com> * fix: added closing tag Co-Authored-By: Oliver Eyton-Williams <ojeytonwilliams@gmail.com> * fix: corrected solution Co-Authored-By: Oliver Eyton-Williams <ojeytonwilliams@gmail.com> * fix: changed verbiage Co-Authored-By: Oliver Eyton-Williams <ojeytonwilliams@gmail.com> * fix: added code tags Co-Authored-By: Oliver Eyton-Williams <ojeytonwilliams@gmail.com> * fix: added solution
253 lines
5.3 KiB
Markdown
253 lines
5.3 KiB
Markdown
---
|
|
title: Inherit CSS Variables
|
|
---
|
|
# Inherit CSS Variables
|
|
|
|
---
|
|
## Problem Explanation
|
|
Cascading CSS variables (officially called custom properties) are entities which behave similarly to traditional variables, in that variables allow for data to be stored and updated to reflect new values later<sup>2</sup>.
|
|
|
|
CSS variables are defined to contain specific values and be reused throughout a document. They are set using custom property notation (e.g., `--main-color: black`) and are accessed using the `var()` function (e.g., `color: var(--main-color)`)<sup>1</sup>. Declare the CSS variable in the `:root` or `body` selectors for global access.
|
|
|
|
When maintaining complex CSS documents, it is not only beneficial to use CSS Variables but also smart. When making future updates instead of searching potential hundreds of lines of code, one only needs to update the necessary CSS variable<sup>1</sup>.
|
|
|
|
|
|
**Example Syntax:**
|
|
|
|
```css
|
|
:root {
|
|
--main-bkgnd-color: #00B8CB;
|
|
}
|
|
|
|
body {
|
|
background-color: var(--main-bkgnd-color);
|
|
font-family: 'Raleway', Helvetica, sans-serif;
|
|
}
|
|
```
|
|
Declaring the variable:
|
|
```css
|
|
--custom-name: value
|
|
```
|
|
|
|
Using the variable:
|
|
```css
|
|
var(--custom-name)
|
|
```
|
|
|
|
|
|
---
|
|
## Solutions
|
|
|
|
<details><summary>Solution 1 (Click to Show/Hide)</summary>
|
|
|
|
|
|
In the ```:root``` selector we need to declare the ```--penguin-belly``` variable and give it the value of ```pink```:
|
|
|
|
```html
|
|
<style>
|
|
:root {
|
|
--penguin-belly: pink;
|
|
}
|
|
|
|
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>
|
|
```
|
|
|
|
#### Relevant Links
|
|
|
|
1. [Visit MDN's Cascading CSS Variables page for more information.](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_variables)
|
|
2. [Perna, Maria Antonietta. "A Practical Guide to CSS Variables (Custom Properties)" *sitepoint*. August 01, 2018. Accessed: October 5, 2018](https://www.sitepoint.com/practical-guide-css-variables-custom-properties/)
|
|
</details>
|