Chinese translation of responsive-web-design (#40607)

This commit is contained in:
Xing Liu
2021-01-08 11:20:48 -08:00
committed by GitHub
parent 9770cd0f81
commit 05ba7c3482
193 changed files with 1266 additions and 1273 deletions

View File

@ -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(

View File

@ -12,7 +12,7 @@ forumTopicId: 301032
<blockquote>rgba 代表:<br>  r = red 红色<br>  g = green 绿色<br>  b = blue 蓝色<br>  a = alpha 透明度</blockquote>
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'));

View File

@ -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)');

View File

@ -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(

View File

@ -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(

View File

@ -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)');

View File

@ -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');

View File

@ -8,15 +8,15 @@ forumTopicId: 301038
# --description--
`hsl()` 使 CSS 更改色调更方便。纯色添加白色可以创造更浅的色调添加黑色可以创造更深的色调。另外,还可以通过给纯色添加灰色来同时改变颜色的深浅和明暗。回忆下 `hsl()` 里面的 sl 分辨代表饱和度和亮度。饱和度代表灰色的占比,亮度代表白色和黑色的占比。这在当你有了一个基色调却需要微调时非常有用。
`hsl()` 使 CSS 更改颜色色调更方便。比如,给一个纯色添加白色可以调出更浅的色调添加黑色可以创造更深的色调。另外,还可以通过给纯色添加灰色来同时改变颜色的深浅和明暗。回忆下 `hsl()` 里面的 sl 分辨代表饱和度和亮度。饱和度代表灰色的占比,亮度代表白色和黑色的占比。`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(

View File

@ -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);

View File

@ -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));

View File

@ -16,7 +16,7 @@ forumTopicId: 301041
# --instructions--
`animation-iteration-count` 属性改成 infinite以使右边的球持续跳跃。
`animation-iteration-count` 属性改成 infinite以使右边的球持续跳跃。
# --hints--

View File

@ -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--

View File

@ -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));

View File

@ -8,9 +8,9 @@ forumTopicId: 301044
# --description--
在 CSS 里一切 HTML 元素皆为盒子,也就是通常所说的 `盒模型`。块级元素自动从新的一行开始(比如标题、段落以及 div行内元素排列在上一个元素后比如图片以及 span。元素默认按照这种方式布局称为文档的 `普通流`,同时 CSS 提供了 position 属性来覆盖它。
在 CSS 里一切 HTML 元素皆为盒子,也就是通常所说的<dfn>盒模型</dfn>。块级元素自动从新的一行开始(比如标题、段落以及 div行内元素排列在上一个元素后比如图片以及 span。元素默认按照这种方式布局称为文档的<dfn>普通流</dfn>,同时 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');

View File

@ -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')

View File

@ -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');

View File

@ -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(

View File

@ -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(

View File

@ -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);

View File

@ -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));

View File

@ -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(

View File

@ -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(

View File

@ -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');

View File

@ -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(

View File

@ -10,17 +10,17 @@ forumTopicId: 301055
CSS 里的 `opacity` 属性用来设置元素的透明度。
<blockquote> 1 代表完全不透明。<br> 0.5 代表半透明。<br> 0 代表完全透明。</blockquote>
<blockquote>属性值为 1 代表完全不透明。<br>属性值为 0.5 代表半透明。<br>属性值为 0 代表完全透明。</blockquote>
透明度会应用到元素内的所有内容,不论是图片,还是文本,或是背景色。
# --instructions--
使用 `links` class 选择所有超链接并设置其 `opacity` 值为 0.7。
将 class 为 `links` 所有超链接 `opacity` 属性值设置 0.7。
# --hints--
你应该使用 `links` class 选择所有的超链接并设置其 `opacity` 值为 0.7。
使用 `links` class 选择所有的超链接并设置其 `opacity` 属性值为 0.7。
```js
assert(

View File

@ -8,32 +8,31 @@ forumTopicId: 301056
# --description--
色彩理论以及设计色彩学很复杂,这里将只涉及基础部分。在网站设计里,颜色能让内容更醒目,能调动情绪,从而创造舒适的视觉体验。不同的颜色组合对网站的视觉效果影响很大,精妙的设计都需要适宜的颜色来美化页面内容。
色彩理论以及设计色彩学很复杂,这里将只涉及基础部分。在网站设计里,颜色能让内容更醒目,能调动情绪,从而创造舒适的视觉体验。不同的颜色组合对网站的视觉效果影响很大,精妙的设计都需要适宜的颜色来美化页面内容。
一半是科学,一半是艺术,色环是我们认识颜色关系的好工具 - 它是一个近色相邻异色相离的圆环。当两个颜色恰好在色环的两端时,这两个颜色叫做补色。绘画中两只补色在混合后变成灰色。补色搭配能形成强的对比效果,传达出活力、能量、兴奋等意义。
一半是科学,一半是艺术,色环是我们认识颜色关系的好工具它是一个近色相邻异色相离的圆环。当两个颜色恰好在色环的两端时,这两个颜色就互为补色。绘画中,两个互为补色的颜色会在混合后变成灰色。补色搭配能形成强的对比效果,传达出活力、能量、兴奋等意义。
下面是一些十六进制码hex code补色例子:
下面是一些以 hex 形式表示的补色例子:
<blockquote>红色(#FF0000)和蓝绿色 (#00FFFF)<br>绿色(#00FF00)和品红色(#FF00FF<br>蓝色(#0000FF)和黄色(#FFFF00</blockquote>
现在很多在线选色工具都有寻找补色的功能。
现在很多在线选色工具也为我们提供了寻找补色的功能。
**注意**
对于所有的颜色关卡: 颜色能吸引用户的注意,但不是唯一的方式,切勿喧宾夺主,过度使用会适得其反。详细会在应用无障碍章节介绍。
**注意**对于颜色相关的挑战:颜色搭配是提起用户兴趣或吸引用户注意的重要方式之一。但我们不应让颜色作为传达重要信息的唯一方式,因为视觉障碍用户可能无法像其他人一样看出其中的含义。我们将会在应用无障碍章节进行详细介绍。
# --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)');

View File

@ -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));

View File

@ -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')

View File

@ -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--

View File

@ -8,29 +8,29 @@ forumTopicId: 301060
# --description--
接下来要介绍 CSS `position` 属性的取值选项 `absolute``absolute` 相对于其包含块定位。和 `relative` 定位不一样,`absolute` 定位会将元素从当前的文档流里面移除,周围的元素会忽略它。可以用 CSS 的 top、bottom、leftright 属性来调整元素的位置。
接下来要介绍 CSS `position` 属性的取值选项 `absolute``absolute` 的含义是相对于其包含块定位。和 `relative` 定位不一样,`absolute` 定位会将元素从当前的文档流里面移除,周围的元素会忽略它。这样我们就可以用 CSS 的 top、bottom、leftright 属性来调整元素的位置。
`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');

View File

@ -8,29 +8,29 @@ forumTopicId: 301061
# --description--
接下来要介绍的是 `fixed` 定位它是一种特殊的绝对absolute定位区别是其包含块是浏览器窗口。和绝对定位类似`fixed` 定位使用 top、bottom、leftright 属性来调整元素的位置,并且会将元素从当前的文档流里面移除,其它元素会忽略它的存在。
接下来要介绍的是 `fixed` 定位它是一种特殊的绝对absolute定位区别是其包含块是浏览器窗口。和绝对定位类似`fixed` 定位的元素中,我们也可以使用 top、bottom、leftright 属性来调整元素的位置,并且会将元素从当前的文档流里面移除,其它元素会忽略它的存在。
`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');

View File

@ -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');

View File

@ -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` 函数,函数的参数 x1y1x2y2 值依次为 0.311、0.441、0.444、1.649。
把 id 为 `green` 的元素的 `animation-timing-function` 值改成 `cubic-bezier` 函数,函数的参数 x1y1x2y2 值依次为 0.311、0.441、0.444、1.649。
# --hints--
id 为`green`的元素的`animation-timing-function`值应该为`cubic-bezier`函数,函数的参数 x1y1x2y2 值依次为 0.311、0.441、0.444、1.649。
id 为 `green` 的元素的 `animation-timing-function` 属性值应为 `cubic-bezier` 函数,函数的参数 x1y1x2y2 值依次为 0.311、0.441、0.444、1.649。
```js
assert(

View File

@ -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--

View File

@ -8,23 +8,23 @@ forumTopicId: 301065
# --description--
CSS 里面的 `top``bottom``left``right` 定义了元素在相应方位的偏移距离。元素将从当前位置向属性相反的方向偏移。就像你在上一个挑战看到的,`top` 属性使 `h2` 向下移动。`left` 属性使元素向右移动。
CSS 里面的 `top``bottom``left``right` 定义了元素在相应方位的偏移距离。元素将从当前位置向属性相反的方向偏移。就像你在上一个挑战看到的,`top` 属性使 `h2` 向下移动。`left` 属性使元素向右移动。
<img src='https://i.imgur.com/eWWi3gZ.gif' alt=''>
# --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');

View File

@ -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');

View File

@ -8,48 +8,58 @@ forumTopicId: 301067
# --description--
`font-size` 属性用来指定元素内文字的大小。这个规则可以应用到多个元素上,合理的使用,能让页面的文字显示的错落有致。在本挑战里,你要设置 `h1``h6`每个标题文字大小。
`font-size` 属性用来指定元素内文字的大小。我们可以为多个元素添加 `font-size` 规则,这样做可以让页面内不同元素的文字大小得以统一。在本挑战里,你要设置 `h1``h6` 的文字大小。
# --instructions--
<ul><li>设置 <code>h1</code> 标签的 <code>font-size</code> 为 68px。</li><li>设置 <code>h2</code> 标签的 <code>font-size</code> 为 52px。</li><li>设置 <code>h3</code> 标签的 <code>font-size</code> 为 40px。</li><li>设置 <code>h4</code> 标签的 <code>font-size</code> 为 32px。</li><li>设置 <code>h5</code> 标签的 <code>font-size</code> 为 21px。</li><li>设置 <code>h6</code> 标签的 <code>font-size</code> 为 14px。</li></ul>
<p><code>style</code> 标签中, 对各元素的 <code>font-size</code> 进行如下设置:</p>
<ul>
<li><code>h1</code> 标签的文字大小设为 68px。</li>
<li><code>h2</code> 标签的文字大小设为 52px。</li>
<li><code>h3</code> 标签的文字大小设为 40px</li>
<li><code>h4</code> 标签的文字大小设为 32px</li>
<li><code>h5</code> 标签的文字大小设为 21px</li>
<li><code>h6</code> 标签的文字大小设为 14px</li>
</ul>
# --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--

View File

@ -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');

View File

@ -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');

View File

@ -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');

View File

@ -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` 函数,其中 x1y1x2y2 值分别为 000.581。这会使两个元素运动过程类似。
为了能直观地感受贝塞尔曲线所设置的运动效果,把 id 为 `red` 的元素的 `animation-timing-function` 属性值改`cubic-bezier` 函数,其中 x1y1x2y2 值分别为 0、0、0.581。这会使两个元素运动过程类似。
# --hints--
id 为 `red` 的元素的 `animation-timing-function` 属性应当赋为 `cubic-bezier` 函数,其中 x1y1x2y2 值分别为 000.581。
id 为 `red` 的元素的 `animation-timing-function` 属性值应使用 `cubic-bezier` 函数,其中 x1y1x2y2 值分别为 0、0、0.581。
```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')

View File

@ -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));

View File

@ -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));

View File

@ -8,9 +8,9 @@ forumTopicId: 301074
# --description--
接下来要介绍的 `transform` 属性是 `skewX``skewX` 使选择的元素沿着 X 轴(横向)翻转指定的角度。
接下来要介绍的 `transform` 属性是 `skewX``skewX` 使选择的元素沿着 X 轴(横向)翻转指定的角度。
下面的代码沿着 X 轴翻转段落元素 -32 度。
下面的代码沿着 X 轴翻转 `p` 元素 -32 度。
```css
p {

View File

@ -8,7 +8,7 @@ forumTopicId: 301076
# --description--
CSS 属性 `transform` 里面的 `scale()` 函数可以用来改变元素的显示比例。下面的例子把页面的段落元素放大了 2 倍:
CSS 属性 `transform` 里面的 `scale()` 函数可以用来改变元素的显示比例。下面的例子把页面的 `p` 元素放大到了原来的 2 倍:
```css
p {

View File

@ -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--

View File

@ -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);

View File

@ -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` 标签面添加单词 AlphabetAlphabet 不要有删除线格式。
`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` 标签内应有单词 AlphabetAlphabet 应该没有删除线样式。
`h4` 标签内应有单词 "Alphabet"Alphabet 应有删除线样式。
```js
assert(

View File

@ -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(

View File

@ -8,25 +8,25 @@ forumTopicId: 301081
# --description--
CSS 里`text-transform` 属性改变英文字母的大小写。它通常用来统一页面里英文的显示,且无需直接改变 HTML 元素中的文本。
CSS 里的 `text-transform` 属性可以改变英文字母的大小写。使用这个属性时,我们无需改变 HTML 元素中的文本也可以统一页面里英文的显示
下面的表格展示了`text-transform` 的不同值对文字 “Transform me” 的影响
下面的表格展示了 `text-transform` 的不同值对文字 “Transform me” 的影响
<table class='table table-striped'><thead><tr><th>Value</th><th>Result</th></tr></thead><tbody><tr><td><code>lowercase</code></td><td>"transform me"</td></tr><tr><td><code>uppercase</code></td><td>"TRANSFORM ME"</td></tr><tr><td><code>capitalize</code></td><td>"Transform Me"</td></tr><tr><td><code>initial</code></td><td>使用默认值</td></tr><tr><td><code>inherit</code></td><td>使用父元素的 <code>text-transform</code> 值。</td></tr><tr><td><code>none</code></td><td><strong>Default:</strong>不改变文字。</td></tr></tbody></table>
# --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());

View File

@ -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 的 `<a>` 标签默认也会给文本添加下划线如果使用 `u` 标签添加下划线会造成与 `<a>` 标签混淆,则应避免使用 `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--