2018-10-10 18:03:03 -04:00
---
id: 5a9d725e424fe3d0e10cad10
title: Use CSS Variables to change several elements at once
challengeType: 0
2019-12-13 13:47:57 +08:00
videoUrl: 'https://scrimba.com/c/c6bDECm'
forumTopicId: 301093
localTitle: 使用 CSS 变量一次更改多个元素
2018-10-10 18:03:03 -04:00
---
## Description
2019-12-13 13:47:57 +08:00
< section id = 'description' >
< dfn > CSS 变量< / dfn > 是一种仅更改一个值,来一次性更改多个 CSS 样式属性的强大方法。
按照下面指示的来做,我们只需要改变三个值,多个样式将会同时被修改。
< / section >
2018-10-10 18:03:03 -04:00
## Instructions
2019-12-13 13:47:57 +08:00
< section id = 'instructions' >
在< code > penguin< / code > class 里,将< code > black< / code > 改为< code > gray< / code > , < code > gray< / code > 改为< code > white< / code > , < code > yellow< / code > 改为< code > orange< / code > 。
< / section >
2018-10-10 18:03:03 -04:00
## Tests
< section id = 'tests' >
```yml
tests:
2019-12-13 13:47:57 +08:00
- text: '< code > penguin</ code > class 声明的< code > --penguin-skin</ code > 变量的值应为< code > gray</ code > 。'
testString: 'assert(code.match(/.penguin\s*?{[\s\S]*--penguin-skin\s*?:\s*?gray\s*?;[\s\S]*}/gi), ''< code > penguin</ code > class 声明的< code > --penguin-skin</ code > 变量的值应为< code > gray</ code > 。'');'
- text: '< code > penguin</ code > class 声明的< code > --penguin-belly</ code > 变量的值应为< code > white</ code > 。'
testString: 'assert(code.match(/.penguin\s*?{[\s\S]*--penguin-belly\s*?:\s*?white\s*?;[\s\S]*}/gi), ''< code > penguin</ code > class 声明的< code > --penguin-belly</ code > 变量的值应为< code > white</ code > 。'');'
- text: '< code > penguin</ code > class 声明的< code > --penguin-beak</ code > 变量的值应为< code > orange</ code > 。'
testString: 'assert(code.match(/.penguin\s*?{[\s\S]*--penguin-beak\s*?:\s*?orange\s*?;[\s\S]*}/gi), ''< code > penguin</ code > class 声明的< code > --penguin-beak</ code > 变量的值应为< code > orange</ code > 。'');'
2018-10-10 18:03:03 -04:00
```
< / section >
## Challenge Seed
< section id = 'challengeSeed' >
< div id = 'html-seed' >
```html
< style >
.penguin {
2019-12-13 13:47:57 +08:00
2018-10-10 18:03:03 -04:00
/* change code below */
--penguin-skin: black;
--penguin-belly: gray;
--penguin-beak: yellow;
/* change code above */
2019-12-13 13:47:57 +08:00
2018-10-10 18:03:03 -04:00
position: relative;
margin: auto;
display: block;
margin-top: 5%;
width: 300px;
height: 300px;
}
2019-12-13 13:47:57 +08:00
2018-10-10 18:03:03 -04:00
.penguin-top {
top: 10%;
left: 25%;
background: var(--penguin-skin, gray);
width: 50%;
height: 45%;
border-radius: 70% 70% 60% 60%;
}
2019-12-13 13:47:57 +08:00
2018-10-10 18:03:03 -04:00
.penguin-bottom {
top: 40%;
left: 23.5%;
background: var(--penguin-skin, gray);
width: 53%;
height: 45%;
border-radius: 70% 70% 100% 100%;
}
2019-12-13 13:47:57 +08:00
2018-10-10 18:03:03 -04:00
.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;
}
2019-12-13 13:47:57 +08:00
2018-10-10 18:03:03 -04:00
.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;
}
2019-12-13 13:47:57 +08:00
2018-10-10 18:03:03 -04:00
.right-cheek {
top: 15%;
left: 35%;
background: var(--penguin-belly, white);
width: 60%;
height: 70%;
border-radius: 70% 70% 60% 60%;
}
2019-12-13 13:47:57 +08:00
2018-10-10 18:03:03 -04:00
.left-cheek {
top: 15%;
left: 5%;
background: var(--penguin-belly, white);
width: 60%;
height: 70%;
border-radius: 70% 70% 60% 60%;
}
2019-12-13 13:47:57 +08:00
2018-10-10 18:03:03 -04:00
.belly {
top: 60%;
left: 2.5%;
background: var(--penguin-belly, white);
width: 95%;
height: 100%;
border-radius: 120% 120% 100% 100%;
}
2019-12-13 13:47:57 +08:00
2018-10-10 18:03:03 -04:00
.right-feet {
top: 85%;
left: 60%;
background: var(--penguin-beak, orange);
width: 15%;
height: 30%;
border-radius: 50% 50% 50% 50%;
transform: rotate(-80deg);
2019-12-13 13:47:57 +08:00
z-index: -2222;
2018-10-10 18:03:03 -04:00
}
2019-12-13 13:47:57 +08:00
2018-10-10 18:03:03 -04:00
.left-feet {
top: 85%;
left: 25%;
background: var(--penguin-beak, orange);
width: 15%;
height: 30%;
border-radius: 50% 50% 50% 50%;
transform: rotate(80deg);
2019-12-13 13:47:57 +08:00
z-index: -2222;
2018-10-10 18:03:03 -04:00
}
2019-12-13 13:47:57 +08:00
2018-10-10 18:03:03 -04:00
.right-eye {
top: 45%;
left: 60%;
background: black;
width: 15%;
height: 17%;
2019-12-13 13:47:57 +08:00
border-radius: 50%;
2018-10-10 18:03:03 -04:00
}
2019-12-13 13:47:57 +08:00
2018-10-10 18:03:03 -04:00
.left-eye {
top: 45%;
left: 25%;
background: black;
width: 15%;
height: 17%;
2019-12-13 13:47:57 +08:00
border-radius: 50%;
2018-10-10 18:03:03 -04:00
}
2019-12-13 13:47:57 +08:00
2018-10-10 18:03:03 -04:00
.sparkle {
top: 25%;
left: 15%;
background: white;
width: 35%;
height: 35%;
2019-12-13 13:47:57 +08:00
border-radius: 50%;
2018-10-10 18:03:03 -04:00
}
2019-12-13 13:47:57 +08:00
2018-10-10 18:03:03 -04:00
.blush-right {
top: 65%;
left: 15%;
background: pink;
width: 15%;
height: 10%;
2019-12-13 13:47:57 +08:00
border-radius: 50%;
2018-10-10 18:03:03 -04:00
}
2019-12-13 13:47:57 +08:00
2018-10-10 18:03:03 -04:00
.blush-left {
top: 65%;
left: 70%;
background: pink;
width: 15%;
height: 10%;
2019-12-13 13:47:57 +08:00
border-radius: 50%;
2018-10-10 18:03:03 -04:00
}
2019-12-13 13:47:57 +08:00
2018-10-10 18:03:03 -04:00
.beak-top {
top: 60%;
left: 40%;
background: var(--penguin-beak, orange);
width: 20%;
height: 10%;
2019-12-13 13:47:57 +08:00
border-radius: 50%;
2018-10-10 18:03:03 -04:00
}
2019-12-13 13:47:57 +08:00
2018-10-10 18:03:03 -04:00
.beak-bottom {
top: 65%;
left: 42%;
background: var(--penguin-beak, orange);
width: 16%;
height: 10%;
2019-12-13 13:47:57 +08:00
border-radius: 50%;
2018-10-10 18:03:03 -04:00
}
2019-12-13 13:47:57 +08:00
2018-10-10 18:03:03 -04:00
body {
background:#c6faf1 ;
}
2019-12-13 13:47:57 +08:00
2018-10-10 18:03:03 -04:00
.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 >
```
< / div >
< / section >
## Solution
< section id = 'solution' >
2019-12-13 13:47:57 +08:00
2018-10-10 18:03:03 -04:00
```js
// solution required
```
2019-12-13 13:47:57 +08:00
2018-10-10 18:03:03 -04:00
< / section >
2019-12-13 13:47:57 +08:00