- groups content
@@ -25,17 +25,17 @@ forumTopicId: 301029
# --instructions--
-Camper Cat 打算使用`article`标签来呈现他的博客页面里的帖子,但是他忘记在顶部的帖子上使用它。请使用`article`标签来代替`div`标签。
+Camper Cat 打算使用 `article` 标签来呈现他的博客页面里的帖子,但是他还没有加到最上面的帖子上。请使用 `article` 标签来代替 `div` 标签。
# --hints--
-你的代码中应该有 3 个`article`标签。
+应存在 3 个 `article` 标签。
```js
assert($('article').length == 3);
```
-你的代码不应包含`div`标签。
+不应存在 `div` 标签。
```js
assert($('div').length == 0);
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-accessibility/wrap-radio-buttons-in-a-fieldset-element-for-better-accessibility.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-accessibility/wrap-radio-buttons-in-a-fieldset-element-for-better-accessibility.md
index 61339d56c2..603e8e29fc 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-accessibility/wrap-radio-buttons-in-a-fieldset-element-for-better-accessibility.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-accessibility/wrap-radio-buttons-in-a-fieldset-element-for-better-accessibility.md
@@ -8,11 +8,11 @@ forumTopicId: 301030
# --description--
-下一个表单主题与单选按钮的可访问性有关。在上一个挑战中,单选按钮含有一个拥有`for`属性的`label`标签,`for`属性指向相关选项的`id`。然而单选按钮通常成组出现,用户必须其中选择一项。本次挑战介绍一种可以语义化呈现单选按钮组的方法。
+下一个表单主题与单选按钮的可访问性有关。在上一个挑战中,每个单选按钮都有一个包含 `for` 属性的 `label` 标签,`for` 的属性值指向相关选项的 `id`。然而单选按钮通常成组出现,而且用户必须选择其中一项。本次挑战介绍一种可以语义化呈现单选按钮组的方法。
-使用`fieldset`标签将单选按钮组包含在里面就可以实现这个目的,通常还会使用`legend`标签来为单选按钮组提供文字说明。屏幕阅读器也可以朗读这些文字。
+我们可以使用 `fieldset` 标签将单选按钮组包含在里面,通常还会使用 `legend` 标签来为单选按钮组提供文字说明。屏幕阅读器也可以朗读这些文字。
-当选项的含义很明确时,如:性别选择,`fieldset`标签与`legend`标签就可以省略。这时,使用含有`for`属性的`label`标签就足够了。
+当选项的含义很明确时,如“性别选择”,`fieldset` 与 `legend` 标签可以省略。这时,使用包含 `for` 属性的 `label` 标签就足够了。
举个例子:
@@ -32,17 +32,17 @@ forumTopicId: 301030
# --instructions--
-当用户使用邮件注册时,Camper Cat 想知道他们的忍者等级。通过上一个挑战的学习,Camper Cat 创建了一组单选按钮,并为每个选项的`label`标签添加了`for`属性,但是 Camper Cat 的代码依然需要你的帮助。请将包含单选按钮组的`div`标签替换为`fieldset`标签;将`p`标签替换为`legend`标签。
+当用户使用邮件注册时,Camper Cat 想知道他们的忍者等级。通过上一个挑战的学习,Camper Cat 创建了一组单选按钮,并为每个选项的 `label` 标签添加了 `for` 属性,但是 Camper Cat 的代码依然需要你的帮助。请将包含单选按钮组的 `div` 标签替换为 `fieldset` 标签;将 `p` 标签替换为 `legend` 标签。
# --hints--
-你的代码应该使用 1 个`fieldset`标签包含单选按钮组。
+应存在 1 个 `fieldset` 标签包含单选按钮组。
```js
assert($('fieldset').length == 1);
```
-确保`fieldset`标签是闭合的。
+确保 `fieldset` 标签是闭合的。
```js
assert(
@@ -51,19 +51,19 @@ assert(
);
```
-你的代码应该有 1 个包含询问用户忍者等级文字的`legend`标签。
+应存在 1 个包含询问用户忍者等级内容文字的 `legend` 标签。
```js
assert($('legend').length == 1);
```
-你的代码不应该含有`div`标签。
+不应存在 `div` 标签。
```js
assert($('div').length == 0);
```
-你的代码不应该有包含询问用户忍者等级文字的`p`标签。
+不应存在包含询问用户忍者等级内容文字的 `p` 标签。
```js
assert($('p').length == 4);
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/add-a-box-shadow-to-a-card-like-element.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/add-a-box-shadow-to-a-card-like-element.md
index 02a44d3cba..998b66b87b 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/add-a-box-shadow-to-a-card-like-element.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/add-a-box-shadow-to-a-card-like-element.md
@@ -32,17 +32,17 @@ box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23);
# --instructions--
-现在该卡片添加了值为 `thumbnail` 的 id 属性。把上面的 `box-shadow` 值赋给卡片。
+我们把卡片的 `id` 设置成了 `thumbnail`,请把上面的 `box-shadow` 值赋给这个卡片。
# --hints--
-你应该给 id 为 `thumbnail` 的元素添加 `box-shadow` 属性。
+应该给 id 为 `thumbnail` 的元素添加 `box-shadow` 属性。
```js
assert(code.match(/#thumbnail\s*?{\s*?box-shadow/g));
```
-`box-shadow` 值应该是指定的 CSS 值。
+`box-shadow` 属性值应该是题目说明中指定的 CSS 值。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-background-color-property-of-text.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-background-color-property-of-text.md
index b703cba943..40917906d5 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-background-color-property-of-text.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-background-color-property-of-text.md
@@ -12,7 +12,7 @@ forumTopicId: 301032
rgba 代表:
r = red 红色
g = green 绿色
b = blue 蓝色
a = alpha 透明度
-RGB 值可以在 0 到 255 之间。alpha 值可以在 0 到 1 之间,其中 0 代表完全透明,1 代表完全不透明。`rgba()` 非常棒,因为你可以设置颜色的透明度,这意味着你可以做出一些很漂亮的半透明效果。
+RGB 值可以取在 0 到 255 之间。alpha 值可取在 0 到 1 之间,其中 0 代表完全透明,1 代表完全不透明。`rgba()` 在需要设置颜色透明度时十分有用,这意味着你可以做出一些很漂亮的半透明效果。
在本挑战里你将会用到这个代码 `background-color: rgba(45, 45, 45, 0.1)`。它表示背景是黑灰色,因为设置了透明度为 0.1,所以几乎是透明的。
@@ -34,7 +34,7 @@ assert(
);
```
-你应该给 `h4` 元素添加一个 `padding` 属性并且赋值 `10px`。
+`h4` 元素的 `padding` 属性值应为 `10px`。
```js
assert(
@@ -45,7 +45,7 @@ assert(
);
```
-`h4` 元素的 `height` 属性应该被移除。
+`h4` 元素不应有 `height` 属性。
```js
assert(!($('h4').css('height') == '25px'));
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-color-of-various-elements-to-complementary-colors.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-color-of-various-elements-to-complementary-colors.md
index f653471987..ab93fd5e48 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-color-of-various-elements-to-complementary-colors.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-color-of-various-elements-to-complementary-colors.md
@@ -8,7 +8,7 @@ forumTopicId: 301033
# --description--
-通过前面关卡的学习,我们知道了补色搭配能形成强列的对比效果,让内容更富生机。但是如果使用不当效果会适得其反,比如如果文字背景色和文字颜色互为补色,文字会很难看清。通常的做法是,一种颜色做为主要颜色,其补色用来装点页面。
+通过前面关卡的学习,我们知道了补色搭配能形成强列的对比效果,让内容更富生机。但是如果使用不当效果会适得其反:比如将文字背景色和文字颜色设置为互补色,这样文字会很难看清。通常的做法是,一种颜色做为主要颜色,然后使用其补色用来装点那些需要用户特别注意的部分。
# --instructions--
@@ -16,25 +16,25 @@ forumTopicId: 301033
# --hints--
-`header` 元素应该有一个值为 `#09A7A1` 的 `background-color` CSS 属性。
+`header` 元素的 `background-color` 属性值应为 `#09A7A1`。
```js
assert($('header').css('background-color') == 'rgb(9, 167, 161)');
```
-`footer` 元素应该有一个值为 `#09A7A1` 的 `background-color`CSS 属性。
+`footer` 元素的 `background-color` 属性值应为 `#09A7A1`。
```js
assert($('footer').css('background-color') == 'rgb(9, 167, 161)');
```
-`h2` 元素应该有一个值为 `#09A7A1` 的 `color` CSS 属性。
+`h2` 元素的 `color` 属性值应为 `#09A7A1`。
```js
assert($('h2').css('color') == 'rgb(9, 167, 161)');
```
-`button` 元素应该有一个值为 `#FF790E` 的 `background-color` CSS 属性。
+`button` 元素的 `background-color` 属性值应为 `#FF790E`。
```js
assert($('button').css('background-color') == 'rgb(255, 121, 14)');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-height-of-an-element-using-the-height-property.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-height-of-an-element-using-the-height-property.md
index 939f2fc0a3..5015399935 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-height-of-an-element-using-the-height-property.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-height-of-an-element-using-the-height-property.md
@@ -8,7 +8,7 @@ forumTopicId: 301034
# --description--
-和 `width` 属性类似,你可以使用 CSS 里面的 `height` 属性来指定元素的高度。下面这个例子把图片的高度设置为 20px:
+和 `width` 属性类似,你可以使用 CSS 里面的 `height` 属性来指定元素的高度。下面这段代码可以把图片的高度设置为 20px:
```css
img {
@@ -18,13 +18,13 @@ img {
# --instructions--
-给 `h4` 标签添加 `height` 属性并设置值为 25px。
+给 `h4` 标签添加 `height` 属性并将属性值设置为 25px。
-**注意:** 可能需要将浏览器的缩放比调整为 100% 才能通过这一挑战。
+**注意:**可能需要将浏览器的缩放比调整为 100% 才能通过这一挑战。
# --hints--
-你应该设置 `h4` 的 `height` 属性,使其值为 `25px`。
+`h4` 的 `height` 属性值应为 `25px`。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-hover-state-of-an-anchor-tag.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-hover-state-of-an-anchor-tag.md
index 1f2f5cd3e4..73a36a66b9 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-hover-state-of-an-anchor-tag.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-hover-state-of-an-anchor-tag.md
@@ -8,9 +8,9 @@ forumTopicId: 301035
# --description--
-本挑战将要涉及到伪类。伪类是可以添加到选择器上的关键字,用来选择元素的指定状态。
+本挑战将要涉及到伪类。伪类是可以添加到选择器上的关键字,用来选择特定状态的元素。
-比如,超链接可以使用 `:hover` 伪类选择器定义它的悬停状态样式。下面是悬停超链接时改变超链接颜色的 CSS:
+比如,可以使用 `:hover` 伪类选择器来选取超链接的悬停状态。下面的代码可以改变超链接悬停时的颜色:
```css
a:hover {
@@ -20,17 +20,17 @@ a:hover {
# --instructions--
-代码编辑器里面已经有了一个 CSS 规则把所有的 `a` 标签定义成了黑色。添加一个规则,满足如下,当用户悬停 `a` 标签时,把 `color` 变成蓝色。
+代码编辑器里面已经有了一个 CSS 规则把所有的 `a` 标签定义成了黑色。请添加一个规则,使得用户悬停在 `a` 标签时,`a` 标签的 `color` 会变成蓝色。
# --hints--
-超链接的 `color` 应该保持黑色,只添加 `:hover` CSS 规则。
+超链接的 `color` 应该保持黑色,应只添加 `:hover` CSS 规则。
```js
assert($('a').css('color') == 'rgb(0, 0, 0)');
```
-悬停超链接时超链接 `color` 应该变成蓝色。
+悬停超链接时超链接的 `color` 应该变成蓝色。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-hue-of-a-color.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-hue-of-a-color.md
index cd7df06cfe..a7605c90c7 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-hue-of-a-color.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-hue-of-a-color.md
@@ -8,13 +8,13 @@ forumTopicId: 301036
# --description--
-HSL 色彩空间模型是一种将 RGB 色彩模型中的点放在圆柱坐标系中的表示法,描述了色相(hue)、饱和度(saturation)、亮度(lightness)。CSS3 引入了对应的 `hsl()` 属性做为对应的颜色描述方式。
+HSL 色彩空间模型是一种将 RGB 色彩模型中的点放在圆柱坐标系中的表示法,描述了色相(hue)、饱和度(saturation)、亮度(lightness)。CSS3 引入了 `hsl()` 做为颜色的描述方式。
**色相**是色彩的基本属性,就是平常所说的颜色名称,如红色、黄色等。以颜色光谱为例,光谱左边从红色开始,移动到中间的绿色,一直到右边的蓝色,色相值就是沿着这条线的取值。在 `hsl()` 里面,色相用色环来代替光谱,色相值就是色环里面的颜色对应的从 0 到 360 度的角度值。
-**饱和度**是指色彩的纯度,也就是颜色里灰色的占比,越高色彩越纯,低则逐渐变灰,取0-100%的数值。
+**饱和度**是指色彩的纯度,也就是颜色里灰色的占比。饱和度越高则灰色占比越少,色彩也就越纯;反之则完全是灰色。饱和度的取值范围是表示灰色所占百分比的 0 至 100。
-**亮度**决定颜色的明暗程度,也就是颜色里白色或者黑色的占比,100% 亮度是白色, 0% 亮度是黑色,而 50% 亮度是“一般的”。
+**亮度**决定颜色的明暗程度,也就是颜色里白色或者黑色的占比。其中,100% 的亮度表示纯白色, 0% 的亮度则表示纯黑色;而 50% 的亮度就表示在色相中选取的颜色。
下面是一些使用 `hsl()` 描述颜色的例子,颜色都为满饱和度,中等亮度:
@@ -22,41 +22,41 @@ HSL 色彩空间模型是一种将 RGB 色彩模型中的点放在圆柱坐标
# --instructions--
-把 class 为 `green`、`cyan` 和`blue` `div` 的 `background-color` 使用 `hsl()` 表示法描述相应的颜色。颜色都为满饱和度,亮度中等。
+将 class 为 `green`、`cyan` 和 `blue` 的 `div` 的 `background-color` 属性值设置为使用 `hsl()` 表示的颜色。颜色都为满饱和度,亮度中等。
# --hints--
-你应该使用 `hsl()` 属性来表示绿色。
+应该使用 `hsl()` 属性来表示绿色。
```js
assert(code.match(/\.green\s*?{\s*?background-color:\s*?hsl/gi));
```
-你应该使用 `hsl()` 属性来表示蓝绿色。
+应该使用 `hsl()` 属性来表示蓝绿色。
```js
assert(code.match(/\.cyan\s*?{\s*?background-color:\s*?hsl/gi));
```
-你应该使用 `hsl()` 属性来表示蓝色。
+应该使用 `hsl()` 属性来表示蓝色。
```js
assert(code.match(/\.blue\s*?{\s*?background-color:\s*?hsl/gi));
```
-class 为 `green` 的 `div` 应该有绿色的 `background-color` CSS 属性。
+class 为 `green` 的 `div` 的 `background-color` 属性值应为绿色。
```js
assert($('.green').css('background-color') == 'rgb(0, 255, 0)');
```
-class 为 `cyan` 的 `div` 应该有蓝绿色的 `background-color` CSS 属性。
+class 为 `cyan` 的 `div` 的 `background-color` 属性值应为蓝绿色。
```js
assert($('.cyan').css('background-color') == 'rgb(0, 255, 255)');
```
-class 为 `blue` 的 `div` 应该有蓝色的 `background-color` CSS 属性。
+class 为 `blue` 的 `div` 的 `background-color` 属性值应为蓝色。
```js
assert($('.blue').css('background-color') == 'rgb(0, 0, 255)');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-size-of-a-header-versus-a-paragraph-tag.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-size-of-a-header-versus-a-paragraph-tag.md
index 320de976ec..5e6f7317c3 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-size-of-a-header-versus-a-paragraph-tag.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-size-of-a-header-versus-a-paragraph-tag.md
@@ -8,15 +8,15 @@ forumTopicId: 301037
# --description--
-标题(`h1` 到 `h6`)的文字应该比段落的文字大,这样可以让用户更直观的看到页面的布局,同时能区别出不同元素的重要程度,更方便用户捕捉关键的信息。你可以使用 `font-size` 属性来设置元素内文字的大小。
+标题(`h1` 到 `h6`)的文字应该比段落的文字大,这样可以让用户更直观的看到页面布局,同时能根据不同元素的层级梳理出页面的结构,更方便用户获取关键的信息。你可以使用 `font-size` 属性来设置元素内文字的大小。
# --instructions--
-把 `h4` 标签的 `font-size`改成 27 像素,让标题更醒目。
+把 `h4` 标签的 `font-size` 的属性值改成 27 像素,让标题更醒目。
# --hints--
-你应该给 `h4` 元素添加一个 `font-size` 属性并且赋值 `27px`。
+应给 `h4` 元素添加一个 `font-size` 属性并将属性值设置为 `27px`。
```js
assert($('h4').css('font-size') == '27px');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-tone-of-a-color.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-tone-of-a-color.md
index 7657407ca5..3da2c652c9 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-tone-of-a-color.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-tone-of-a-color.md
@@ -8,15 +8,15 @@ forumTopicId: 301038
# --description--
-`hsl()` 使 CSS 更改色调更方便。给纯色添加白色可以创造更浅的色调,添加黑色可以创造更深的色调。另外,还可以通过给纯色添加灰色来同时改变颜色的深浅和明暗。回忆下 `hsl()` 里面的 ‘s’ 和 ‘l’ 分辨代表饱和度和亮度。饱和度代表灰色的占比,亮度代表白色和黑色的占比。这在当你有了一个基色调却需要微调时非常有用。
+`hsl()` 使 CSS 更改颜色色调更加方便。比如,给一个纯色添加白色可以调出更浅的色调;添加黑色可以创造更深的色调。另外,还可以通过给纯色添加灰色来同时改变颜色的深浅和明暗。回忆下 `hsl()` 里面的 ‘s’ 和 ‘l’ 分辨代表饱和度和亮度。饱和度代表灰色的占比,亮度代表白色和黑色的占比。`hsl()` 在你想获取一个基准色的变种的情景下会十分有用。
# --instructions--
-页面的导航栏目前继承了 `header` 的 `background-color`。改变 `nav` 元素的 `background-color`,保留基色蓝绿色,调整它的色调和明暗使它具有 80% 的饱和度以及 25% 的亮度。
+所有元素的默认 `background-color` 都是透明色。当前页面的导航栏 `nav` 背景色之所以看起来是蓝绿色,是因为它背后的 `header` 的 `background-color` 属性值为 `cyan`。请将 `nav` 的 `background-color` 也设置为 `cyan`,但把它的饱和度调整为 80%,亮度调整为 25%。
# --hints--
-`nav` 元素应该有一个使用 `hsl()` 属性调节蓝绿色调的 `background-color` CSS 属性。
+`nav` 元素应该有一个使用 `hsl()` 属性调节蓝绿色调的 `background-color` 属性。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-width-of-an-element-using-the-width-property.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-width-of-an-element-using-the-width-property.md
index 5d5952443c..2051768bdd 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-width-of-an-element-using-the-width-property.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/adjust-the-width-of-an-element-using-the-width-property.md
@@ -8,7 +8,7 @@ forumTopicId: 301039
# --description--
-你可以使用 CSS 里面的 `width` 属性来指定元素的宽度。属性值可以是相对单位(比如 em),绝对单位(比如 px),或者包含块(父元素)宽度的百分比。下面这个例子把图片的宽度设置为 220px:
+你可以使用 CSS 里的 `width` 属性来指定元素的宽度。属性值可以是相对单位(比如 em)、绝对单位(比如 px)、或者其父元素宽度的百分比。下面这段代码可以把图片的宽度设置为 220px:
```css
img {
@@ -18,11 +18,11 @@ img {
# --instructions--
-给卡片添加 `width` 属性,设置它的宽度为 245px。使用 `fullCard` class 来选择元素。
+请使用 `fullCard` class 来选择卡片元素,为它添加 `width` 属性,并将它的宽度设置为 245px。
# --hints--
-你应该使用 `fullCard` class 选择器将卡片的 `width` 宽度属性更改为 `245px`。
+应使用 `fullCard` class 选择器将卡片的 `width` 属性值设置为 `245px`。
```js
const fullCard = code.match(/\.fullCard\s*{[\s\S]+?[^}]}/g);
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/animate-elements-at-variable-rates.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/animate-elements-at-variable-rates.md
index 2fcfca5750..64b26a4d20 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/animate-elements-at-variable-rates.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/animate-elements-at-variable-rates.md
@@ -8,17 +8,17 @@ forumTopicId: 301040
# --description--
-改变相似元素的动画频率的方法有很多。目前接触到的就有 `animation-iteration-count` 和 `@keyframes`。
+改变相似元素的动画频率的方法有很多。目前我们接触到的就有 `animation-iteration-count` 和 `@keyframes`。
举例说明,右边的动画包含了两个小星星,每个小星星都在 20% `@keyframes` 处变小并且 opacity 变为 20%,也就是一闪一闪的动画效果。你可以通过改变其中一个星星的 `@keyframes` 规则以使两个小星星以不同的频率闪烁。
# --instructions--
-通过改变 class 为 `star-1` 的元素的 `@keyframes` 为 50% 以改变其动画频率。
+请将 class 为 `star-1` 的元素的 `@keyframes` 为设置为 50%,以此改变其动画频率。
# --hints--
-`star-1` class 的 `@keyframes` 规则应该为50%。
+class 为 `star-1` 的元素的 `@keyframes` 规则应为 50%。
```js
assert(code.match(/twinkle-1\s*?{\s*?50%/g));
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/animate-elements-continually-using-an-infinite-animation-count.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/animate-elements-continually-using-an-infinite-animation-count.md
index 13604a40d4..90a190cc6d 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/animate-elements-continually-using-an-infinite-animation-count.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/animate-elements-continually-using-an-infinite-animation-count.md
@@ -16,7 +16,7 @@ forumTopicId: 301041
# --instructions--
-把 `animation-iteration-count` 属性改成 infinite,以使右边的球持续跳跃。
+把 `animation-iteration-count` 属性值改成 infinite,以使右边的球持续跳跃。
# --hints--
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/animate-multiple-elements-at-variable-rates.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/animate-multiple-elements-at-variable-rates.md
index 6de96d2cf0..84f4b250d9 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/animate-multiple-elements-at-variable-rates.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/animate-multiple-elements-at-variable-rates.md
@@ -8,13 +8,13 @@ forumTopicId: 301042
# --description--
-在前面的关卡里,你通过改变 `@keyframes` 改变了两个相似动画元素的频率。你也可以通过改变多个元素的 `animation-duration` 来达到同样的效果。
+在前面的关卡里,我们通过修改 `@keyframes` 改变了两个相似动画元素的频率。你也可以通过改变多个元素的 `animation-duration` 来达到同样的效果。
-在编辑器代码运行的动画里,天空中有三个以同样频率不停的闪烁的星星。你可以设置每一个星星的 `animation-duration` 属性为不同的值来使其具有不同的闪烁频率。
+在编辑器代码运行的动画里,天空中有三个以同样频率不停闪烁的星星。你可以设置每一个星星的 `animation-duration` 属性为不同的值来使其具有不同的闪烁频率。
# --instructions--
-依次设置 class 为 `star-1`、`star-2`、`star-3` 的 `animation-duration` 为 1s、0.9s、1.1s。
+依次设置 class 为 `star-1`、`star-2`、`star-3` 的元素的 `animation-duration` 为 1s、0.9s、1.1s。
# --hints--
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/center-an-element-horizontally-using-the-margin-property.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/center-an-element-horizontally-using-the-margin-property.md
index ed5f5db7bc..14bb36e521 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/center-an-element-horizontally-using-the-margin-property.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/center-an-element-horizontally-using-the-margin-property.md
@@ -10,15 +10,15 @@ forumTopicId: 301043
在应用设计中经常需要把一个块级元素水平居中显示。一种常见的实现方式是把块级元素的 `margin` 值设置为 `auto`。
-同样的,这个方法也对图片奏效。图片默认是内联元素,但是可以通过设置其 `display` 属性为 `block`来把它变成块级元素。
+同样的,这个方法也对图片奏效。图片默认是内联元素,但是可以通过设置其 `display` 属性为 `block` 来把它变成块级元素。
# --instructions--
-通过给页面中的 `div` 添加值为 `auto` 的 `margin` 属性将其居中显示。
+通过将页面中 `div` 的 `margin` 属性值设置为 `auto` 来让它居中显示。
# --hints--
-`div` 的 `margin` 应该为 `auto`。
+`div` 的 `margin` 属性值应为 `auto`。
```js
assert(code.match(/margin:\s*?auto;/g));
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/change-an-elements-relative-position.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/change-an-elements-relative-position.md
index c452654569..6c5166fb8a 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/change-an-elements-relative-position.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/change-an-elements-relative-position.md
@@ -8,9 +8,9 @@ forumTopicId: 301044
# --description--
-在 CSS 里一切 HTML 元素皆为盒子,也就是通常所说的 `盒模型`。块级元素自动从新的一行开始(比如标题、段落以及 div),行内元素排列在上一个元素后(比如图片以及 span)。元素默认按照这种方式布局称为文档的 `普通流`,同时 CSS 提供了 position 属性来覆盖它。
+在 CSS 里一切 HTML 元素皆为盒子,也就是通常所说的
盒模型。块级元素自动从新的一行开始(比如标题、段落以及 div),行内元素排列在上一个元素后(比如图片以及 span)。元素默认按照这种方式布局称为文档的
普通流,同时 CSS 提供了 position 属性来覆盖它。
-当元素的 position 设置为 `relative` 时,它允许你通过 CSS 指定该元素在当前普通流页面下的相对偏移量。 CSS 里控制各个方向偏移量的对应的属性是 `left`、`right`、`top` 和 `bottom`。它们代表着从原来的位置向对应的方向偏移指定的像素、百分比或者 ems。下面的例子展示了段落向上偏移 10 像素:
+当元素的 position 设置为 `relative` 时,它允许你通过 CSS 指定该元素在当前普通流页面下的相对偏移量。CSS 里控制各个方向偏移量的属性是 `left`、`right`、`top` 和 `bottom`。它们代表从原来位置向远离该方向偏移指定的像素、百分比或者 em。下面的例子展示了段落向上偏移 10 像素:
```css
p {
@@ -19,16 +19,15 @@ p {
}
```
-把元素的 position 设置成 relative 并不会改变该元素在普通流布局所占的位置,也不会对其它元素的位置产生影响。 **注意**
-定位可以让你在页面布局上更灵活、高效。注意不管元素的定位是怎样,内部的 HTML 代码阅读起来应该是整洁、有意义的。这样也可以让视障人员(他们重度依赖辅助设备比如屏幕阅读软件)能够浏览你的网页。
+把元素的 position 设置成 relative 并不会改变该元素在普通流布局所占的位置,也不会对其它元素的位置产生影响。 **注意:**定位可以让你在页面布局上更灵活、高效。注意不管元素的定位是怎样,内部的 HTML 代码阅读起来应该是整洁、有意义的。这样也可以让视障人员(他们重度依赖辅助设备比如屏幕阅读软件)也能够无障碍地浏览你的网页。
# --instructions--
-把 `h2` 的 `position` 设置成 `relative`,使用相应的 CSS 属性调整 `h2` 的位置,使其向下偏移 15 像素,同时还在普通流中占据原来的位置。注意不要对 h1 和 p 元素的位置产生影响。
+把 `h2` 的 `position` 属性值设置成 `relative`,使用相应的 CSS 属性调整 `h2` 的位置,使其相对原本的位置向下偏移 15 像素。注意不要对 h1 和 p 元素的位置产生影响。
# --hints--
-`h2` 元素应该添加 `position` 属性并赋值 `relative`。
+`h2` 元素应该添加 `position` 属性,其属性值应为 `relative`。
```js
assert($('h2').css('position') == 'relative');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/change-animation-timing-with-keywords.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/change-animation-timing-with-keywords.md
index b06a066173..4562104629 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/change-animation-timing-with-keywords.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/change-animation-timing-with-keywords.md
@@ -8,17 +8,17 @@ forumTopicId: 301045
# --description--
-在 CSS 动画里,`animation-timing-function` 规定动画的速度曲线。速度曲线定义动画从一套 CSS 样式变为另一套所用的时间。如果要描述的动画是一辆车在指定时间内(`animation-duration`)从 A 运动到 B,那么 `animation-timing-function` 表述的就是车在运动中的加速和减速等过程。
+在 CSS 动画里,`animation-timing-function` 用来定义动画的速度曲线。速度曲线决定了动画从一套 CSS 样式变为另一套所用的时间。如果要描述的动画是一辆车在指定时间内(`animation-duration`)从 A 运动到 B,那么 `animation-timing-function` 表述的就是车在运动中的加速和减速等过程。
-已经有了很多预定义的值可以直接使用于大部分场景。比如,默认的值是 `ease`,动画以低速开始,然后加快,在结束前变慢。其它常用的值包括 `ease-out`,动画以高速开始,以低速结束;`ease-in`,动画以低速开始,以高速结束;`linear`,动画从头到尾的速度是相同的。
+对于常用的选项,CSS 提供了内置的关键字方便我们调用。比如,默认的值是 `ease`:动画以低速开始,然后加快,在结束前变慢;其它常用的值包括 `ease-out`:动画以高速开始,以低速结束;`ease-in`,动画以低速开始,以高速结束;`linear`:动画从头到尾的速度是相同的。
# --instructions--
-给 id 为 `ball1` 和 `ball2` 的元素添加 `animation-timing-function`,`ball1` 赋值为 `linear`,`ball2` 赋值为 `ease-out`。它们的 `animation-duration` 都为 2 秒,注意观察它们在开始和结束时的不同。
+给 id 为 `ball1` 和 `ball2` 的元素添加 `animation-timing-function`,`ball1` 的属性值为 `linear`,`ball2` 的属性值为 `ease-out`。它们的 `animation-duration` 都为 2 秒,注意观察它们在开始和结束时的不同。
# --hints--
-id 为 `ball1` 的元素的 `animation-timing-function` 属性值应该为 linear。
+id 为 `ball1` 的元素的 `animation-timing-function` 属性值应为 linear。
```js
const ball1Animation = $('#ball1')
@@ -27,7 +27,7 @@ const ball1Animation = $('#ball1')
assert(ball1Animation == 'linear' || ball1Animation == 'cubic-bezier(0,0,1,1)');
```
-id 为 `ball2` 的元素的 `animation-timing-function` 属性值应该为 ease-out。
+id 为 `ball2` 的元素的 `animation-timing-function` 属性值应为 ease-out。
```js
const ball2Animation = $('#ball2')
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/change-the-position-of-overlapping-elements-with-the-z-index-property.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/change-the-position-of-overlapping-elements-with-the-z-index-property.md
index 3bad618b6c..3d021a09d5 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/change-the-position-of-overlapping-elements-with-the-z-index-property.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/change-the-position-of-overlapping-elements-with-the-z-index-property.md
@@ -8,15 +8,15 @@ forumTopicId: 301046
# --description--
-当一些元素重叠时,在 HTML 里后出现的元素会默认显示在更早出现的元素的上面。你可以使用 `z-index` 属性指定元素的堆叠次序。`z-index` 的取值是整数,数值大的元素优先于数值小的元素显示。
+当一些元素重叠时,在 HTML 里后出现的元素会默认显示在更早出现的元素的上面。你可以使用 `z-index` 属性指定元素的堆叠次序。`z-index` 的取值是整数,数值大的元素会叠放到数值小的元素上面。
# --instructions--
-给 class 为 `first` 的元素(红色的方块)添加 `z-index` 属性并赋值为 2,使它显示在蓝色方块的上方。
+给 class 为 `first` 的元素(红色的方块)添加 `z-index` 属性并将属性值设置为 2,使它显示在蓝色方块的上方。
# --hints--
-class 为 `first` 的元素的 `z-index` 值应该为 2。
+class 为 `first` 的元素的 `z-index` 属性值应为 2。
```js
assert($('.first').css('z-index') == '2');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-a-gradual-css-linear-gradient.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-a-gradual-css-linear-gradient.md
index 71a33acf2d..cd865a8901 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-a-gradual-css-linear-gradient.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-a-gradual-css-linear-gradient.md
@@ -8,26 +8,23 @@ forumTopicId: 301047
# --description--
-HTML 元素的背景色并不局限于单色。CSS 还提供了颜色过渡,也就是渐变。可以通过 `background` 里面的 `linear-gradient()` 来实现线性渐变,下面是它的语法:
+HTML 元素的背景色并不局限于单色。CSS 还为我们提供了颜色渐变。可以通过 `background` 里的 `linear-gradient()` 来实现线性渐变,以下是它的语法:
`background: linear-gradient(gradient_direction, 颜色 1, 颜色 2, 颜色 3, ...);`
-第一个参数指定了颜色过渡的方向 - 它的值是角度,90deg 代表垂直渐变,45deg 的渐变角度和反斜杠方向差不多。剩下的参数指定了渐变颜色的顺序:
+第一个参数用来表明颜色渐变的初始方向。它的值是一个角度,比如 `90deg` 代表水平渐变(从左到右),再比如 `45deg` 代表对角线方向的渐变(从左下到右上)。后续的参数指定了渐变颜色的顺序。
-例子:
+例如:
`background: linear-gradient(90deg, red, yellow, rgb(204, 204, 255));`
# --instructions--
-使用 `linear-gradient()` 给 `div` 添加 `background` 渐变色,渐变角度 35deg,从 `#CCFFFF` 过渡到 `#FFCCCC`。
-
-**注意**
-有很多种方式指定颜色值,如 `rgb()` 或者 `hsl()`。在本关里请使用 hex 颜色码。
+使用 `linear-gradient()` 将 `div` 的 `background` 设置为渐变色,渐变的起始角度为 35 度,颜色从 `#CCFFFF` 过渡到 `#FFCCCC`。
# --hints--
-`div` 元素应该有一个指定方向和颜色的 `linear-gradient` `background`渐变色。
+`div` 元素应有一个指定方向和颜色的 `linear-gradient` 来设置 `background`。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-a-graphic-using-css.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-a-graphic-using-css.md
index 87a6b1a2d6..6859e32a78 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-a-graphic-using-css.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-a-graphic-using-css.md
@@ -10,33 +10,33 @@ forumTopicId: 301048
术语表:blur-radius => 模糊半径,spread-radius => 辐射半径,transparent => 透明的,border-radius => 圆角边框。
-通过使用选择器选择不同的元素并改变其属性,你可以创造一些有趣的形状。比如新月。你可以使用 `box-shadow` 属性来设置元素的阴影,`border-radius` 属性控制元素的圆角边框。
+通过使用不同的选择器和属性,你可以做出有趣的形状,比如新月形状。在这个挑战中,我们会学习如何使用 `box-shadow` 属性来设置元素的阴影,以及使用 `border-radius` 属性控制元素的圆角边框。
-首先你将会创建一个圆的、透明的对象,它具有模糊阴影并略微向两边递减。如你所见,这个阴影其实就是新月形狀。
+首先我们来创建一个圆的、透明的图形,它具有模糊阴影并略微向两边递减。如你所见,这个阴影其实就是新月形狀。
为了创建一个圆形的对象,`border-radius` 应该被设置成 50%。
-你应该还记得之前关卡的 `box-shadow` 属性以及它的依次取值 `offset-x`、`offset-y`、`blur-radius`、`spread-radius` 和颜色值。其中`blur-radius` 和 `spread-radius` 是可选的。
+你应该还记得之前关卡的 `box-shadow` 属性以及它的依次取值 `offset-x`、`offset-y`、`blur-radius`、`spread-radius` 和颜色值。其中 `blur-radius` 和 `spread-radius` 是可选的。
# --instructions--
-把编辑器里的正方形元素变成新月形状。首先,把 `background-color` 改为 transparent,接着把 `border-radius` 属性设置成 50%,以创建一个圆形。最后,更改 `box-shadow` 属性,使其 `offset-x` 为 25px,`offset-y` 为 10px,`blur-radius` 为 0,`spread-radius` 为 0,`color` 为 blue。
+把编辑器里的正方形元素变成新月形状。首先,把 `background-color` 改为 transparent,接着把 `border-radius` 属性值设置成 50%,以创建一个圆形。最后,更改 `box-shadow` 属性,使其 `offset-x` 为 25px、`offset-y` 为 10px、`blur-radius` 为 0、`spread-radius` 为 0、`color` 为 blue。
# --hints--
-`background-color` 属性应该取值 `transparent`。
+`background-color` 属性值应为 `transparent`。
```js
assert(code.match(/background-color:\s*?transparent;/gi));
```
-`border-radius` 属性应该取值 `50%`。
+`border-radius` 属性值应为 `50%`。
```js
assert(code.match(/border-radius:\s*?50%;/gi));
```
-`box-shadow` 属性的 `offset-x`、`offset-y`、`blur-radius`、`spread-radius` 和 `color` 应该依次取值`25px`、`10px`、`0`、`0` 和 `blue`。
+`box-shadow` 的 `offset-x`、`offset-y`、`blur-radius`、`spread-radius`、`color` 属性值应依次为 `25px`、`10px`、`0`、`0`、`blue`。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-a-horizontal-line-using-the-hr-element.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-a-horizontal-line-using-the-hr-element.md
index 85695ddb19..daa88afbb8 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-a-horizontal-line-using-the-hr-element.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-a-horizontal-line-using-the-hr-element.md
@@ -10,18 +10,17 @@ forumTopicId: 301049
术语:Horizontal Rule => hr => 水平线。
-你可以用 `hr` 标签来创建一条宽度撑满父元素的水平线。它一般用来表示文档主题的改变,在视觉上将文档分隔成几个部分。
+你可以用 `hr` 标签来创建一条宽度撑满父元素的水平线。这种水平分割线一般用来表示内容主题的改变,或在视觉上将文档分隔成几个部分。
# --instructions--
-在包含卡片标题的 `h4` 下面添加一个 `hr` 标签。
+在卡片标题元素 `h4` 下方添加一个 `hr` 标签。
-**注意**
-在 HTML 里,`hr` 是自关闭标签,所以不需要一个单独的关闭标签。
+**注意:**HTML 中的 `hr` 是自闭合标签,所以我们不需要为它添加结束标签。
# --hints--
-你应该添加一个 `hr` 标签。
+应存在一个 `hr` 标签。
```js
assert($('hr').length == 1);
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-a-more-complex-shape-using-css-and-html.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-a-more-complex-shape-using-css-and-html.md
index 594f03fb51..bffd1647a8 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-a-more-complex-shape-using-css-and-html.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-a-more-complex-shape-using-css-and-html.md
@@ -8,7 +8,7 @@ forumTopicId: 301050
# --description--
-世界上最流行的形状非心形莫属了,在本关里你将用纯 CSS 创建一个心形。但是首先你需要了解 `::before` 和 `::after` 伪类。这些伪类用来在选择元素之前和之后添加一些内容。在下面的例子里,`::before` 伪类元素用来给 class 为 `heart` 的元素添加一个正方形。
+世界上最流行的形状非心形莫属了,在本挑战中我们将用纯 CSS 创建一个心形。但是首先你需要了解伪元素 `::before` 和 `::after`。伪元素可以在所选元素之前或之后添加一些内容。在下面的代码中,`::before` 伪元素用来给 class 为 `heart` 的元素添加一个正方形:
```css
.heart::before {
@@ -23,19 +23,19 @@ forumTopicId: 301050
}
```
-`::before` 和 `::after` 必须配合 `content` 来使用。这个属性通常用来给元素添加内容诸如图片或者文字。当 `::before` 和 `::after`伪类用来添加某些形状而不是图片或文字时,`content` 属性仍然是必需的,但是它的值可以是空字符串。 在上面的例子里,class 为 `heart` 元素的 `::before` 伪类添加了一个黄色的长方形,长方形的 `height` 和 `width` 分别为 50px 和 70px。由于设置了其边框半径为 25%,所以长方形为圆角长方形,同时其相对位置为距离 `left` 5px,以及向 `top` 偏移 50px。
+`::before` 和 `::after` 必须配合 `content` 来使用。这个属性通常用来给元素添加内容诸如图片或者文字。尽管有时 `::before` 和 `::after` 是用来实现形状而非文字,但 `content` 属性仍然是必需的,此时它的值可以是空字符串。在上面的例子里,我们用 `::before` 为 class 是 `heart` 的元素添加了一个黄色的矩形,矩形的 `height` 和 `width` 分别为 50px 和 70px。由于设置了其边框半径为 25%,所以它会呈现出圆角矩形的样子。同时其相对位置为向右偏移 5px、向上偏移 50px。
# --instructions--
-把屏幕里的元素变成心形。在 `heart::after` 选择器里面,把 `background-color` 改成粉色(pink),把 `border-radius` 改成 50%。
+把屏幕里的元素变成心形。在 `heart::after` 选择器里面,把 `background-color` 改成粉色(pink),把 `border-radius` 的属性值改成 50%。
-接下来,在 `heart` class 选择器(单纯的 `heart` 元素)里面,完善 `transform` 属性。使用 `rotate()` 函数并赋参 -45 度。(`rotate()`用法和 `skewX` 以及 `skewY` 类似)。
+接下来,用类选择器选取 class 为 `heart` 的元素,为它添加 `transform` 属性。使用 `rotate()` 函数并设置角度为 -45 度。
-最后,在 `heart::before` 选择器里面,设置 `content` 属性为空字符串。
+最后,在 `heart::before` 选择器里面,设置 `content` 属性值为空字符串。
# --hints--
-`heart::after` 选择器的 `background-color` 属性值应该为粉色。
+`heart::after` 伪元素的 `background-color` 属性值应为粉色。
```js
assert(
@@ -43,19 +43,19 @@ assert(
);
```
-`heart::after` 选择器的 `border-radius` 属性值应该为 50%。
+`heart::after` 伪元素的 `border-radius` 属性值应为 50%。
```js
assert(code.match(/border-radius\s*?:\s*?50%/gi).length == 2);
```
-`heart` class 的 `transform` 属性应该使用 `rotate()` 函数并赋参为 `-45deg`。
+class 为 `heart` 的元素的 `transform` 属性应使用 `rotate()` 函数并传入参数 `-45deg`。
```js
assert(code.match(/transform\s*?:\s*?rotate\(\s*?-45deg\s*?\)/gi));
```
-`heart::before`选择器的`content`应该为空字符串。
+`heart::before` 伪元素的 `content` 应为空字符串。
```js
assert(code.match(/\.heart::before\s*?{\s*?content\s*?:\s*?("|')\1\s*?;/gi));
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-movement-using-css-animation.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-movement-using-css-animation.md
index c9d1e971f3..2f8d192472 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-movement-using-css-animation.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-movement-using-css-animation.md
@@ -1,6 +1,6 @@
---
id: 587d78a7367417b2b2512ae1
-title: 使用 CSS 动画创建运动
+title: 使用 CSS 动画创建动画
challengeType: 0
videoUrl: 'https://scrimba.com/c/c7amZfW'
forumTopicId: 301051
@@ -8,9 +8,9 @@ forumTopicId: 301051
# --description--
-当元素的 `position` 被指定,如 `fixed` 或者 `relative` 时,CSS 偏移属性 `right`、`left`、`top` 和 `bottom`可以用在动画规则里创建动作。
+在元素的 `position` 已有指定值(如 `fixed` 或者 `relative`)时,CSS 偏移属性 `right`、`left`、`top`、`bottom` 可以用在动画规则里创建动作。
-就像下面的例子展示的那样,你可以在 `50%`keyframe 处设置 `top` 属性为 50px, 在开始(0%)和最后(100%)keframe 处设置为 0px,以产生项目向下运动,然后返回的动作效果。
+就像下面的例子展示的那样,你可以在 `50%` keyframe 处设置 `top` 属性为 50px,在开始(0%)和最后(100%)keyframe 处设置为 0px,以实现元素先向下运动,然后返回的动作效果。
```css
@keyframes rainbow {
@@ -31,11 +31,11 @@ forumTopicId: 301051
# --instructions--
-让 `div` 水平运动。使用 `left` 偏移属性,添加 `@keyframes` 规则,让 rainbow 在 `0%` 的 0 像素开始,在 `50%` 时移动到 25 像素,在 `100%` 时时移动到 -25 像素。不要替换编辑器里的 `top` 属性,动画应该同时向水平和竖直方向运动。
+请实现让 `div` 水平运动的效果。使用 `left` 偏移属性,添加 `@keyframes` 规则,让 rainbow 在 `0%` 的 `keyframe` 下从偏移 0 像素开始;在 `50%` 时偏移 25 像素;在 `100%` 时偏移 -25 像素。不要修改编辑器里的 `top` 属性,元素应该同时在水平和竖直方向运动。
# --hints--
-`0%` 的 `@keyframes` 规则应该为向 `left` 偏移 `0px`。
+`0%` 的 `@keyframes` 规则应为向 `left` 偏移 `0px`。
```js
assert(
@@ -45,7 +45,7 @@ assert(
);
```
-`50%` 的 `@keyframes` 规则应该为向 `left` 偏移`25px`。
+`50%` 的 `@keyframes` 规则应为向 `left` 偏移 `25px`。
```js
assert(
@@ -55,7 +55,7 @@ assert(
);
```
-`100%` 的 `@keyframes` 规则应该为向 `left` 偏移`-25px`。
+`100%` 的 `@keyframes` 规则应为向 `left` 偏移 `-25px`。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-texture-by-adding-a-subtle-pattern-as-a-background-image.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-texture-by-adding-a-subtle-pattern-as-a-background-image.md
index b27457b94c..9bf1760284 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-texture-by-adding-a-subtle-pattern-as-a-background-image.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-texture-by-adding-a-subtle-pattern-as-a-background-image.md
@@ -8,15 +8,15 @@ forumTopicId: 301052
# --description--
-添加一个精致的背景图,可以增加页面的质感,让页面更美观。关键是要找到一个平衡点,抢了内容的风头,喧宾夺主可就不妙了。`background` 属性支持使用 `url()` 函数通过链接的方式引入一个指定纹理或样式的图片。图片链接地址在括号内,一般会用引号包起来。
+为了增加背景图的质感,我们可以为它添加一个不那么明显的纹理图案,这样可以让页面更讨喜。但关键在于,我们需要找到一个平衡点,因为我们不希望背景图抢占了内容的风头,造成喧宾夺主的结果。`background` 属性支持使用 `url()` 函数作为属性值,这让我们可以通过链接的方式引入纹理或样式的图片。图片链接的地址应写在括号内,一般会用引号包起来。
# --instructions--
-用 `body` 选择器设置整个页面的 `background` 为 url `https://i.imgur.com/MJAkxbh.png` 指定的图片。
+选取 `body` 元素,并设置整个页面的 `background` 为 url `https://i.imgur.com/MJAkxbh.png` 的图片。
# --hints--
-`body` 元素选择器应包含 `background` 属性,且值为给定的 `url`。
+`body` 元素选择器应包含 `background` 属性,且属性值应为给定的 `url`。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-visual-balance-using-the-text-align-property.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-visual-balance-using-the-text-align-property.md
index 475667ebd5..0da4505616 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-visual-balance-using-the-text-align-property.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-visual-balance-using-the-text-align-property.md
@@ -8,7 +8,7 @@ forumTopicId: 301053
# --description--
-这部分课程主要关于应用视觉设计。开始的挑战展示了一些核心的原则,代码基于一个指定的卡片布局。
+这部分课程的主题是应用视觉设计。开始的挑战基于美化一个卡片组件的外观,借此展示了若干核心原则。
web 内容大部分都是文本。CSS 里面的 `text-align` 属性可以控制文本的对齐方式。
@@ -22,17 +22,17 @@ web 内容大部分都是文本。CSS 里面的 `text-align` 属性可以控制
# --instructions--
-居中对齐 `h4` 标签文本,文本内容为 “Google”。两端对齐段落标签文本,文本介绍了 Google 的创立。
+请让内容文本为 `"Google"` 的 `h4` 标签居中对齐;让介绍了 Google 创立历程的段落文本两端对齐。
# --hints--
-你应该在 `h4` 标签上使用 text-align 属性设置文本居中对齐。
+应在 `h4` 标签上使用 text-align 属性设置文本居中对齐。
```js
assert($('h4').css('text-align') == 'center');
```
-你应该在 `p` 标签上使用 text-align 属性设置文本两端对齐。
+应在 `p` 标签上使用 text-align 属性设置文本两端对齐。
```js
assert($('p').css('text-align') == 'justify');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-visual-direction-by-fading-an-element-from-left-to-right.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-visual-direction-by-fading-an-element-from-left-to-right.md
index 1341e6e675..ea70e1f169 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-visual-direction-by-fading-an-element-from-left-to-right.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/create-visual-direction-by-fading-an-element-from-left-to-right.md
@@ -8,17 +8,17 @@ forumTopicId: 301054
# --description--
-在本关里,你将要改变动画元素的 `opacity`,使其在到达屏幕右侧时渐隐。
+在本挑战中,我们需要改变动画元素的 `opacity` 属性值,使其在到达屏幕右侧时渐隐。
-在展示的动画里,具有渐变背景的圆形元素在 50% 标记的 `@keyframes` 规则处向右移动。
+在示例动画中,具有渐变背景的圆形元素在 `@keyframes` 为 50% 的节点向右移动。
# --instructions--
-使用 id 选择器选择 id 为 `ball` 的元素,在 `50%` 里添加 `opacity` 属性并赋值 0.1,使其在向右移动时渐隐。
+使用 id 选择器选择 id 为 `ball` 的元素,在 `@keyframes` 为 `50%` 的节点里添加 `opacity` 属性并设置属性值为 0.1,使其在向右移动时渐隐。
# --hints--
-50% 处 `keyframes` 规则应该设置 `opacity` 属性值为 0.1 以使其渐隐。
+`keyframes` 为 50% 的节点处应设置 `opacity` 属性值为 0.1,以使其渐隐。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/decrease-the-opacity-of-an-element.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/decrease-the-opacity-of-an-element.md
index fbc65f8fc4..ced5f051b3 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/decrease-the-opacity-of-an-element.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/decrease-the-opacity-of-an-element.md
@@ -10,17 +10,17 @@ forumTopicId: 301055
CSS 里的 `opacity` 属性用来设置元素的透明度。
-
值 1 代表完全不透明。
值 0.5 代表半透明。
值 0 代表完全透明。
+
属性值为 1 代表完全不透明。
属性值为 0.5 代表半透明。
属性值为 0 代表完全透明。
透明度会应用到元素内的所有内容,不论是图片,还是文本,或是背景色。
# --instructions--
-使用 `links` class 选择所有的超链接并设置其 `opacity` 值为 0.7。
+将 class 为 `links` 的所有超链接的 `opacity` 属性值设置 0.7。
# --hints--
-你应该使用 `links` class 选择所有的超链接并设置其 `opacity` 值为 0.7。
+应使用 `links` class 选择所有的超链接,并设置其 `opacity` 属性值为 0.7。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/learn-about-complementary-colors.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/learn-about-complementary-colors.md
index b7e87e2636..bfa341bc0a 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/learn-about-complementary-colors.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/learn-about-complementary-colors.md
@@ -8,32 +8,31 @@ forumTopicId: 301056
# --description--
-色彩理论以及设计色彩学很复杂,这里将只涉及很基础的部分。在网站设计里,颜色能让内容更醒目,能调动情绪,从而创造舒适的视觉体验。不同的颜色组合对网站的视觉效果影响很大,精妙的设计都需要适宜的颜色来美化页面内容。
+色彩理论以及设计色彩学很复杂,这里将只涉及基础部分。在网站设计里,颜色能让内容更醒目,能调动情绪,从而创造舒适的视觉体验。不同的颜色组合对网站的视觉效果影响很大,精妙的设计都需要适宜的颜色来美化页面内容。
-一半是科学,一半是艺术,色环是我们认识颜色关系的好工具 - 它是一个近色相邻异色相离的圆环。当两个颜色恰好在色环的两端时,这两个颜色叫做补色。绘画中两只补色在混合后会变成灰色。补色搭配能形成强列的对比效果,传达出活力、能量、兴奋等意义。
+一半是科学,一半是艺术,色环是我们认识颜色关系的好工具。它是一个近色相邻、异色相离的圆环。当两个颜色恰好在色环的两端时,这两个颜色就互为补色。在绘画中,两个互为补色的颜色会在混合后变成灰色。补色搭配能形成强烈的对比效果,传达出活力、能量、兴奋等意义。
-下面是一些十六进制码(hex code)补色的例子:
+下面是一些以 hex 形式表示的补色例子:
红色(#FF0000)和蓝绿色 (#00FFFF)
绿色(#00FF00)和品红色(#FF00FF)
蓝色(#0000FF)和黄色(#FFFF00)
-现在很多的在线选色工具都有寻找补色的功能。
+现在,很多在线选色工具也为我们提供了寻找补色的功能。
-**注意**
-对于所有的颜色关卡: 颜色能吸引用户的注意,但不是唯一的方式,切勿喧宾夺主,过度使用会适得其反。详细会在应用无障碍章节介绍。
+**注意:**对于颜色相关的挑战:颜色搭配是提起用户兴趣或吸引用户注意的重要方式之一。但我们不应让颜色作为传达重要信息的唯一方式,因为视觉障碍用户可能无法像其他人一样看出其中的含义。我们将会在应用无障碍章节进行详细介绍。
# --instructions--
-把 `blue` 和 `yellow` class 的 `background-color` 属性改成相应的颜色。注意观察它们之间的编码区别以及和它们和白色的编码区别。
+把 class 为 `blue` 和 `yellow` 的元素的 `background-color` 属性改成相应的颜色。注意观察这两个颜色的搭配效果,以及对比白色背景的视觉效果。
# --hints--
-class 为 `blue` 的 `div` 元素应该有值为蓝色的 `background-color` CSS 属性。
+class 为 `blue` 的 `div` 元素的 `background-color` 属性值应为 `blue`。
```js
assert($('.blue').css('background-color') == 'rgb(0, 0, 255)');
```
-class 为 `yellow` 的 `div` 元素应该有值为黄色的 `background-color` CSS 属性。
+class 为 `yellow` 的 `div` 元素的 `background-color` 属性值应为 `yellow`。
```js
assert($('.yellow').css('background-color') == 'rgb(255, 255, 0)');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/learn-about-tertiary-colors.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/learn-about-tertiary-colors.md
index 13f7f0f20f..dbe85d0520 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/learn-about-tertiary-colors.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/learn-about-tertiary-colors.md
@@ -8,7 +8,7 @@ forumTopicId: 301057
# --description--
-电脑显示器和手机屏幕是一种加色模型,将红(R)、绿(G)、蓝(B)三原色的色光以不同的比例相加,以产生多种多样的色光。两种原色相加产生二次色:蓝绿(G+B)、品红(R+B)和黄色(R+G)。你在上一个挑战里已经见过这些颜色了。这些二次色恰好是在合成它们时未使用的原色的补色,即在色环中位于两端。例如,品红色是红色和蓝色相加产生,它是绿色的补色。
+电脑显示器和各类屏幕都是基于颜色叠加的模型:将红(R)、绿(G)、蓝(B)三原色的色光以不同的比例相加,就可以产生各种色彩光,这种模式叫做三原色光模式(RGB Color Model)。如果把两种原色相加,就可以产生二次色:蓝绿(G+B)、品红(R+B)和黄色(R+G),我们在上一个挑战里已经见过这些颜色了。这些二次色恰好是在合成它们时未使用的原色的补色,即在色环中位于两端。例如,品红色是红色和蓝色相加产生,它是绿色的补色。
三次色是由原色和二次色相加产生的颜色,例如红色(原色)和黄色(二次色)相加产生橙色。将这六种颜色中相邻的颜色相加,便产生了十二色色环。
@@ -20,29 +20,29 @@ forumTopicId: 301057
# --instructions--
-把 class 为 `orange`、`cyan` 和 `rasberry` 的 `background-color` 改成其对应的颜色。由于 rasberry 不在浏览器 17 种标准色之内,不能直接用作颜色名,所以要使用 HEX 颜色码。
+把 class 为 `orange`、`cyan` 和 `raspberry` 的 `background-color` 改成其对应的颜色。在这个挑战中,请使用颜色的十六进制符号(即 hex code)来表示。
# --hints--
-class 为 `orange` 的 `div` 应该有值为橙色的 `background-color` CSS 属性。
+class 为 `orange` 的 `div` 的 `background-color` 属性值应为橙色。
```js
assert($('.orange').css('background-color') == 'rgb(255, 127, 0)');
```
-class 为 `cyan` 的 `div` 应该有值为蓝绿色的 `background-color` CSS 属性。
+class 为 `cyan` 的 `div` 的 `background-color` 属性值应为蓝绿色。
```js
assert($('.cyan').css('background-color') == 'rgb(0, 255, 255)');
```
-class 为 `raspberry` 的 `div` 应该有值为树莓红色的 `background-color` CSS 属性。
+class 为 `raspberry` 的 `div` 的 `background-color` 属性值应为树莓红色。
```js
assert($('.raspberry').css('background-color') == 'rgb(255, 0, 127)');
```
-corlor classes 里的所有的 `background-color` 应该是 HEX 颜色码而不是颜色名称。
+所有的 `background-color` 应使用十六进制颜色码,而不应使用颜色名称。
```js
assert(!/background-color:\s(orange|cyan|raspberry)/.test(code));
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/learn-how-bezier-curves-work.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/learn-how-bezier-curves-work.md
index be9c59235e..5053f72cf9 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/learn-how-bezier-curves-work.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/learn-how-bezier-curves-work.md
@@ -8,19 +8,19 @@ forumTopicId: 301058
# --description--
-上一关卡介绍了 `animation-timing-function` 以及它的一些预定义的值。这些值定义了不同时间内的动画速度。除了预定义值之外,CSS 还提供了贝塞尔曲线(Bezier curves)来更出色的控制动画的速度曲线。
+上一个挑战中,我们介绍了 `animation-timing-function` 以及它的一些预设值,这些值定义了不同时间内的动画速度。除了预定义值之外,CSS 还提供了贝塞尔曲线(Bezier curves)来更细致地控制动画的速度曲线。
-在 CSS 动画里,用 `cubic-bezier` 来定义贝塞尔曲线。曲线的形状代表了动画的速度。曲线在 1\*1 的坐标系统内,曲线的 X 轴代表动画的时间间隔(类似于时间比例尺),Y 轴代表动画的改变。
+在 CSS 动画里,我们可以用 `cubic-bezier` 来定义贝塞尔曲线。曲线的形状代表了动画的速度。曲线在 `1 * 1` 的坐标系统内,其中 X 轴代表动画的时间间隔(类似于时间比例尺),Y 轴代表动画的改变。
-`cubic-bezier` 函数包含了 1 \* 1 网格里的4个点:`p0`、`p1`、`p2` 和 `p3`。其中 `p0` 和 `p3` 是固定值,代表曲线的起始点和结束点,坐标值依次为 (0, 0) 和 (1, 1)。你只需设置另外两点的 x 值和 y 值,设置的这两点确定了曲线的形状从而确定了动画的速度曲线。在 CSS 里面通过`(x1, y1, x2, y2)`来确定 `p1` 和 `p2`。综上,下面就是 CSS 贝塞尔曲线的例子:
+`cubic-bezier` 函数包含了 `1 * 1` 网格里的4个点:`p0`、`p1`、`p2`、`p3`。其中 `p0` 和 `p3` 是固定值,代表曲线的起始点和结束点,坐标值依次为 (0, 0) 和 (1, 1)。你只需设置另外两点的 x 值和 y 值,设置的这两点确定了曲线的形状从而确定了动画的速度曲线。在 CSS 里面通过 `(x1, y1, x2, y2)` 来确定 `p1` 和 `p2`。以下就是 CSS 贝塞尔曲线的例子:
`animation-timing-function: cubic-bezier(0.25, 0.25, 0.75, 0.75);`
-在上面的例子里,两个点的 x 和 y 值相等(x1 = 0.25 = y1 和 x2 = 0.75 = y2),如果你还记得初中几何,结果是从原点到点 (1, 1) 的一条直线。动画速度呈线性,效果和 `linear` 一致。换言之,元素匀速运动。
+在上面的例子里,两个点的 x 和 y 值相等(x1 = 0.25 = y1 和 x2 = 0.75 = y2),如果你还记得初中几何,结果是从原点到点 (1, 1) 的一条直线。动画速度呈线性,效果和 `linear` 一致。换言之,元素会匀速运动。
# --instructions--
-对于 id 为 `ball1` 的元素,把 `animation-timing-function` 属性值从 `linear` 变成等价的 `cubic-bezier` 函数值。也就是说使用上面例子给的值。
+对于 id 为 `ball1` 的元素,请把 `animation-timing-function` 属性值从 `linear` 变成等价的 `cubic-bezier` 函数值。也就是使用上面例子给的值。
# --hints--
@@ -33,7 +33,7 @@ assert(
);
```
-id 为 `ball2` 元素的 `animation-timing-function` 属性值应该保持不变。
+id 为 `ball2` 的元素的 `animation-timing-function` 属性值应该保持不变。
```js
const ball2Animation = $('#ball2')
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/learn-how-the-css-keyframes-and-animation-properties-work.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/learn-how-the-css-keyframes-and-animation-properties-work.md
index 1aca8deacf..6d294f0f07 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/learn-how-the-css-keyframes-and-animation-properties-work.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/learn-how-the-css-keyframes-and-animation-properties-work.md
@@ -8,13 +8,13 @@ forumTopicId: 301059
# --description--
-如果要给元素添加动画,你需要了解 `animation` 属性以及 `@keyframes` 规则。 `animation` 属性控制动画的外观,`@keyframes` 规则控制动画中各阶段的变化。总共有 8 个 `animation` 属性。为了便于理解,本关暂时只涉及到两个最常用的属性。
+如果要给元素添加动画,你需要了解 `animation` 属性以及 `@keyframes` 规则。`animation` 属性控制动画的外观,`@keyframes` 规则控制动画中各阶段的变化。总共有 8 个 `animation` 属性。为了便于理解,本挑战中我们只会暂时涉及到两个最常用的属性。
-`animation-name` 设置动画的名称, 也就是要绑定的选择器的 `@keyframes` 的名称。
+`animation-name` 用来设置动画的名称,也就是我们稍后要在 `@keyframes` 里用到的名称。
`animation-duration` 设置动画所花费的时间。
-`@keyframes` 能够创建动画。 创建动画的原理是将一套 CSS 样式逐渐变化为另一套样式。具体是通过设置动画期间对应的“frames”的 CSS 的属性,以百分比来规定改变的时间,或者通过关键词“from”和“to”,等价于 0% 和 100%。打个比方,CSS 里面的 0% 属性就像是电影里面的开场镜头。CSS 里面的 100% 属性就是元素最后的样子,相当于电影里的演职员表或者鸣谢镜头。CSS 在对应的时间内给元素过渡添加效果。下面举例说明 `@keyframes` 和动画属性的用法:
+`@keyframes` 可以通过设置特定时间点的行为来创建动画。为此,我们只需要给持续时间内的特定帧(从 0% 到 100%)加上 CSS 规则。如果用一部电影来做类比,那么 CSS 里面的 0% 关键帧就像是电影里面的开场镜头;100% 关键帧就像是电影里的片尾,就是那个之后会出现演职人员列表的片尾。在动画设定的时间内,CSS 会根据关键帧的规则来给元素添加动画效果。下面举例说明 `@keyframes` 和动画属性的用法:
```css
#anim {
@@ -32,11 +32,11 @@ forumTopicId: 301059
}
```
-id 为 `anim` 的元素,代码设置 `animation-name` 为 `colorful`,设置 `animation-duration` 为 3 秒。然后把 `@keyframes` 引用到名为 `colorful` 的动画属性上。`colorful` 在动画开始时(0%)设置颜色为蓝色,在动画结束时(100%)设置颜色为黄色。注意不是只有开始和结束的过渡可以设置,0% 到 100% 间的任意百分比你都可以设置。
+id 为 `anim` 的元素,我们在代码中将它的 `animation-name` 设置为 `colorful`,同时设置 `animation-duration` 为 3 秒。然后我们把 `@keyframes` 规则添加到名为 `colorful` 的动画属性上。`colorful` 在动画开始时(0%)的背景颜色为蓝色,在动画结束时(100%)的背景颜色为黄色。注意我们不只可以设置开始和结束,而是从 0% 到 100% 间的任意位置都可以设置。
# --instructions--
-给 id 为 `rect` 的元素添加动画,设置其 `animation-name` 为 rainbow,设置其 `animation-duration` 为 4 秒。然后声明 `@keyframes` 规则,设置动画开始时(0%)的 `background-color` 为蓝色,动画中间时(50%)为绿色,动画结束时(100%)为为黄色。
+给 id 为 `rect` 的元素添加动画,设置其 `animation-name` 为 rainbow,`animation-duration` 为 4 秒。然后声明 `@keyframes` 规则,设置动画开始时(0%)的 `background-color` 为蓝色,动画中间时(50%)为绿色,动画结束时(100%)为为黄色。
# --hints--
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/lock-an-element-to-its-parent-with-absolute-positioning.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/lock-an-element-to-its-parent-with-absolute-positioning.md
index 8c7317a297..5cca8bc2c8 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/lock-an-element-to-its-parent-with-absolute-positioning.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/lock-an-element-to-its-parent-with-absolute-positioning.md
@@ -8,29 +8,29 @@ forumTopicId: 301060
# --description--
-接下来要介绍 CSS `position` 属性的取值选项 `absolute`,`absolute` 相对于其包含块定位。和 `relative` 定位不一样,`absolute` 定位会将元素从当前的文档流里面移除,周围的元素会忽略它。可以用 CSS 的 top、bottom、left 和 right 属性来调整元素的位置。
+接下来要介绍 CSS `position` 属性的取值选项 `absolute`:`absolute` 的含义是相对于其包含块定位。和 `relative` 定位不一样,`absolute` 定位会将元素从当前的文档流里面移除,周围的元素会忽略它。这样我们就可以用 CSS 的 top、bottom、left、right 属性来调整元素的位置。
`absolute` 定位比较特殊的一点是元素的定位参照于最近的已定位祖先元素。如果它的父元素没有添加定位规则(默认是 `position:relative;`),浏览器会继续寻找直到默认的 body 标签。
# --instructions--
-通过声明 `position` 为 `absolute`,固定 `#searchbar` 元素到它父元素 `section` 的右上角。即设定其 `top` 和 `right` 为 50 像素。
+通过设置 `position` 属性值为 `absolute`,将 `#searchbar` 元素固定到它的父元素 `section` 的右上角。即设定其 `top` 和 `right` 为 50 像素。
# --hints--
-`#searchbar` 元素应当有一个值为 `absolute` 的 `position` CSS 属性。
+`#searchbar` 元素的 `position` 属性值应为 `absolute`。
```js
assert($('#searchbar').css('position') == 'absolute');
```
-你的 `#searchbar` 元素应当有值为 `50px` 的 `top` CSS 属性。
+`#searchbar` 元素的 `top` 属性值应为 `50px`。
```js
assert($('#searchbar').css('top') == '50px');
```
-你的 `#searchbar` 元素应当有值为 `50px` 的 `right` CSS 属性。
+`#searchbar` 元素的 `right` 属性值应为 `50px`。
```js
assert($('#searchbar').css('right') == '50px');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/lock-an-element-to-the-browser-window-with-fixed-positioning.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/lock-an-element-to-the-browser-window-with-fixed-positioning.md
index 1c57e1e5d2..3ecbb268ae 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/lock-an-element-to-the-browser-window-with-fixed-positioning.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/lock-an-element-to-the-browser-window-with-fixed-positioning.md
@@ -8,29 +8,29 @@ forumTopicId: 301061
# --description--
-接下来要介绍的是 `fixed` 定位,它是一种特殊的绝对(absolute)定位,区别是其包含块是浏览器窗口。和绝对定位类似,`fixed` 定位使用 top、bottom、left 和 right 属性来调整元素的位置,并且会将元素从当前的文档流里面移除,其它元素会忽略它的存在。
+接下来要介绍的是 `fixed` 定位,它是一种特殊的绝对(absolute)定位,区别是其包含块是浏览器窗口。和绝对定位类似,在 `fixed` 定位的元素中,我们也可以使用 top、bottom、left、right 属性来调整元素的位置,并且也会将元素从当前的文档流里面移除,其它元素会忽略它的存在。
-`fixed` 定位和 `absolute` 定位的最明显的区别是 `fixed` 定位元素不会随着屏幕滚动而移动。
+但 `fixed` 和 `absolute` 的最明显的区别在于,`fixed` 定位元素不会随着屏幕滚动而移动。
# --instructions--
-代码里的导航栏已经添加了值为 `navbar` 的 id。把它的 `position` 设置成`fixed`,设定其 `top`和 `left` 为 0 像素。添加代码之后,滑动预览窗口,观察导航栏的位置。
+我们已经将代码里导航栏的 id 设置为了 `navbar`。请把它的 `position` 设置成 `fixed`,同时分别设定其 `top` 和 `left` 属性值为 0 像素。修改后,你可以滑动预览窗口,观察导航栏的位置。
# --hints--
-`>#navbar` 元素应当有一个值为 `fixed` 的 `position` CSS 属性
+`#navbar` 元素的 `position` 属性值应为 `fixed`。
```js
assert($('#navbar').css('position') == 'fixed');
```
-你的 `#navbar` 元素应当有值为 `0px` 的 `top` CSS 属性。
+`#navbar` 元素的 `top` 属性值应为 `0px`。
```js
assert($('#navbar').css('top') == '0px');
```
-你的 `#navbar` 元素应当有值为 `0px` 的 `left` CSS 属性。
+`#navbar` 元素的 `left` 属性值应为 `0px`。
```js
assert($('#navbar').css('left') == '0px');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/make-a-css-heartbeat-using-an-infinite-animation-count.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/make-a-css-heartbeat-using-an-infinite-animation-count.md
index c59196e470..41b81809c8 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/make-a-css-heartbeat-using-an-infinite-animation-count.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/make-a-css-heartbeat-using-an-infinite-animation-count.md
@@ -8,23 +8,23 @@ forumTopicId: 301062
# --description--
-这也是一个用 `animation-iteration-count` 属性创造持续动画的例子,它基于前面关卡创建的心形。
+这也是一个用 `animation-iteration-count` 属性创造持续动画的例子,它基于我们在前面挑战中创建的心形。
心跳动画的每一秒包含两个部分。`heart` 元素(包括 `:before` 和 `:after`)使用 `transform` 属性改变其大小,背景 `div` 使用 `background` 属性改变其颜色。
# --instructions--
-给 `back` class和 `heart` class添加值为 infinite 的 `animation-iteration-count` 属性,使心脏持续跳动。`heart:before` 和 `heart:after` 选择器不需要添加动画属性。
+请将 class 为 `back` 和 `heart` 的元素的 `animation-iteration-count` 属性值设置为 infinite,使心形可以持续跳动。`heart:before` 和 `heart:after` 所选择的元素则不需要添加动画属性。
# --hints--
-`heart` class 的 `animation-iteration-count` 属性应该赋值 infinte。
+class 为 `heart` 的元素的 `animation-iteration-count` 属性值应为 infinite。
```js
assert($('.heart').css('animation-iteration-count') == 'infinite');
```
-`back` class 的 `animation-iteration-count` 属性应该赋值 infinite。
+class 为 `back` 的元素的 `animation-iteration-count` 属性值应为 infinite。
```js
assert($('.back').css('animation-iteration-count') == 'infinite');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/make-motion-more-natural-using-a-bezier-curve.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/make-motion-more-natural-using-a-bezier-curve.md
index 5c413324d5..3154e39ee4 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/make-motion-more-natural-using-a-bezier-curve.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/make-motion-more-natural-using-a-bezier-curve.md
@@ -8,23 +8,23 @@ forumTopicId: 301063
# --description--
-本关的元素模拟的是杂技抛接球。之前的关卡涉及了 `linear` 和 `ease-out` 的贝塞尔曲线描述,如你所见,这两个都无法完美的描述杂耍球的运动。在本关里你需要定制贝塞尔曲线。
+在这个挑战中,我们需要给元素添加动画来模拟杂耍中被抛接的球。之前的挑战中,我们学习了 `linear` 和 `ease-out` 的贝塞尔曲线描述,但这两个都无法完美地描述杂耍球的运动。在本关里你需要定制贝塞尔曲线。
-当 `animation-iteration-count` 值为 infinite 时 `animation-timing-function` 会自动循环 keyframe。由于是在动画周期中间(50%处)设置的 keyframe 规则,最终的结果是球向上和球向下是两个同样的动画过程。
+当 `animation-iteration-count` 值为 infinite 时,`animation-timing-function` 会自动循环 keyframe。由于我们是在动画周期的中间点(50% 处)设置的 keyframe 规则,最终的结果是球向上和球向下是两个同样的动画过程。
下面的例子模拟了杂耍球运动:
`cubic-bezier(0.3, 0.4, 0.5, 1.6);`
-注意 y2 的值是大于 1 的。虽然贝塞尔曲线是在 1\*1 的坐标系统内 x 值只能在 0 到 1,但是 y 值是可以大于 1 的。这样才能模拟杂耍球运动。
+注意 y2 的值是大于 1 的。虽然贝塞尔曲线是在 `1 * 1` 的坐标系统内 x 值只能取 0 到 1,但是 y 值是可以大于 1 的。这样我们才能模拟杂耍球运动。
# --instructions--
-把 id 为 `green` 的元素的 `animation-timing-function` 值改成 `cubic-bezier` 函数,函数的参数 x1,y1,x2,y2 值依次为 0.311、0.441、0.444、1.649。
+把 id 为 `green` 的元素的 `animation-timing-function` 值改成 `cubic-bezier` 函数,函数的参数 x1、y1、x2、y2 值依次为 0.311、0.441、0.444、1.649。
# --hints--
-id 为`green`的元素的`animation-timing-function`值应该为`cubic-bezier`函数,函数的参数 x1,y1,x2,y2 值依次为 0.311、0.441、0.444、1.649。
+id 为 `green` 的元素的 `animation-timing-function` 属性值应为 `cubic-bezier` 函数,函数的参数 x1、y1、x2、y2 的值依次为 0.311、0.441、0.444、1.649。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/modify-fill-mode-of-an-animation.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/modify-fill-mode-of-an-animation.md
index 94e5853fe2..c34e1dd05a 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/modify-fill-mode-of-an-animation.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/modify-fill-mode-of-an-animation.md
@@ -10,13 +10,13 @@ forumTopicId: 301064
太棒了,但是现在还不完美。注意动画在 `500ms` 之后重置了,所以按钮又变成了之前的颜色。而我们想要的效果是按钮在悬停时始终高亮。
-这可以通过把 `animation-fill-mode` 设置成 `forwards` 来实现。`animation-fill-mode` 指定了在动画结束时元素的样式。你可以向这样设置它:
+为此,我们可以通过把 `animation-fill-mode` 设置成 `forwards` 来实现。`animation-fill-mode` 指定了在动画结束时元素的样式:
`animation-fill-mode: forwards;`
# --instructions--
-设置 `button:hover` 的 `animation-fill-mode`,使按钮悬停时保持高亮。
+修改 `button:hover` 的 `animation-fill-mode`,使按钮悬停时保持高亮。
# --hints--
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/move-a-relatively-positioned-element-with-css-offsets.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/move-a-relatively-positioned-element-with-css-offsets.md
index 3b657a2af0..5051a893eb 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/move-a-relatively-positioned-element-with-css-offsets.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/move-a-relatively-positioned-element-with-css-offsets.md
@@ -8,23 +8,23 @@ forumTopicId: 301065
# --description--
-CSS 里面的 `top`、`bottom`、`left` 和 `right` 定义了元素在相应方位的偏移距离。元素将从当前位置,向属性相反的方向偏移。就像你在上一个挑战看到的,`top` 属性使 `h2` 向下移动。`left` 属性使元素向右移动。
+CSS 里面的 `top`、`bottom`、`left` 和 `right` 定义了元素在相应方位的偏移距离。元素将从当前位置向属性相反的方向偏移。就像你在上一个挑战看到的,`top` 属性使 `h2` 向下移动。`left` 属性使元素向右移动。

# --instructions--
-通过 CSS 属性把 `h2` 向上移动 10 像素,向右移动 15 像素。
+请通过 CSS 属性把 `h2` 向上移动 10 像素,向右移动 15 像素。
# --hints--
-你应该使用 CSS 属性使 `h2` 相对当前位置向上移动 `10px`。也就是说,从 `h2` 当前位置远离 `bottom` `10px`。
+应使用 CSS 属性使 `h2` 相对当前位置向上移动 `10px`。也就是说,从 `h2` 当前位置远离 `bottom` `10px`。
```js
assert($('h2').css('bottom') == '10px');
```
-你应该使用 CSS 属性使 `h2` 相对当前位置向右移动 `15px`。也就是说,从 `h2` 当前位置远离 `left` `15px`。
+应使用 CSS 属性使 `h2` 相对当前位置向右移动 `15px`。也就是说,从 `h2` 当前位置远离 `left` `15px`。
```js
assert($('h2').css('left') == '15px');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/push-elements-left-or-right-with-the-float-property.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/push-elements-left-or-right-with-the-float-property.md
index 9a818e41ff..8dff92ec18 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/push-elements-left-or-right-with-the-float-property.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/push-elements-left-or-right-with-the-float-property.md
@@ -8,21 +8,21 @@ forumTopicId: 301066
# --description--
-接下来要介绍的定位机制并不是 `position` 属性的选项,它通过元素的 `float` 属性来设置。浮动元素不在文档流中,它向左或向右浮动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。通常需要用 `width` 属性来指定浮动元素占据的水平空间。
+接下来要介绍的定位机制并不是 `position` 属性的选项,而是通过元素的 `float` 属性来设置。浮动元素不在文档流中,它向左或向右浮动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。通常需要用 `width` 属性来指定浮动元素占据的水平空间。
# --instructions--
-设置 `#left` 元素的 `float` 为 `left`,设置 `#right` 元素的 `float` 为 `right`。使这两个元素按两列布局,`section` 和 `aside` 左右排列。
+设置 `#left` 元素的 `float` 属性值为 `left`,设置 `#right` 元素的 `float` 属性值为 `right`。使这两个元素按两列布局,`section` 和 `aside` 左右排列。
# --hints--
-id 为 `left` 的元素应该有一个值为 `left` 的 `float` CSS 属性。
+id 为 `left` 的元素的 `float` 属性值应为 `left`。
```js
assert($('#left').css('float') == 'left');
```
-id 为 `right` 的元素应该有一个值为 `right` 的 `float` CSS 属性。
+id 为 `right` 的元素的 `float` 属性值应为 `right`。
```js
assert($('#right').css('float') == 'right');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/set-the-font-size-for-multiple-heading-elements.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/set-the-font-size-for-multiple-heading-elements.md
index 6f18b37476..4bf9f60879 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/set-the-font-size-for-multiple-heading-elements.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/set-the-font-size-for-multiple-heading-elements.md
@@ -8,48 +8,58 @@ forumTopicId: 301067
# --description--
-`font-size` 属性用来指定元素内文字的大小。这个规则可以应用到多个元素上,合理的使用,能让页面的文字显示的错落有致。在本挑战里,你将要设置 `h1` 到 `h6` 的每个标题文字的大小。
+`font-size` 属性用来指定元素内文字的大小。我们可以为多个元素添加 `font-size` 规则,这样做可以让页面内不同元素的文字大小得以统一。在本挑战里,你需要设置从 `h1` 到 `h6` 的文字大小。
# --instructions--
-
- 设置
h1
标签的 font-size
为 68px。 - 设置
h2
标签的 font-size
为 52px。 - 设置
h3
标签的 font-size
为 40px。 - 设置
h4
标签的 font-size
为 32px。 - 设置
h5
标签的 font-size
为 21px。 - 设置
h6
标签的 font-size
为 14px。
+
在 style
标签中, 对各元素的 font-size
进行如下设置:
+
+
+ - 将
h1
标签的文字大小设为 68px。
+ - 将
h2
标签的文字大小设为 52px。
+ - 将
h3
标签的文字大小设为 40px
+ - 将
h4
标签的文字大小设为 32px
+ - 将
h5
标签的文字大小设为 21px
+ - 将
h6
标签的文字大小设为 14px
+
# --hints--
-你应该设置 `h1` 标签的 `font-size` 为 `68px`。
+`h1` 标签的 `font-size` 属性值应为 `68px`。
```js
assert($('h1').css('font-size') == '68px');
```
-你应该设置 `h2` 标签的 `font-size` 为 `52px`。
+`h2` 标签的 `font-size` 属性值应为 `52px`。
```js
assert($('h2').css('font-size') == '52px');
```
-你应该设置 `h3` 标签的 `font-size` 为 `40px`。
+`h3` 标签的 `font-size` 属性值应为 `40px`。
```js
assert($('h3').css('font-size') == '40px');
```
-你应该设置 `h4` 标签的 `font-size` 为 `32px`。
+`h4` 标签的 `font-size` 属性值应为 `32px`。
```js
assert($('h4').css('font-size') == '32px');
```
-你应该设置 `h5` 标签的 `font-size` 为 `21px`。
+`h5` 标签的 `font-size` 属性值应为 `21px`。
```js
assert($('h5').css('font-size') == '21px');
```
-你应该设置 `h6` 标签的 `font-size` 为 `14px`。
+`h6` 标签的 `font-size` 属性值应为 `14px`。
```js
-assert($('h6').css('font-size') == '14px');
+const regex = /h6\s*\{\s*font-size\s*:\s*14px\s*(;\s*\}|\})/i;
+assert.strictEqual(true, regex.test(code));
```
# --solutions--
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/set-the-font-size-of-paragraph-text.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/set-the-font-size-of-paragraph-text.md
index 37c9975c2c..e2b4d3c6d6 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/set-the-font-size-of-paragraph-text.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/set-the-font-size-of-paragraph-text.md
@@ -8,15 +8,15 @@ forumTopicId: 301068
# --description--
-CSS 里面的 `font-size` 属性不只限于标题,它可以应用于任何包含文字的元素内。
+CSS 里面的 `font-size` 属性不只限于标题,还可以应用于任何包含文字的元素内。
# --instructions--
-把段落的 `font-size` 设置为 16px 让它看起来更清晰。
+把段落的 `font-size` 属性值设置为 16px,让它看起来更清晰。
# --hints--
-你的 `p` 标签应该包含一个 `font-size` 属性并且值为 `16px`。
+`p` 标签的 `font-size` 属性值应为 `16px`。
```js
assert($('p').css('font-size') == '16px');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/set-the-font-weight-for-multiple-heading-elements.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/set-the-font-weight-for-multiple-heading-elements.md
index 169c61a100..5c0ed1e9da 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/set-the-font-weight-for-multiple-heading-elements.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/set-the-font-weight-for-multiple-heading-elements.md
@@ -8,9 +8,9 @@ forumTopicId: 301069
# --description--
-在上一个挑战里你已经设置了每个标题的 `font-size`,接下来你将设置 `font-weight`。
+在上一个挑战里我们已经为每个标题设置了 `font-size`,接下来我们将要设置 `font-weight`。
-`font-weight` 属性用于设置文本中所用的字体的粗细。
+`font-weight` 属性用于设置文本中字体的粗细。
# --instructions--
@@ -18,37 +18,37 @@ forumTopicId: 301069
# --hints--
-你应该设置 `h1` 标签的 `font-weight` 为 800。
+`h1` 标签的 `font-weight` 属性值应为 800。
```js
assert($('h1').css('font-weight') == '800');
```
-你应该设置 `h2` 标签的 `font-weight` 为 600。
+`h2` 标签的 `font-weight` 属性值应为 600。
```js
assert($('h2').css('font-weight') == '600');
```
-你应该设置 `h3` 标签的 `font-weight` 为 500。
+`h3` 标签的 `font-weight` 属性值应为 500。
```js
assert($('h3').css('font-weight') == '500');
```
-你应该设置 `h4` 标签的 `font-weight` 为 400。
+`h4` 标签的 `font-weight` 属性值应为 400。
```js
assert($('h4').css('font-weight') == '400');
```
-你应该设置 `h5` 标签的 `font-weight` 为 300。
+`h5` 标签的 `font-weight` 属性值应为 300。
```js
assert($('h5').css('font-weight') == '300');
```
-你应该设置 `h6` 标签的 `font-weight` 为 200。
+`h6` 标签的 `font-weight` 属性值应为 200。
```js
assert($('h6').css('font-weight') == '200');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/set-the-line-height-of-paragraphs.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/set-the-line-height-of-paragraphs.md
index d4cd508806..329a18d57c 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/set-the-line-height-of-paragraphs.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/set-the-line-height-of-paragraphs.md
@@ -8,7 +8,7 @@ forumTopicId: 301070
# --description--
-CSS 提供 `line-height` 属性来设置行间的距离。行高,顾名思义,用来设置每行文字所占据的垂直空间。
+CSS 提供 `line-height` 属性来设置行间的距离。行高,顾名思义,可以用来设置每行文字所占据的垂直空间。
# --instructions--
@@ -16,7 +16,7 @@ CSS 提供 `line-height` 属性来设置行间的距离。行高,顾名思义
# --hints--
-你应该给 `p` 标签添加 `line-height` 属性并赋值 `25px`。
+`p` 标签的 `line-height` 属性值应为 `25px`。
```js
assert($('p').css('line-height') == '25px');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-a-bezier-curve-to-move-a-graphic.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-a-bezier-curve-to-move-a-graphic.md
index 7513855a55..1c0b2d1eb5 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-a-bezier-curve-to-move-a-graphic.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-a-bezier-curve-to-move-a-graphic.md
@@ -8,7 +8,7 @@ forumTopicId: 301071
# --description--
-前面的关卡涉及的 `ease-out` 预定义值描述了动画以高速开始低速结束。右边的动画展示了 `ease-out` 预定义值(蓝色的元素)和 `linear` 预定义值(红色的元素)的区别。同样的,`ease-out` 预定义值也可以用贝塞尔曲线函数实现。
+前面的关卡涉及了使用 `ease-out` 预定义值描述了动画以高速开始低速结束。右边的动画展示了 `ease-out` 效果(蓝色的元素)和 `linear` 效果(红色的元素)的区别。同样的,`ease-out` 预定义值也可以用贝塞尔曲线函数实现。
通俗的讲,将一条直线放在范围只有 1 的坐标轴中,并从中间拿 `p1` 和 `p2` 两个点来拉扯(X 轴的取值区间是 \[0, 1],Y 轴任意),最后形成的曲线就是动画的贝塞尔速度曲线。下面是贝塞尔曲线模仿 ease-out 预定义值的例子:
@@ -18,11 +18,11 @@ forumTopicId: 301071
# --instructions--
-为了看贝塞尔曲线的运动效果,把 id 为 `red` 的元素的 `animation-timing-function` 属性赋为 `cubic-bezier` 函数,其中 x1,y1,x2,y2 值分别为 0,0,0.58,1。这会使两个元素运动过程类似。
+为了能直观地感受贝塞尔曲线所设置的运动效果,请把 id 为 `red` 的元素的 `animation-timing-function` 属性值改为 `cubic-bezier` 函数,其中 x1、y1、x2、y2 值分别为 0、0、0.58、1。这会使两个元素运动过程类似。
# --hints--
-id 为 `red` 的元素的 `animation-timing-function` 属性应当赋为 `cubic-bezier` 函数,其中 x1,y1,x2,y2 值分别为 0,0,0.58,1。
+id 为 `red` 的元素的 `animation-timing-function` 属性值应使用 `cubic-bezier` 函数,其中 x1、y1、x2、y2 值分别为 0、0、0.58、1。
```js
assert(
@@ -30,13 +30,13 @@ assert(
);
```
-id 为 `red` 的元素的 `animation-timing-function` 属性不应该取值 linear。
+id 为 `red` 的元素的 `animation-timing-function` 属性值不应为 linear。
```js
assert($('#red').css('animation-timing-function') !== 'linear');
```
-id 为 `blue` 的元素的 `animation-timing-function` 属性不应该被改变。
+id 为 `blue` 的元素的 `animation-timing-function` 属性不应改变。
```js
const blueBallAnimation = $('#blue')
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-a-css-linear-gradient-to-create-a-striped-element.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-a-css-linear-gradient-to-create-a-striped-element.md
index de0c13bfda..d03188c7e3 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-a-css-linear-gradient-to-create-a-striped-element.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-a-css-linear-gradient-to-create-a-striped-element.md
@@ -8,21 +8,21 @@ forumTopicId: 301072
# --description--
-`repeating-linear-gradient()` 函数和 `linear-gradient()` 很像,主要区别是 `repeating-linear-gradient()` 重复指定的渐变。 `repeating-linear-gradient()` 有很多参数,为了便于理解,本关只用到角度值和起止渐变颜色值。
+`repeating-linear-gradient()` 函数和 `linear-gradient()` 很像,主要区别是 `repeating-linear-gradient()` 会重复指定的渐变。`repeating-linear-gradient()` 有很多参数,为了便于理解,本关只用到角度值和色标。
-角度就是渐变的方向。起止渐变颜色值代表渐变颜色及其宽度值,由颜色值和起止位置组成,起止位置用百分比或者像素值表示。
+角度就是渐变的方向。色标代表渐变颜色及发生渐变的位置,由颜色值和起始位置组成。起始位置用百分比或者像素值表示。
-在代码编辑器的例子里,渐变开始于 0 像素位置的 `yellow`,然后过渡到距离开始位置 40 像素的 `blue`。由于下一个起止渐变颜色值的起止位置也是 40 像素,所以颜色直接渐变成第三个颜色值 `green`,然后过渡到距离开始位置 80 像素的 `red`。
+在代码编辑器的例子里,渐变开始于 0 像素位置的 `yellow`,然后过渡到距离开始位置 40 像素的 `blue`。由于下一个渐变颜色的起始位置也是 40 像素,所以颜色直接渐变成第三个颜色值 `green`,然后过渡到距离开始位置 80 像素的 `red`。
下面的代码可以帮助理解成对的起止渐变颜色值是如何过渡的。
`0px [黄色 -- 过渡 -- 蓝色] 40px [绿色 -- 过渡 -- 红色] 80px`
-如果每对起止渐变颜色值的颜色都是相同的,由于是在两个相同的颜色间过渡,那么中间的过渡色也为同色,接着就是同色的过渡色和下一个起止颜色,最终产生的效果就是条纹。
+如果有两个相邻色标的颜色值相同,那么过渡看起来就不会很明显。由于是在两个相同的颜色间过渡,那么中间的过渡色也会是相同颜色,接着就是这个颜色直接过渡到下一个颜色,最终产生的效果就是条纹。
# --instructions--
-修改 `repeating-linear-gradient()` 函数使其为渐变角度为 `45deg` 的条纹,第一对渐变颜色为 `yellow`, 第二对渐变颜色为 `black`。
+修改 `repeating-linear-gradient()` 函数使其为渐变角度为 `45deg` 的条纹,第一个渐变颜色为 `yellow`, 第二个渐变颜色为 `black`。
# --hints--
@@ -32,7 +32,7 @@ forumTopicId: 301072
assert(code.match(/background:\s*?repeating-linear-gradient\(\s*?45deg/gi));
```
-`repeating-linear-gradient()` 的渐变角度应该不在是 `90deg`。
+`repeating-linear-gradient()` 的渐变角度不应为 `90deg`。
```js
assert(!code.match(/90deg/gi));
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-css-animation-to-change-the-hover-state-of-a-button.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-css-animation-to-change-the-hover-state-of-a-button.md
index baa35cee25..e673b46014 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-css-animation-to-change-the-hover-state-of-a-button.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-css-animation-to-change-the-hover-state-of-a-button.md
@@ -33,7 +33,7 @@ forumTopicId: 301073
注意 `ms` 代表毫秒,1000ms 等于 1s。
-使用 `@keyframes` 来改变 `button` 元素的 `background-color`,使其当悬停时变成 `#4791d0`。`@keyframes` 规则应该只有一个 `100%` 条目。
+使用 `@keyframes` 来改变 `button` 元素的 `background-color`,使其在悬停时变成 `#4791d0`。`@keyframes` 规则应该只有一个 `100%` 条目。
# --hints--
@@ -43,7 +43,7 @@ forumTopicId: 301073
assert(code.match(/@keyframes\s+?background-color\s*?{/g));
```
-在 `@keyframes` 的 `100%` 条目里应该把 `background-color` 改成 `#4791d0`。
+在 `@keyframes` 为 `100%` 的位置,应将 `background-color` 改成 `#4791d0`。
```js
assert(code.match(/100%\s*?{\s*?background-color:\s*?#4791d0;\s*?}/gi));
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-css-transform-property-skewx-to-skew-an-element-along-the-x-axis.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-css-transform-property-skewx-to-skew-an-element-along-the-x-axis.md
index 83810ab46f..20535f981a 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-css-transform-property-skewx-to-skew-an-element-along-the-x-axis.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-css-transform-property-skewx-to-skew-an-element-along-the-x-axis.md
@@ -8,9 +8,9 @@ forumTopicId: 301074
# --description--
-接下来要介绍的 `transform` 属性是 `skewX`,`skewX` 使选择的元素沿着 X 轴(横向)翻转指定的角度。
+接下来要介绍的 `transform` 属性是 `skewX`:`skewX` 使选择的元素沿着 X 轴(横向)翻转指定的角度。
-下面的代码沿着 X 轴翻转段落元素 -32 度。
+下面的代码沿着 X 轴翻转 `p` 元素 -32 度。
```css
p {
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-css-transform-scale-property-to-change-the-size-of-an-element.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-css-transform-scale-property-to-change-the-size-of-an-element.md
index e00956613b..e540b56c0a 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-css-transform-scale-property-to-change-the-size-of-an-element.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-css-transform-scale-property-to-change-the-size-of-an-element.md
@@ -8,7 +8,7 @@ forumTopicId: 301076
# --description--
-CSS 属性 `transform` 里面的 `scale()` 函数,可以用来改变元素的显示比例。下面的例子把页面的段落元素放大了 2 倍:
+CSS 属性 `transform` 里面的 `scale()` 函数可以用来改变元素的显示比例。下面的例子把页面的 `p` 元素放大到了原来的 2 倍:
```css
p {
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-css-transform-scale-property-to-scale-an-element-on-hover.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-css-transform-scale-property-to-scale-an-element-on-hover.md
index 4d4edf89f6..341b7b1d0f 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-css-transform-scale-property-to-scale-an-element-on-hover.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-css-transform-scale-property-to-scale-an-element-on-hover.md
@@ -8,9 +8,9 @@ forumTopicId: 301077
# --description--
-`transform` 属性有很多函数,可以对元素进行调整大小、移动、旋转、翻转等操作。当使用伪类描述元素的指定状态如 `:hover` 时,`transform` 属性可以方便的给元素添加交互。
+`transform` 属性有很多函数可以调用,可以对元素进行调整大小、移动、旋转、翻转等操作。当使用伪类选取元素的指定状态(如 `:hover`)时,我们可以通过 `transform` 属性非常方便地给元素添加交互。
-下面是当用户悬停段落元素时,段落大小缩放到原始大小 2.1 倍的例子:
+下面是当用户悬停在 `p` 元素时,段落大小缩放到原始大小 2.1 倍的例子:
```css
p:hover {
@@ -18,11 +18,11 @@ p:hover {
}
```
-**注意:** 给 `div` 元素添加 transform 也会影响这个 div 包裹的子元素。
+**注意:**给 `div` 元素添加 transform 也会影响这个 div 包裹的子元素。
# --instructions--
-给 `div` 伪类 `hover` 添加 `transform` 属性,使其当鼠标悬停时大小缩放到原始大小的 1.1 倍。
+通过伪类,给 `div` 的 `hover` 状态添加 `transform` 属性,使其当鼠标悬停时大小缩放到原始大小的 1.1 倍。
# --hints--
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-em-tag-to-italicize-text.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-em-tag-to-italicize-text.md
index 497e1d98f0..18fd35bba7 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-em-tag-to-italicize-text.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-em-tag-to-italicize-text.md
@@ -18,13 +18,13 @@ forumTopicId: 301078
# --hints--
-你应该添加一个 `em` 标签。
+应添加一个 `em` 标签。
```js
assert($('em').length == 1);
```
-`em` 标签应该嵌套在 `p` 标签里面。
+`em` 标签应嵌套在 `p` 标签里面。
```js
assert($('p').children().length == 1 && $('em').children().length == 2);
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-s-tag-to-strikethrough-text.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-s-tag-to-strikethrough-text.md
index 30eaf3dc66..72fecc7036 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-s-tag-to-strikethrough-text.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-s-tag-to-strikethrough-text.md
@@ -8,23 +8,21 @@ forumTopicId: 301079
# --description--
-术语:Strikethrough => s => 删除线。
-
-你可以用 `s` 标签来给文字添加删除线,~~我是明晃晃的删除线~~,它代表着这段文字不再有效。添加了 `s` 标签后,浏览器会自动给元素应用 `text-decoration: line-through;`。
+你可以用 `s` 标签来给文字添加删除线。删除线是位于文字水平中央的一条线,它代表着一段文字不再有效。添加了 `s` 标签后,浏览器会自动给元素添加这段样式:`text-decoration: line-through;`。
# --instructions--
-在 `h4` 标签里的 “Google” 外添加 `s` 标签,然后在 `s` 标签外面添加单词 Alphabet,Alphabet 不要有删除线格式。
+在 `h4` 标签里的 "Google" 文本外添加 `s` 标签,然后在 `s` 标签后面添加单词 "Alphabet",Alphabet 不要有删除线格式。
# --hints--
-你应该添加一个 `s` 标签。
+应添加一个 `s` 标签。
```js
assert($('s').length == 1);
```
-`s` 标签应该在 `h4` 标签内的 Google 文字外面,它不应该包含单词 Alphabet。
+`s` 标签应该在 `h4` 标签内的 `Google` 文字外面,它不应包含单词 Alphabet。
```js
assert(
@@ -37,7 +35,7 @@ assert(
);
```
-`h4` 标签内应该有单词 Alphabet,Alphabet 应该没有删除线样式。
+`h4` 标签内应有单词 "Alphabet",Alphabet 不应有删除线样式。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-strong-tag-to-make-text-bold.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-strong-tag-to-make-text-bold.md
index 1c3a33121f..6d0c0dbcda 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-strong-tag-to-make-text-bold.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-strong-tag-to-make-text-bold.md
@@ -8,29 +8,27 @@ forumTopicId: 1
# --description--
-术语:Strong => s => 加粗。
-
-你可以使用 `strong` 标签来加粗文字。添加了 `strong` 标签后,浏览器会自动给元素应用 `font-weight:bold;`。
+你可以使用 `strong` 标签来加粗文字。粗体文字一般用来吸引读者注意或用来表示强调。添加了 `strong` 标签后,浏览器会自动给元素添加这段样式:`font-weight:bold;`。
# --instructions--
-在 `p` 标签里的 “斯坦福大学” 外面添加 `strong` 标签。
+给 `p` 标签里的 "Stanford University" 内容文本添加 `strong` 标签。
# --hints--
-你应该有一个 `strong` 标签。
+应添加一个 `strong` 标签。
```js
assert($('strong').length == 1);
```
-`strong` 标签应该在 `p` 标签里。
+`strong` 标签应在 `p` 标签里。
```js
assert($('p').children('strong').length == 1);
```
-`strong` 标签应该包围 “斯坦福大学”。
+`strong` 标签的内容文本应为 `Stanford University`。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-text-transform-property-to-make-text-uppercase.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-text-transform-property-to-make-text-uppercase.md
index 87f53e973d..8dff7c10c3 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-text-transform-property-to-make-text-uppercase.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-text-transform-property-to-make-text-uppercase.md
@@ -8,25 +8,25 @@ forumTopicId: 301081
# --description--
-CSS 里面的 `text-transform` 属性来改变英文中字母的大小写。它通常用来统一页面里英文的显示,且无需直接改变 HTML 元素中的文本。
+CSS 里的 `text-transform` 属性可以改变英文字母的大小写。使用这个属性时,我们无需改变 HTML 元素中的文本也可以统一页面里英文的显示。
-下面的表格展示了`text-transform` 的不同值对文字 “Transform me” 的影响。
+下面的表格展示了 `text-transform` 的不同值对文字 “Transform me” 的影响:
Value | Result |
---|
lowercase | "transform me" |
uppercase | "TRANSFORM ME" |
capitalize | "Transform Me" |
initial | 使用默认值 |
inherit | 使用父元素的 text-transform 值。 |
none | Default:不改变文字。 |
# --instructions--
-使用 `text-transform` 属性把 `h4` 内的英文的所有字母变成大写。
+请使用 `text-transform` 属性把 `h4` 内容文本中的所有字母变成大写。
# --hints--
-`h4` 内的英文的所有字母应该为大写。
+`h4` 内容文本中,所有字母均应为大写。
```js
assert($('h4').css('text-transform') === 'uppercase');
```
-`h4` 内的原文不能被改变。
+`h4` 内的原文不应改变。
```js
assert($('h4').text() !== $('h4').text().toUpperCase());
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-u-tag-to-underline-text.md b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-u-tag-to-underline-text.md
index 83c05a3612..794cdbc69e 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-u-tag-to-underline-text.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/applied-visual-design/use-the-u-tag-to-underline-text.md
@@ -8,28 +8,26 @@ forumTopicId: 301082
# --description--
-术语:Underline => u => 下划线。
-
-你可以使用 `u` 标签来给文字添加下划线。添加了 `u` 标签后,浏览器会自动给元素应用 `text-decoration: underline;`。
+你可以使用 `u` 标签来给文字添加下划线。下划线通常用来表示重要内容或需要记忆的内容。添加了 `u` 标签后,浏览器会自动给元素添加这段样式:`text-decoration: underline;`。
# --instructions--
-给 “理工博士” 添加 `u` 标签,不要给整个 class 为 `cardText` 的父 `div` 添加。
+给 "Ph.D. students" 添加 `u` 标签。
-**注意:** 锚点默认给文本添加下划线,如果 `u` 标签的下划线和页面的锚点混淆,请避免使用它。
+**注意:**HTML 的 `
` 标签默认也会给文本添加下划线。如果使用 `u` 标签添加下划线会造成与 `` 标签混淆,则应避免使用 `u` 标签。
# --hints--
-你应该有一个 `u` 标签。
+应添加一个 `u` 标签。
```js
assert($('u').length === 1);
```
-`u` 标签应该包围 “理工博士”。
+`u` 标签的内容文本应为 `Ph.D. students`。
```js
-assert($('u').text() === '理工博士');
+assert($('u').text() === 'Ph.D. students');
```
# --solutions--
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/basic-css/add-a-negative-margin-to-an-element.md b/curriculum/challenges/chinese/01-responsive-web-design/basic-css/add-a-negative-margin-to-an-element.md
index 5e1e074af6..ed1de0ff29 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/basic-css/add-a-negative-margin-to-an-element.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/basic-css/add-a-negative-margin-to-an-element.md
@@ -8,19 +8,19 @@ forumTopicId: 16166
# --description--
-元素的`margin(外边距)`控制元素`border(边框)`与其他周围元素之间的距离大小。
+元素的 `margin(外边距)` 用来控制元素 `border(边框)` 与其周围元素之间的距离大小。
-如果你把元素的`margin`设置为负值,元素会变得更大。
+如果你把元素的 `margin` 设置为负值,元素会变得占用更多空间。
# --instructions--
-尝试将蓝色框的`margin`设为负值,跟红色框一样大小。
+请将蓝色框的 `margin` 设为负值,跟红色框 `margin` 的属性值设置成一样的大小。
-蓝色框的`margin`设置为`-15px`,它会填满与黄色框之间的距离。
+将蓝色框的 `margin` 设置为 `-15px`,它会让蓝色框填满整个黄色框。
# --hints--
-`blue-box` class的`margin`应该设置为`-15px`。
+class 为 `blue-box` 的元素的 `margin` 应设置为 `-15px`。
```js
assert($('.blue-box').css('margin-top') === '-15px');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/basic-css/add-borders-around-your-elements.md b/curriculum/challenges/chinese/01-responsive-web-design/basic-css/add-borders-around-your-elements.md
index 6b49ebbe10..936c097297 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/basic-css/add-borders-around-your-elements.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/basic-css/add-borders-around-your-elements.md
@@ -8,9 +8,9 @@ forumTopicId: 16630
# --description--
-CSS 边框具有`style`,`color`和`width`属性。
+CSS 边框具有 `style`、`color`、`width` 属性。
-假如我们想要创建一个 5px 的红色实线边框包围一个 HTML 元素,我们可以这样做:
+假如我们要将一个 HTML 元素边框设置为 5px 的红色实线边框,我们可以这样做:
```html
```
-可以看到,我们在`
```
-在`style`样式声明区域内,可以创建一个`元素选择器`,应用于所有的`h2`元素。例如,如果你想所有`h2`元素变成红色,可以添加下方的样式规则:
+在 `style` 样式声明区域内,可以创建一个`元素选择器`,这里的规则将会应用到所有 `h2` 元素。如果想让所有 `h2` 元素在变成红色,可以添加下方的样式规则:
```html
```
-注意,在每个元素的样式声明区域里,左右花括号(`{` 和 `}`)一定要写全。你需要确保所有样式规则位于花括号之间,并且每条样式规则都以分号结束。
+**注意:**在每个元素的样式声明区域里,左右花括号 `{` 和 `}` 一定要匹配。你需要确保所有样式规则位于花括号之间,并且每条样式规则都以分号结束。
# --instructions--
-删除`h2`元素的行内样式,然后创建`style`样式声明区域,最后添加 CSS 样式规则使`h2`元素变为蓝色。
+请删除 `h2` 元素的行内样式,然后创建 `style` 样式声明区域,最后添加 CSS 样式规则使 `h2` 元素变为蓝色。
# --hints--
-删除`h2`元素的行内样式。
+应删除 `h2` 元素的行内样式。
```js
assert(!$('h2').attr('style'));
```
-创建一个`style`样式声明区域。
+应创建一个 `style` 样式声明区域。
```js
assert($('style') && $('style').length >= 1);
```
-`h2`元素颜色应为蓝色。
+`h2` 元素颜色应为蓝色。
```js
assert($('h2').css('color') === 'rgb(0, 0, 255)');
```
-确保`h2`选择器的内容被花括号所围绕,并且样式规则以分号结束。
+确保 `h2` 选择器的内容被花括号所包围,样式规则应以分号结束。
```js
assert(code.match(/h2\s*\{\s*color\s*:.*;\s*\}/g));
```
-所有`style`应该是有效的且有一个结束标签。
+`style` 标签应符合语法,且应有一个结束标签。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/basic-css/use-css-variables-to-change-several-elements-at-once.md b/curriculum/challenges/chinese/01-responsive-web-design/basic-css/use-css-variables-to-change-several-elements-at-once.md
index 4238250f3b..9597b153e4 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/basic-css/use-css-variables-to-change-several-elements-at-once.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/basic-css/use-css-variables-to-change-several-elements-at-once.md
@@ -8,17 +8,17 @@ forumTopicId: 301093
# --description--
-CSS 变量是一种仅更改一个值,来一次性更改多个 CSS 样式属性的强大方法。
+CSS 变量可以实现仅需要更新一个值,就可以将更改应用到多个 CSS 样式属性的强大方法。
按照下面指示的来做,我们只需要改变三个值,多个样式将会同时被修改。
# --instructions--
-在`penguin`class 里,将`black`改为`gray`,`gray`改为`white`,`yellow`改为`orange`。
+在 `penguin` class 里,将 `black` 改为 `gray`;`gray` 改为 `white`;`yellow` 改为 `orange`。
# --hints--
-`penguin` class 声明的`--penguin-skin`变量的值应为`gray`。
+`penguin` class 声明中的 `--penguin-skin` 变量值应为 `gray`。
```js
assert(
@@ -26,7 +26,7 @@ assert(
);
```
-`penguin` class 声明的`--penguin-belly`变量的值应为`white`。
+`penguin` class 声明中的 `--penguin-belly` 变量值应为 `white`。
```js
assert(
@@ -34,7 +34,7 @@ assert(
);
```
-`penguin` class 声明的`--penguin-beak`变量的值应为`orange`。
+`penguin` class 声明中的 `--penguin-beak` 变量值应为 `orange`。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/basic-css/use-hex-code-for-specific-colors.md b/curriculum/challenges/chinese/01-responsive-web-design/basic-css/use-hex-code-for-specific-colors.md
index 6076ed265f..148e874e42 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/basic-css/use-hex-code-for-specific-colors.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/basic-css/use-hex-code-for-specific-colors.md
@@ -8,11 +8,11 @@ forumTopicId: 18350
# --description--
-你知道在 CSS 里面还有其他方式来代表颜色吗?其中一个方法叫做十六进制编码,简称`hex`。
+你知道在 CSS 里面还有其他方式来代表颜色吗?其中一个方法叫十六进制编码,简称 `hex`。
-我们日常使用最多的计数方法,基于十进制,使用 0 到 9 数字来表示。而`十六进制编码`(`hex`)基于 16 位数字,它含有 16 种不同字符。十六进制与十进制一样,0-9 表示着 0 到 9 的值,不同的是,A,B,C,D,E,F 表示着十六进制 10 到 15 的值。总的来说,0 到 F 在`十六进制`里代表着数字,提供了 16 种可能性。你可以在[这里](https://zh.wikipedia.org/wiki/%E5%8D%81%E5%85%AD%E8%BF%9B%E5%88%B6)找到更多的相关信息。
+日常生活中,我们使用的计数方法一般基于十进制,即使用数字 0 到 9 来表示。而`十六进制编码`(`hex`)基于 16 位数字,它包括 16 种不同字符。十六进制与十进制一样,0-9 表示 0 到 9,不同的是,十六进制使用 A、B、C、D、E、F 分别表示 10 到 15。总的来说,0 到 F 在`十六进制`里代表数字,总共有 16 种可能性。你可以在[这里](https://zh.wikipedia.org/wiki/%E5%8D%81%E5%85%AD%E8%BF%9B%E5%88%B6)找到更多的相关信息。
-在 CSS 里面,我们可以用使用 6 个十六进制的数字来代表颜色,每两个数字控制一种颜色,分别是红(R),绿(G),蓝(B)。例如,`#000000`代表着黑色,同时也是最小的值。你可以在[这里](https://zh.wikipedia.org/wiki/%E4%B8%89%E5%8E%9F%E8%89%B2%E5%85%89%E6%A8%A1%E5%BC%8F)找到更多的相关信息。
+在 CSS 里面,我们可以使用 6 个十六进制的数字来代表颜色,每两个数字控制一种颜色,分别是红(R)、绿(G)、蓝(B)。例如,`#000000` 代表黑色,同时也是最小的值。你可以在[这里](https://zh.wikipedia.org/wiki/%E4%B8%89%E5%8E%9F%E8%89%B2%E5%85%89%E6%A8%A1%E5%BC%8F)找到更多的相关信息。
```css
body {
@@ -22,17 +22,17 @@ body {
# --instructions--
-使用`#000000`的十六进制编码来替换`body`元素的黑色背景。
+请使用 `#000000` 十六进制编码来设置 `body` 元素的背景颜色。
# --hints--
-`body`元素的背景颜色应该是黑色。
+`body` 元素的背景颜色应为黑色。
```js
assert($('body').css('background-color') === 'rgb(0, 0, 0)');
```
-使用`十六进制编码`来替换`black`的写法。
+应使用 十六进制编码`来替换 `black` 的写法。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/basic-css/use-hex-code-to-mix-colors.md b/curriculum/challenges/chinese/01-responsive-web-design/basic-css/use-hex-code-to-mix-colors.md
index e7c92d70a2..fd10fe917b 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/basic-css/use-hex-code-to-mix-colors.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/basic-css/use-hex-code-to-mix-colors.md
@@ -8,67 +8,67 @@ forumTopicId: 18359
# --description--
-回顾一下,`hex`使用 6 个十六进制编码来表示颜色,2 个一组,分别代表着红(R),绿(G),蓝(B)。
+回顾一下,`hex` 使用 6 个十六进制编码来表示颜色,两个字符为一组,分别代表红(R)、绿(G)、蓝(B)。
-通过三原色,我们可以创建 1600 万种不同颜色!
+通过三原色,我们可以创建 1600 万种不同颜色。
-例如,橘色是纯红色混合一些绿色而成的,没有蓝色的参与。在十六进制编码里面,它被转译为`#FFA500`。
+例如,橘色是纯红色混合一些绿色而成,其中没有蓝色的参与。在十六进制编码里面,它可以写成 `#FFA500`。
-`0`是十六进制里面最小的数字,表示着没有颜色。
+`0` 是十六进制里面最小的数字,表示没有颜色。
-`F`是十六进制里面最大的数字,表示着最高的亮度。
+`F` 是十六进制里面最大的数字,表示着最高的亮度。
# --instructions--
-把`style`标签里面的颜色值用正确的十六进制编码替换。
+把 `style` 标签里面的颜色值用正确的十六进制编码替换。
Color | Hex Code |
---|
Dodger Blue | #1E90FF |
Green | #00FF00 |
Orange | #FFA500 |
Red | #FF0000 |
# --hints--
-文本内容为`I am red!`的`h1`元素的字体颜色应该为`red`。
+文本内容为 `I am red!` 的 `h1` 元素的字体颜色应该为红色。
```js
assert($('.red-text').css('color') === 'rgb(255, 0, 0)');
```
-使用`十六进制编码`替换`red`关键词。
+应使用`十六进制编码`替换 `red` 关键词。
```js
assert(code.match(/\.red-text\s*?{\s*?color:\s*?#FF0000\s*?;\s*?}/gi));
```
-文本内容为`I am green!`的`h1`元素的字体颜色应该为`green`。
+文本内容为 `I am green!` 的 `h1` 元素的字体颜色应该为绿色。
```js
assert($('.green-text').css('color') === 'rgb(0, 255, 0)');
```
-使用`十六进制编码`替换`green`关键词。
+应使用`十六进制编码`替换 `green` 关键词。
```js
assert(code.match(/\.green-text\s*?{\s*?color:\s*?#00FF00\s*?;\s*?}/gi));
```
-文本内容为`I am dodger blue!`的`h1`元素的字体颜色应该为`dodger blue`。
+文本内容为 `I am dodger blue!` 的 `h1` 元素的字体颜色应该为道奇蓝色。
```js
assert($('.dodger-blue-text').css('color') === 'rgb(30, 144, 255)');
```
-使用`十六进制编码`替换`dodgerblue`关键词。
+应使用`十六进制编码`替换 `dodgerblue` 关键词。
```js
assert(code.match(/\.dodger-blue-text\s*?{\s*?color:\s*?#1E90FF\s*?;\s*?}/gi));
```
-文本内容为`I am orange!`的`h1`元素的字体颜色应该为`orange`。
+文本内容为 `I am orange!` 的 `h1` 元素的字体颜色应该为橘色。
```js
assert($('.orange-text').css('color') === 'rgb(255, 165, 0)');
```
-使用`十六进制编码`替换`orange`关键词。
+应使用`十六进制编码`替换 `orange` 关键词。
```js
assert(code.match(/\.orange-text\s*?{\s*?color:\s*?#FFA500\s*?;\s*?}/gi));
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/basic-css/use-rgb-to-mix-colors.md b/curriculum/challenges/chinese/01-responsive-web-design/basic-css/use-rgb-to-mix-colors.md
index bea1524e78..073385ec10 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/basic-css/use-rgb-to-mix-colors.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/basic-css/use-rgb-to-mix-colors.md
@@ -12,19 +12,19 @@ forumTopicId: 18368
# --instructions--
-将`style`标签里面中的十六进制编码替换为正确的 RGB 值。
+将 `style` 标签里面中的十六进制编码替换为正确的 RGB 值。
Color | RGB |
---|
Blue | rgb(0, 0, 255) |
Red | rgb(255, 0, 0) |
Orchid | rgb(218, 112, 214) |
Sienna | rgb(160, 82, 45) |
# --hints--
-文本内容为`I am red!`的`h1`元素的字体颜色应该为`red`。
+文本内容为 `I am red!` 的 `h1` 元素的字体颜色应为红色。
```js
assert($('.red-text').css('color') === 'rgb(255, 0, 0)');
```
-`red`颜色应使用`RGB`值。
+红色应使用 `RGB` 值来表示。
```js
assert(
@@ -34,13 +34,13 @@ assert(
);
```
-文本内容为`I am orchid!`的`h1`元素的字体颜色应该为`orchid`。
+文本内容为 `I am orchid!` 的 `h1` 元素的字体颜色应为兰紫色。
```js
assert($('.orchid-text').css('color') === 'rgb(218, 112, 214)');
```
-`orchid`颜色应使用`RGB`值。
+兰紫色应使用 `RGB` 值来表示。
```js
assert(
@@ -50,13 +50,13 @@ assert(
);
```
-文本内容为`I am blue!`的`h1`元素的字体颜色应该为`blue`。
+文本内容为 `I am blue!` 的 `h1` 元素的字体颜色应为蓝色。
```js
assert($('.blue-text').css('color') === 'rgb(0, 0, 255)');
```
-`blue`颜色应使用`RGB`值。
+蓝色应使用 `RGB` 值来表示。
```js
assert(
@@ -66,13 +66,13 @@ assert(
);
```
-文本内容为`I am sienna!`的`h1`元素的字体颜色应该为`sienna`。
+文本内容为 `I am sienna!` 的 `h1` 元素的字体颜色应为黄土赭色。
```js
assert($('.sienna-text').css('color') === 'rgb(160, 82, 45)');
```
-`sienna`颜色应使用`RGB`值。
+黄土赭色应使用 `RGB` 值来表示。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/basic-css/use-rgb-values-to-color-elements.md b/curriculum/challenges/chinese/01-responsive-web-design/basic-css/use-rgb-values-to-color-elements.md
index e1fef1ed7d..8e5d1e7702 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/basic-css/use-rgb-values-to-color-elements.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/basic-css/use-rgb-values-to-color-elements.md
@@ -8,7 +8,7 @@ forumTopicId: 18369
# --description--
-另一种可以在 CSS 中表示颜色的方法是使用 RGB 值。
+`RGB` 值是在 CSS 中表示颜色的另一种方法。
黑色的 RGB 值声明如下:
@@ -18,9 +18,9 @@ forumTopicId: 18369
`rgb(255, 255, 255)`
-RGB 不像十六进制编码,并不需要用到 6 位十六进制数字。在 RGB 里,你只需要指定每种颜色的亮度大小,从 0 到 255。
+RGB 值与我们之前学到的十六进制编码不同。RGB 值不需要用到 6 位十六进制数字,而只需要指定每种颜色的亮度大小,数值范围从 0 到 255。
-在数学的角度来看,如果将十六进制的一种颜色的两位数字相乘,16 乘以 16 也等于 256。所以,从 0 到 255 计算的 RGB 值的具有十六进制编码相同的颜色可能性。
+如果我们稍微计算一下,就不难发现这两种表示方式本质上是等价的。在十六进制编码中,我们用两个十六进制数表示一个颜色;这样,每种颜色都有 16 * 16(即 256)种可能。而在 RGB 表示方式中,每个颜色的数值范围是 0 到 255,因此也有 256 种可能。
下面是通过使用 RGB 值设置背景颜色为橘色的例子:
@@ -32,17 +32,17 @@ body {
# --instructions--
-让我们用`rgb(0, 0, 0)`的 RGB 值替换`body`元素背景颜色的十六进制编码。
+请用 RGB 值 `rgb(0, 0, 0)` 替换 `body` 元素背景颜色的十六进制编码。
# --hints--
-`body`元素的背景颜色应该是黑色的。
+`body` 元素的背景颜色应该是黑色的。
```js
assert($('body').css('background-color') === 'rgb(0, 0, 0)');
```
-`body`元素的背景颜色的黑色值应该为`RGB`值。
+`body` 元素的背景颜色的属性值应使用 `RGB` 值。
```js
assert(code.match(/rgb\s*\(\s*0\s*,\s*0\s*,\s*0\s*\)/gi));
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/add-a-submit-button-to-a-form.md b/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/add-a-submit-button-to-a-form.md
index f7cb8528cf..b6cbde87d5 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/add-a-submit-button-to-a-form.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/add-a-submit-button-to-a-form.md
@@ -8,7 +8,7 @@ forumTopicId: 16627
# --description--
-让我们来给表单添加一个`submit`提交按钮,当点击提交按钮时,表单中的数据将会被发送到`action`属性指定的 URL 上。
+让我们来给表单添加一个 `submit`(提交)按钮。点击提交按钮时,表单中的数据将会被发送到 `action` 属性指定的 URL 上。
例如:
@@ -16,23 +16,23 @@ forumTopicId: 16627
# --instructions--
-在表单的底部创建一个`button`按钮,按钮的`type`属性值为`submit`,文本为`提交`。
+请在表单(`form` 元素)底部创建一个 `button` 元素,将按钮的 `type` 属性值设置为 `submit`,内容文本为 `提交`。
# --hints--
-表单内部应该有一个按钮。
+表单内部应有一个 `button` 元素。
```js
assert($('form').children('button').length > 0);
```
-按钮的`type`属性值应该为`submit`。
+按钮的 `type` 属性值应为 `submit`。
```js
assert($('button').attr('type') === 'submit');
```
-提交按钮的文本应该为`提交`。
+提交按钮的文本应为 `Submit` 。
```js
assert(
@@ -42,7 +42,7 @@ assert(
);
```
-确保按钮有结束标记。
+`button` 元素应有结束标签。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/add-images-to-your-website.md b/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/add-images-to-your-website.md
index 056eccf340..2bcb730e6c 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/add-images-to-your-website.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/add-images-to-your-website.md
@@ -8,51 +8,51 @@ forumTopicId: 16640
# --description--
-用`img`元素来为你的网站添加图片,其中`src`属性指向一个图片的地址。
+你可以使用 `img` 元素来为你的网站添加图片,其中 `src` 属性指向图片的地址。
例如:
`

`
-注意:`img`元素是没有结束标记的。
+注意:`img` 元素是没有结束标签的。
-所有的`img`元素必须有`alt`属性,`alt`属性的文本是当图片无法加载时显示的替代文本,这对于通过屏幕阅读器来浏览网页的用户非常重要。
+所有的 `img` 元素**必须**有 `alt` 属性。`alt` 的属性值有两个作用,第一个作用是让屏幕阅读器可以知晓图片的内容,这会对网页的可访问性有很大提升;另一个作用是当图片无法加载时,页面需要显示的替代文本。
-注意:如果图片是纯装饰性的,用一个空的`alt`是最佳实践。
+注意:如果图片是纯装饰性的,把 `alt` 的属性值设置为空是最佳实践。
-理想情况下,`alt`属性不应该包含特殊字符,除非必要。
+理想情况下,`alt` 属性不应该包含特殊字符,除非有特殊需要。
-让我们给上面例子的`img`添加`alt`属性。
+让我们给上面例子的 `img` 添加 `alt` 属性。
-`

`
+`

`
# --instructions--
让我们给网站添加图片:
-在`main`元素里面,给`p`前面插入一个`img`元素
+在 `main` 元素里,给 `p` 元素前面插入一个 `img` 元素。
-现在设置`src`属性指向这个地址:
+然后将 `src` 的属性值设置为这个 URL:
`https://bit.ly/fcc-relaxing-cat`
-最后不要忘记给图片添加一个`alt`文本。
+最后,不要忘记给图片加上 `alt` 属性。
# --hints--
-网页应该有一张图片。
+你的网页上应该有一张图片。
```js
assert($('img').length);
```
-`img` 应该有一个`src`属性,指向猫咪图片。
+`img` 应该有一个 `src` 属性,其值为猫咪图片的 URL。
```js
assert(/^https:\/\/bit\.ly\/fcc-relaxing-cat$/i.test($('img').attr('src')));
```
-`img` 元素的`alt`属性值不应为空。
+`img` 元素的 `alt` 属性值不应为空。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/add-placeholder-text-to-a-text-field.md b/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/add-placeholder-text-to-a-text-field.md
index 428a093bdb..66cdb3225f 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/add-placeholder-text-to-a-text-field.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/add-placeholder-text-to-a-text-field.md
@@ -8,25 +8,27 @@ forumTopicId: 16647
# --description--
-`Placeholder`占位符是用户在`input`输入框中输入任何东西前的预定义文本。
+`Placeholder` 占位符是用户在 `input` 输入框中输入任何东西前的预定义文本。
你可以像这样创建一个占位符:
`
`
+**注意:**别忘了 `input` 元素是 "自闭和标签",即不需要结束标签。
+
# --instructions--
-把`input`输入框的`placeholder`占位符文本设置为 “猫咪图片地址”。
+把 `input` 输入框的 `placeholder` 占位符文本设置为 "cat photo URL"。
# --hints--
-给现有的`input`输入框添加一个`placeholder`属性。
+给现有的 `input` 输入框添加一个 `placeholder` 属性。
```js
assert($('input[placeholder]').length > 0);
```
-设置`placeholder`属性的值为 ”猫咪图片地址“。
+设置 `placeholder` 属性的值为 `cat photo URL`。
```js
assert(
@@ -34,17 +36,17 @@ assert(
$('input').attr('placeholder') &&
$('input')
.attr('placeholder')
- .match(/猫咪图片地址/gi)
+ .match(/cat\s+photo\s+URL/gi)
);
```
-完整的`input`元素应有一个结束标签
+`input` 元素不该有结束标签。
```js
assert(!code.match(/
.*<\/input>/gi));
```
-`input`输入框的语法必须正确。
+`input` 输入框的语法必须正确。
```js
assert($('input[type=text]').length > 0);
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/check-radio-buttons-and-checkboxes-by-default.md b/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/check-radio-buttons-and-checkboxes-by-default.md
index 4a9779aa94..a9313f9821 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/check-radio-buttons-and-checkboxes-by-default.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/check-radio-buttons-and-checkboxes-by-default.md
@@ -8,23 +8,23 @@ forumTopicId: 301094
# --description--
-如果想设置某个单选按钮或多选按钮默认被选中,只需给`input`元素添加 "checked" 属性。 例如:
+如果想设置某个单选按钮或多选按钮默认被选中,只需给 `input` 元素添加 "checked" 属性。 例如:
``
# --instructions--
-把第一个`radio button`和第一个`checkbox`都设置为默认选中。
+把第一个 `radio button` 和第一个 `checkbox` 都设置为默认选中。
# --hints--
-表单的第一个单选按钮应该被默认选中。
+表单的第一个单选按钮应被默认选中。
```js
assert($('input[type="radio"]').prop('checked'));
```
-表单的第一个多选按钮应该被默认选中。
+表单的第一个多选按钮应被默认选中。
```js
assert($('input[type="checkbox"]').prop('checked'));
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/comment-out-html.md b/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/comment-out-html.md
index c1a045f59f..5420ca91cb 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/comment-out-html.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/comment-out-html.md
@@ -8,41 +8,41 @@ forumTopicId: 16782
# --description--
-记住:注释的开始标记是``。
+记住:注释的开始标记是 ``。
-现在你需要在`h2`元素前终止注释。
+现在你需要在 `h2` 元素开始前终止注释。
# --instructions--
-任务:注释掉`h1`元素和`p`元素,保留`h2`元素。
+任务:注释掉 `h1` 元素和 `p` 元素,保留 `h2` 元素。
# --hints--
-注释掉`h1`元素,这样它就从网页上消失了。
+应注释掉 `h1` 元素,这样它就从网页上消失了。
```js
assert($('h1').length === 0);
```
-`h2`元素保持原样,这样网页上还能看到它。
+`h2` 元素应保持原样,这样网页上还能看到它。
```js
assert($('h2').length > 0);
```
-注释掉`p`元素,这样它就从网页上消失了。
+应注释掉 `p` 元素,这样它就从网页上消失了。
```js
assert($('p').length === 0);
```
-确保每一个注释都以`-->`结尾。
+每一个注释都应以 `-->` 结尾。
```js
assert(code.match(/[^fc]-->/g).length > 1);
```
-不要更改`h1`元素、`h2` 元素、`p`元素的顺序。
+不要更改 `h1` 元素、`h2` 元素、`p` 元素的顺序。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/create-a-bulleted-unordered-list.md b/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/create-a-bulleted-unordered-list.md
index db1fab0ee0..f950989784 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/create-a-bulleted-unordered-list.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/create-a-bulleted-unordered-list.md
@@ -8,9 +8,9 @@ forumTopicId: 16814
# --description--
-HTML 有一个特定的元素用于创建无序列表`unordered lists(缩写 ul)`。
+HTML 有一个特定的元素用于创建无序列表。
-无序列表以``结尾。
+无序列表以 `` 开始,中间包含一个或多个 `- ` 元素,最后以 `
` 结束。
例如:
@@ -25,23 +25,23 @@ HTML 有一个特定的元素用于创建无序列表`unordered lists(缩写 u
# --instructions--
-删除页面底部的两个`p`元素,然后在底部创建一个无序列表,其中包含你认为猫咪最喜欢的三件东西。
+请删除页面底部的两个 `p` 元素,然后在底部创建一个无序列表,其中包含你认为猫咪最喜欢的三件东西。
# --hints--
-创建一个`ul`无序列表。
+应存在一个 `ul` 无序列表。
```js
assert($('ul').length > 0);
```
-你应该在`ul`无序列表中添加三个`li`条目。
+应在 `ul` 无序列表中添加三个 `li` 条目。
```js
assert($('ul li').length > 2);
```
-确保`ul`无序列表有结束标记。
+确保 `ul` 无序列表有结束标签。
```js
assert(
@@ -51,7 +51,7 @@ assert(
);
```
-确保每个`li`条目都有结束标记。
+确保每个 `li` 条目都有结束标签。
```js
assert(
@@ -61,7 +61,7 @@ assert(
);
```
-每个`li`元素都应该有一个空字符串或者空格。
+每个 `li` 元素不应只包含空字符串或只包含空格。
```js
assert($('ul li').filter((_, item) => !$(item).text().trim()).length === 0);
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/create-a-form-element.md b/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/create-a-form-element.md
index 12857e2c51..d6d4cbf419 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/create-a-form-element.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/create-a-form-element.md
@@ -8,7 +8,7 @@ forumTopicId: 16817
# --description--
-如果想使用 HTML 向服务器提交数据,可以给`form`添加`action`属性。
+我们可以只通过 HTML 来实现发送数据给服务器的表单,只需要给 `form` 元素添加 `action` 属性即可。
例如:
@@ -16,21 +16,21 @@ forumTopicId: 16817
# --instructions--
-在`input`输入框外层创建一个`form`表单,然后设置表单的`action`属性为`"https://freecatphotoapp.com/submit-cat-photo"`。
+把现有的 `input` 输入框放到一个新建的 `form` 表单里,然后设置表单的 `action` 属性为 `"https://freecatphotoapp.com/submit-cat-photo"`。
# --hints--
-在`input`输入框外层创建一个`form`表单。
+现有的 `input` 输入框应位于新创建的 `form` 表单里面。
```js
+const inputElem = document.querySelector('form input');
assert(
- $('form') &&
- $('form').children('input') &&
- $('form').children('input').length > 0
+ inputElem.getAttribute('type') === 'text' &&
+ inputElem.getAttribute('placeholder') === 'cat photo URL'
);
```
-确保表单的`action`属性为`"https://freecatphotoapp.com/submit-cat-photo"`。
+表单的 `action` 属性值应设置为 `https://freecatphotoapp.com/submit-cat-photo`。
```js
assert(
@@ -38,7 +38,7 @@ assert(
);
```
-确保表单有开始标记和结束标记。
+`form` 元素应有开始标签和结束标签。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/create-a-set-of-checkboxes.md b/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/create-a-set-of-checkboxes.md
index f2a8e295e1..8e54270c7f 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/create-a-set-of-checkboxes.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/create-a-set-of-checkboxes.md
@@ -10,13 +10,13 @@ forumTopicId: 16821
`checkboxes`(复选框)就好比多项选择题,正确答案有多个。
-复选框是`input`选择框的另一种类型。
+复选框是 `input` 选择框的一种类型。
-每一个复选框都应该嵌套在它自己的`label`(标签)元素中。
+每一个复选框都应该嵌套在它自己的 `label`(标签)元素中。这样,我们相当于给 `input` 元素和包裹它的 `label` 元素建立起了对应关系。
-所有关联的复选框应该拥有相同的`name`属性。
+所有关联的复选框应该拥有相同的 `name` 属性。
-最佳实践是在`label`元素上设置`for`属性,让其值与复选框的`id`属性值相等,这样就在`label`元素和它的子元素复选框之间创建了一种链接关系。例如:
+使得 `input` 与 `label` 关联的最佳实践是在 `label` 元素上设置 `for` 属性,让其值与复选框的 `id` 属性值相同。
下面是一个复选框的例子:
@@ -24,23 +24,23 @@ forumTopicId: 16821
# --instructions--
-给表单添加三个复选框,每个复选框都被嵌套进`label`元素中,并且它的`name`属性均为`personality`,它们的内容可以随意指定。
+请给表单添加三个复选框,每个复选框都被嵌套进 `label` 元素中,并且它的 `name` 属性均为 `personality`。你可以随意指定每个复选框的内容文本。
# --hints--
-表单应该有三个复选框。
+表单中应存在三个复选框。
```js
assert($('input[type="checkbox"]').length > 2);
```
-每个复选框都应该被嵌套进`label`元素中。
+每个复选框都应该被嵌套进 `label` 元素中。
```js
assert($('label > input[type="checkbox"]:only-child').length > 2);
```
-确保`label`元素有结束标记。
+确保 `label` 元素有结束标签。
```js
assert(
@@ -50,7 +50,7 @@ assert(
);
```
-设置复选框的`name`属性均为`personality`。
+复选框的 `name` 属性值均应为 `personality`。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/create-a-set-of-radio-buttons.md b/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/create-a-set-of-radio-buttons.md
index ed2a3de901..c5b522c47b 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/create-a-set-of-radio-buttons.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/basic-html-and-html5/create-a-set-of-radio-buttons.md
@@ -10,11 +10,11 @@ forumTopicId: 16822
`radio buttons`(单选按钮)就好比单项选择题,正确答案只有一个。
-单选按钮是`input`选择框的一种类型。
+单选按钮是 `input` 选择框的一种类型。
-每一个单选按钮都应该嵌套在它自己的`label`(标签)元素中。
+每一个单选按钮都应该嵌套在它自己的 `label`(标签)元素中。这样,我们相当于给 `input` 元素和包裹它的 `label` 元素建立起了对应关系。
-所有关联的单选按钮应该拥有相同的`name`属性。
+所有关联的单选按钮应该拥有相同的 `name` 属性。
下面是一个单选按钮的例子:
@@ -24,7 +24,7 @@ forumTopicId: 16822
```
-最佳实践是在`label`元素上设置for属性,让其值与单选按钮的`id`属性值相等,这样就在`label`元素和它的子元素单选按钮之间创建了一种链接关系。例如:
+使得 `input` 与 `label` 关联的最佳实践是在 `label` 元素上设置 `for` 属性,让其值与单选按钮的 `id` 属性值相同。
```html
```
-在这里,有两个 `radio` 单选框。如果当用户提交表单时 `indoor` 选项被选中,表单数据会包含:`indoor-outdoor=indoor`。也就是 "indoor" 单选框的 `name` 和 `value` 属性。
+这里有两个 `radio` 单选框。当用户提交表单时,如果 `indoor` 选项被选中,表单数据会包含:`indoor-outdoor=indoor`。也就是所选项的 `name` 和 `value` 属性值。
-如果没写 `value` 属性,会使用默认值做为表单数据提交,也就是 `on`。在这种情况下,如果用户点击 "indoor" 选项然后提交表单,表单数据的值为 `indoor-outdoor=on`,这可能并没有什么意义。因此最好将 `value` 属性设置一些有意义的内容。
+如果没有指明 `value` 属性值,则会使用默认值做为表单数据提交,也就是 `on`。在这种情况下,如果用户选中 "indoor" 选项然后提交表单,表单数据则会包含 `indoor-outdoor=on`。这样的表单数据看起来不够直观,因此最好将 `value` 属性值设置为一些有意义的内容。
# --instructions--
-给每一个`radio`和`checkbox`输入框添加`value`属性。请把每个`input`对应的`label`文本转换为小写(如 Outdoor 应转换为 outdoor),设置其为 value 的值(即 `value="outdoor"`)。
+给每一个 `radio` 和 `checkbox` 输入框添加 `value` 属性,属性值为 `input` 对应 `label` 中文本的小写形式。如 Outdoor 的 `value` 应设置为 `"outdoor"`,即 `value="outdoor"`。
# --hints--
-一个单选按钮应该包含 `indoor` 的 `value` 属性。
+应有一个单选按钮的 `value` 属性值为 `indoor`。
```js
assert(
@@ -39,7 +39,7 @@ assert(
);
```
-一个单选按钮应该包含 `outdoor` 的 `value` 属性。
+应有一个单选按钮的 `value` 属性值为 `outdoor`。
```js
assert(
@@ -49,7 +49,7 @@ assert(
);
```
-一个复选框应该包含 `loving` 的 `value` 属性。
+应有一个复选框的 `value` 属性值为 `loving`。
```js
assert(
@@ -59,7 +59,7 @@ assert(
);
```
-一个复选框应该包含 `lazy` 的 `value` 属性。
+应有一个复选框的 `value` 属性值为 `lazy`。
```js
assert(
@@ -68,7 +68,7 @@ assert(
);
```
-一个复选框应该包含 `lazy` 的 `energetic` 属性。
+应有一个复选框的 `value` 属性值为 `energetic`。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/add-flex-superpowers-to-the-tweet-embed.md b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/add-flex-superpowers-to-the-tweet-embed.md
index ec7d3be45e..843a6d300c 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/add-flex-superpowers-to-the-tweet-embed.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/add-flex-superpowers-to-the-tweet-embed.md
@@ -8,53 +8,53 @@ forumTopicId: 301100
# --description--
-我们以右边的嵌入推文为例。一些元素换一个布局方式或许更好看。上一个挑战演示了`display: flex`,现在你需要把它添加到推文内嵌的多个组件中,调整它们的位置。
+我们以右边的嵌入推文为例,一些元素换一个布局方式或许更好看。上一个挑战演示了 `display: flex`,现在你需要把它添加到推文内嵌的多个组件中,调整它们的位置。
# --instructions--
-为下列项目添加 CSS 属性`display: flex`。注意,CSS 选择器已写好:
+请为下列项目添加 CSS 属性 `display: flex`。注意,以下 CSS 选择器已为你写好:
-`header`、header 的`.profile-name`、header 的`.follow-btn`、header 的`h3`和`h4`、`footer`以及 footer 的`.stats`。
+`header`、header 中的 `.profile-name`、header 中的 `.follow-btn`、header 中的 `h3` 和 `h4`、`footer` 以及 footer 中的 `.stats`。
# --hints--
-`header`的`display`属性应为 `flex`。
+`header` 的 `display` 属性值应为 `flex`。
```js
assert($('header').css('display') == 'flex');
```
-`footer`的`display`属性应为 `flex`。
+`footer` 的 `display` 属性值应为 `flex`。
```js
assert($('footer').css('display') == 'flex');
```
-`h3`的`display`属性应为 `flex`。
+`h3` 的 `display` 属性值应为 `flex`。
```js
assert($('h3').css('display') == 'flex');
```
-`h4`的`display`属性应为 `flex`。
+`h4` 的 `display` 属性值应为 `flex`。
```js
assert($('h4').css('display') == 'flex');
```
-`.profile-name`的`display`属性应为 `flex`。
+`.profile-name` 的 `display` 属性值应为 `flex`。
```js
assert($('.profile-name').css('display') == 'flex');
```
-`.follow-btn`的`display`属性应为 `flex`。
+`.follow-btn` 的 `display` 属性值应为 `flex`。
```js
assert($('.follow-btn').css('display') == 'flex');
```
-`.stats`的`display`属性应为 `flex`。
+`.stats` 的 `display` 属性值应为 `flex`。
```js
assert($('.stats').css('display') == 'flex');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/align-elements-using-the-align-items-property.md b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/align-elements-using-the-align-items-property.md
index 27cabe1525..107be97a90 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/align-elements-using-the-align-items-property.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/align-elements-using-the-align-items-property.md
@@ -8,26 +8,26 @@ forumTopicId: 301101
# --description--
-`align-items`属性与`justify-content`类似。回忆一下,`justify-content`属性使 flex 子元素沿主轴排列。行的主轴是水平线,列的主轴是垂直线。
+`align-items` 属性与 `justify-content` 类似。回忆一下,`justify-content` 属性使 flex 子元素沿主轴排列。行的主轴是水平线,列的主轴是垂直线。
Flex 容器中,与主轴垂直的叫做 **cross axis(交叉轴)**。行的交叉轴是垂直的,列的交叉轴是水平的。
-使用 CSS 中的`align-items`属性定义 flex 子元素沿交叉轴的对齐方式,对行来说,将行中的项目在容器中往上或往下移动;对列来说,将列中的项目在容器中往左或往右移动。
+CSS 中的 `align-items` 属性用来定义 flex 子元素沿交叉轴的对齐方式。对行来说,定义的是元素的上下对齐方式;对列来说,是定义元素的左右对齐方式。
-`align-items`的可选值包括:
+`align-items` 的可选值包括:
flex-start
:从 flex 容器的起始位置开始对齐项目。对行来说,把项目移至容器顶部;对列来说,是把项目移至容器左边。flex-end
:从 flex 容器的终止位置开始对齐项目。对行来说,把项目移至容器底部;对列来说,把项目移至容器右边。center
:把项目居中放置。对行来说,垂直居中(项目距离顶部和底部的距离相等);对列来说,水平居中(项目距离左边和右边的距离相等)。stretch
:拉伸项目,填满 flex 容器。例如,排成行的项目从容器顶部拉伸到底部。如未设置align-items
的值,那么默认值是stretch
。baseline
:沿基线对齐。基线是文本相关的概念,可以认为它是字母排列的下端基准线。
# --instructions--
-这个例子可以帮助你理解这个属性,在`#box-container`添加 CSS 属性`align-items`并将值设为 center。
+这个例子可以帮助你理解这个属性。请在 `#box-container` 里添加 CSS 属性 `align-items` 并将值设为 `center`。
-**提示:**
-在编辑器里试试`align-items`的其他可用值,看看它们之间的区别。但要通过挑战,你必须把值设为 `center`。
+**提示:**
+请在编辑器里试试 `align-items` 的其他值,看看它们之间的区别。但要通过挑战,你必须把属性值设为 `center`。
# --hints--
-`#box-container`元素应有`align-items`属性,其值应为 `center`。
+`#box-container` 所选择的元素应有 `align-items` 属性,且其属性值应为 `center`。
```js
assert($('#box-container').css('align-items') == 'center');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/align-elements-using-the-justify-content-property.md b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/align-elements-using-the-justify-content-property.md
index 304caca2e3..acc4fdba91 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/align-elements-using-the-justify-content-property.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/align-elements-using-the-justify-content-property.md
@@ -8,26 +8,26 @@ forumTopicId: 301102
# --description--
-flex 子元素有时不能充满整个 flex 容器,所以我们经常需要告诉 CSS 以什么方式排列 flex 子元素,以及调整它们的间距。幸运的是,我们可以通过`justify-content`属性的不同的值来实现。在介绍`justify-content`的可选值之前,我们要先理解一些重要术语。
+flex 子元素有时不能充满整个 flex 容器,所以我们经常需要告诉 CSS 以什么方式排列 flex 子元素,以及调整它们的间距。幸运的是,我们可以通过 `justify-content` 属性的不同值来实现。在介绍 `justify-content` 的可选值之前,我们要先理解一些重要术语。
[这张图片的元素横着排列,很好地描述了下面的概念。](https://www.w3.org/TR/css-flexbox-1/images/flex-direction-terms.svg)
-回忆一下,把 flex 容器设为一个行,它的子元素会从左到右逐个排列,把 flex 容器设为一个列,它的子元素会从上到下逐个排列。子元素排列的方向被称为 **main axis(主轴)**。对于行,主轴水平贯穿每一个项目;对于列,主轴垂直贯穿每一个项目。
+回忆一下,如果把 flex 容器设为一个行,它的子元素会从左到右逐个排列;如果把 flex 容器设为一个列,它的子元素会从上到下逐个排列。子元素排列的方向被称为 **main axis(主轴)**。对于行,主轴水平贯穿每一个项目;对于列,主轴垂直贯穿每一个项目。
-关于 flex 子元素在主轴的排列方式,可以选择以下值:其中一个很常用的是`justify-content: center;`,使 flex 子元素在 flex 容器中居中排列。其他可选值还有:
+关于 flex 子元素在主轴的排列方式,很常用的是 `justify-content: center;`:即 flex 子元素在 flex 容器中居中排列。其他可选值还有:
flex-start
:从 flex 容器的起始位置开始排列项目。对行来说是把项目移至左边,对于列是把项目移至顶部。如未设置justify-content
的值,那么默认值是flex-start
。flex-end
:从 flex 容器的终止位置开始排列项目。对行来说是把项目移至右边,对于列是把项目移至底部。space-between
:项目间保留一定间距地沿主轴居中排列。第一个和最后一个项目被放置在容器边沿。例如,在行中第一个项目会紧贴着容器左边,最后一个项目会紧贴着容器右边,然后其他项目均匀排布。space-around
:与space-between
相似,但头尾两个项目不会紧贴容器边缘,所有项目之间的空间均匀排布。
# --instructions--
-这个例子可以帮助你理解这个属性,在`#box-container`元素添加 CSS 属性`justify-content`,其值为 `center`。
+这个例子可以帮助你理解这个属性。请为 `#box-container` 元素添加 CSS 属性 `justify-content`,并将其属性值设置为 `center`。
**提示:**
-在编辑器里试试`justify-content`的其他可用值,看看它们之间的区别。但要通过挑战,你必须把值设为 `center`。
+在编辑器里试试 `justify-content` 的其他可用值,看看它们之间的区别。但要通过挑战,你必须把值设为 `center`。
# --hints--
-`#box-container`应有`justify-content`属性,其值应为 `center`。
+`#box-container` 所选择的元素应有 `justify-content` 属性,且其属性值应为 `center`。
```js
assert($('#box-container').css('justify-content') == 'center');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md
index 5564309aa2..3b45b8e7f3 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-a-column-in-the-tweet-embed.md
@@ -8,15 +8,15 @@ forumTopicId: 301103
# --description--
-在上一个挑战中,把嵌入推文的`header`和`footer`的`flex-direction`属性值设为 row(行)。相似地,把`.profile-name`选择器对应的元素竖着排列会好看一点。
+在之前的挑战中,我们把嵌入推文的 `header` 和 `footer` 的 `flex-direction` 属性值设为 row(行)。相似地,把 `.profile-name` 选择器中的元素竖着排列会好看一点。
# --instructions--
-在 header 的`.profile-name`元素添加 CSS 属性`flex-direction`,将其值设为 column。
+请给 header 的 `.profile-name` 元素添加 CSS 属性 `flex-direction`,并将其值设为 column。
# --hints--
-`.profile-name`应有`flex-direction`属性,其值应为 column。
+`.profile-name` 所选择的元素应有 `flex-direction` 属性,且其属性值应为 column。
```js
assert($('.profile-name').css('flex-direction') == 'column');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md
index 93c93ee5ff..3d48345f41 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/apply-the-flex-direction-property-to-create-rows-in-the-tweet-embed.md
@@ -8,21 +8,21 @@ forumTopicId: 301104
# --description--
-嵌入推文示例中的`header`和`footer`有自己的子元素,使用`flex-direction`属性可以把这些子元素排成行。这个属性告诉 CSS 需要将这些子元素水平排列。
+嵌入推文示例中的 `header` 和 `footer` 有自己的子元素,使用 `flex-direction` 属性可以把这些子元素排成行。这个属性告诉 CSS 需要将这些子元素水平排列。
# --instructions--
-为`header`和`footer`添加 CSS 属性`flex-direction`并把值设为 row。
+为 `header` 和 `footer` 添加 CSS 属性 `flex-direction` 并把值设为 row。
# --hints--
-`header`应有`flex-direction`属性,其值应为 row。
+`header` 应有 `flex-direction` 属性,其值应为 row。
```js
assert(code.match(/header\s*?{[^}]*?flex-direction:\s*?row;/g));
```
-`footer`应有`flex-direction`属性,其值应为 row。
+`footer` 应有 `flex-direction` 属性,其值应为 row。
```js
assert(code.match(/footer\s*?{[^}]*?flex-direction:\s*?row;/g));
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-display-flex-to-position-two-boxes.md b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-display-flex-to-position-two-boxes.md
index 747412ad10..987ea51875 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-display-flex-to-position-two-boxes.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-display-flex-to-position-two-boxes.md
@@ -8,17 +8,17 @@ forumTopicId: 301105
# --description--
-这节会使用一种不同的挑战方式来学习一下如何使用 CSS 更灵活地布局元素。首先通过一个挑战来理解原理,然后通过操作一个简单的推文组件来应用“弹性盒子”(flexbox)。
+这节我们会使用不同的挑战方式来学习如何使用 CSS 更灵活地布局元素。首先我们会通过一个挑战来解释原理,然后通过操作一个简单的推文组件来应用弹性盒子(flexbox)。
-只要在一个元素的 CSS 中添加`display: flex;`,就可以使用其它 flex 属性来构建响应式页面了。
+只要在一个元素的 CSS 中添加 `display: flex;`,就可以使用其它 flex 属性来构建响应式页面了。
# --instructions--
-为`#box-container`添加`display`属性,设置其值为 `flex`。
+请为 `#box-container` 添加 `display` 属性,并设置其属性值为 `flex`。
# --hints--
-`#box-container`应有`display`属性,其值应为 `flex`。
+`#box-container` 应具有 `display`属性,其属性值应为 `flex`。
```js
assert($('#box-container').css('display') == 'flex');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md
index cd665d357c..fc1342144a 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-align-items-property-in-the-tweet-embed.md
@@ -8,15 +8,15 @@ forumTopicId: 301106
# --description--
-上一个挑战介绍了`align-items`属性并给出了例子。可以对嵌入推文的一些元素使用这个属性,以调整其中 flex 子元素的位置。
+在上一个挑战中,我们介绍了 `align-items` 属性并给出了示例。我们可以对推文的几个嵌入元素使用这个属性,以调整其中 flex 元素的对齐方式。
# --instructions--
-在 header 的`.follow-btn`添加 CSS 属性`align-items`,把值设为 center。
+为 header 中的 `.follow-btn` 元素添加 CSS 属性 `align-items`,并将其属性值设为 `center`。
# --hints--
-`.follow-btn`应有`align-items`属性,其值应为 `center`.
+`.follow-btn` 选取的元素应有 `align-items` 属性,且其属性值应为 `center`。
```js
assert($('.follow-btn').css('align-items') == 'center');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-align-self-property.md b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-align-self-property.md
index 0bccef47e8..46a1799dff 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-align-self-property.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-align-self-property.md
@@ -8,23 +8,23 @@ forumTopicId: 301107
# --description--
-flex 子项目的最后一个属性是`align-self`。这个属性允许你调整每个项目自己的对齐方式,而不是一次性设置全部项目。因为`float`、`clear`和`vertical-align`等调整对齐方式的属性都不能应用于 flex 子元素,所以这个属性显得十分有用。
+flex 子项目的最后一个属性是 `align-self`。这个属性允许你调整单个子元素自己的对齐方式,而不会影响到全部子元素。因为 `float`、`clear` 和 `vertical-align` 等调整对齐方式的属性都不能应用于 flex 子元素,所以这个属性显得十分有用。
-`align-self`可设置的值与`align-items`的一样,并且它会覆盖`align-items`的值。
+`align-self` 可设置的值与 `align-items` 的一样,并且它会覆盖 `align-items` 所设置的值。
# --instructions--
-在`#box-1`和`#box-2`添加 CSS 属性`align-self`。`#box-1`设为 center,`#box-2`设为 `flex-end`。
+请为 `#box-1` 和 `#box-2` 添加 CSS 属性 `align-self`。将 `#box-1` 的 `align-self` 属性值设为 center,将 `#box-2` 的设为 `flex-end`。
# --hints--
-`#box-1`元素应有`align-self`属性,其值应为 `center`。
+`#box-1` 元素应具有 `align-self` 属性,其属性值应为 `center`。
```js
assert($('#box-1').css('align-self') == 'center');
```
-`#box-2`元素应有`align-self`属性,其值应为 `flex-end`。
+`#box-2` 元素应具有 `align-self` 属性,其属性值应为 `flex-end`。
```js
assert($('#box-2').css('align-self') == 'flex-end');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-basis-property-to-set-the-initial-size-of-an-item.md b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-basis-property-to-set-the-initial-size-of-an-item.md
index 6bf5d03e85..b944f1cdd1 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-basis-property-to-set-the-initial-size-of-an-item.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-basis-property-to-set-the-initial-size-of-an-item.md
@@ -1,6 +1,6 @@
---
id: 587d78ae367417b2b2512afd
-title: 使用 flex-basis 属性设置项目的初始大小
+title: 使用 flex-basis 属性设置元素的初始大小
challengeType: 0
videoUrl: 'https://scrimba.com/p/pVaDAv/c3d9nCa'
forumTopicId: 301108
@@ -8,35 +8,35 @@ forumTopicId: 301108
# --description--
-`flex-basis`属性定义了在使用 CSS 的`flex-shrink`或`flex-grow`属性对项目进行调整前,项目的初始大小。
+`flex-basis` 属性定义了在使用 CSS 的 `flex-shrink` 或 `flex-grow` 属性对元素进行调整前,元素的初始大小。
-`flex-basis`属性的单位与其他表示尺寸的属性的单位一致(`px`、`em`、`%`等)。如果值为`auto`,则项目的尺寸随内容调整。
+`flex-basis` 属性的单位与其他表示尺寸的属性的单位一致(`px`、`em`、`%` 等)。如果值为 `auto`,则项目的尺寸随内容调整。
# --instructions--
-使用`flex-basis`为盒子设置初始值。给`#box-1`和`#box-2`添加 CSS 属性`flex-basis`。设置`#box-1`的尺寸初始值为`10em`,`#box-2`的尺寸初始值为`20em`。
+使用 `flex-basis` 为盒子设置初始值。请给 `#box-1` 和 `#box-2` 添加 CSS 属性 `flex-basis`。设置 `#box-1` 的尺寸初始值为 `10em`,`#box-2` 的尺寸初始值为 `20em`。
# --hints--
-`#box-1`元素应有`flex-basis`属性。
+`#box-1` 元素应具有 `flex-basis` 属性。
```js
assert($('#box-1').css('flex-basis') != 'auto');
```
-`#box-1`的`flex-basis`应为`10em`。
+`#box-1` 的 `flex-basis` 属性值应为 `10em`。
```js
assert(code.match(/#box-1\s*?{\s*?.*?\s*?.*?\s*?flex-basis:\s*?10em;/g));
```
-`#box-2`元素应有`flex-basis`属性。
+`#box-2` 元素应具有 `flex-basis` 属性。
```js
assert($('#box-2').css('flex-basis') != 'auto');
```
-`#box-2`的`flex-basis`应为`20em`。
+`#box-2` 的 `flex-basis` 属性值应为 `20em`。
```js
assert(code.match(/#box-2\s*?{\s*?.*?\s*?.*?\s*?flex-basis:\s*?20em;/g));
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-direction-property-to-make-a-column.md b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-direction-property-to-make-a-column.md
index fa831d863a..fe6b462054 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-direction-property-to-make-a-column.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-direction-property-to-make-a-column.md
@@ -8,15 +8,15 @@ forumTopicId: 301109
# --description--
-之前两个挑战使用`flex-direction`属性创建行(row)。这个属性还能创建一个列,让子元素垂直排列在 flex 容器中。
+在之前两个挑战中,我们使用了 `flex-direction` 属性创建行(row)。这个属性还能创建一个列,让子元素竖直排列在 flex 容器中。
# --instructions--
-给`#box-container`元素添加 CSS 属性`flex-direction`,赋值为 `column`。
+请给 `#box-container` 元素添加 CSS 属性 `flex-direction`,并将其属性值设置为 `column`。
# --hints--
-`#box-container`应有`flex-direction`属性,其值应为 column。
+`#box-container` 应有 `flex-direction` 属性,其属性值应为 `column`。
```js
assert($('#box-container').css('flex-direction') == 'column');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-direction-property-to-make-a-row.md b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-direction-property-to-make-a-row.md
index 59a1ebaf77..31283d2d8b 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-direction-property-to-make-a-row.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-direction-property-to-make-a-row.md
@@ -1,6 +1,6 @@
---
id: 587d78ab367417b2b2512af2
-title: 使用 flex-direction 属性创建一行
+title: 使用 flex-direction 属性创建一个行
challengeType: 0
videoUrl: 'https://scrimba.com/p/pVaDAv/cBEkbfJ'
forumTopicId: 301110
@@ -8,20 +8,19 @@ forumTopicId: 301110
# --description--
-给元素添加`display: flex`属性使其变成 flex 容器。只要给父元素添加`flex-direction`属性,并把属性值设置为 row 或 column,即可横排或竖排它的子元素。设为 row 可以让子元素水平排列,设为 column 可以让子元素垂直排列。
+给元素添加 `display: flex` 属性可以让它变成 flex 容器。只要给父元素添加 `flex-direction` 属性,并把属性值设置为 row 或 column,即可横向排列或纵向排列它的所有子元素。设为 row 可以让子元素横向排列,设为 column 可以让子元素纵向排列。
-`flex-direction`的其他可选值还有 row-reverse 和 column-reverse。
+`flex-direction` 的其他可选值还有 `row-reverse` 和 `column-reverse`。
-**注意**
-`flex-direction`的默认值为 row。
+**注意:**`flex-direction` 的默认值为 row。
# --instructions--
-为`#box-container`添加 CSS 属性`flex-direction`,其值设为 row-reverse。
+请为 `#box-container` 添加 CSS 属性 `flex-direction`,将其值设为 `row-reverse`。
# --hints--
-`#box-container`应有`flex-direction`属性,其值应为 row-reverse。
+`#box-container` 应有 `flex-direction` 属性,其属性值应为 row-reverse。
```js
assert($('#box-container').css('flex-direction') == 'row-reverse');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-grow-property-to-expand-items.md b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-grow-property-to-expand-items.md
index 41318aa926..728ded31e6 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-grow-property-to-expand-items.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-grow-property-to-expand-items.md
@@ -1,6 +1,6 @@
---
id: 587d78ae367417b2b2512afc
-title: 使用 flex-grow 属性扩展项目
+title: 使用 flex-grow 属性定义 flex 子元素的增长系数
challengeType: 0
videoUrl: 'https://scrimba.com/p/pVaDAv/c2p78cg'
forumTopicId: 1301111
@@ -8,23 +8,23 @@ forumTopicId: 1301111
# --description--
-与`flex-shrink`相对的是`flex-grow`。你应该还记得,`flex-shrink`会在容器太小时对元素作出调整。相应地,`flex-grow`会在容器太大时对元素作出调整。
+与 `flex-shrink` 相对的是 `flex-grow`。你应该还记得,`flex-shrink` 会在容器太小时对子元素作出调整。相应地,`flex-grow` 会在容器太大时对子元素作出调整。
-例子与上一个挑战相似,如果一个项目的`flex-grow`属性值为 `1`,另一个项目的`flex-grow`属性值为 `3`,那么后者会较前者扩大 3 倍。
+例子与上一个挑战相似,如果一个项目的 `flex-grow` 属性值为 `1`,另一个项目的 `flex-grow` 属性值为 `3`,那么后者会较前者扩大 3 倍。
# --instructions--
-为`#box-1`和`#box-2`添加 CSS 属性`flex-grow`,`#box-1`的值设为 `1`,`#box-2`的值设为 `2`。
+请为 `#box-1` 和 `#box-2` 添加 CSS 属性 `flex-grow`;将 `#box-1` 的 `flex-grow` 属性值设为 `1`,`#box-2` 的属性值设为 `2`。
# --hints--
-`#box-1`元素应有`flex-grow`属性,其值应为 `1`。
+`#box-1` 元素应具有 `flex-grow` 属性,其属性值应为 `1`。
```js
assert($('#box-1').css('flex-grow') == '1');
```
-`#box-2`元素应有`flex-grow`属性,其值应为 `2`。
+`#box-2` 元素应具有 `flex-grow` 属性,其属性值应为 `2`。
```js
assert($('#box-2').css('flex-grow') == '2');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-shorthand-property.md b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-shorthand-property.md
index 8bd52cc77b..5858db14c5 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-shorthand-property.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-shorthand-property.md
@@ -8,21 +8,21 @@ forumTopicId: 301112
# --description--
-上面几个 flex 属性有一个简写方式。`flex-grow`、`flex-shrink`和`flex-basis`属性可以在`flex`中一同设置。
+上面几个 flex 属性有一个简写方式。`flex-grow`、`flex-shrink` 和 `flex-basis` 属性可以在 `flex` 中一并设置。
-例如,`flex: 1 0 10px;`会把项目属性设为`flex-grow: 1;`、`flex-shrink: 0;`以及`flex-basis: 10px;`。
+例如,`flex: 1 0 10px;` 会把项目属性设为 `flex-grow: 1;`、`flex-shrink: 0;` 以及 `flex-basis: 10px;`。
-属性的默认设置是`flex: 0 1 auto;`。
+属性的默认设置是 `flex: 0 1 auto;`。
# --instructions--
-在`#box-1`和`#box-2`添加`flex`属性。为`#box-1`设置`flex-grow`属性值为 `2`,`flex-shrink`属性值为 `2`,`flex-basis`属性值为 `150px`。为`#box-2`设置`flex-grow`属性值为 `1`,`flex-shrink`属性值为 `1`,`flex-basis`属性值为 `150px`。
+请给 `#box-1` 和 `#box-2` 添加 `flex` 属性。设置 `#box-1` 的 `flex-grow` 属性值为 `2`、`flex-shrink` 属性值为 `2`、`flex-basis` 属性值为 `150px`;设置 `#box-2` 的 `flex-grow` 属性值为 `1`、`flex-shrink` 属性值为 `1`、`flex-basis` 属性值为 `150px`。
-通过上面的设置,在容器大于 300px 时,`#box-1`扩大的空间是`#box-2`扩大空间的两倍;在容器小于 300px 时,`#box-1`缩小的空间`#box-2`缩小空间的两倍。300px 是两个盒子的`flex-basis`的值之和。
+通过上面的设置,在容器大于 300px 时,`#box-1` 扩大的空间会是 `#box-2` 扩大空间的两倍;在容器小于 300px 时,`#box-1` 缩小的空间会是 `#box-2` 缩小空间的两倍。300px 是两个盒子的 `flex-basis` 属性值之和。
# --hints--
-`#box-1`元素应有`flex`属性,其值应为 `2 2 150px`。
+`#box-1` 元素应具有 `flex` 属性,其属性值应为 `2 2 150px`。
```js
assert(
@@ -32,7 +32,7 @@ assert(
);
```
-`#box-2`元素应有`flex`属性,其值应为 `1 1 150px`。
+`#box-2` 元素应具有 `flex` 属性,其属性值应为 `1 1 150px`。
```js
assert(
@@ -42,7 +42,7 @@ assert(
);
```
-`#box-1`和`#box-2`应具有`flex`属性。
+应使用 `flex` 的简写属性为 `#box-1` 和 `#box-2` 添加规则。
```js
assert(code.match(/flex:\s*?\d\s+?\d\s+?150px;/g).length == 2);
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-shrink-property-to-shrink-items.md b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-shrink-property-to-shrink-items.md
index 07da744ab8..0178f5f3ec 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-shrink-property-to-shrink-items.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-shrink-property-to-shrink-items.md
@@ -1,6 +1,6 @@
---
id: 587d78ad367417b2b2512afb
-title: 使用 flex-shrink 属性收缩项目
+title: 使用 flex-shrink 属性定义 flex 子元素的收缩规则
challengeType: 0
videoUrl: 'https://scrimba.com/p/pVaDAv/cd3PBfr'
forumTopicId: 301113
@@ -8,25 +8,25 @@ forumTopicId: 301113
# --description--
-目前为止,挑战里的提到的属性都应用于 flex 容器(flex 子元素的父元素)。除此之外,flex 子元素也有很多实用属性。
+目前为止,挑战里提到的属性都是应用于 flex 容器(flex 子元素的父元素)的。除此之外,flex 子元素也有很多实用属性。
-首先介绍的是`flex-shrink`属性。使用之后,如果 flex 容器太小,该项目会自动缩小。当容器的宽度小于里面所有项目的宽度,项目就会自动压缩。
+首先介绍的是 `flex-shrink` 属性。使用之后,如果 flex 容器太小,则子元素会自动缩小。当容器的宽度小于里面所有子元素的宽度之和时,所有子元素都会自动压缩。
-项目的`flex-shrink`属性接受 number 类型的值。数值越大,该项目与其他项目相比会被压缩得更厉害。例如,如果一个项目的`flex-shrink`属性值为 `1`,另一个项目的`flex-shrink`属性值为 `3`,那么后者相比前者会受到 `3` 倍压缩。
+子元素的 `flex-shrink` 接受数值作为属性值。数值越大,则该元素与其他元素相比会被压缩得更厉害。比如,一个项目的 `flex-shrink` 属性值为 `1`,另一个项目的 `flex-shrink` 属性值为 `3`,那么后者相比前者会受到 `3` 倍压缩。
# --instructions--
-为`#box-1`和`#box-2`添加 CSS 属性`flex-shrink`,`#box-1`的值设为 `1`,`#box-2`的值设为 `2`。
+请为 `#box-1` 和 `#box-2` 添加 CSS 属性 `flex-shrink`,将 `#box-1` 的 `flex-shrink` 属性值设为 `1`,将 `#box-2` 的属性值设为 `2`。
# --hints--
-`#box-1`元素应有`flex-shrink`属性,其值应为 `1`.
+`#box-1` 元素应具有 `flex-shrink` 属性,其属性值应为 `1`。
```js
assert($('#box-1').css('flex-shrink') == '1');
```
-`#box-2`元素应有`flex-shrink`属性,其值应为 `2`.
+`#box-2` 元素应具有 `flex-shrink` 属性,其属性值应为 `2`。
```js
assert($('#box-2').css('flex-shrink') == '2');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-wrap-property-to-wrap-a-row-or-column.md b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-wrap-property-to-wrap-a-row-or-column.md
index 8b59b8b684..c4be2b22f2 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-wrap-property-to-wrap-a-row-or-column.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-flex-wrap-property-to-wrap-a-row-or-column.md
@@ -8,21 +8,21 @@ forumTopicId: 301114
# --description--
-CSS flexbox 有一个把 flex 子元素拆分为多行(或多列)的特性。默认情况下,flex 容器会调整项目大小,把它们都塞到一起。如果是行的话,所有项目都会在一条直线上。
+CSS flexbox 有一个把 flex 子元素拆分为多行(或多列)的特性。默认情况下,flex 容器会调整项目大小,把它们都塞到一起。对于行来说,所有项目都会在一条直线上。
-不过,使用`flex-wrap`属性可以使项目换行。这意味着多出来的项目会被移到新的行或列。换行发生的断点由项目和容器的大小决定。
+不过,使用 `flex-wrap` 属性可以使项目换行展示。这意味着多出来的子元素会被移到新的行或列。换行发生的断点由子元素和容器的大小决定。
换行方向的可选值有这些:
-nowrap
:默认值,不换行。wrap
:行从上到下排,列从左到又排。wrap-reverse
:行从下到上排,列从左到右排。
+nowrap
:默认值,不换行。wrap
:行从上到下排,列从左到右排。wrap-reverse
:行从下到上排,列从右到左排。
# --instructions--
-现在的布局一行里面元素太多了,在`#box-container`元素添加 CSS 属性`flex-wrap`,把值设为 `wrap`。
+现在的布局中,一行里面的元素太多了。请为 `#box-container` 元素添加 CSS 属性 `flex-wrap`,把将其属性值设为 `wrap`。
# --hints--
-`#box-container`元素应有`flex-wrap`属性,其值应为 `wrap`。
+`#box-container` 元素应具有 `flex-wrap` 属性,其属性值应为 `wrap`。
```js
assert($('#box-container').css('flex-wrap') == 'wrap');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md
index 5357319d0d..2177cc45d3 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-justify-content-property-in-the-tweet-embed.md
@@ -8,15 +8,15 @@ forumTopicId: 301115
# --description--
-上一项挑战展示了`justify-content`属性的作用。如果我们想对齐推文内的子元素,可以把`justify-content`应用在`.profile-name`上。
+上一项挑战展示了 `justify-content` 属性的作用。如果我们想对齐推文内的子元素,可以把 `justify-content` 应用在 `.profile-name` 上。
# --instructions--
-在 header 的`.profile-name`元素添加 CSS 属性`justify-content`,把它的值设为上面挑战提到的任意可用值。
+请在 header 中的 `.profile-name` 元素添加 CSS 属性 `justify-content`,把它的属性值设为上面挑战提到的任意可用值。
# --hints--
-`.profile-name`元素的`justify-content`属性可选以下值:center、flex-start、flex-end、space-between、space-around。
+`.profile-name` 元素的 `justify-content` 可选用以下属性值:`center`、`flex-start`、`flex-end`、`space-between`、`space-around`。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-order-property-to-rearrange-items.md b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-order-property-to-rearrange-items.md
index 1e826f68e6..2a2d56a0f8 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-order-property-to-rearrange-items.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-flexbox/use-the-order-property-to-rearrange-items.md
@@ -1,6 +1,6 @@
---
id: 587d78ae367417b2b2512aff
-title: 使用 order 属性重新排列项目
+title: 使用 order 属性重新排列子元素
challengeType: 0
videoUrl: 'https://scrimba.com/p/pVaDAv/cMbvNAG'
forumTopicId: 301116
@@ -8,21 +8,21 @@ forumTopicId: 301116
# --description--
-`order`属性告诉 CSS flex 容器里项目的顺序。默认情况下,项目排列顺序与源 HTML 文件中顺序相同。这个属性接受数字作为参数,可以使用负数。
+`order` 属性告诉 CSS flex 容器里子元素的顺序。默认情况下,项目排列顺序与源 HTML 文件中顺序相同。`order` 属性接受数字作为参数,可以使用负数。
# --instructions--
-给`#box-1`和`#box-2`添加 CSS 属性`order`,`#box-1`的`order`属性值设为 `2`,`#box-2`的`order`属性值设为 `1`。
+请给 `#box-1` 和 `#box-2` 添加 CSS 属性 `order`,并将 `#box-1` 的`order` 属性值设为 `2`,`#box-2` 的属性值设为 `1`。
# --hints--
-`#box-1`元素应有`order`属性,其值应为 `2`。
+`#box-1` 元素应具有 `order` 属性,其属性值应为 `2`。
```js
assert($('#box-1').css('order') == '2');
```
-`#box-2`元素应有`order`属性,其值应为 `1`。
+`#box-2` 元素应具有 `order` 属性,其属性值应为 `1`。
```js
assert($('#box-2').css('order') == '1');
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/add-columns-with-grid-template-columns.md b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/add-columns-with-grid-template-columns.md
index be6f168e0d..467cc92803 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/add-columns-with-grid-template-columns.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/add-columns-with-grid-template-columns.md
@@ -8,7 +8,7 @@ forumTopicId: 301117
# --description--
-简单地添加一个网格元素并不会有任何明显的效果。你还需要明确网格的结构。在一个网格容器中使用`grid-template-columns`属性可以添加一些列,示例如下:
+简单地添加一个网格元素并不会有任何明显的效果。你还需要明确网格的结构。在一个网格容器中使用 `grid-template-columns` 属性可以添加一些列,示例如下:
```css
.container {
@@ -17,15 +17,15 @@ forumTopicId: 301117
}
```
-上面的代码可以在网格容器中添加两列,宽度均为 50px。 `grid-template-columns`属性值的个数表示网格的列数,而每个值表示对应列的宽度。
+上面的代码会在网格容器中添加两列,宽度均为 50px。`grid-template-columns` 属性值的个数表示网格的列数,每个值表示相应的列宽度。
# --instructions--
-给网格容器设置三个列,每列宽度均为`100px`。
+请给网格容器设置三个列,每列宽度均为 `100px`。
# --hints--
-`container`类应该有`grid-template-columns`属性,该属性有三个值,均为`100px`。
+class 为 `container` 的元素应具有 `grid-template-columns` 属性,该属性应有三个属性值,均为 `100px`。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/add-gaps-faster-with-grid-gap.md b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/add-gaps-faster-with-grid-gap.md
index ed42fbaf18..2c95b17289 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/add-gaps-faster-with-grid-gap.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/add-gaps-faster-with-grid-gap.md
@@ -8,15 +8,15 @@ forumTopicId: 1301118
# --description--
-`grid-gap`属性是前两个挑战中的`grid-row-gap`属性和`grid-column-gap`属性的简写,它更方便使用。如果`grid-gap`只有一个值,那么这个值表示行与行之间、列与列之间的间距。如果`grid-gap`有两个值,那么第一个值表示行间距,第二个值表示列间距。
+`grid-gap` 属性是前两个挑战中出现的 `grid-row-gap` 和 `grid-column-gap` 的简写属性,它更方便使用。如果 `grid-gap` 只有一个值,那么这个值表示行与行之间、列与列之间的间距均为这个值。如果 `grid-gap` 有两个值,那么第一个值表示行间距,第二个值表示列间距。
# --instructions--
-使用`grid-gap`属性设置行间距为`10px`,设置列间距为`20px`。
+请使用 `grid-gap` 属性设置行间距为 `10px`、列间距为 `20px`。
# --hints--
-`container`类应该有`grid-gap`属性,在行之间设置`10px`的间距,在列之间设置`20px`的间距。
+class 为 `container` 的元素应具有 `grid-gap` 属性,并将行间距设置为 `10px`,列间距设置为 `20px`。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/add-rows-with-grid-template-rows.md b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/add-rows-with-grid-template-rows.md
index d8d0d7165e..0e7f23ea0b 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/add-rows-with-grid-template-rows.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/add-rows-with-grid-template-rows.md
@@ -8,15 +8,15 @@ forumTopicId: 301119
# --description--
-在上个挑战中,你创建的网格会自动设置行数。你可以像用`grid-template-columns`设置网格的列一样,用`grid-template-rows`设置网格的行。
+在上个挑战中,你创建的网格会自动设置行数。你可以用 `grid-template-rows` 设置网格的行,就像用 `grid-template-columns` 设置网格的列那样。
# --instructions--
-给网格添加两行,使每行高度均为`50px`。
+请给网格添加两行,使每行高度均为 `50px`。
# --hints--
-`container`类应该有`grid-template-rows`属性,且该属性的两个值均为`50px`
+类为 `container` 的元素应具有 `grid-template-rows` 属性,且该属性的两个属性值均为 `50px`。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/align-all-items-horizontally-using-justify-items.md b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/align-all-items-horizontally-using-justify-items.md
index 84e8835851..84ae926a9a 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/align-all-items-horizontally-using-justify-items.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/align-all-items-horizontally-using-justify-items.md
@@ -8,15 +8,15 @@ forumTopicId: 301120
# --description--
-有时你想让 CSS 网格中的网格项共享对齐方式。你可以像之前学习的那样分别设置它们的对齐方式,也可以对网格容器使用`justify-items`使它们一次性沿行轴对齐。对于这个属性你能使用在之前的两个挑战中学到的所有值,与之前不同的是,它将使网格中**所有**的网格项按所设置的方式对齐。
+有时你想让 CSS 网格中的网格项共享对齐方式。你可以像之前学习的那样分别设置它们的对齐方式,也可以对网格容器使用 `justify-items` 使它们一次性沿水平轴对齐。这个属性能接受我们在之前两个挑战中学到的所有值作为属性值,但与之前不同的是,它会将网格中**所有**的网格项按所设置的方式对齐。
# --instructions--
-使用`justify-items`属性设置所有网格项水平居中。
+请使用 `justify-items` 属性设置所有网格项水平居中。
# --hints--
-`container`类应该有`justify-items`属性且值为`center`。
+class 为 `container` 的元素应具有 `justify-items` 属性且属性值应为 `center`。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/align-all-items-vertically-using-align-items.md b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/align-all-items-vertically-using-align-items.md
index e1cf1f9858..ab650ac852 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/align-all-items-vertically-using-align-items.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/align-all-items-vertically-using-align-items.md
@@ -8,15 +8,15 @@ forumTopicId: 301121
# --description--
-对网格容器使用`align-items`属性可以给网格中所有的网格项设置沿列轴对齐的方式。
+对网格容器使用 `align-items` 属性可以让网格中所有的网格项沿竖直方向对齐。
# --instructions--
-请使用`align-items`属性将所有网格项移动到单元格的末尾。
+请使用 `align-items` 属性将所有网格项移动到单元格的末尾。
# --hints--
-`container`类应该有`align-items`属性且值为`end`。
+class 为 `container` 的元素应具有 `align-items` 属性且属性值应为 `end`。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/align-an-item-horizontally-using-justify-self.md b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/align-an-item-horizontally-using-justify-self.md
index 4ab01ae59b..938d086f83 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/align-an-item-horizontally-using-justify-self.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/align-an-item-horizontally-using-justify-self.md
@@ -8,7 +8,7 @@ forumTopicId: 301122
# --description--
-在 CSS 网格中,每个网格项的内容分别位于被称为单元格(cell)的框内。你可以使用网格项的`justify-self`属性,设置其内容的位置在单元格内沿行轴对齐的方式。默认情况下,这个属性的值是`stretch`,这将使内容占满整个单元格的宽度。该 CSS 网格属性也可以使用其他的值:
+在 CSS 网格中,每个网格项的内容分别位于被称为单元格(cell)的框内。你可以使用网格项的 `justify-self` 属性,设置其内容的位置在单元格内沿水平轴的对齐方式。默认情况下,这个属性的值是 `stretch`,这将使内容占满整个单元格的宽度。该 CSS 网格属性也可以使用其他的值:
`start`:使内容在单元格左侧对齐,
@@ -18,11 +18,11 @@ forumTopicId: 301122
# --instructions--
-使用`justify-self`属性让类为`item2`的网格项居中。
+请使用 `justify-self` 属性让 class 为 `item2` 的网格项居中。
# --hints--
-`item2`类应该有`justify-self`属性且值为`center`。
+class 为 `item2` 的元素应具有 `justify-self` 属性且属性值应为 `center`。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/align-an-item-vertically-using-align-self.md b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/align-an-item-vertically-using-align-self.md
index 7dc8cc8a1f..34c6b1198c 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/align-an-item-vertically-using-align-self.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/align-an-item-vertically-using-align-self.md
@@ -8,15 +8,15 @@ forumTopicId: 301123
# --description--
-正如能设置网格项沿行轴对齐方式一样,也可以设置网格项沿列轴对齐:你可以对网格项使用`align-self`属性。在上一个挑战中适用于`justify-self`属性的每个值也都适用于`align-self`属性。
+正如能设置网格项沿水平方向的对齐方式一样,我们也可以设置网格项沿竖直方向的对齐方式。为此,我们可以对网格项使用 `align-self` 属性来实现。在上一个挑战中适用于 `justify-self` 属性的属性值同样也可用于 `align-self`。
# --instructions--
-用值`end`使类为`item3`的网格项底端对齐。
+请使用值 `end` 来让 class 为 `item3` 的网格项沿底端对齐。
# --hints--
-`item3`类应该有`align-self`属性且值为`end`。
+class 为 `item3` 的元素应具有 `align-self` 属性且属性值应为 `end`。
```js
assert(code.match(/.item3\s*?{[\s\S]*align-self\s*?:\s*?end\s*?;[\s\S]*}/gi));
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/create-a-column-gap-using-grid-column-gap.md b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/create-a-column-gap-using-grid-column-gap.md
index 6c746ae519..3dbc79147f 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/create-a-column-gap-using-grid-column-gap.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/create-a-column-gap-using-grid-column-gap.md
@@ -8,21 +8,21 @@ forumTopicId: 301124
# --description--
-到目前为止,在你所建立的网格中列都相互紧挨着。如果需要在列与列之间添加一些间距,我们可以使用`grid-column-gap`:
+目前为止,在你所创建的网格中,每列都相互紧挨着。如果需要在列与列之间添加一些间距,我们可以使用 `grid-column-gap`:
```css
grid-column-gap: 10px;
```
-这会在我们创建的所有列之间添加 10px 的空白间距。
+这会为我们创建的所有列之间都添加 10px 的空白间距。
# --instructions--
-为网格中的列添加宽度为`20px`的间距。
+请为网格中的所有列添加宽度为 `20px` 的间距。
# --hints--
-`container`类应该有`grid-column-gap`属性且值为`20px`。
+class 为 `container` 的元素应具有 `grid-column-gap` 属性且属性值应为 `20px`。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/create-a-row-gap-using-grid-row-gap.md b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/create-a-row-gap-using-grid-row-gap.md
index 3e7e3fa8ca..29e3e15eda 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/create-a-row-gap-using-grid-row-gap.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/create-a-row-gap-using-grid-row-gap.md
@@ -8,15 +8,15 @@ forumTopicId: 301125
# --description--
-和上个挑战在两列之间添加间距一样,你可以用`grid-row-gap`在两行之间设置间距。
+和上个挑战在两列之间添加间距一样,我们还可以用 `grid-row-gap` 设置行间距。
# --instructions--
-为网格中的行添加高度为`5px`的间距。
+请为网格中的行添加高度为 `5px` 的间距。
# --hints--
-`container`类应该有`grid-row-gap`属性且值为`5px`。
+class 为 `container` 的元素应具有 `grid-row-gap` 属性且属性值应为 `5px`。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/create-flexible-layouts-using-auto-fill.md b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/create-flexible-layouts-using-auto-fill.md
index 3de8903446..1621f79b99 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/create-flexible-layouts-using-auto-fill.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/create-flexible-layouts-using-auto-fill.md
@@ -8,23 +8,23 @@ forumTopicId: 301126
# --description--
-重复方法带有一个名为自动填充(auto-fill)的功能。它的功能是根据容器的大小,尽可能多地放入指定大小的行或列。你可以通过结合`auto-fill`和`minmax`来更灵活地布局。
+`repeat` 方法带有一个名为自动填充(auto-fill)的功能。它的功能是根据容器的大小,尽可能多地放入指定大小的行或列。你可以通过结合 `auto-fill` 和 `minmax` 来更灵活地布局。
-在最右侧的预览区中,`grid-template-columns`被设置为:
+在最右侧的预览区中,`grid-template-columns` 被设置为:
```css
repeat(auto-fill, minmax(60px, 1fr));
```
-上面的代码效果:列的宽度会随容器大小改变,在可以插入一个 60px 宽的列之前,当前行的所有列会一直拉伸(译者注:动手试一下你就明白了)。 **注意:** 如果容器无法使所有网格项放在同一行,余下的网格项将移至新的一行。
+上面的代码效果是这样:首先,列的宽度会随容器大小改变。其次,只要容器宽度不足以插入一个宽为 60px 的列,当前行的所有列就都会一直拉伸。请自己调整宽度,动手试一下就不难理解了。**注意:**如果容器宽度不足以将所有网格项放在同一行,余下的网格项将会移至新的一行。
# --instructions--
-在第一个网格中,用`auto-fill`和`repeat`来填充网格,其中列宽的最小值为`60px`,最大值为`1fr`。你可以调整最右侧的预览区大小,查看自动填充效果。
+在第一个网格中,请使用 `auto-fill` 和 `repeat` 来填充网格。其中列宽的最小值为 `60px`,最大值为 `1fr`。你可以调整最右侧的预览区大小,查看自动填充的效果。
# --hints--
-`container`类应该有`grid-template-columns`属性且使用`repeat`和`auto-fill`,以便将最小宽度为`60px`,最大宽度为`1fr`的列填充至网格。
+class 为 `container` 的元素应具有 `grid-template-columns` 属性,且属性值应使用 `repeat` 和 `auto-fill`,以便将最小宽度为 `60px`、最大宽度为 `1fr` 的列填充至网格。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/create-flexible-layouts-using-auto-fit.md b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/create-flexible-layouts-using-auto-fit.md
index 5d0ce69bb1..8a550df23b 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/create-flexible-layouts-using-auto-fit.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/create-flexible-layouts-using-auto-fit.md
@@ -8,18 +8,17 @@ forumTopicId: 301127
# --description--
-`auto-fit`效果几乎和`auto-fill`一样。不同点仅在于,当容器的大小大于各网格项之和时,`auto-fill`将会持续地在一端放入空行或空列,这样就会使所有网格项挤到另一边;而`auto-fit`则不会在一端放入空行或空列,而是会将所有网格项拉伸至合适的大小。
+`auto-fit` 效果几乎和 `auto-fill` 一样。不同点仅在于,当容器的大小大于各网格项之和时,`auto-fill` 会持续地在一端放入空行或空列,这样就会使所有网格项挤到另一边;而 `auto-fit` 则不会在一端放入空行或空列,而是会将所有网格项拉伸至合适的大小。
-**注意:**
-如果容器无法使所有网格项放在同一行,余下的网格项将移至新的一行。
+**注意:**如果容器宽度不足以将所有网格项放在同一行,余下的网格项将会移至新的一行。
# --instructions--
-在第二个网格中,用`auto-fit`和`repeat`来填充网格,其中列宽的最小值为`60px`,最大值为`1fr`。你可以调整最右侧的预览区以查看差异。
+在第二个网格中,请用 `auto-fit` 和 `repeat` 来填充网格,其中列宽的最小值为 `60px`,最大值为`1fr`。你可以调整最右侧的预览区来查看效果。
# --hints--
-`container2`类应该有`grid-template-columns`属性,且使用`repeat`和`auto-fit`以便将最小宽度为`60px`,最大宽度为`1fr`的列放入网格。
+class 为 `container2` 的元素应具有 `grid-template-columns` 属性,且属性值应使用 `repeat` 和 `auto-fit`,以便将最小宽度为 `60px`、最大宽度为 `1fr` 的列填充至网格。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/create-grids-within-grids.md b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/create-grids-within-grids.md
index ac6ac5e276..9135150036 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/create-grids-within-grids.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/create-grids-within-grids.md
@@ -8,17 +8,17 @@ forumTopicId: 301128
# --description--
-将元素转换为网格只会影响其子代元素。因此,在把某个子代元素设置为网格后,就会得到一个嵌套的网格。
+将元素转换为网格只会影响其子元素(即直接后代元素,英文为 `direct descendants`。意思是一个元素的所有后代元素中,父级元素为该元素的所有元素)。因此,如果我们把某个子元素设置为网格,就会得到一个嵌套的网格。
-例如,设置类为`item3`的元素的`display`和`grid-template-columns`属性,就会得到一个嵌套的网格。
+例如,如果我们设置 class 为 `item3` 的元素的 `display` 和 `grid-template-columns` 属性,就会得到一个嵌套的网格。
# --instructions--
-用`display`和`grid-template-columns`,使类为`item3`元素转换为有两列且宽度为`auto`和`1fr`的网格。
+请设置 `display` 和 `grid-template-columns`,使类为 `item3` 元素转换为有两列且宽度为 `auto` 和 `1fr` 的网格。
# --hints--
-`item3`类应该有`grid-template-columns`属性且值为`auto`和`1fr`。
+class 为 `item3` 的元素应具有 `grid-template-columns` 属性且属性值应为 `auto` 和 `1fr`。
```js
assert(
@@ -28,7 +28,7 @@ assert(
);
```
-`item3`类有`display`属性且值为`grid`。
+class 为 `item3` 的元素应具有 `display` 属性且属性值应为 `grid`。
```js
assert(code.match(/.item3\s*?{[\s\S]*display\s*?:\s*?grid\s*?;[\s\S]*}/gi));
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/create-your-first-css-grid.md b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/create-your-first-css-grid.md
index 1087f0deb2..809fd49e06 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/create-your-first-css-grid.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/create-your-first-css-grid.md
@@ -8,18 +8,17 @@ forumTopicId: 301129
# --description--
-通过将属性`display`的值设为`grid`,使 HTML 元素变为网格容器。通过前面的操作,你可以对该容器使用与 CSS 网格(CSS Grid)相关的属性。
+通过将属性 `display` 的值设为 `grid`,HTML 元素就可以变为网格容器。通过前面的操作,你可以对该容器使用与 CSS 网格(CSS Grid)相关的属性。
-**注意:**
-在 CSS 网格中,父元素称为容器(container),它的子元素称为项(items)。
+**注意:**在 CSS 网格中,父元素称为容器(container),它的子元素称为项(items)。
# --instructions--
-将类为`container`的 div 的`display`属性改为`grid`。
+请将 class 为 `container` 的 `div` 的 `display` 属性值设置为 `grid`。
# --hints--
-`container`类应该有`display`属性且值为`grid`。
+class 为 `container` 的 `div` 元素应具有 `display` 属性且属性值应为 `grid`。
```js
assert(code.match(/.container\s*?{[\s\S]*display\s*?:\s*?grid\s*?;[\s\S]*}/gi));
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/divide-the-grid-into-an-area-template.md b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/divide-the-grid-into-an-area-template.md
index b66aa98964..098b1af041 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/divide-the-grid-into-an-area-template.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/divide-the-grid-into-an-area-template.md
@@ -8,7 +8,7 @@ forumTopicId: 301130
# --description--
-你可以将网格中的一些网格单元格组合成一个区域(area),并为该区域指定一个自定义名称。你可以通过给容器加上`grid-template-areas`来实现:
+你可以将网格中的一些单元格组合成一个区域(area),并为该区域指定一个自定义名称。可以通过给容器加上 `grid-template-areas` 来实现:
```css
grid-template-areas:
@@ -17,16 +17,15 @@ grid-template-areas:
"footer footer footer";
```
-上面的代码将顶部三个单元格合并成一个名为`header`的区域,将底部三个单元格合并为一个名为`footer`的区域,并在中间行生成两个区域————`advert`和`content`。 **注意:**
-在代码中,每个单词代表一个网格单元格,每对引号代表一行。 除了自定义标签,你还能使用句点(`.`)来表示一个空单元格。
+上面的代码将顶部三个单元格合并成一个名为 `header` 的区域,将底部三个单元格合并为一个名为 `footer` 的区域,并在中间行创建了两个区域:`advert` 和 `content`。**注意:**在代码中,每个单词代表一个网格单元格,每对引号代表一行。除了自定义标签,你还能使用句点(`.`)来表示一个空单元格。
# --instructions--
-请放置区域模板,让名为`advert`的区域变成空单元格。
+请放置区域模板,让名为 `advert` 的区域变成空单元格。
# --hints--
-`container`类应该有类似于最右侧预览区的`grid-template-areas`属性且用`.`代替`advert`。
+class 为 `container` 的元素应具有 `grid-template-areas` 属性,在其属性值中,应使用 `.` 代替 `.advert`。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/limit-item-size-using-the-minmax-function.md b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/limit-item-size-using-the-minmax-function.md
index bf3337d9e7..f9cf1a9281 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/limit-item-size-using-the-minmax-function.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/limit-item-size-using-the-minmax-function.md
@@ -8,21 +8,21 @@ forumTopicId: 301131
# --description--
-此外,内置函数`minmax`也可以可用于设置`grid-template-columns`和`grid-template-rows`的值。它的作用是在网格容器改变大小时限制网格项的大小。为此,你需要指定网格项允许的尺寸范围。例如:
+此外,内置函数 `minmax` 也可用于设置 `grid-template-columns` 和 `grid-template-rows` 的值。它的作用是在网格容器改变大小时限制网格项的大小。为此,你需要指定网格项允许的尺寸范围。例如:
```css
grid-template-columns: 100px minmax(50px, 200px);
```
-在上面的代码中,通过`grid-template-columns`添加两列,第一列宽度为 100px,第二列宽度最小值是 50px,最大值是 200px。
+在上面的代码中,我们通过 `grid-template-columns` 添加了两列,第一列宽度为 100px,第二列宽度最小值是 50px,最大值是 200px。
# --instructions--
-用`minmax`函数替换`repeat`函数中的`1fr`,限定其最小值为`90px`,最大值为`1fr`,你可以调整最右侧的预览面板查看效果。
+请用 `minmax` 函数替换 `repeat` 函数中的 `1fr`,限定其最小值为 `90px`,最大值为`1fr`。你可以调整最右侧的预览面板查看效果。
# --hints--
-`container`类应该有`grid-template-columns`属性且设置重复 3 列,每列宽度最小值为`90px`,最大值为`1fr`。
+class 为 `container` 的元素应使用 `grid-template-columns` 属性设置 3 列,其中,每列最小宽度应为 `90px`,最大宽度应为 `1fr`。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/place-items-in-grid-areas-using-the-grid-area-property.md b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/place-items-in-grid-areas-using-the-grid-area-property.md
index 03391a4895..e6261eac81 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/place-items-in-grid-areas-using-the-grid-area-property.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/place-items-in-grid-areas-using-the-grid-area-property.md
@@ -8,7 +8,7 @@ forumTopicId: 301132
# --description--
-像上一个挑战那样,在为网格添加区域模板后,你可以通过引用你所定义的区域的名称,将元素放入相应的区域。为此,你需要对网格项使用`grid-area`:
+像上一个挑战那样,在为网格添加区域模板后,你可以通过引用你所定义的区域的名称,将元素放入相应的区域。为此,你需要对网格项使用 `grid-area`:
```css
.item1 {
@@ -16,15 +16,15 @@ forumTopicId: 301132
}
```
-这样,类名为`item1`的网格项就被放到了`header`区域里。在这个示例中,网格项将占用整个顶行,因为这一整行都被命名为 header 区域。
+这样,class 为 `item1` 的网格项就被放到了 `header` 区域里。在这个示例中,网格项将占用第一行整行,因为这一整行都被命名为 `header` 区域。
# --instructions--
-请使用`grid-area`属性,把类为`item5`元素放到`footer`区域。
+请使用 `grid-area` 属性,把 class 为 `item5` 的元素放到 `footer` 区域。
# --hints--
-`item5`类应该有`grid-area`属性且值为`footer`。
+class 为 `item5` 的元素应具有 `grid-area` 属性且属性值应为 `footer`。
```js
assert(code.match(/.item5\s*?{[\s\S]*grid-area\s*?:\s*?footer\s*?;[\s\S]*}/gi));
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/reduce-repetition-using-the-repeat-function.md b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/reduce-repetition-using-the-repeat-function.md
index 8445255ecd..bb0b3767ec 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/reduce-repetition-using-the-repeat-function.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/reduce-repetition-using-the-repeat-function.md
@@ -8,17 +8,17 @@ forumTopicId: 301133
# --description--
-当使用`grid-template-columns`和`grid-template-rows`定义网格结构时,你需要为添加的每一行和每一列都输入一个值。
+使用 `grid-template-columns` 或 `grid-template-rows` 定义网格结构时,你需要为添加的每一行或每一列都输入一个值。
-如果一个网格共有 100 行,每行高度相同,就得输入 100 个值,这不太实际。幸运的是,有一种更好的方法——使用`repeat`方法指定行或列的重复次数,后面加上逗号以及需要重复的值。
+如果一个网格共有 100 行且每行高度相同,那我们就需要输入 100 个值,这显然不太实际。为此,更好的方式是使用 `repeat` 方法指定行或列的重复次数,后面加上逗号以及需要重复的值。
-这里有一个添加 100 行网格的例子,使每行高度均为 50px:
+以下为添加 100 行网格的例子,每行高度均为 50px:
```css
grid-template-rows: repeat(100, 50px);
```
-你还可以用 repeat 方法重复多个值,并在定义网格结构时与其他值一起使用。举个例子:
+你还可以用 repeat 方法重复多个值,并在定义网格结构时与其他值一起使用。比如:
```css
grid-template-columns: repeat(2, 1fr 50px) 20px;
@@ -30,16 +30,15 @@ grid-template-columns: repeat(2, 1fr 50px) 20px;
grid-template-columns: 1fr 50px 1fr 50px 20px;
```
-**注意:**
-`1fr 50px`重复了两次,后面跟着 20px。
+**注意:**`1fr 50px` 重复了两次,后面跟着 20px。
# --instructions--
-用`repeat`代替`grid-template-columns`属性值中的重复代码。
+请用 `repeat` 代替 `grid-template-columns` 属性值中的重复代码。
# --hints--
-`container`类应该带有`grid-template-columns`属性且设置为重复 3 列,宽为`1fr`。
+class 为 `container` 的元素应具有 `grid-template-columns` 属性,其属性值应设置为重复 3 列,且每列宽度为 `1fr`。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/use-css-grid-units-to-change-the-size-of-columns-and-rows.md b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/use-css-grid-units-to-change-the-size-of-columns-and-rows.md
index 3c1b3fd76a..f38a4dd877 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/use-css-grid-units-to-change-the-size-of-columns-and-rows.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/use-css-grid-units-to-change-the-size-of-columns-and-rows.md
@@ -8,15 +8,15 @@ forumTopicId: 301134
# --description--
-在 CSS 网格中,可以使用绝对定位和相对定位单位如`px`和`em`来确定行或列的大小。下面的单位也可以使用:
+在 CSS 网格中,可以使用绝对单位(如 `px`)或相对单位(如 `em`)来定义行或列的大小。下面的单位也可以使用:
-`fr`:设置列或行占剩余空间的一个比例,
+`fr`:设置列或行占剩余空间的比例,
`auto`:设置列宽或行高自动等于它的内容的宽度或高度,
`%`:将列或行调整为它的容器宽度或高度的百分比,
-最右侧的预览区中的效果通过下面的代码实现:
+以下代码为右侧预览区中的效果:
```css
grid-template-columns: auto 50px 10% 2fr 1fr;
@@ -26,11 +26,11 @@ grid-template-columns: auto 50px 10% 2fr 1fr;
# --instructions--
-生成一个包含三列的网格,每列宽度分别为:1fr,100px,和 2fr。
+生成一个包含三列的网格,每列宽度分别为:1fr、100px、2fr。
# --hints--
-`container`类应该有`grid-template-columns`属性,且生成宽为`1fr, 100px`和`2fr`的三列。
+class 为 `container` 的元素应具有 `grid-template-columns` 属性且属性值应为 `1fr 100px 2fr`。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/use-grid-area-without-creating-an-areas-template.md b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/use-grid-area-without-creating-an-areas-template.md
index 8dfe79188a..3be125e515 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/use-grid-area-without-creating-an-areas-template.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/use-grid-area-without-creating-an-areas-template.md
@@ -8,7 +8,7 @@ forumTopicId: 301135
# --description--
-你在上一次挑战中学到的`grid-area`属性有另一种使用方式。如果网格中没有定义区域模板,你也可以像这样为它添加一个模板:
+我们在上一次挑战中学到的 `grid-area` 属性还有另一种使用方式。如果网格中没有定义区域模板,你也可以像这样为它添加一个模板:
```css
item1 { grid-area: 1/1/2/4; }
@@ -17,18 +17,18 @@ item1 { grid-area: 1/1/2/4; }
这里使用了你之前学习的网格线编号来定义网格项的区域。上例中数字代表这些值:
```css
-grid-area: horizontal line to start at / vertical line to start at / horizontal line to end at / vertical line to end at;
+grid-area: 起始的水平网格线 / 起始的垂直网格线 / 结束的水平网格线 / 结束的垂直网格线;
```
因此,示例中的网格项将占用第 1 条水平网格线(起始)和第 2 条水平网格线(终止)之间的行,及第 1 条垂直网格线(起始)和第 4 条垂直网格线(终止)之间的列。
# --instructions--
-请用`grid-area`属性将类为`item5`的元素放置在第 3 条和第 4 条水平网格线及第 1 条和第 4 条水平网格线之间的区域内。
+请用 `grid-area` 属性将 `class` 为 `item5` 的元素放置在第 3 条和第 4 条水平网格线,以及第 1 条和第 4 条垂直网格线之间的区域内。
# --hints--
-`item5`类应该有`grid-area`属性且值为`3/1/4/4`。
+`class` 为 `item5` 的元素应具有 `grid-area` 属性且属性值应为 `3/1/4/4`。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/use-grid-column-to-control-spacing.md b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/use-grid-column-to-control-spacing.md
index 330ad53e6c..da852a4c33 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/use-grid-column-to-control-spacing.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/use-grid-column-to-control-spacing.md
@@ -8,15 +8,15 @@ forumTopicId: 301136
# --description--
-到目前为止,所有的讨论都是围绕网格容器的。`grid-column`属性是第一个用于网格项本身的属性。
+到目前为止,所有的讨论都是围绕网格容器的。`grid-column` 属性是我们要讨论的,第一个用于网格项本身的属性。
-网格的假想水平线和垂直线被称为线(lines)。这些线在网格的左上角从 1 开始编号,垂直线向右、水平线向下累加计数。
+网格中,假想的水平线和垂直线被称为线(lines)。这些线在网格的左上角从 1 开始编号,垂直线向右、水平线向下累加计数。
这是一个 3x3 网格的线条:
column lines
1
2
3
4
row lines
1
2
3
4
-你可以用`grid-column`属性定义网格项开始和结束的位置,进而控制每个网格项占用的列数。
+你可以用 `grid-column` 属性定义网格项开始和结束的位置,进而控制每个网格项占用的列数。
示例如下:
@@ -28,11 +28,11 @@ grid-column: 1 / 3;
# --instructions--
-使类为`item5`的网格项占用网格的最后两列。
+请让 class 为 `item5` 的网格项占用网格的最后两列。
# --hints--
-`item5`类应该有`grid-column`属性且其值为`2 / 4`。
+class 为 `item5` 的元素应具有 `grid-column` 属性。
```js
assert(
@@ -43,7 +43,7 @@ assert(
);
```
-`item5` 类应该有 `grid-column` 属性使其占用网格最后两列。
+class 为 `item5` 的元素应具有 `grid-column` 属性,其属性值应将元素设置为占用网格的最后两列。
```js
const colStart = getComputedStyle($('.item5')[0]).gridColumnStart;
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/use-grid-row-to-control-spacing.md b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/use-grid-row-to-control-spacing.md
index 4c6e823637..7172dbb64c 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/use-grid-row-to-control-spacing.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/use-grid-row-to-control-spacing.md
@@ -8,15 +8,15 @@ forumTopicId: 301137
# --description--
-当然,和设置一个网格项占用多列一样,你也可以设置它占用多行。你可以使用`grid-row`属性来定义一个网格项开始和结束的水平线。
+和设置一个网格项占用多列类似,你也可以设置它占用多行。你可以使用 `grid-row` 属性来定义一个网格项开始和结束的水平线。
# --instructions--
-使类为`item5`的元素占用最后两行。
+请让 class 为 `item5` 的元素占用最后两行。
# --hints--
-`item5`类应该有`grid-row`属性且值为`2 / 4`。
+class 为 `item5` 的元素应具有 `grid-row` 属性。
```js
assert(
@@ -27,7 +27,7 @@ assert(
);
```
-`item5` class 应该有 `grid-row` 属性使其占用网格最后两行。
+class 为 `item5` 的元素应具有 `grid-row` 属性,其属性值应将元素设置为占用网格的最后两行。
```js
const rowStart = getComputedStyle($('.item5')[0]).gridRowStart;
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/use-media-queries-to-create-responsive-layouts.md b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/use-media-queries-to-create-responsive-layouts.md
index 2876793078..93b83269e1 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/css-grid/use-media-queries-to-create-responsive-layouts.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/css-grid/use-media-queries-to-create-responsive-layouts.md
@@ -8,17 +8,17 @@ forumTopicId: 301138
# --description--
-通过使用媒体查询重新排列网格区域,更改网格尺寸以及重新排列网格项位置,CSS 网格能轻松地使网站更具响应性。
+将 CSS 网格与使用媒体查询结合使用,如使用媒体查询重新排列网格区域、更改网格尺寸以及重新排列网格项位置,我们可以让制作出的网站更具响应性。
-在最右侧的预览区中,当网页可视区域的宽不小于 300px 时,列数从 1 变为 2。并且,广告(advertisement)区域完全占据左列。
+在右侧的预览区中,当网页可视区域的宽不小于 300px 时,列数从 1 变为 2。并且,广告(advertisement)区域会完全占据左列。
# --instructions--
-当网页可视区域的宽不小于`400px`时,使 header 区域完全占据最顶行,footer 区域完全占据最底行。
+当网页可视区域的宽不小于 `400px` 时,请让 header 区域完全占据最顶行,footer 区域完全占据最底行。
# --hints--
-当网页可视区域的宽在`400px`及以上时,`container`类应该带有`grid-template-areas`属性且能够使得 footer 和 header 区域分别占据顶行和底行,advert 和 content 区域分别占据中间行的左和右列。
+当网页可视区域的宽度为 `400px` 或以上时,class 为 `container` 的元素应具有 `grid-template-areas` 属性,其属性值能够使 footer 和 header 区域分别占据顶行和底行,advert 和 content 区域分别占据中间行的左列和右列。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/responsive-web-design-principles/create-a-media-query.md b/curriculum/challenges/chinese/01-responsive-web-design/responsive-web-design-principles/create-a-media-query.md
index 2fafaf49e6..df3ccfd565 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/responsive-web-design-principles/create-a-media-query.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/responsive-web-design-principles/create-a-media-query.md
@@ -8,7 +8,7 @@ forumTopicId: 1
# --description--
-媒体查询是 CSS3 中引入的一项新技术,它可以根据不同的可视窗口大小调整内容的布局。可视窗口是用户在网页上的可见区域,根据访问网站的设备不同而不同。
+媒体查询是 CSS3 中引入的一项新技术,它可以根据不同的视口大小调整内容的布局。视口是指浏览器中,用户可见的网页内容。视口会随访问网站的设备不同而改变。
媒体查询由媒体类型组成,如果媒体类型与展示网页的设备类型匹配,则应用对应的样式。你可以在媒体查询中使用各种选择器和样式。
@@ -20,15 +20,15 @@ forumTopicId: 1
`@media (min-height: 350px) { /* CSS Rules */ }`
-只有当媒体类型与所使用的设备的类型匹配时,媒体查询中的 CSS 属性才生效。
+注意,只有当媒体类型与所使用的设备的类型匹配时,媒体查询中定义的 CSS 才生效。
# --instructions--
-增加一个媒体查询,当设备的高度小于或等于 800px 时,`p` 标签的 `font-size` 为 12px。
+请添加一条媒体查询规则,当设备的高度小于等于 800px 时,`p` 标签的 `font-size` 为 `10px`。
# --hints--
-声明一个`@media`媒体查询,`height` 小于或等于 800px。
+应使用 `@media` 声明媒体查询,其中应包含 `height` 小于等于 800px 的规则。
```js
assert(
@@ -39,7 +39,7 @@ assert(
);
```
-当设备 `height` 小于或等于 800px 时,`p` 元素 `font-size` 应为 10px。
+当设备 `height` 小于等于 800px 时,`p` 元素 `font-size` 应为 10px。
```js
assert(
@@ -50,7 +50,7 @@ assert(
);
```
-当设备的`height`大于 800px 时,`p`元素的`font-size`初始值为 20px。
+当设备的 `height` 大于 800px 时,`p` 元素的 `font-size` 应设置为其初始值 20px。
```js
assert(
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/responsive-web-design-principles/make-an-image-responsive.md b/curriculum/challenges/chinese/01-responsive-web-design/responsive-web-design-principles/make-an-image-responsive.md
index cefcdfe4ab..62d89ad218 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/responsive-web-design-principles/make-an-image-responsive.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/responsive-web-design-principles/make-an-image-responsive.md
@@ -1,6 +1,6 @@
---
id: 587d78b1367417b2b2512b09
-title: 使图片根据设备尺寸自如响应
+title: 使图片自适应设备尺寸
challengeType: 0
videoUrl: 'https://scrimba.com/c/cPp7VfD'
forumTopicId: 1
@@ -17,21 +17,21 @@ img {
}
```
-设置 `max-width` 值为 `100%` 可确保图片不超出父容器的范围。设置 `height`属性为 `auto` 保持图片的原始宽高比。
+设置 `max-width` 值为 `100%` 可确保图片不超出父容器的范围;设置 `height` 属性为 `auto` 可以保持图片的原始宽高比。
# --instructions--
-给 `responsive-img` 添加样式规则,使其成为响应式。它不应该超出父容器(在本例中,即预览窗口)的范围,并保持宽高比不变。添加代码后,拖动浏览器窗口,看看图片发生什么变化。
+给 `responsive-img` 添加样式规则,使其成为响应式的图片。它不应该超出父容器(在本例中,即预览窗口)的范围,并保持宽高比不变。添加代码后,拖动浏览器窗口,看看图片发生什么变化。
# --hints--
-`responsive-img` 类应设置 `max-width` 为 `100%`。
+`responsive-img` 类应将 `max-width` 设置为 `100%`。
```js
assert(getComputedStyle($('.responsive-img')[0]).maxWidth === '100%');
```
-`responsive-img` 类应设置 `height` 为 `auto`。
+`responsive-img` 类应将 `height` 设置为 `auto`。
```js
assert(code.match(/height:\s*?auto;/g));
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/responsive-web-design-principles/make-typography-responsive.md b/curriculum/challenges/chinese/01-responsive-web-design/responsive-web-design-principles/make-typography-responsive.md
index 562f010f9a..e788c4490f 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/responsive-web-design-principles/make-typography-responsive.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/responsive-web-design-principles/make-typography-responsive.md
@@ -20,17 +20,17 @@ forumTopicId: 1
# --instructions--
-设置 `h2` 标签的 `width` 为视窗宽度的 80%,`p` 标签的 `width` 为视窗高度和宽度中较小值的 75%。
+请将 `h2` 标签的 `width` 设置为视窗宽度的 80%,`p` 标签的 `width` 为视窗高度和宽度中较小值的 75%。
# --hints--
-`h2` 标签 `width` 应为 80vw。
+`h2` 元素的 `width` 应为 80vw。
```js
assert(code.match(/h2\s*?{\s*?width:\s*?80vw;\s*?}/g));
```
-`p` 标签 `width` 应为 75vmin。
+`p` 元素的 `width` 应为 75vmin。
```js
assert(code.match(/p\s*?{\s*?width:\s*?75vmin;\s*?}/g));
diff --git a/curriculum/challenges/chinese/01-responsive-web-design/responsive-web-design-principles/use-a-retina-image-for-higher-resolution-displays.md b/curriculum/challenges/chinese/01-responsive-web-design/responsive-web-design-principles/use-a-retina-image-for-higher-resolution-displays.md
index e42eca0839..808bf5429d 100644
--- a/curriculum/challenges/chinese/01-responsive-web-design/responsive-web-design-principles/use-a-retina-image-for-higher-resolution-displays.md
+++ b/curriculum/challenges/chinese/01-responsive-web-design/responsive-web-design-principles/use-a-retina-image-for-higher-resolution-displays.md
@@ -8,9 +8,9 @@ forumTopicId: 1
# --description--
-随着联网设备的增加,设备的尺寸和规格有所不同,它们使用的显示器在内部和外部可能也不同。像素密度(PPI 或 DPI)就是设备之间的其中一个不同点。最著名的显示器就是最新的 Apple MacBook Pro 笔记本电脑和最近的 iMac 电脑上的“视网膜显示器”。由于“视网膜”和“非视网膜”显示器之间的像素密度不同,某些未考虑高分辨率显示器的图像在高分辨率显示器上渲染时可能看起来“像素化”。
+随着联网设备的增加,设备间的区别不仅发生在尺寸和规格上,还发生在用于显示的设备上。像素密度就是区分不同显示设备的一个指标,它一般会以 PPI(Pixel Per Inch,即每英寸像素)或 DPI(每英寸点数)为计量单位。最著名的显示器就是 Apple MacBook Pro 笔记本电脑上的“视网膜显示屏”(现亦用于 iMac)。由于“视网膜显示屏”和“非视网膜显示屏”显示器之间像素密度的不同,某些未考虑高分辨率显示器的图像在高分辨率显示器上渲染时,可能因出现“像素化”而不够清晰。
-使图像在高分辨率显示器(例如 MacBook Pro 的“视网膜显示器”)上正常显示的最简单方法是将其 width 和 height 值设置为原始文件的一半,如下所示:
+要让图像在高分辨率显示器(例如 MacBook Pro 的“视网膜显示屏”)上正常显示,最简单的方法是将其 width 和 height 值设置为原始文件的一半,如下所示:
```html