Skip to content

Commit c441b27

Browse files
authored
Update translation of 2-ui/1-document/09-size-and-scroll (#674)
Update translation of 2-ui/1-document/09-size-and-scroll (#674)
1 parent 30024af commit c441b27

File tree

9 files changed

+130
-131
lines changed

9 files changed

+130
-131
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
解决方式
1+
解决方案
22

33
```js
44
let scrollBottom = elem.scrollHeight - elem.scrollTop - elem.clientHeight;
55
```
66

7-
换句话说:(完全高度)减去(已滚动的高度)减去(可见部分的高度)— 得到的结果就是下方隐藏部分的高度
7+
换句话说:(完全高度)减去(已滚出顶部的高度)减去(可见部分的高度)— 得到的结果就是滚动出来的底部的部分

2-ui/1-document/09-size-and-scroll/1-get-scroll-height-bottom/task.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ importance: 5
44

55
# 相对于底部滚动了多少?
66

7-
`elem.scrollTop` 属性是从顶部滚动出来的部分的大小,如何获得 `scrollBottom` —— 从底部滚动的尺寸
7+
`elem.scrollTop` 属性是从顶部滚动出来的部分的大小。如何获得底部滚动的大小(我们称其为 `scrollBottom`
88

9-
编写适用于任意元素的代码
9+
编写适用于任意 `elem` 的代码
1010

11-
P.S. 请检查您的代码:如果没有滚动条或元素完全向下滚动,那么它应该返回 “0”
11+
P.S. 请检查你的代码:如果没有滚动,或元素底部已经完全滚动完成,那么它应该返回 `0`

2-ui/1-document/09-size-and-scroll/2-scrollbar-width/solution.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
为了获得滚动条宽度,我们可以创建一个带有滚动条的元素,但是没有边框和内间距
1+
为了获得滚动条的宽度,我们可以创建一个带有滚动条的元素,但是没有边框(border)和内边距(padding)
22

3-
然后,它的完全宽度 `offsetWidth` 和内容宽度 `clientWidth` 之间的差就是滚动条的宽度
3+
然后,它的全宽度 `offsetWidth` 和内部内容宽度 `clientWidth` 之间的差值就是滚动条的宽度
44

55
```js run
6-
// 创建一个包含滚动条的块
6+
// 创建一个包含滚动条的 div
77
let div = document.createElement('div');
88

99
div.style.overflowY = 'scroll';
1010
div.style.width = '50px';
1111
div.style.height = '50px';
1212

13-
// 必须添加到文档中,否则尺寸为 0
13+
// 必须将其放入文档(document)中,否则其大小将为 0
1414
document.body.append(div);
1515
let scrollWidth = div.offsetWidth - div.clientWidth;
1616

2-ui/1-document/09-size-and-scroll/2-scrollbar-width/task.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ importance: 3
22

33
---
44

5-
# 怎样计算滚动条宽度
5+
# 滚动条的宽度是多少
66

7-
编写返回标准滚动条宽度的代码
7+
编写代码,返回标准滚动条宽度
88

9-
对于Windows,它通常在 `12px``20px` 之间变化。如果浏览器不为它保留任何空间,那么它可能是 `0px`
9+
对于 Windows,它通常在 `12px``20px` 之间变化。如果浏览器没有为其保留任何空间(滚动条以半透明的形式处于文本上面,也是可能发生的),那么它可能是 `0px`
1010

11-
P.S. 代码应该适用于任何HTML文档,且不依赖于它的内容元素
11+
P.S. 该代码应适用于任何 HTML 文档,而不依赖于其内容

2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/solution.md

+11-13
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
1-
为小球设置 `position:absolute`。这意味着它的 `left/top` 坐标根据相对它最近的并且设置了定位的元素来测量,这个元素的有效范围就是 `#field`(因为它有 `position:relative`)。
1+
小球具有 `position:absolute`。这意味着它的 `left/top` 坐标是从最近的具有定位属性的元素开始测量的,这个元素即 `#field`(因为它有 `position:relative`)。
22

3-
坐标从设置了相对定位的最近的元素的左上角开始
3+
坐标从场(field)的左上角内侧开始
44

55
![](field.svg)
66

7-
该元素内容区域的宽/高是 `clientWidth/clientHeight`,所以该元素有效范围的中心的坐标为 `(clientWidth/2, clientHeight/2)`
7+
内部的场(field)的 width/height 是 `clientWidth/clientHeight`。所以场(field)的中心坐标为 `(clientWidth/2, clientHeight/2)`
88

9-
...不过如果我们将 `ball.style.left/top` 设置为上面计算出的值,那么最终的效果与有效范围的中心重合的不是小球的中心,而是小球左上角的坐标
9+
……但是,如果我们将 `ball.style.left/top` 设置为这种值,那么在中心的会是球的左上边缘,而不是整个球
1010

1111
```js
1212
ball.style.left = Math.round(field.clientWidth / 2) + 'px';
1313
ball.style.top = Math.round(field.clientHeight / 2) + 'px';
1414
```
1515

16-
这是它将显示出的效果
16+
这是它将显示出来的效果
1717

1818
[iframe height=180 src="ball-half"]
1919

20-
为了把球中心和有效范围中心对准,我们应该把球移到左边宽度的一半,把 top 设置为有效范围高度的一半
20+
为了使球的中心与场(field)的中心重合,我们应该把球向左移动球宽度的一半,并向上移动球高度的一半
2121

2222
```js
2323
ball.style.left = Math.round(field.clientWidth / 2 - ball.offsetWidth / 2) + 'px';
@@ -26,25 +26,23 @@ ball.style.top = Math.round(field.clientHeight / 2 - ball.offsetHeight / 2) + 'p
2626

2727
**注意:陷阱!**
2828

29-
如果 `<img>` 没有宽/高,代码将无法正常工作
29+
`<img>` 没有 width/height 时,代码将无法可靠地工作
3030

3131
```html
3232
<img src="ball.png" id="ball">
3333
```
3434

35-
当浏览器还不知道图片的宽/高(图片的尺寸可能来自标签属性或 CSS)的时候它会假设它们的尺寸为 `0`直到图片加载完成。
35+
当浏览器不知道图片的 width/height(通过标签 attribute 或 CSS)时,它会假定它们等于 `0`直到图片加载完成。
3636

37-
实际使用过程中,浏览器会在图片第一次加载完成后缓存该图片,方便下次再次访问时立即显示图片
37+
但在实际中,第一次加载后,浏览器通常会缓存该图片,并在下一次加载时,浏览器会立即拥有该图片的大小。但是在第一次加载时, `ball.offsetWidth` 的值为 `0`,这会导致错误的坐标
3838

39-
但是在第一次加载时 `ball.offsetWidth` 的值为 `0`,这会导致错误的坐标出现。
40-
41-
此时我们应该为 `<img>` 添加 `width/height` 属性:
39+
我们应该通过在 `<img>` 中添加 `width/height` 来解决这个问题:
4240

4341
```html
4442
<img src="ball.png" *!*width="40" height="40"*/!* id="ball">
4543
```
4644

47-
...或者在 CSS 中提供尺寸
45+
……或者在 CSS 中提供大小
4846

4947
```css
5048
#ball {

2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/task.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@ importance: 5
22

33
---
44

5-
# 将小球置于有效范围的中心
5+
# 将小球置于场(field)中心
66

7-
这是源文件
7+
源文件的效果如下
88

99
[iframe src="source" edit link height=180]
1010

11-
有效范围的中心坐标是多少
11+
场(field)的中心坐标是多少
1212

13-
计算并将小球置于有效范围中心
13+
计算它们,并将小球置于场(field)中心
1414

1515
[iframe src="solution" height=180]
1616

17-
- 元素应该通过 JavaScript 移除,而不是 CSS。
18-
- 代码应该在不限制小球尺寸`10``20``30` 像素)或任何有效范围内的尺寸的情况下正常运行,而不是直接为元素绑定尺寸
17+
- 该元素应该通过 JavaScript 移动,而不是 CSS。
18+
- 该代码应该适用于任何大小的球`10``20``30` 像素)以及任意大小的场(field),而不应该绑定到给定值
1919

20-
P.S. 当然了,置中的操作可以通过 CSS 完成,但是这里我们需要通过 JavaScript 完成。此外,当必须使用 JavaScript 时,我们可能会遇到其他话题或更加复杂的情况,这里我们只是做一个 “热身”。
20+
P.S. 当然了,置于中心的操作通过 CSS 也可以完成,但是这里我们需要通过 JavaScript 完成。此外,当必须使用 JavaScript 时,我们可能会遇到其他话题以及更加复杂的情况,这里我们只是做一个“热身”。
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
不同点:
22

3-
1. `clientWidth` 值是数值,然而 `getComputedStyle(elem).width` 返回一个包含 `px` 的字符串
4-
2. `getComputedStyle` 可能返回非数值的结果,例如内联元素的 `"auto"`
5-
3. `clientWidth` 是元素的内部内容区域加上内间距,而 CSS 宽度(具有标准的 `box-sizing`是内部**不包括内间距**的空间区域
6-
4. 如果有一个滚动条,一般浏览器保留它的空间,有的浏览器从 CSS 宽度中减去这个空间(因为它不再用于内容),而有些则不这样做`clientWidth` 属性总是相同的:如果保留了滚动条,那么它的宽度将被删去
3+
1. `clientWidth` 值是数值, `getComputedStyle(elem).width` 返回一个以 `px` 作为后缀的字符串
4+
2. `getComputedStyle` 可能会返回非数值的 width,例如内联(inline)元素的 `"auto"`
5+
3. `clientWidth` 是元素的内部内容区域加上 padding,而 CSS width(具有标准的 `box-sizing`是内部内容区域,**不包括 padding**
6+
4. 如果有滚动条,并且浏览器为其保留了空间,那么某些浏览器会从 CSS width 中减去该空间(因为它不再可用于内容),而有些则不会这样做`clientWidth` 属性总是相同的:如果为滚动条保留了空间,那么将减去滚动条的大小

2-ui/1-document/09-size-and-scroll/6-width-vs-clientwidth/task.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ importance: 5
22

33
---
44

5-
# 不同点:CSS 宽度与 clientWidth
5+
# CSS width 与 clientWidth 的不同点
66

7-
`getComputedStyle(elem).width``elem.clientWidth` 之间的差别在哪
7+
`getComputedStyle(elem).width``elem.clientWidth` 之间有什么不同点
88

9-
指出至少三种不同点,越多越好
9+
指出至少三种不同点。当然越多越好

0 commit comments

Comments
 (0)