From 64e6b22f5444fd983d36c4593066f0fc211eb151 Mon Sep 17 00:00:00 2001
From: LeviDing
Date: Sun, 22 Mar 2020 23:23:13 +0800
Subject: [PATCH 1/5] Update article.md
---
2-ui/1-document/08-styles-and-classes/article.md | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/2-ui/1-document/08-styles-and-classes/article.md b/2-ui/1-document/08-styles-and-classes/article.md
index ee8d93109b..d630b6c6b8 100644
--- a/2-ui/1-document/08-styles-and-classes/article.md
+++ b/2-ui/1-document/08-styles-and-classes/article.md
@@ -1,12 +1,14 @@
# 样式和类
-在我们讨论 JavaScript 处理样式和类的方法之前 —— 有一个重要的规则。尽管这足够明显的,但我们还是要提到这一点。
+在我们讨论 JavaScript 处理样式和类的方法之前 — 有一个重要的规则。希望它足够明显,但是我们仍然必须提到它。
-通常有两种方式来设计元素样式:
+通常有两种设置元素样式的方式:
-1. 在 CSS 中创建一个类并添加它:``
+1. 在 CSS 中创建一个类,并添加它:`
`
2. 将属性直接写入 `style`:`
`。
+JavaScript 既可以修改类,也可以修改 `style` 属性。
+
CSS 总是首选的方式 —— 不仅用于 HTML,在 JavaScript 中也是如此。
只有当类“无法处理时”,我们才会操作 `style` 属性。
From 1864d0179fec5ae12b15bd5668a719d449a1c55c Mon Sep 17 00:00:00 2001
From: LeviDing
Date: Mon, 23 Mar 2020 13:13:58 +0800
Subject: [PATCH 2/5] Update article.md
---
.../08-styles-and-classes/article.md | 33 +++++++++----------
1 file changed, 16 insertions(+), 17 deletions(-)
diff --git a/2-ui/1-document/08-styles-and-classes/article.md b/2-ui/1-document/08-styles-and-classes/article.md
index d630b6c6b8..cfbba591bb 100644
--- a/2-ui/1-document/08-styles-and-classes/article.md
+++ b/2-ui/1-document/08-styles-and-classes/article.md
@@ -9,28 +9,27 @@
JavaScript 既可以修改类,也可以修改 `style` 属性。
-CSS 总是首选的方式 —— 不仅用于 HTML,在 JavaScript 中也是如此。
+相较于将样式写入 `style` 属性,我们应该首选通过 CSS 类的方式来添加样式。仅当类“无法处理”时,才应选择使用 `style` 属性的方式。
-只有当类“无法处理时”,我们才会操作 `style` 属性。
-
-例如,如果我们动态地计算元素的坐标并希望通过 JavaScript 来设置它们,那么 `style` 是可接受的,如下所示:
+例如,如果我们动态地计算元素的坐标,并希望通过 JavaScript 来设置它们,那么使用 `style` 是可以接受的,如下所示:
```js
-let top = /* complex calculations */;
-let left = /* complex calculations */;
-elem.style.left = left; // e.g '123px'
-elem.style.top = top; // e.g '456px'
+let top = /* 复杂的计算 */;
+let left = /* 复杂的计算 */;
+
+elem.style.left = left; // 例如 '123px',在运行时计算出的
+elem.style.top = top; // 例如 '456px'
```
-对于其他情况,比如文本变红色,添加一个背景图标 —— 在 CSS 中描述这个图标,然后应用这个类。这更加灵活,更容易支持。
+对于其他情况,例如将文本设为红色,添加一个背景图标 — 可以在 CSS 中对这些样式进行描述,然后添加类(JavaScript 可以做到)。这样更灵活,更易于支持。
-## className and classList
+## className 和 classList
-更改类在脚本中是最常见的一个操作。
+更改类是脚本中最常见的操作之一。
-在以前,JavaScript 有一个限制:像 `"class"` 这样的保留字不能作为对象属性。这一限制现在已经不存在了,但当时并不存在像 `elem.class` 这样的 `"class"` 属性。
+在很旧以前,JavaScript 中有一个限制:像 `"class"` 这样的保留字不能用作对象的属性。这一限制现在已经不存在了,但当时就不能存在像 `elem.class` 这样的 `"class"` 属性。
-因此对于类,引入了类似的属性 `"className"`: `elem.className` 对应于 `"class"` 特性:
+因此,对于类,引入了看起来类似的属性 `"className"`:`elem.className` 对应于 `"class"` 特性(attribute)。
例如:
@@ -42,11 +41,11 @@ elem.style.top = top; // e.g '456px'
"blinks"
-document.body.style.display = "none"; // hide
+// 如果我们运行这段代码, 将会闪烁
+document.body.style.display = "none"; // 隐藏
setTimeout(() => document.body.style.display = "", 1000); // 恢复正常
```
-如果我们设置 `display` 为空字符串,那么浏览器一般会应用 CSS 类以及内置样式,就像根本没有这样的 `style` 属性。
+如果我们将 `display` 设置为空字符串,那么浏览器通常会应用 CSS 类以及内置样式,就好像根本没有这样的 `style` 属性一样。
-````smart header="用 `style.cssText` 进行重写"
-通常,我们使用 `style.*` 来分配单独的样式属性。我们不能将完整的样式设置为 `div.style="color: red; width: 100px"`,因为 `div.style` 是一个对象,而且它是只读的。
+````smart header="用 `style.cssText` 进行完全的重写"
+通常,我们使用 `style.*` 来对各个样式属性进行赋值。我们不能像这样的 `div.style="color: red; width: 100px"` 设置完整的属性,因为 `div.style` 是一个对象,并且它是只读的。
-以字符串的形式设置样式,可以使用特殊属性 `style.cssText`:
+想要以字符串的形式设置完整的样式,可以使用特殊属性 `style.cssText`:
```html run
Button
```
-我们很少使用它,因为这样的赋值会删除所有现有样式:它不会添加,而是替换它们。偶尔会移出所需的东西。但是当我们知道我们不移出一些重要的内容时,仍然可以对新元素进行处理。
+我们很少使用这个属性,因为这样的赋值会删除所有现有样式:它不是进行添加,而是替换它们。有时可能会删除所需的内容。但是,当我们知道我们不会删除现有样式时,可以安全地将其用于新元素。
-通过设置属性:`div.setAttribute('style', 'color: red...')` 也可以实现同样的目的。
+可以通过设置一个特性(attribute)来实现同样的效果:`div.setAttribute('style', 'color: red...')`。
````
## 注意单位
-样式值中必须附上 CSS 单位。
+不要忘记将 CSS 单位添加到值上。
-例如,我们不应该将 `elem.style.top` 设置为 `10`,而应将其设置为 `10px`。否则会无效:
+例如,我们不应该将 `elem.style.top` 设置为 `10`,而应将其设置为 `10px`。否则设置会无效:
```html run height=100
```
-...但如果我们需要,比如说,把边距增加 20px 呢?那么需要当前值作为开始。
+……但如果我们需要,例如,将 margin 增加 20px 呢?那么我们需要 margin 的当前值。
-还有另一种方法:`getComputedStyle`。
+对于这个需求,这里有另一种方法:`getComputedStyle`。
-语法是:
+语法如下:
```js
-getComputedStyle(element[, pseudo])
+getComputedStyle(element, [pseudo])
```
element
-: 用来读取样式值的的元素。
+: 需要被读取样式值的元素。
pseudo
-: 假如给定一个伪元素,例如:`::before`。空字符串或无参意味着元素本身。
+: 伪元素(如果需要),例如 `::before`。空字符串或无参数则意味着元素本身。
结果是一个具有样式属性的对象,像 `elem.style`,但现在对于所有的 CSS 类来说都是如此。
@@ -237,7 +237,7 @@ pseudo