From 32583616be82151dbba2b4b761a64cb39086a7a2 Mon Sep 17 00:00:00 2001 From: Jason Lam Date: Fri, 28 Jul 2023 18:41:08 +0800 Subject: [PATCH 01/13] [zh-cn]: Update translation of String.padStart() (#14634) Co-authored-by: Jason Ren <40999116+jasonren0403@users.noreply.github.com> --- .../global_objects/string/padstart/index.md | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/files/zh-cn/web/javascript/reference/global_objects/string/padstart/index.md b/files/zh-cn/web/javascript/reference/global_objects/string/padstart/index.md index 77b0a60ddd119e..f33b93dc6540c6 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/string/padstart/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/string/padstart/index.md @@ -5,13 +5,13 @@ slug: Web/JavaScript/Reference/Global_Objects/String/padStart {{JSRef}} -**`padStart()`** 方法用另一个字符串填充当前字符串(如果需要的话,会重复多次),以便产生的字符串达到给定的长度。从当前字符串的左侧开始填充。 +**`padStart()`** 方法用另一个字符串填充当前字符串(如果需要会重复填充),直到达到给定的长度。填充是从当前字符串的开头开始的。 {{EmbedInteractiveExample("pages/js/string-padstart.html")}} ## 语法 -```js +```js-nolint padStart(targetLength) padStart(targetLength, padString) ``` @@ -19,38 +19,37 @@ padStart(targetLength, padString) ### 参数 - `targetLength` - - : 当前字符串需要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。 + - : 当前 `str` 填充后的长度。如果该值小于或等于 `str.length`,则会直接返回当前 `str`。 - `padString` {{optional_inline}} - - : 填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断。此参数的默认值为 " "(U+0020)。 + - : 用于填充当前 `str` 的字符串。如果 `padString` 太长,无法适应 `targetLength`,则会从末尾被截断。默认值为 Unicode“空格”字符(U+0020)。 ### 返回值 -在原字符串开头填充指定的填充字符串直到目标长度所形成的新字符串。 +在开头填充 `padString` 直到达到给定的 `targetLength` 所形成的 {{jsxref("String")}}。 ## 示例 ### 简单示例 ```js -'abc'.padStart(10); // " abc" -'abc'.padStart(10, "foo"); // "foofoofabc" -'abc'.padStart(6,"123465"); // "123abc" -'abc'.padStart(8, "0"); // "00000abc" -'abc'.padStart(1); // "abc" +"abc".padStart(10); // " abc" +"abc".padStart(10, "foo"); // "foofoofabc" +"abc".padStart(6, "123465"); // "123abc" +"abc".padStart(8, "0"); // "00000abc" +"abc".padStart(1); // "abc" ``` ### 将数字转换为固定长度的字符串 ```js // JavaScript version of: (unsigned) -// printf "%0*d" width num +// printf "%0*d" width num function leftFillNum(num, targetLength) { - return num.toString().padStart(targetLength, 0); + return num.toString().padStart(targetLength, "0"); } const num = 123; -console.log(leftFillNum(num, 5)); -// 预期输出:"00123" +console.log(leftFillNum(num, 5)); // "00123" ``` ## 规范 @@ -63,6 +62,5 @@ console.log(leftFillNum(num, 5)); ## 参见 -- [Polyfill of `String.prototype.padStart` in `core-js`](https://github.com/zloirock/core-js#ecmascript-string-and-regexp) +- [`core-js` 中 `String.prototype.padStart` 的 polyfill](https://github.com/zloirock/core-js#ecmascript-string-and-regexp) - {{jsxref("String.prototype.padEnd()")}} -- [A polyfill](https://github.com/behnammodi/polyfill/blob/master/string.polyfill.js) From 58cf75f884999b3475b595c6cd3fbf098f34516c Mon Sep 17 00:00:00 2001 From: Jason Lam Date: Fri, 28 Jul 2023 18:41:24 +0800 Subject: [PATCH 02/13] [zh-cn]: Update translation of String.padEnd() (#14633) Co-authored-by: Jason Ren <40999116+jasonren0403@users.noreply.github.com> --- .../global_objects/string/padend/index.md | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/files/zh-cn/web/javascript/reference/global_objects/string/padend/index.md b/files/zh-cn/web/javascript/reference/global_objects/string/padend/index.md index e45a5ffaafd327..f2e216d6a13172 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/string/padend/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/string/padend/index.md @@ -5,13 +5,13 @@ slug: Web/JavaScript/Reference/Global_Objects/String/padEnd {{JSRef}} -**`padEnd()`** 方法会用一个字符串填充当前字符串(如果需要的话则重复填充),返回填充后达到指定长度的字符串。从当前字符串的末尾(右侧)开始填充。 +**`padEnd()`** 方法会将当前字符串从末尾开始填充给定的字符串(如果需要会重复填充),直到达到给定的长度。填充是从当前字符串的末尾开始的。 {{EmbedInteractiveExample("pages/js/string-padend.html")}} ## 语法 -```js +```js-nolint padEnd(targetLength) padEnd(targetLength, padString) ``` @@ -19,21 +19,23 @@ padEnd(targetLength, padString) ### 参数 - `targetLength` - - : 当前字符串需要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。 + - : 当前 `str` 填充后的长度。如果该值小于或等于 `str.length`,则会直接返回当前 `str`。 - `padString` {{optional_inline}} - - : 填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断。此参数的缺省值为 " "(U+0020)。 + - : 用于填充当前 `str` 的字符串。如果 `padString` 太长,无法适应 `targetLength`,则会被截断:对于从左到右的语言,左侧的部分将会被保留;对于从右到左的语言,右侧的部分将会被保留。默认值为“ ” (`U+0020`)。 ### 返回值 -在原字符串末尾填充指定的填充字符串直到目标长度所形成的新字符串。 +在当前 `str` 末尾填充 `padString` 直到达到给定的 `targetLength` 所形成的 {{jsxref("String")}}。 ## 示例 +### 使用 padEnd + ```js -'abc'.padEnd(10); // "abc " -'abc'.padEnd(10, "foo"); // "abcfoofoof" -'abc'.padEnd(6, "123456"); // "abc123" -'abc'.padEnd(1); // "abc" +"abc".padEnd(10); // "abc " +"abc".padEnd(10, "foo"); // "abcfoofoof" +"abc".padEnd(6, "123456"); // "abc123" +"abc".padEnd(1); // "abc" ``` ## 规范 @@ -46,6 +48,5 @@ padEnd(targetLength, padString) ## 参见 -- [Polyfill of `String.prototype.padEnd` in `core-js`](https://github.com/zloirock/core-js#ecmascript-string-and-regexp) +- [`core-js` 中 `String.prototype.padEnd` 的 polyfill](https://github.com/zloirock/core-js#ecmascript-string-and-regexp) - {{jsxref("String.prototype.padStart()")}} -- [A polyfill](https://github.com/behnammodi/polyfill/blob/master/string.polyfill.js) From ebe0b0ee27b9270ff1b61645a1b41346e0149afa Mon Sep 17 00:00:00 2001 From: Jason Ren <40999116+jasonren0403@users.noreply.github.com> Date: Fri, 28 Jul 2023 18:43:10 +0800 Subject: [PATCH 03/13] Update 'css FAQ' and fix prettier (#14548) Co-authored-by: A1lo --- .prettierignore | 1 - files/zh-cn/learn/css/howto/css_faq/index.md | 81 ++++++++++---------- 2 files changed, 39 insertions(+), 43 deletions(-) diff --git a/.prettierignore b/.prettierignore index 707554e6dcef7d..4c0ab9d179b0d5 100644 --- a/.prettierignore +++ b/.prettierignore @@ -30,7 +30,6 @@ build/ /files/ru/learn/server-side/django/forms/index.md /files/ru/learn/server-side/django/introduction/index.md /files/ru/learn/html/introduction_to_html/the_head_metadata_in_html/index.md -/files/zh-cn/learn/css/howto/css_faq/index.md /files/zh-cn/learn/server-side/django/forms/index.md # A full pass on all Markdown files is being performed. diff --git a/files/zh-cn/learn/css/howto/css_faq/index.md b/files/zh-cn/learn/css/howto/css_faq/index.md index 8c2655bc5b7a4c..86579c388400ea 100644 --- a/files/zh-cn/learn/css/howto/css_faq/index.md +++ b/files/zh-cn/learn/css/howto/css_faq/index.md @@ -1,27 +1,31 @@ --- title: CSS 常见问题 slug: Learn/CSS/Howto/CSS_FAQ -original_slug: Web/CSS/Common_CSS_Questions --- +{{LearnSidebar}} + +在本篇文章中,你会发现一些有关 CSS 的常见问题,这些问题及其解答可能会有助于你成为一名网站开发人员。 + ## 为什么有效的 CSS 没有正确的渲染? -浏览器使用 DOCTYPE 声明来选择是否使用更符合 Web 标准或兼容旧浏览器的 bug 的模式。在你的 HTML 的开始使用一个正确的和现代的 DOCTYPE 声明将改善浏览器标准执行。 +浏览器使用 `DOCTYPE` 声明来选择是否使用更符合 Web 标准或兼容旧浏览器缺陷的模式。在你的 HTML 的开始使用一个正确的和现代的 `DOCTYPE` 声明将改善浏览器标准执行。 现代浏览器主要有两种渲染模式: -- _怪异模式_:又称向后兼容模式,允许将传统网页渲染为作者意图。旧浏览器使用的非标准渲染规则。不完整的、不正确的、缺少 DOCTYPE 声明或已知的 DOCTYPE 声明中普遍使用 2001 年以前的文件将在怪异模式中呈现。 -- _标准模式_:浏览器试图严格遵守 W3C 标准。新 HTML 网页有望被设计为符合标准的浏览器,这样做的结果就是,用现代 DOCTYPE 声明的页面将被用标准模式呈现。 +- _怪异模式_:又称向后兼容模式,允许按照旧版浏览器使用的非标准渲染规则,按作者的意图呈现旧版网页。如果文档中存在不完整、不正确或缺失的 `DOCTYPE` 声明,或已知的 2001 年以前常用的 `DOCTYPE` 声明,则会以怪异模式渲染。 +- _标准模式_:浏览器试图严格遵守 W3C 标准。新的 HTML 页面预计是为符合标准的浏览器设计的,因此,带有现代 `DOCTYPE` 声明的页面将使用标准模式渲染。 -基于 Gecko 的浏览器,有三分之一 _[Almost Standards Mode](/zh-CN/docs/Gecko's_%22Almost_Standards%22_Mode)_,只有一些小怪癖。 +有三分之一的基于 Gecko 的浏览器处于[接近标准模式](https://zh.wikipedia.org/wiki/怪异模式#接近标准模式),只是有一些怪异行为。 -这是最常用的触发标准模式或准标准模式的 DOCTYPE 声明列表: +这是最常用的触发标准模式的 `DOCTYPE` 声明: ```html - /* 这一行是 HTML5 的 doctype 声明。使用该声明会使现代浏览器使用 -HTML5 解析器处理页面,这是推荐的 doctype 声明。*/ + ``` +你应该尽可能使用上述 doctype 声明。还有其他有效的传统 doctype 说明,它们会触发标准模式或接近标准模式: + ```html ``` @@ -38,33 +42,27 @@ HTML5 解析器处理页面,这是推荐的 doctype 声明。*/ ``` -请尽可能地使用 HTML 5 DOCTYPE。 - ## 为什么有效的 CSS 完全没有被渲染? 可能的原因如下: - 引入的 CSS 文件路径写错了。 - -- 为了使浏览器渲染样式文件,CSS 样式表必须用 `text/css` 的 MIME。如果 Web 服务器没有使用这种类型处理文件,则 CSS 也不会被应用。 +- 为了使浏览器渲染样式文件,CSS 样式表必须用 `text/css` 的 MIME 类型。如果 Web 服务器没有使用这种类型处理文件,则 CSS 也不会被应用。 ## `id` 和 `class` 有什么不同? -HTML 元素可以拥有一个 `id`/或 `class` 属性。 `id` 属性为元素指定应用一个有效名称,只能有一个具有该名称的元素。`class` 属性指定一个类名的元素,而这个名称可以被页面内的许多元素被使用。CSS 允许你可以对特定的 `id` 和/或类名的元素应用样式。 - -- 当你想要将样式规则应用于多个块和元素时,你应该使用 class 选择符。 +HTML 元素可以拥有一个 `id` 和(或)`class` 属性。`id` 属性为元素指定应用一个有效名称,只能有一个具有该名称的元素。`class` 属性指定一个类名的元素,而这个名称可以被页面内的许多元素被使用。CSS 允许你可以对特定的 `id` 和/或类名的元素应用样式。 -- 当你想给一个特定元素或块应用样式规则时就使用 ID 选择符。此样式将只用于与该特定 id 匹配的元素。 +- 当你想要将样式规则应用于多个块和元素时,你应该使用特定于类的样式。 +- 当你想给一个特定元素或块应用样式规则时就使用特定于 id 的样式。此样式将只用于与该特定 id 匹配的元素。 -较少样式的样式表通常性能更高。因此建议尽可能多地使用类,保留 id 作为特定用途(比如链接 label 标签和 form 元素或者为语义上唯一的元素应用样式): +一般建议尽量使用类,只有在特定用途(如连接标签和表单元素或用于必须在语义上唯一的样式元素)绝对必要时才使用 id: - 使用类名可以让样式具有可扩展性——即使目前只有一个元素使用这个规则集来定义样式,未来可能会添加更多。 - - 类名可以让你同时为多个元素赋予样式,减少样式表的大小,避免了为每一个 id 选择器撰写同样的样式信息。越小的样式表带来的性能体验也就越好。 - - 类名选择器比 id 选择器的[优先级](/zh-CN/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance#优先级)更低,所以可以很方便地覆盖它们。 -> **备注:** 在这篇文档中更深入层次的了解 [CSS 选择器](/zh-CN/docs/Learn/CSS/Building_blocks/Selectors)。 +> **备注:** 参见 [CSS 选择器](/zh-CN/docs/Learn/CSS/Building_blocks/Selectors),以了解详情。 ## 我如何还原属性的默认值? @@ -80,7 +78,7 @@ h1 { } ``` -从 CSS2 开始,情况就不一样了。关键字 [initial](/zh-CN/docs/Web/CSS/initial) 现在是一个有效的 CSS 属性。它将给定的 CSS 属性值重置为默认值。 +从 CSS2 开始,情况就不一样了。关键字 [initial](/zh-CN/docs/Web/CSS/initial) 现在是一个有效的 CSS 属性值。它将给定的 CSS 属性值重置为默认值。 ```css /* 标题元素的默认颜色为黑色 */ @@ -94,14 +92,14 @@ h1 { ## 我如何才可以从一个样式中衍生出另一种样式? -CSS 不允许这样做(请查阅 [Eric Meyer's note about the Working Group's stance](http://archivist.incutio.com/viewlist/css-discuss/2685))。但是,将多个类分配给单个元素,可以提供相同的效果。[CSS 变量](/zh-CN/docs/Web/CSS/Using_CSS_custom_properties) 也提供了一种方法来定义在多处复用的样式信息。 +CSS 并不完全允许用一种样式来定义另一种样式。但是,将多个类分配给单个元素,可以提供相同的效果。[CSS 变量](/zh-CN/docs/Web/CSS/Using_CSS_custom_properties)也提供了一种方法来定义在多处复用的样式信息。 ## 我该如何给一个元素分配多个类? HTML 元素可以通过列出的类属性,用空格分开它们。 ```html - -
... content of today's news ...
+
这是今天的新闻内容。
``` -如果相同的属性中声明的规则,解决冲突首先通过特异性,然后根据 CSS 声明的顺序。在 `class` 属性类的顺序是不相关的。 +如果两个规则中都声明了相同的属性,则首先通过特异性解决冲突,然后根据 CSS 声明的顺序解决冲突。`class` 属性中类的顺序与此无关。 ## 为什么我的样式规则不能正确地工作? -在语法上正确的样式规则可能在某些情况下不适用。你可以使用调试工具 CSS 面板的[规则视图](https://firefox-source-docs.mozilla.org/devtools-user/page_inspector/how_to/examine_and_edit_css/index.html)来调试这类问题。下面列出了最常见的忽略样式规则的实例: +在语法上正确的样式规则可能在某些情况下不适用。你可以使用调试工具 *CSS 面板*的[规则视图](https://firefox-source-docs.mozilla.org/devtools-user/page_inspector/how_to/examine_and_edit_css/index.html)来调试这类问题。下面列出了最常见的忽略样式规则的实例: ### HTML 元素层次结构 @@ -146,7 +144,7 @@ CSS 应用于 HTML 元素依靠于元素的层次结构。在任何 CSS 特异 ### 显式重定义样式规则 -在 CSS 样式表中,顺序 **非常** 重要。如果先定义了一个规则,然后又重新定义了同样的规则,会使用最后一个定义。 +在 CSS 样式表中,顺序**非常**重要。如果先定义了一个规则,然后又重新定义了同样的规则,会使用最后一个定义。 ```css #stockTicker { @@ -170,9 +168,9 @@ CSS 应用于 HTML 元素依靠于元素的层次结构。在任何 CSS 特异 为了避免此类错误,请对特定选择器仅定义一次规则,将属于那个选择器的规则归类于此组。 -### 使用便捷属性 +### 使用简写属性 -使用便捷属性的好处是语法更加紧凑。仅使用一部分便捷属性完全没有问题,但要注意,没有声明的属性将自动重置为默认状态,这意味着单个属性较靠前的规则可能会被隐式覆盖。 +使用简写属性的好处是语法更加紧凑。仅使用一部分简写属性完全没有问题,但要注意,没有声明的属性将自动重置为默认状态,这意味着单个属性较靠前的规则可能会被隐式覆盖。 ```css #stockTicker { @@ -190,12 +188,12 @@ CSS 应用于 HTML 元素依靠于元素的层次结构。在任何 CSS 特异
NYS: GE +1.0 ...
``` -在前一个示例中,问题发生在不同元素的规则中;但在同一个元素中问题也可能出现,因为顺序是 **重要** 的。 +在前一个示例中,问题发生在不同元素的规则中;但在同一个元素中问题也可能出现,因为顺序是**重要**的。 ```css #stockTicker { font-weight: bold; - font: 12px Verdana; /* font-weight is now normal */ + font: 12px Verdana; /* font-weight 现在为 normal */ } ``` @@ -230,7 +228,7 @@ body * { ### CSS 中的优先级 -当某个元素应用了多个规则时,规则的选择依赖于样式的 [优先级](/zh-CN/docs/Web/CSS/Specificity)。内联样式(HTML 的 `style` 属性)最高,ID 选择器次之,再其次是类选择器,最后是元素名称选择器。 +当某个元素应用了多个规则时,规则的选择依赖于样式的[优先级](/zh-CN/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance#优先级)。内联样式(HTML 的 `style` 属性)最高,ID 选择器次之,再其次是类选择器,最后是元素名称选择器。{{htmlelement("div")}} 的文本颜色将是红色的。 ```css div { @@ -245,35 +243,34 @@ div { ``` ```html -
This is red
+
我是红的
``` -当选择器具有多个部分时,规则会更加复杂。有关优先级计算的更多信息,请参阅 [CSS 2.1 Specification 6.4.3 章节](https://www.w3.org/TR/CSS21/cascade.html#specificity)。 +当选择器具有多个部分时,规则会更加复杂。有关优先级计算的更多信息,请参阅 [CSS 优先级文档](/zh-CN/docs/Web/CSS/Specificity)。 ## -moz-\*, -ms-\*, -webkit-\*, -o-\* 以及 -khtml-\* 属性有什么用? 这些被称为*前缀属性*的属性是 CSS 标准的扩展。这些是出于测试目的的使用,不至于污染标准命名空间,防止标准扩展时产生兼容性问题。 -不推荐在生产环境网站中使用这些属性,它们已经产生了巨大的网页兼容性混乱。例如,很多开发者只使用了 `-webkit-` 前缀版本的属性,但非前缀的版本已经在所有浏览器中得到支持,没有基于 Webkit 的浏览器很有可能会在今后丢失显示效果。这个问题过于严重,以至于其他浏览器也开始实现 `-webkit-` 前缀属性的别名以提升网站兼容性,即 [Compatibility Living Standard](https://compat.spec.whatwg.org/)。 +不推荐在生产环境网站中使用这些属性,它们已经产生了巨大的网页兼容性混乱。例如,很多开发者只使用了 `-webkit-` 前缀版本的属性,但非前缀的版本已经在所有浏览器中得到支持,没有基于 Webkit 的浏览器很有可能会在今后丢失显示效果。这个问题过于严重,以至于其他浏览器也开始实现 `-webkit-` 前缀属性的别名以提升网站兼容性,即[兼容性动态标准](https://compat.spec.whatwg.org/)。 实际上,大部分浏览器在实现实验性功能时都不使用 CSS 前缀,或者仅在 Nightly 浏览器版本或相似机制上实现它们。 如果需要使用前缀,建议先写带前缀的属性,然后再写不带前缀的标准版本。这样就可以在标准版本支持的时候覆盖掉前缀版本。例如: ```css --ms-transform: rotate(90deg); --webkit-transform: rotate(90deg); -transform: rotate(90deg); +-webkit-text-stroke: 4px navy; +text-stroke: 4px navy; ``` -> **备注:** 为更深层次了解处理前缀属性,请参阅 [跨浏览器测试](/zh-CN/docs/Learn/Tools_and_testing/Cross_browser_testing) 模块的 [处理常见的 HTML 和 CSS 问题](/zh-CN/docs/Learn/Tools_and_testing/Cross_browser_testing/HTML_and_CSS)。 +> **备注:** 为更深层次了解处理前缀属性,请参阅[跨浏览器测试](/zh-CN/docs/Learn/Tools_and_testing/Cross_browser_testing)模块的[处理常见的 HTML 和 CSS 问题——处理 CSS 前缀](/zh-CN/docs/Learn/Tools_and_testing/Cross_browser_testing/HTML_and_CSS#处理_css_前缀)。 -> **备注:** 为了解 Mozilla 前缀属性 CSS 的更多信息,请参阅 [Mozilla CSS 扩展](/zh-CN/docs/Web/CSS/Mozilla_Extensions)。 +> **备注:** 请参阅 [Mozilla CSS 扩展](/zh-CN/docs/Web/CSS/Mozilla_Extensions)和 [WebKit CSS 扩展](/zh-CN/docs/Web/CSS/WebKit_Extensions),以了解浏览器前缀 CSS 属性的列表。 ## z-index 属性与定位有什么关系? z-index 属性指定了元素的栈序。 -有较高 z-index/栈序的元素总是在有着较低 z-index/栈序的元素之前。z-index 只会在有着指定 position(`position:absolute`、`position:relative` 或 `position:fixed`)的元素上工作。 +具有较高 z-index/栈序的元素总是渲染于具有较低 z-index/栈序的元素之前。z-index 只会在有着指定 position(`position:absolute`、`position:relative` 或 `position:fixed`)的元素上工作。 -> **备注:** 请参阅 [定位](/zh-CN/docs/Learn/CSS/CSS_layout/Positioning) 文章,特别是 [介绍 z-index](/zh-CN/docs/Learn/CSS/CSS_layout/Positioning#介绍_z-index) 部分来深入学习。 +> **备注:** 请参阅[定位](/zh-CN/docs/Learn/CSS/CSS_layout/Positioning)文章,特别是[介绍 z-index](/zh-CN/docs/Learn/CSS/CSS_layout/Positioning#介绍_z-index) 部分来深入学习。 From e0f73ae86e34e36631d4594dc5f04453a6f4a422 Mon Sep 17 00:00:00 2001 From: "Queen Vinyl Da.i'gyu-Kazotetsu" Date: Fri, 28 Jul 2023 04:14:52 -0700 Subject: [PATCH 04/13] zh-cn: Format /web/svg using Prettier (#14672) --- .prettierignore | 1 - .../index.md | 131 ++++++---- .../web/svg/attribute/attributename/index.md | 2 +- .../web/svg/attribute/baseline-shift/index.md | 8 +- .../web/svg/attribute/baseprofile/index.md | 10 +- files/zh-cn/web/svg/attribute/begin/index.md | 2 +- .../web/svg/attribute/clip-path/index.md | 48 +++- files/zh-cn/web/svg/attribute/clip/index.md | 18 +- files/zh-cn/web/svg/attribute/color/index.md | 10 +- files/zh-cn/web/svg/attribute/cx/index.md | 70 +++-- files/zh-cn/web/svg/attribute/cy/index.md | 70 +++-- files/zh-cn/web/svg/attribute/d/index.md | 194 +++++++++----- .../zh-cn/web/svg/attribute/display/index.md | 18 +- files/zh-cn/web/svg/attribute/dur/index.md | 2 +- files/zh-cn/web/svg/attribute/dx/index.md | 8 +- files/zh-cn/web/svg/attribute/end/index.md | 2 +- .../web/svg/attribute/fill-opacity/index.md | 2 +- .../web/svg/attribute/fill-rule/index.md | 74 ++++-- files/zh-cn/web/svg/attribute/fill/index.md | 2 +- files/zh-cn/web/svg/attribute/filter/index.md | 2 +- .../web/svg/attribute/font-family/index.md | 8 +- files/zh-cn/web/svg/attribute/fr/index.md | 54 ++-- files/zh-cn/web/svg/attribute/from/index.md | 2 +- files/zh-cn/web/svg/attribute/fx/index.md | 47 ++-- files/zh-cn/web/svg/attribute/height/index.md | 11 +- files/zh-cn/web/svg/attribute/id/index.md | 9 +- files/zh-cn/web/svg/attribute/in/index.md | 74 ++++-- .../web/svg/attribute/kernelmatrix/index.md | 6 +- .../zh-cn/web/svg/attribute/keytimes/index.md | 46 ++-- .../web/svg/attribute/letter-spacing/index.md | 10 +- .../web/svg/attribute/marker-end/index.md | 27 +- .../web/svg/attribute/marker-start/index.md | 27 +- files/zh-cn/web/svg/attribute/mask/index.md | 6 +- files/zh-cn/web/svg/attribute/max/index.md | 22 +- files/zh-cn/web/svg/attribute/media/index.md | 12 +- .../zh-cn/web/svg/attribute/opacity/index.md | 6 +- files/zh-cn/web/svg/attribute/order/index.md | 6 +- .../web/svg/attribute/pathlength/index.md | 70 ++--- .../web/svg/attribute/patternunits/index.md | 30 ++- .../web/svg/attribute/pointer-events/index.md | 22 +- files/zh-cn/web/svg/attribute/points/index.md | 6 +- .../attribute/preserveaspectratio/index.md | 9 +- files/zh-cn/web/svg/attribute/r/index.md | 32 ++- files/zh-cn/web/svg/attribute/radius/index.md | 6 +- files/zh-cn/web/svg/attribute/result/index.md | 6 +- files/zh-cn/web/svg/attribute/rx/index.md | 26 +- files/zh-cn/web/svg/attribute/scale/index.md | 6 +- files/zh-cn/web/svg/attribute/seed/index.md | 6 +- .../svg/attribute/stroke-dasharray/index.md | 55 ++-- .../svg/attribute/stroke-dashoffset/index.md | 8 +- .../web/svg/attribute/stroke-linecap/index.md | 52 ++-- .../svg/attribute/stroke-linejoin/index.md | 177 +++++++++---- .../svg/attribute/stroke-miterlimit/index.md | 8 +- .../web/svg/attribute/stroke-opacity/index.md | 18 +- .../web/svg/attribute/stroke-width/index.md | 6 +- files/zh-cn/web/svg/attribute/stroke/index.md | 12 +- files/zh-cn/web/svg/attribute/style/index.md | 8 +- files/zh-cn/web/svg/attribute/target/index.md | 26 +- .../web/svg/attribute/text-anchor/index.md | 57 +++-- .../web/svg/attribute/transform/index.md | 127 ++++++--- files/zh-cn/web/svg/attribute/type/index.md | 2 +- files/zh-cn/web/svg/attribute/values/index.md | 1 + .../web/svg/attribute/vector-effect/index.md | 23 +- .../zh-cn/web/svg/attribute/version/index.md | 6 +- files/zh-cn/web/svg/attribute/y/index.md | 2 +- files/zh-cn/web/svg/content_type/index.md | 22 +- files/zh-cn/web/svg/element/a/index.md | 18 +- files/zh-cn/web/svg/element/animate/index.md | 14 +- .../web/svg/element/animatemotion/index.md | 9 +- .../web/svg/element/animatetransform/index.md | 30 ++- files/zh-cn/web/svg/element/circle/index.md | 8 +- files/zh-cn/web/svg/element/clippath/index.md | 19 +- files/zh-cn/web/svg/element/feblend/index.md | 29 ++- .../web/svg/element/fecolormatrix/index.md | 42 ++- .../svg/element/fecomponenttransfer/index.md | 36 ++- .../svg/element/fediffuselighting/index.md | 43 +++- .../web/svg/element/fedropshadow/index.md | 34 +-- .../web/svg/element/fegaussianblur/index.md | 30 +-- files/zh-cn/web/svg/element/feimage/index.md | 11 +- files/zh-cn/web/svg/element/filter/index.md | 11 +- .../web/svg/element/foreignobject/index.md | 19 +- files/zh-cn/web/svg/element/g/index.md | 7 +- files/zh-cn/web/svg/element/image/index.md | 16 +- .../web/svg/element/lineargradient/index.md | 14 +- files/zh-cn/web/svg/element/marker/index.md | 16 +- files/zh-cn/web/svg/element/mpath/index.md | 45 ++-- files/zh-cn/web/svg/element/path/index.md | 6 +- .../web/svg/element/radialgradient/index.md | 22 +- files/zh-cn/web/svg/element/rect/index.md | 6 +- files/zh-cn/web/svg/element/script/index.md | 16 +- files/zh-cn/web/svg/element/stop/index.md | 21 +- files/zh-cn/web/svg/element/style/index.md | 7 +- files/zh-cn/web/svg/element/svg/index.md | 28 +- files/zh-cn/web/svg/element/symbol/index.md | 29 ++- files/zh-cn/web/svg/element/textpath/index.md | 26 +- files/zh-cn/web/svg/element/tspan/index.md | 4 +- files/zh-cn/web/svg/linking/index.md | 2 +- .../web/svg/svg_animation_with_smil/index.md | 50 ++-- .../tutorial/clipping_and_masking/index.md | 28 +- .../svg/tutorial/fills_and_strokes/index.md | 8 +- .../web/svg/tutorial/filter_effects/index.md | 98 ++++--- .../web/svg/tutorial/getting_started/index.md | 6 +- .../zh-cn/web/svg/tutorial/gradients/index.md | 241 ++++++++++++------ .../zh-cn/web/svg/tutorial/patterns/index.md | 28 +- .../web/svg/tutorial/svg_and_css/index.md | 198 +++++++------- 105 files changed, 2026 insertions(+), 1125 deletions(-) diff --git a/.prettierignore b/.prettierignore index 4c0ab9d179b0d5..93ef1c28e73f10 100644 --- a/.prettierignore +++ b/.prettierignore @@ -93,4 +93,3 @@ build/ /files/zh-cn/web/css/**/*.md /files/zh-cn/web/html/**/*.md /files/zh-cn/web/javascript/reference/**/*.md -/files/zh-cn/web/svg/**/*.md diff --git a/files/zh-cn/web/svg/applying_svg_effects_to_html_content/index.md b/files/zh-cn/web/svg/applying_svg_effects_to_html_content/index.md index 85dfae74cc4811..716e02f2234db6 100644 --- a/files/zh-cn/web/svg/applying_svg_effects_to_html_content/index.md +++ b/files/zh-cn/web/svg/applying_svg_effects_to_html_content/index.md @@ -16,7 +16,11 @@ slug: Web/SVG/Applying_SVG_effects_to_HTML_content 要想在 CSS 样式中应用 SVG 效果,首先需要创建一个引用 SVG 的 CSS 样式。 ```html - + ``` 在上面的例子中,所有段落会被 [ID](/zh-CN/docs/Web/HTML/Global_attributes/id) 为 `my-mask` 的 [SVG ``](/zh-CN/docs/Web/SVG/Element/mask) 遮罩。 @@ -29,11 +33,11 @@ slug: Web/SVG/Applying_SVG_effects_to_HTML_content - - + + - - + + ``` @@ -55,14 +59,15 @@ p { ```html

- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt - ut labore et dolore magna aliqua. Ut enim ad minim veniam. + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.

- Lorem ipsum dolor sit amet, consectetur adipisicing - elit, sed do eiusmod tempor incididunt - ut labore et dolore magna aliqua. - Ut enim ad minim veniam. + Lorem ipsum dolor sit amet, consectetur adipisicing + elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + Ut enim ad minim veniam.

``` @@ -76,22 +81,23 @@ p { ```html

- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt - ut labore et dolore magna aliqua. Ut enim ad minim veniam. + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.

- Lorem ipsum dolor sit amet, consectetur adipisicing - elit, sed do eiusmod tempor incididunt - ut labore et dolore magna aliqua. - Ut enim ad minim veniam. + Lorem ipsum dolor sit amet, consectetur adipisicing + elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + Ut enim ad minim veniam.

- - + + ``` @@ -114,7 +120,7 @@ p { ```js function toggleRadius() { var circle = document.getElementById("circle"); - circle.r.baseVal.value = 0.40 - circle.r.baseVal.value; + circle.r.baseVal.value = 0.4 - circle.r.baseVal.value; } ``` @@ -126,15 +132,16 @@ function toggleRadius() { ```html

- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt - ut labore et dolore magna aliqua. Ut enim ad minim veniam. + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.

lorem

- Lorem ipsum dolor sit amet, consectetur adipisicing - elit, sed do eiusmod tempor incididunt - ut labore et dolore magna aliqua. - Ut enim ad minim veniam. + Lorem ipsum dolor sit amet, consectetur adipisicing + elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + Ut enim ad minim veniam.

``` @@ -143,7 +150,7 @@ function toggleRadius() { ```html - + ``` @@ -153,10 +160,11 @@ function toggleRadius() { ```html - + ``` @@ -166,20 +174,29 @@ function toggleRadius() { ```html - + - - + + - + ``` @@ -187,12 +204,24 @@ function toggleRadius() { 使用以下 CSS 应用五个过滤器: ```css -p.target { filter:url(#f3); } -p.target:hover { filter:url(#f5); } -b.target { filter:url(#f1); } -b.target:hover { filter:url(#f4); } -pre.target { filter:url(#f2); } -pre.target:hover { filter:url(#f3); } +p.target { + filter: url(#f3); +} +p.target:hover { + filter: url(#f5); +} +b.target { + filter: url(#f1); +} +b.target:hover { + filter: url(#f4); +} +pre.target { + filter: url(#f2); +} +pre.target:hover { + filter: url(#f3); +} ``` {{EmbedLiveSample('示例:Filtering', 650, 200)}} @@ -206,7 +235,7 @@ pre.target:hover { filter:url(#f3); } - + @@ -215,7 +244,9 @@ pre.target:hover { filter:url(#f3); } 你可以在同一个 class 中使用 SVG 和 CSS 过滤器: ```css -.blur { filter: url(#wherearemyglasses); } +.blur { + filter: url(#wherearemyglasses); +} ``` {{ EmbedLiveSample('示例:Blurred Text', 300, 100) }} @@ -241,7 +272,9 @@ SVG 还可以用于添加比纯 HTML 文本更动态、更灵活的文本添加 例如,CSS 规则在一个名为 default.css 的文件中,如下这样: ```css -.target { clip-path: url(resources.svg#c1); } +.target { + clip-path: url(resources.svg#c1); +} ``` 这个 SVG 就可以从一个名为 resources.svg 的文件中导入,clip 路径为 ID c1。 diff --git a/files/zh-cn/web/svg/attribute/attributename/index.md b/files/zh-cn/web/svg/attribute/attributename/index.md index f6f2119fb0ea14..d3a627960647f6 100644 --- a/files/zh-cn/web/svg/attribute/attributename/index.md +++ b/files/zh-cn/web/svg/attribute/attributename/index.md @@ -11,7 +11,7 @@ slug: Web/SVG/Attribute/attributeName | 类别 | 动画属性目标属性 | | -------- | ------------------------------------------------------------------------------------- | -| 值 | \ | +| 值 | \ | | 可变性 | No | | 规范文档 | [SVG 1.1 (2nd Edition)](http://www.w3.org/TR/SVG/animate.html#AttributeNameAttribute) | diff --git a/files/zh-cn/web/svg/attribute/baseline-shift/index.md b/files/zh-cn/web/svg/attribute/baseline-shift/index.md index fc01b4121995cc..1f6e7becfee3f1 100644 --- a/files/zh-cn/web/svg/attribute/baseline-shift/index.md +++ b/files/zh-cn/web/svg/attribute/baseline-shift/index.md @@ -11,11 +11,11 @@ slug: Web/SVG/Attribute/baseline-shift ## 用法 -| 类别 | 外观属性 | -| -------- | ---------------------------------------------------------------------------------------------------------- | +| 类别 | 外观属性 | +| -------- | --------------------------------------------------------------------------------------------------------------- | | 值 | **auto** \| baseline \| super \| sub \| \ \| [\](/zh-CN/SVG/Content_type#Length) \| inherit | -| 可变性 | Yes | -| 规范文档 | [SVG 1.1 (2nd Edition)](http://www.w3.org/TR/SVG11/text.html#BaselineShiftProperty) | +| 可变性 | Yes | +| 规范文档 | [SVG 1.1 (2nd Edition)](http://www.w3.org/TR/SVG11/text.html#BaselineShiftProperty) | - baseline - : 没有基线切换,`dominant-baseline`依然在原来的位置。 diff --git a/files/zh-cn/web/svg/attribute/baseprofile/index.md b/files/zh-cn/web/svg/attribute/baseprofile/index.md index b3996c2ce3dedd..0e943cd263b72c 100644 --- a/files/zh-cn/web/svg/attribute/baseprofile/index.md +++ b/files/zh-cn/web/svg/attribute/baseprofile/index.md @@ -29,11 +29,13 @@ slug: Web/SVG/Attribute/baseProfile ## 例子 ```html - - + ... - ``` diff --git a/files/zh-cn/web/svg/attribute/begin/index.md b/files/zh-cn/web/svg/attribute/begin/index.md index 9c0a462b85c2e8..a26c27b78f5a12 100644 --- a/files/zh-cn/web/svg/attribute/begin/index.md +++ b/files/zh-cn/web/svg/attribute/begin/index.md @@ -13,7 +13,7 @@ slug: Web/SVG/Attribute/begin | 类别 | 动画定时属性 | | -------- | ----------------------------------------------------------------------------- | -| 值 | \ | +| 值 | \ | | 可变性 | No | | 规范文档 | [SVG 1.1 (2nd Edition)](http://www.w3.org/TR/SVG/animate.html#BeginAttribute) | diff --git a/files/zh-cn/web/svg/attribute/clip-path/index.md b/files/zh-cn/web/svg/attribute/clip-path/index.md index 8b673cd1749a72..6862efef2167d2 100644 --- a/files/zh-cn/web/svg/attribute/clip-path/index.md +++ b/files/zh-cn/web/svg/attribute/clip-path/index.md @@ -14,7 +14,11 @@ slug: Web/SVG/Attribute/clip-path ## 示例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html @@ -24,24 +28,44 @@ html,body,svg { height:100% } - + - + - + - + ``` @@ -50,9 +74,9 @@ html,body,svg { height:100% } ## Usage notes | 值 | {{cssxref('url')}} \| [ {{cssxref('basic-shape')}} \|\| `` ] \| `none` | -| ---------- | ---------------------------------------------------------------------------------------------------- | -| 默认值 | `none` | -| Animatable | 是 | +| ---------- | ------------------------------------------------------------------------------------ | +| 默认值 | `none` | +| Animatable | 是 | - \ - : geometry-box 是应用 {{cssxref('basic-shape')}} 的额外信息,用于区分 CSS 基本形状如何应用于元素上:`fill-box` 表示将对象的包围框作为参照框;`stroke-box` 表示将对象的包围框加上描边的范围作为参照框;`view-box` 表示使用最近的 SVG 视窗作为参照框。 diff --git a/files/zh-cn/web/svg/attribute/clip/index.md b/files/zh-cn/web/svg/attribute/clip/index.md index f16e95e83cc2c6..e1e21428c9803e 100644 --- a/files/zh-cn/web/svg/attribute/clip/index.md +++ b/files/zh-cn/web/svg/attribute/clip/index.md @@ -14,20 +14,22 @@ As a presentation attribute, it can be applied to any element but it has effect ## 示例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html - + - + @@ -40,9 +42,9 @@ html,body,svg { height:100% } **Warning:** This property is deprecated. Use {{cssxref("clip-path")}} instead. | 可用值 | **auto** \| \ \| inherit | -| ---------- | ------------------------------ | -| 默认值 | Yes | -| Animatable | Yes | +| ---------- | ------------------------------- | +| 默认值 | Yes | +| Animatable | Yes | The value `auto` defines a clipping path along the bounds of the viewport created by the given element. diff --git a/files/zh-cn/web/svg/attribute/color/index.md b/files/zh-cn/web/svg/attribute/color/index.md index b16d41d55cb5f9..3c399ea1ca22c2 100644 --- a/files/zh-cn/web/svg/attribute/color/index.md +++ b/files/zh-cn/web/svg/attribute/color/index.md @@ -13,7 +13,7 @@ slug: Web/SVG/Attribute/color | 类别 | 外观属性 | | -------- | ---------------------------------------------------------------------------- | -| 值 | [\](/zh-CN/SVG/Content_type#Color) \| inherit | +| 值 | [\](/zh-CN/SVG/Content_type#Color) \| inherit | | 规范文档 | [SVG 1.1 (2nd Edition)](http://www.w3.org/TR/SVG11/color.html#ColorProperty) | ## 示例 @@ -22,7 +22,13 @@ slug: Web/SVG/Attribute/color - + ``` diff --git a/files/zh-cn/web/svg/attribute/cx/index.md b/files/zh-cn/web/svg/attribute/cx/index.md index 822497752f405b..16ef1c180c1bc3 100644 --- a/files/zh-cn/web/svg/attribute/cx/index.md +++ b/files/zh-cn/web/svg/attribute/cx/index.md @@ -12,17 +12,21 @@ slug: Web/SVG/Attribute/cx ## 示例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html - + - + @@ -35,9 +39,9 @@ html,body,svg { height:100% } 对于 {{SVGElement('circle')}},`cx` 用来定义图形中心的 x 轴坐标。 | 值 | **[\](/zh-CN/docs/Web/SVG/Content_type#Length)** \| **[\](/zh-CN/docs/Web/SVG/Content_type#Percentage)** | -| ------ | -------------------------------------------------------------------------------------------------------------- | -| 默认值 | `0` | -| 可变性 | Yes | +| ------ | ---------------------------------------------------------------------------------------------------------------------------- | +| 默认值 | `0` | +| 可变性 | Yes | 注:起始于 SVG2 `cx`,是一个几何属性,意味着该属性也可以用作圆的 CSS 属性。 @@ -46,9 +50,9 @@ html,body,svg { height:100% } 对于 {{SVGElement('ellipse')}},`cx` 用来定义图形中心的 x 轴坐标。 | 值 | **[\](/zh-CN/docs/Web/SVG/Content_type#Length)** \| **[\](/zh-CN/docs/Web/SVG/Content_type#Percentage)** | -| ------ | -------------------------------------------------------------------------------------------------------------- | -| 默认值 | `0` | -| 可变性 | Yes | +| ------ | ---------------------------------------------------------------------------------------------------------------------------- | +| 默认值 | `0` | +| 可变性 | Yes | **注:** 起始于 SVG2 `cx`,是一个几何属性,意味着该属性也可以用作椭圆的 CSS 属性。 @@ -57,41 +61,63 @@ html,body,svg { height:100% } 对于 {{SVGElement('radialGradient')}}, `cx` 用来定义径向渐变终止圆的 x 轴坐标。 | 值 | **[\](/zh-CN/docs/Web/SVG/Content_type#Length)** | -| ------ | ------------------------------------------------- | -| 默认值 | `50%` | -| 可变性 | Yes | +| ------ | -------------------------------------------------------- | +| 默认值 | `50%` | +| 可变性 | Yes | #### 示例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html - - + + - - + + - - + + - - - + + + ``` diff --git a/files/zh-cn/web/svg/attribute/cy/index.md b/files/zh-cn/web/svg/attribute/cy/index.md index c70e6687e682e2..55c89b1a5a292c 100644 --- a/files/zh-cn/web/svg/attribute/cy/index.md +++ b/files/zh-cn/web/svg/attribute/cy/index.md @@ -12,17 +12,21 @@ slug: Web/SVG/Attribute/cy ## 示例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html - + - + @@ -35,9 +39,9 @@ html,body,svg { height:100% } 对于 {{SVGElement('circle')}},`cy` 用来定义图形中心的 y 轴坐标。 | 值 | **[\](/zh-CN/docs/Web/SVG/Content_type#Length)** \| **[\](/zh-CN/docs/Web/SVG/Content_type#Percentage)** | -| ------ | -------------------------------------------------------------------------------------------------------------- | -| 默认值 | `0` | -| 可变性 | Yes | +| ------ | ---------------------------------------------------------------------------------------------------------------------------- | +| 默认值 | `0` | +| 可变性 | Yes | **注:**起始于 SVG2,`cy` 是一个几何属性,意味着该属性也可以用作圆的 CSS 属性。 @@ -46,9 +50,9 @@ html,body,svg { height:100% } 对于 {{SVGElement('ellipse')}},`cy` 用来定义图形中心的 y 轴坐标。 | 值 | **[\](/zh-CN/docs/Web/SVG/Content_type#Length)** \| **[\](/zh-CN/docs/Web/SVG/Content_type#Percentage)** | -| ------ | -------------------------------------------------------------------------------------------------------------- | -| 默认值 | `0` | -| 可变性 | Yes | +| ------ | ---------------------------------------------------------------------------------------------------------------------------- | +| 默认值 | `0` | +| 可变性 | Yes | **注:**起始于 SVG2,`cy` 是一个几何属性,意味着该属性也可以用作椭圆的 CSS 属性。 @@ -57,41 +61,63 @@ html,body,svg { height:100% } 对于 {{SVGElement('radialGradient')}},`cy` 用来定义径向渐变终止圆的 y 轴坐标。 | 值 | **[\](/zh-CN/docs/Web/SVG/Content_type#Length)** | -| ------ | ------------------------------------------------- | -| 默认值 | `50%` | -| 可变性 | Yes | +| ------ | -------------------------------------------------------- | +| 默认值 | `50%` | +| 可变性 | Yes | #### 示例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html - - + + - - + + - - + + - - - + + + ``` diff --git a/files/zh-cn/web/svg/attribute/d/index.md b/files/zh-cn/web/svg/attribute/d/index.md index 08b84e366c6f4c..a923be4486e0d5 100644 --- a/files/zh-cn/web/svg/attribute/d/index.md +++ b/files/zh-cn/web/svg/attribute/d/index.md @@ -16,12 +16,18 @@ slug: Web/SVG/Attribute/d ## 示例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html - - - @@ -397,21 +417,29 @@ _Lineto_ 指令将绘制一条直线段。这个直线段从*当前位置*(_P< #### 示例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html - - @@ -433,7 +461,7 @@ html,body,svg { height:100% } - 终点控制点 - : (_Pce_ = {_xce_, _yce_})(控制在终点附近的曲线的曲率) -绘制后,*终点*(_Pn_)将成为下一个命令中的*当前位置*(_Po′_)。 +绘制后,_终点_(_Pn_)将成为下一个命令中的*当前位置*(_Po′_)。 @@ -569,45 +597,60 @@ html,body,svg { height:100% } #### 示例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html - - + - - - - + - + - - + + - - - + + + @@ -617,7 +660,7 @@ html,body,svg { height:100% } ### 二次贝塞尔曲线 -*二次*[*贝塞尔曲线*](/zh-CN/docs/Glossary/Bezier_curve)是使用三个点定义的平滑曲线: +*二次[贝塞尔曲线](/zh-CN/docs/Glossary/Bezier_curve)*是使用三个点定义的平滑曲线: - 起始点(当前位置) - : _Po_ = {_xo_, _yo_} @@ -626,7 +669,7 @@ html,body,svg { height:100% } - 控制点 - : _Pc_ = {_xc_, _yc_}(控制曲率) -绘制后,*终点*(_Pn_)将成为下一个命令中的*当前位置*(_Po′_)。 +绘制后,_终点_(_Pn_)将成为下一个命令中的*当前位置*(_Po′_)。
@@ -760,15 +803,23 @@ html,body,svg { height:100% } #### 示例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html - - + - @@ -778,23 +829,31 @@ html,body,svg { height:100% } - - + + - + - + - + @@ -907,27 +966,38 @@ html,body,svg { height:100% } #### 示例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html - - - - - ``` @@ -960,34 +1030,40 @@ _ClosePath_ 命令将从*当前位置*绘制一条直线到路径中的第一个 #### 示例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html - - - - diff --git a/files/zh-cn/web/svg/attribute/display/index.md b/files/zh-cn/web/svg/attribute/display/index.md index 34c339e4fc85c2..c894aadb5827fd 100644 --- a/files/zh-cn/web/svg/attribute/display/index.md +++ b/files/zh-cn/web/svg/attribute/display/index.md @@ -28,7 +28,9 @@ As a presentation attribute, it can be applied to any element. ## 示例 ```css hidden -html, body, svg { +html, +body, +svg { height: 100%; } ``` @@ -41,7 +43,13 @@ html, body, svg { - + ``` @@ -49,10 +57,10 @@ html, body, svg { ## 使用说明 -| Default value | `inline` | -| ------------- | -------------------------------- | +| Default value | `inline` | +| ------------- | ------------------------ | | Value | {{csssyntax("display")}} | -| Animatable | Yes | +| Animatable | Yes | For a description of the values, please refer to the {{cssxref("display", "CSS display")}} property. diff --git a/files/zh-cn/web/svg/attribute/dur/index.md b/files/zh-cn/web/svg/attribute/dur/index.md index b921cd35a0524a..a3c05fe4ae8f3e 100644 --- a/files/zh-cn/web/svg/attribute/dur/index.md +++ b/files/zh-cn/web/svg/attribute/dur/index.md @@ -11,7 +11,7 @@ slug: Web/SVG/Attribute/dur | 类别 | 动画定时属性 | | -------- | --------------------------------------------------------------------------- | -| 值 | [\](/zh-CN/SVG/Content_type#Clock-value) \| **indefinite** | +| 值 | [\](/zh-CN/SVG/Content_type#Clock-value) \| **indefinite** | | 可变性 | No | | 规范文档 | [SVG 1.1 (2nd Edition)](http://www.w3.org/TR/SVG/animate.html#DurAttribute) | diff --git a/files/zh-cn/web/svg/attribute/dx/index.md b/files/zh-cn/web/svg/attribute/dx/index.md index c6d059c6e78c76..f1a83c66fd22f2 100644 --- a/files/zh-cn/web/svg/attribute/dx/index.md +++ b/files/zh-cn/web/svg/attribute/dx/index.md @@ -24,10 +24,10 @@ slug: Web/SVG/Attribute/dx ## 用法上下文 -| 分类 | 无 | -| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| 数值类型 | [\](/zh-CN/SVG/Content_type#Number) \| [T<.2Fvar>s">\](/zh-CN/SVG/Content_type#List-of-T<.2Fvar>s) | -| 可变 | 是 | +| 分类 | 无 | +| -------- | ------------------------------------------------------------------------------------------------------------------------------- | +| 数值类型 | [\](/zh-CN/SVG/Content_type#Number) \| [T<.2Fvar>s">\](/zh-CN/SVG/Content_type#List-of-T<.2Fvar>s) | +| 可变 | 是 | ## 元素 diff --git a/files/zh-cn/web/svg/attribute/end/index.md b/files/zh-cn/web/svg/attribute/end/index.md index 21c6d6b0719b38..39973c740f9ddc 100644 --- a/files/zh-cn/web/svg/attribute/end/index.md +++ b/files/zh-cn/web/svg/attribute/end/index.md @@ -13,7 +13,7 @@ slug: Web/SVG/Attribute/end | 类别 | 动画定时属性 | | -------- | --------------------------------------------------------------------------- | -| 值 | \ | +| 值 | \ | | 可变性 | No | | 规范文档 | [SVG 1.1 (2nd Edition)](http://www.w3.org/TR/SVG/animate.html#EndAttribute) | diff --git a/files/zh-cn/web/svg/attribute/fill-opacity/index.md b/files/zh-cn/web/svg/attribute/fill-opacity/index.md index 42dfc5ea6d3a58..bdec1372375654 100644 --- a/files/zh-cn/web/svg/attribute/fill-opacity/index.md +++ b/files/zh-cn/web/svg/attribute/fill-opacity/index.md @@ -11,7 +11,7 @@ slug: Web/SVG/Attribute/fill-opacity | 类别 | 外观属性 | | -------- | ----------------------------------------------------------------------------------- | -| 值 | [\](/zh-CN/SVG/Content_type#Opacity_value) \| inherit | +| 值 | [\](/zh-CN/SVG/Content_type#Opacity_value) \| inherit | | 初始值 | 1 | | 可变性 | Yes | | 规范文档 | [SVG 1.1 (2nd Edition)](http://www.w3.org/TR/SVG/painting.html#FillOpacityProperty) | diff --git a/files/zh-cn/web/svg/attribute/fill-rule/index.md b/files/zh-cn/web/svg/attribute/fill-rule/index.md index 814e1acb803e38..84facdac874844 100644 --- a/files/zh-cn/web/svg/attribute/fill-rule/index.md +++ b/files/zh-cn/web/svg/attribute/fill-rule/index.md @@ -24,21 +24,29 @@ slug: Web/SVG/Attribute/fill-rule ## 示例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html - + - + ``` @@ -62,30 +70,40 @@ html,body,svg { height:100% } #### Example ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html - + - + - + ``` @@ -98,30 +116,40 @@ html,body,svg { height:100% } #### Example ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html - + - + - + ``` diff --git a/files/zh-cn/web/svg/attribute/fill/index.md b/files/zh-cn/web/svg/attribute/fill/index.md index e17ff051a2865d..47be234349f038 100644 --- a/files/zh-cn/web/svg/attribute/fill/index.md +++ b/files/zh-cn/web/svg/attribute/fill/index.md @@ -30,7 +30,7 @@ slug: Web/SVG/Attribute/fill | 类别 | 外观属性 | | -------- | ---------------------------------------------------------------------------- | -| 值 | [\](/zh-CN/SVG/Content_type#Paint) | +| 值 | [\](/zh-CN/SVG/Content_type#Paint) | | 可变性 | Yes | | 规范文档 | [SVG 1.1 (2nd Edition)](http://www.w3.org/TR/SVG/painting.html#FillProperty) | diff --git a/files/zh-cn/web/svg/attribute/filter/index.md b/files/zh-cn/web/svg/attribute/filter/index.md index fd5d559505c7d5..b169e3d9c89f2b 100644 --- a/files/zh-cn/web/svg/attribute/filter/index.md +++ b/files/zh-cn/web/svg/attribute/filter/index.md @@ -13,7 +13,7 @@ slug: Web/SVG/Attribute/filter | 类别 | 外观属性 | | -------- | ------------------------------------------------------------------------------- | -| 值 | [\](/zh-CN/SVG/Content_type#FuncIRI) \| **none** \| inherit | +| 值 | [\](/zh-CN/SVG/Content_type#FuncIRI) \| **none** \| inherit | | 可变性 | Yes | | 规范文档 | [SVG 1.1 (2nd Edition)](http://www.w3.org/TR/SVG11/filters.html#FilterProperty) | diff --git a/files/zh-cn/web/svg/attribute/font-family/index.md b/files/zh-cn/web/svg/attribute/font-family/index.md index 300167ae5c9111..d27187379ad98b 100644 --- a/files/zh-cn/web/svg/attribute/font-family/index.md +++ b/files/zh-cn/web/svg/attribute/font-family/index.md @@ -11,11 +11,11 @@ slug: Web/SVG/Attribute/font-family ## 使用上下文 -| 分类 | Presentation attribute | -| ----------------- | --------------------------------------------------------------------------------------- | +| 分类 | Presentation attribute | +| ----------------- | ------------------------------------------------------------------------------------------- | | 值 | [[\ \| \],]\* [\ \| \] \| inherit | -| 可动画 Animatable | Yes | -| 规范文档 | [SVG 1.1 (2nd Edition)](http://www.w3.org/TR/SVG11/text.html#FontFamilyProperty) | +| 可动画 Animatable | Yes | +| 规范文档 | [SVG 1.1 (2nd Edition)](http://www.w3.org/TR/SVG11/text.html#FontFamilyProperty) | ## 例子 diff --git a/files/zh-cn/web/svg/attribute/fr/index.md b/files/zh-cn/web/svg/attribute/fr/index.md index 932bae870f3499..41320d70c03f9e 100644 --- a/files/zh-cn/web/svg/attribute/fr/index.md +++ b/files/zh-cn/web/svg/attribute/fr/index.md @@ -11,7 +11,7 @@ slug: Web/SVG/Attribute/fr | 类别 | 无 | | -------- | ---------------------------------------------------------------------------------------------------------------------------- | -| 值 | [\](/zh-CN/docs/Web/SVG/Content_type#Length) | +| 值 | [\](/zh-CN/docs/Web/SVG/Content_type#Length) | | 可变性 | 非 | | 规范文档 | [SVG 1.1 (2nd Edition): The radialGradient element](http://www.w3.org/TR/SVG/pservers.html#RadialGradientElementCXAttribute) | @@ -20,25 +20,47 @@ slug: Web/SVG/Attribute/fr ```html - + - - - - + + + + - - - - - - (fx,fy) - (cx,cy) + + + + + + (fx,fy) + + + (cx,cy) + ``` diff --git a/files/zh-cn/web/svg/attribute/from/index.md b/files/zh-cn/web/svg/attribute/from/index.md index 4ec9a825bcb0cf..3398295bc5568a 100644 --- a/files/zh-cn/web/svg/attribute/from/index.md +++ b/files/zh-cn/web/svg/attribute/from/index.md @@ -11,7 +11,7 @@ slug: Web/SVG/Attribute/From | 类别 | 动画属性值 | | ---------- | ---------------------------------------------------------------------------- | -| 值 | \ | +| 值 | \ | | 动画特征 | No | | 标准化文档 | [SVG 1.1 (2nd Edition)](http://www.w3.org/TR/SVG/animate.html#FromAttribute) | diff --git a/files/zh-cn/web/svg/attribute/fx/index.md b/files/zh-cn/web/svg/attribute/fx/index.md index 22399314975224..8fc004cd8e8521 100644 --- a/files/zh-cn/web/svg/attribute/fx/index.md +++ b/files/zh-cn/web/svg/attribute/fx/index.md @@ -11,7 +11,7 @@ slug: Web/SVG/Attribute/fx | 类别 | 无 | | -------- | ---------------------------------------------------------------------------------------------------------------------------- | -| 值 | [\](/zh-CN/SVG/Content_type#Coordinate) | +| 值 | [\](/zh-CN/SVG/Content_type#Coordinate) | | 可变性 | 非 | | 规范文档 | [SVG 1.1 (2nd Edition): The radialGradient element](http://www.w3.org/TR/SVG/pservers.html#RadialGradientElementCXAttribute) | @@ -20,25 +20,40 @@ slug: Web/SVG/Attribute/fx ```html - + - - - - + + + + - - - - - - (fx,fy) - (cx,cy) + + + + + + (fx,fy) + + + (cx,cy) + ``` diff --git a/files/zh-cn/web/svg/attribute/height/index.md b/files/zh-cn/web/svg/attribute/height/index.md index 269ef49ebf2e11..49549cd5fe5c14 100644 --- a/files/zh-cn/web/svg/attribute/height/index.md +++ b/files/zh-cn/web/svg/attribute/height/index.md @@ -13,11 +13,12 @@ slug: Web/SVG/Attribute/height ```html - - - + + ``` diff --git a/files/zh-cn/web/svg/attribute/id/index.md b/files/zh-cn/web/svg/attribute/id/index.md index 49fd1fb5b9c1c6..b3a2155cc3da01 100644 --- a/files/zh-cn/web/svg/attribute/id/index.md +++ b/files/zh-cn/web/svg/attribute/id/index.md @@ -12,7 +12,11 @@ slug: Web/SVG/Attribute/id ## 示例 ```html - + + + + + + + + + + + + + + ``` diff --git a/files/zh-cn/web/svg/attribute/stroke-dashoffset/index.md b/files/zh-cn/web/svg/attribute/stroke-dashoffset/index.md index 48844f30a52436..adff6abb91af9c 100644 --- a/files/zh-cn/web/svg/attribute/stroke-dashoffset/index.md +++ b/files/zh-cn/web/svg/attribute/stroke-dashoffset/index.md @@ -13,11 +13,11 @@ slug: Web/SVG/Attribute/stroke-dashoffset ## 使用环境 -| 类别 | 显示属性 | -| ------ | ----------------------------------------------------------------------------------------------------- | +| 类别 | 显示属性 | +| ------ | ------------------------------------------------------------------------------------------------------------- | | 值 | [\](/zh-CN/SVG/Content_type#Percentage) \| [\](/zh-CN/SVG/Content_type#Length) \| inherit | -| 初始值 | 1 | -| 可动画 | Yes | +| 初始值 | 1 | +| 可动画 | Yes | ## 示例 diff --git a/files/zh-cn/web/svg/attribute/stroke-linecap/index.md b/files/zh-cn/web/svg/attribute/stroke-linecap/index.md index 974592ccf4a431..5953085e517bf1 100644 --- a/files/zh-cn/web/svg/attribute/stroke-linecap/index.md +++ b/files/zh-cn/web/svg/attribute/stroke-linecap/index.md @@ -20,24 +20,40 @@ slug: Web/SVG/Attribute/stroke-linecap ```html - - - - - - - - - + + + + + + + + ``` diff --git a/files/zh-cn/web/svg/attribute/stroke-linejoin/index.md b/files/zh-cn/web/svg/attribute/stroke-linejoin/index.md index c0b0ea7e691a15..1865bd1f3be5e0 100644 --- a/files/zh-cn/web/svg/attribute/stroke-linejoin/index.md +++ b/files/zh-cn/web/svg/attribute/stroke-linejoin/index.md @@ -23,7 +23,11 @@ slug: Web/SVG/Attribute/stroke-linejoin ## 示例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html @@ -32,49 +36,66 @@ html,body,svg { height:100% } Upper left path: Effect of the "miter" value --> - + - + - + - + - - + - - - + + + @@ -102,22 +123,32 @@ html,body,svg { height:100% } #### 示例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html - + - + @@ -134,22 +165,28 @@ The `bevel` 用斜角连接路径段。 #### 示例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html - + - + @@ -168,23 +205,37 @@ The `miter` 用尖角连接路径段。通过在路径段的切线处延伸笔 #### 示例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html - + - + - + @@ -193,10 +244,14 @@ html,body,svg { height:100% } - - + + - + ``` @@ -214,22 +269,36 @@ The `miter-clip` 用尖角连接路径段。通过在路径段的切线处延伸 #### 示例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html - + - + - + @@ -238,10 +307,14 @@ html,body,svg { height:100% } - - + + - + ``` @@ -255,22 +328,28 @@ html,body,svg { height:100% } #### 示例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html - + - + diff --git a/files/zh-cn/web/svg/attribute/stroke-miterlimit/index.md b/files/zh-cn/web/svg/attribute/stroke-miterlimit/index.md index d6c33c713773a3..14121463e4c459 100644 --- a/files/zh-cn/web/svg/attribute/stroke-miterlimit/index.md +++ b/files/zh-cn/web/svg/attribute/stroke-miterlimit/index.md @@ -17,11 +17,11 @@ miterLength / stroke-width = 1 / sin ( theta / 2 ) ## 用法 -| 类别 | 外观属性 | -| ------ | ----------------------- | +| 类别 | 外观属性 | +| ------ | ------------------------ | | 值 | \ \| inherit | -| 初始值 | 4 | -| 可动性 | Yes | +| 初始值 | 4 | +| 可动性 | Yes | - \ - : 对斜角长度与{{ SVGAttr("stroke-width") }}的比率的限制。\的值必须是一个大于或等于 1 的[\](/zh-CN/SVG/Content_type#Number)。 diff --git a/files/zh-cn/web/svg/attribute/stroke-opacity/index.md b/files/zh-cn/web/svg/attribute/stroke-opacity/index.md index b52a535b40703a..55e6f220d240df 100644 --- a/files/zh-cn/web/svg/attribute/stroke-opacity/index.md +++ b/files/zh-cn/web/svg/attribute/stroke-opacity/index.md @@ -11,10 +11,10 @@ slug: Web/SVG/Attribute/stroke-opacity ## 用法 -| 类别 | 外观属性 | -| ------ | -------------------------- | +| 类别 | 外观属性 | +| ------ | --------------------------- | | 值 | \ \| inherit | -| 可变性 | Yes | +| 可变性 | Yes | - \ - : 在当前对象的轮廓上用该涂色操作的不透明度。任何超出 0.0 到 1.0 范围的值都会被压回这个范围(0.0 表示完全透明,1.0 表示完全不透明)。 @@ -25,18 +25,18 @@ slug: Web/SVG/Attribute/stroke-opacity ```html - + ``` ### CSS ```css -rect{ - fill:#b4da55; - stroke:#000; - stroke-width:10px; - stroke-opacity:0.3; +rect { + fill: #b4da55; + stroke: #000; + stroke-width: 10px; + stroke-opacity: 0.3; } ``` diff --git a/files/zh-cn/web/svg/attribute/stroke-width/index.md b/files/zh-cn/web/svg/attribute/stroke-width/index.md index dc4e26c5e9b08d..81999bc29fa8f8 100644 --- a/files/zh-cn/web/svg/attribute/stroke-width/index.md +++ b/files/zh-cn/web/svg/attribute/stroke-width/index.md @@ -11,10 +11,10 @@ slug: Web/SVG/Attribute/stroke-width ## 用法 -| 类别 | 外观属性 | -| ------ | ----------------------------------------------------------------------------------------------------- | +| 类别 | 外观属性 | +| ------ | ------------------------------------------------------------------------------------------------------------- | | 值 | [\](/zh-CN/SVG/Content_type#Length) \| [\](/zh-CN/SVG/Content_type#Percentage) \| inherit | -| 可变性 | Yes | +| 可变性 | Yes | ## 示例 diff --git a/files/zh-cn/web/svg/attribute/stroke/index.md b/files/zh-cn/web/svg/attribute/stroke/index.md index b693f429dbef9e..8631dfa7157902 100644 --- a/files/zh-cn/web/svg/attribute/stroke/index.md +++ b/files/zh-cn/web/svg/attribute/stroke/index.md @@ -9,10 +9,10 @@ slug: Web/SVG/Attribute/stroke ## 用法 -| 类别 | 外观属性 | -| ------ | ------------------------------------- | +| 类别 | 外观属性 | +| ------ | ----------------------------------------- | | 值 | [\](/zh-CN/SVG/Content_type#Paint) | -| 可变性 | 是 | +| 可变性 | 是 | ## 示例 @@ -21,8 +21,8 @@ slug: Web/SVG/Attribute/stroke ### 示例 1:用 stroke 属性画一条绿色的直线。 ```html - - + + ``` @@ -30,7 +30,7 @@ slug: Web/SVG/Attribute/stroke ```html - + ``` diff --git a/files/zh-cn/web/svg/attribute/style/index.md b/files/zh-cn/web/svg/attribute/style/index.md index 7683eb7c6343c6..a79e7a90558f97 100644 --- a/files/zh-cn/web/svg/attribute/style/index.md +++ b/files/zh-cn/web/svg/attribute/style/index.md @@ -23,8 +23,12 @@ slug: Web/SVG/Attribute/style ```html - + ``` diff --git a/files/zh-cn/web/svg/attribute/target/index.md b/files/zh-cn/web/svg/attribute/target/index.md index be375a38d545c8..4ceb4f8665dba6 100644 --- a/files/zh-cn/web/svg/attribute/target/index.md +++ b/files/zh-cn/web/svg/attribute/target/index.md @@ -12,14 +12,19 @@ slug: Web/SVG/Attribute/target ## 示例 ```css hidden -html, body, svg { - height: 100%; +html, +body, +svg { + height: 100%; } text { - font: 20px Arial, Helvetica, sans-serif; - fill: blue; - text-decoration: underline; + font: + 20px Arial, + Helvetica, + sans-serif; + fill: blue; + text-decoration: underline; } ``` @@ -27,13 +32,13 @@ text { 在 iframe 中打开链接 - + 在新标签页或窗口中打开链接 - + 在此标签或窗口中打开链接 - + ``` @@ -47,6 +52,7 @@ text { | 可动画的 | 是 | - `_replace` {{deprecated_inline}} + - : 当前 SVG 图像被与当前 SVG 图像在同一帧中相同矩形区域中的链接内容替换。 > **备注:** 这个值是从来没有很好的执行,之间的区别 `_replace`,并 `_self` 已通过在浏览上下文的 HTML 定义的变化变得多余。使用 `_self` 以取代目前的 SVG 文件。 @@ -58,9 +64,9 @@ text { - `_top` - : 完整活动窗口或选项卡的内容将由链接的内容替换(如果存在),并且可以从此文档中安全地访问 - `_blank` - - : 如果此文档可以安全地显示,则需要一个新的未命名窗口或标签来显示链接的内容。如果用户代理不支持多个窗口/选项卡,则结果与_top 相同。 + - : 如果此文档可以安全地显示,则需要一个新的未命名窗口或标签来显示链接的内容。如果用户代理不支持多个窗口/选项卡,则结果与\_top 相同。 - `` - - : 指定用于显示链接内容的浏览上下文的名称(选项卡,内联框架,对象等)。如果具有该名称的上下文已经存在,并且可以从此文档中安全地访问,则可以重新使用该上下文,替换现有内容。如果不存在,则创建它(与'_blank'相同,但现在有了一个名称)。该名称必须是有效的 XML 名称 \[XML11],并且不能以下划线(U + 005F LOW LINE 字符)开头,以满足来自 HTML 的有效浏览上下文名称的要求。 + - : 指定用于显示链接内容的浏览上下文的名称(选项卡,内联框架,对象等)。如果具有该名称的上下文已经存在,并且可以从此文档中安全地访问,则可以重新使用该上下文,替换现有内容。如果不存在,则创建它(与'\_blank'相同,但现在有了一个名称)。该名称必须是有效的 XML 名称 \[XML11],并且不能以下划线(U + 005F LOW LINE 字符)开头,以满足来自 HTML 的有效浏览上下文名称的要求。 ## 规范 diff --git a/files/zh-cn/web/svg/attribute/text-anchor/index.md b/files/zh-cn/web/svg/attribute/text-anchor/index.md index 0466f5d0dca633..ab244bcd9cf8ce 100644 --- a/files/zh-cn/web/svg/attribute/text-anchor/index.md +++ b/files/zh-cn/web/svg/attribute/text-anchor/index.md @@ -29,33 +29,36 @@ slug: Web/SVG/Attribute/text-anchor ```html - - - - - - - - A - - A - - A - - - - - - - + + + + + + A + + A + + A + + + + + + + ``` diff --git a/files/zh-cn/web/svg/attribute/transform/index.md b/files/zh-cn/web/svg/attribute/transform/index.md index f1e63831a28f50..9fac2a8efcaeb7 100644 --- a/files/zh-cn/web/svg/attribute/transform/index.md +++ b/files/zh-cn/web/svg/attribute/transform/index.md @@ -10,20 +10,30 @@ slug: Web/SVG/Attribute/transform ## 示例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html - - + - + - + ``` @@ -36,9 +46,9 @@ html,body,svg { height:100% } 另外,作为 SVG 1.1 的遗留物,{{SVGElement('linearGradient')}}和{{SVGElement('radialGradient')}}支持 `gradientTransform` 属性,而{{SVGElement('pattern')}}支持 `patternTransform` 属性,两者的行为完全相同于 `transform` 属性 | Value | **[\](/zh-CN/docs/Web/SVG/Content_type#Transform-list)** | -| ------------- | ----------------------------------------------------------------- | -| Default value | _none_ | -| Animatable | Yes | +| ------------- | ------------------------------------------------------------------------ | +| Default value | _none_ | +| Animatable | Yes | ## Transform functions @@ -53,7 +63,11 @@ html,body,svg { height:100% } #### 举例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html @@ -84,8 +98,13 @@ html,body,svg { height:100% } newX = a * oldX + c * oldY + e = 3 * 40 - 1 * 30 + 30 = 120 newY = b * oldX + d * oldY + f = 1 * 40 + 3 * 30 + 40 = 170 --> - + ``` @@ -98,7 +117,11 @@ html,body,svg { height:100% } #### 举例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html @@ -107,16 +130,31 @@ html,body,svg { height:100% } - + - + - + ``` @@ -129,22 +167,23 @@ html,body,svg { height:100% } #### 举例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html - + - + - + @@ -160,7 +199,11 @@ html,body,svg { height:100% } #### 举例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html @@ -168,12 +211,16 @@ html,body,svg { height:100% } - + - + ``` @@ -186,15 +233,18 @@ html,body,svg { height:100% } #### 举例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html - + ``` @@ -207,15 +257,18 @@ html,body,svg { height:100% } #### 举例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html - + ``` diff --git a/files/zh-cn/web/svg/attribute/type/index.md b/files/zh-cn/web/svg/attribute/type/index.md index 153051db94350e..7d6a4f1022e884 100644 --- a/files/zh-cn/web/svg/attribute/type/index.md +++ b/files/zh-cn/web/svg/attribute/type/index.md @@ -51,7 +51,7 @@ type 属性是一个类属性,他在不同的使用语境下有不同的意思 | Categories | _None_ | | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| Value | \ | +| Value | \ | | Animatable | No | | Normative document | [SVG 1.1 (2nd Edition) : script](http://www.w3.org/TR/SVG11/script.html#ScriptElementTypeAttribute) [SVG 1.1 (2nd Edition) : style](http://www.w3.org/TR/SVG11/styling.html#StyleElementTypeAttribute) | diff --git a/files/zh-cn/web/svg/attribute/values/index.md b/files/zh-cn/web/svg/attribute/values/index.md index 9020e9cf9c868c..81ad40c3779aac 100644 --- a/files/zh-cn/web/svg/attribute/values/index.md +++ b/files/zh-cn/web/svg/attribute/values/index.md @@ -31,6 +31,7 @@ values 属性具有不同的含义,具体取决于使用的上下文,它可 | Animatable | Yes | - `` + - : 该值是一个数字列表,根据 type 属性的值来定义不同解释: - `type="matrix"`,`values` 是 20 个矩阵值(a00 a01 a02 a03 a04 a10 a11 ... a34)的列表,以空格和/或逗号分隔。 diff --git a/files/zh-cn/web/svg/attribute/vector-effect/index.md b/files/zh-cn/web/svg/attribute/vector-effect/index.md index 5a4055d436234a..9b54b9a34c8fad 100644 --- a/files/zh-cn/web/svg/attribute/vector-effect/index.md +++ b/files/zh-cn/web/svg/attribute/vector-effect/index.md @@ -36,15 +36,28 @@ slug: Web/SVG/Attribute/vector-effect ```html - + - + - + ``` diff --git a/files/zh-cn/web/svg/attribute/version/index.md b/files/zh-cn/web/svg/attribute/version/index.md index 017c00add646d1..f6e63aa7f045cf 100644 --- a/files/zh-cn/web/svg/attribute/version/index.md +++ b/files/zh-cn/web/svg/attribute/version/index.md @@ -11,10 +11,10 @@ slug: Web/SVG/Attribute/version ## Usage context -| 类别 | None | -| -------- | --------------------------------------- | +| 类别 | None | +| -------- | ------------------------------------------- | | 值 | [\](/zh-CN/SVG/Content_type#Number) | -| 动画属性 | No | +| 动画属性 | No | ## 规范 diff --git a/files/zh-cn/web/svg/attribute/y/index.md b/files/zh-cn/web/svg/attribute/y/index.md index be029cbc51124d..46de0be3f04c39 100644 --- a/files/zh-cn/web/svg/attribute/y/index.md +++ b/files/zh-cn/web/svg/attribute/y/index.md @@ -1,5 +1,5 @@ --- -title: 'y' +title: "y" slug: Web/SVG/Attribute/y --- diff --git a/files/zh-cn/web/svg/content_type/index.md b/files/zh-cn/web/svg/content_type/index.md index e426f4d4a76d5e..d3f7ff486f04ea 100644 --- a/files/zh-cn/web/svg/content_type/index.md +++ b/files/zh-cn/web/svg/content_type/index.md @@ -10,6 +10,7 @@ SVG 中使用了许多数据类型。本文列出了这些数据类型以及它 ## 角度 - \ + - : 可以用两种办法指定角度。如果用在样式表的属性的值中,`` 可以用如下方法定义:`plain angle ::= number (~"deg" | ~"grad" | ~"rad")?` 在这里 deg 标识了度数,grad 标识了斜率,rad 标识了弧度。对于定义在 CSS2 中的属性,必须提供一个角度单位标识符。对于在 SVG 特有的属性和它们对应的外观属性中的角度值,角度单位标识符是可选的。如果没有提供,角度值会被潜在分配一个度数单位。在所有元素的外观属性中,无论是在 SVG1.1 中定义的,还是在 CSS2 中定义的,如果指定了角度标识符,角度标识符必须是小写的。如果角度用在一个 SVG 属性中,``可以用以下方式定义: ```plain @@ -21,6 +22,7 @@ SVG 中使用了许多数据类型。本文列出了这些数据类型以及它 ## 任意值 - \ + - : 基本类型 \ 是一个零字符或多字符的序列。具体如下: ```plain @@ -32,6 +34,7 @@ SVG 中使用了许多数据类型。本文列出了这些数据类型以及它 ## 时钟值 - \ + - : 时钟值的句法与 [SMIL Animation](https://www.w3.org/TR/2001/REC-smil-animation-20010904/) 规范中写的句法相同。在这里重放一下时钟值的语法: ``` @@ -52,14 +55,17 @@ SVG 中使用了许多数据类型。本文列出了这些数据类型以及它 对于 `Timecount` 值,默认的公制前缀是“s”(秒)。在时钟值中不能嵌入空白,而且前导和末尾的空白字符会被忽略掉。下面是合法的时钟值的示例: - 完整时钟值: + - `02:30:03` >= 2 小时 30 分钟又 3 秒 - `50:00:10.25` = 50 小时 10 秒又 250 毫秒 - 部分时钟值: + - `02:33` >= 2 分钟又 33 秒 - `00:10.5` = 10.5 秒 = 10 秒又 500 毫秒 - Timecount 值: + - `3.2h` >= 3.2 小时 = 3 小时 12 分钟 - `45min` >= 45 分钟 - `30s` >= 30 秒 @@ -73,6 +79,7 @@ SVG 中使用了许多数据类型。本文列出了这些数据类型以及它 ## 颜色 - \ + - : 基本类型\是一个 CSS2 兼容的规范,针对 sRGB 颜色空间的颜色。\ 应用在 SVG 的属性 {{SVGAttr("color")}} 上,也是属性{{SVGAttr("fill")}}、属性{{SVGAttr("stroke")}}、属性{{SVGAttr("stop-color")}}、属性 {{SVGAttr("flood-color")}}和属性{{SVGAttr("lighting-color")}}的定义的组成部分,\ 还提供了可选的基于 ICC 的颜色规范。 SVG 支持所有的定义在[CSS2 句法和基本数据类型](http://www.w3.org/TR/2008/REC-CSS2-20080411/syndata.html#value-def-color)中的 \ 供选择的句法,而且还支持[CSS Color Module Level 3](http://www.w3.org/TR/css3-color/)中的 \ 句法(取决于编译器)。 @@ -99,6 +106,7 @@ SVG 中使用了许多数据类型。本文列出了这些数据类型以及它 ## 频率 - \ + - : 频率值用在可听到的属性上。就如 CSS2 中所定义的,一个频率值是一个 [\](/zh-CN/docs/SVG/Content_type#Number) 后面跟着一个频率单位标识符。频率单位标识符可以是: - `Hz`:赫兹 @@ -114,6 +122,7 @@ SVG 中使用了许多数据类型。本文列出了这些数据类型以及它 ## ICC 颜色 - \ + - : \ 一份 ICC 颜色规范。在 SVG 1.1,一份 ICC 颜色规范,顾名思义,是一个参考了一个{{SVGElement("color-profile")}} 元素,以及一个或更多颜色成分值。语法如下所示: ```plain @@ -125,6 +134,7 @@ SVG 中使用了许多数据类型。本文列出了这些数据类型以及它 ## 整型数 - \ + - : 用一个可选的正负符号(“+”或“-”)后面跟着一个或多个 0 到 9 的数字可以指定一个\: ```plain @@ -136,6 +146,7 @@ SVG 中使用了许多数据类型。本文列出了这些数据类型以及它 ## IRI - \ + - : 一个国际化资源标识符。在因特网上,资源是用 _IRI_(一个国际化资源标识符)标识的。举个例子,一个 SVG 文档调用了位于 `http://example.com` 上的 `someDrawing.svg`,可以使用下面的 _IRI_: ``` @@ -159,7 +170,7 @@ SVG 中使用了许多数据类型。本文列出了这些数据类型以及它 然后你再引用这个线性渐变,作为矩形的属性 {{SVGAttr("fill")}} 的值,如下: ```html - + ``` SVG 支持两种类型的 _IRI_ 引用: @@ -172,6 +183,7 @@ SVG 中使用了许多数据类型。本文列出了这些数据类型以及它 ## 长度 - \ + - : 一个长度是一个可度量的距离,给定一个数字以及一个单位。长度可以用两种方法指定。如果在样式表中使用它,可以如下定义\: ``` @@ -200,17 +212,19 @@ SVG 中使用了许多数据类型。本文列出了这些数据类型以及它 ## T 值数列 - \ + - : (在这里*T* 某些类型。)由一系列分开的值构成的数列。除非另有说明,SVG 的 XML 属性内的数列既可以是逗号分隔的,也可以是空格分隔的。用逗号作分隔符,逗号前面或后面可有带空格。数列中的空白被定义为一个或多个下列连续字符:“空格”(U+0020)、“制表符”(U+0009)、 “换行符”(U+000A)、 “回车符”(U+000D)以及“换页符”(U+000C)。下面是一个 EBNF 语法的模板,用来描述\句法: ```plain list-of-Ts ::= T | T, list-of-Ts ``` - 在 SVG DOM 内部,\类型的值可以用一个限特定类型 _T_ 的接口来表达。举个例子,SVG DOM 中的\使用一个 {{domxref("SVGLengthList")}} 对象或者 {{domxref("SVGAnimatedLengthList")}} 对象来表达。 + 在 SVG DOM 内部,\类型的值可以用一个限特定类型 \_T_ 的接口来表达。举个例子,SVG DOM 中的\使用一个 {{domxref("SVGLengthList")}} 对象或者 {{domxref("SVGAnimatedLengthList")}} 对象来表达。 ## 命名 - \ + - : 一个命名,是一个字符串,是不符合句法意义的少量的字符。 ```plain @@ -220,6 +234,7 @@ SVG 中使用了许多数据类型。本文列出了这些数据类型以及它 ## 数字 - \ + - : 真实数字可以用两种方法指定。如果用在样式表中,一个 \ 可以如下定义:`plain number ::= integer | [+-]? [0-9]* "." [0-9]+` 该句法与 CSS(CSS2 第 4.3.1 章节)中的定义一样。如果用在一个 SVG 属性中,一个 \ 可以用别的方法定义,允许一个数字后面跟着大数指数,以指定得更精确: ```plain @@ -231,6 +246,7 @@ SVG 中使用了许多数据类型。本文列出了这些数据类型以及它 ## 带可取舍的后缀数字的数字 - \ + - : 一对\,其中第二个 \ 是可视情况取舍的。 ```plain @@ -252,6 +268,7 @@ SVG 中使用了许多数据类型。本文列出了这些数据类型以及它 ## 百分数 - \ + - : 一个数字后面跟着一个百分号“%”就可以指定一个百分数。 ```plain @@ -263,6 +280,7 @@ SVG 中使用了许多数据类型。本文列出了这些数据类型以及它 ## 时间 - \
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. - Sed mollis mollis mi ut ultricies. Nullam magna ipsum, - porta vel dui convallis, rutrum imperdiet eros. Aliquam - erat volutpat. + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed mollis mollis + mi ut ultricies. Nullam magna ipsum, porta vel dui convallis, rutrum + imperdiet eros. Aliquam erat volutpat.
diff --git a/files/zh-cn/web/svg/element/g/index.md b/files/zh-cn/web/svg/element/g/index.md index 204ee36855a92e..00550aa633711d 100644 --- a/files/zh-cn/web/svg/element/g/index.md +++ b/files/zh-cn/web/svg/element/g/index.md @@ -14,8 +14,11 @@ slug: Web/SVG/Element/g ## 示例 ```html - + diff --git a/files/zh-cn/web/svg/element/image/index.md b/files/zh-cn/web/svg/element/image/index.md index e261ff6380da9f..c563a26b2ab7b4 100644 --- a/files/zh-cn/web/svg/element/image/index.md +++ b/files/zh-cn/web/svg/element/image/index.md @@ -49,10 +49,18 @@ SVG 文件是这样的一种图像:不被当做外部资源加载,不可以 在 SVG 对象中基本呈现 PNG 图像: ```html - - + + ``` diff --git a/files/zh-cn/web/svg/element/lineargradient/index.md b/files/zh-cn/web/svg/element/lineargradient/index.md index 714f1c51f9dd19..d3aa3ac847e406 100644 --- a/files/zh-cn/web/svg/element/lineargradient/index.md +++ b/files/zh-cn/web/svg/element/lineargradient/index.md @@ -14,15 +14,21 @@ slug: Web/SVG/Element/linearGradient ## 示例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html - + - + diff --git a/files/zh-cn/web/svg/element/marker/index.md b/files/zh-cn/web/svg/element/marker/index.md index c16295c227d74a..8ca23f80e804e7 100644 --- a/files/zh-cn/web/svg/element/marker/index.md +++ b/files/zh-cn/web/svg/element/marker/index.md @@ -164,24 +164,24 @@ svg { ## 属性 - {{SVGAttr("markerHeight")}} - - : 该属性定义了 marker 视口的高度。*值的类型*:**[\](/zh-CN/docs/Web/SVG/Content_type#长度)**;*默认值*:`3`;*动画性*:**有** + - : 该属性定义了 marker 视口的高度。_值的类型_:**[\](/zh-CN/docs/Web/SVG/Content_type#长度)**;_默认值_:`3`;_动画性_:**有** - {{SVGAttr("markerUnits")}} - - : 该属性为 `markerWidth`、`markerHeight` 和 `` 的内容定义了坐标系。*值的类型*:`userSpaceOnUse`|`strokeWidth` ;*默认值*:`strokeWidth`;*动画性*:**有** + - : 该属性为 `markerWidth`、`markerHeight` 和 `` 的内容定义了坐标系。_值的类型_:`userSpaceOnUse`|`strokeWidth` ;_默认值_:`strokeWidth`;_动画性_:**有** - {{SVGAttr("markerWidth")}} - - : 该属性定义了 marker 视图的宽度。*值的类型*:**[\](/zh-CN/docs/Web/SVG/Content_type#长度)** ;*默认值*:`3`;*动画性*:**有** + - : 该属性定义了 marker 视图的宽度。_值的类型_:**[\](/zh-CN/docs/Web/SVG/Content_type#长度)** ;_默认值_:`3`;_动画性_:**有** - {{SVGAttr("orient")}} - - : 该属性定义了 marker 相对于它所附着到形状的方向。*值的类型*:`auto`|`auto-start-reverse`|**[\](/zh-CN/docs/Web/SVG/Content_type#角度)** ;*默认值*:`0`;*动画性*:**有** + - : 该属性定义了 marker 相对于它所附着到形状的方向。_值的类型_:`auto`|`auto-start-reverse`|**[\](/zh-CN/docs/Web/SVG/Content_type#角度)** ;_默认值_:`0`;_动画性_:**有** - {{SVGAttr("preserveAspectRatio")}} - - : 该属性定义了 svg 片段在嵌入具有不同宽高比例的容器中应该如何变形。*值的类型*:(`none`| `xMinYMin`| `xMidYMin`| `xMaxYMin`| `xMinYMid`| `xMidYMid`| `xMaxYMid`| `xMinYMax`| `xMidYMax`| `xMaxYMax`) (`meet`|`slice`)? ;*默认值*:`xMidYMid meet`;*动画性*:**有** + - : 该属性定义了 svg 片段在嵌入具有不同宽高比例的容器中应该如何变形。_值的类型_:(`none`| `xMinYMin`| `xMidYMin`| `xMaxYMin`| `xMinYMid`| `xMidYMid`| `xMaxYMid`| `xMinYMax`| `xMidYMax`| `xMaxYMax`) (`meet`|`slice`)? ;_默认值_:`xMidYMid meet`;_动画性_:**有** - {{SVGAttr("refX")}} - : 该属性定义了标记参考点的 x 的坐标。 - *值的类型*:`left`|`center`|`right`|**[\](/zh-CN/docs/Web/SVG/Content_type#坐标)** ;*默认值*:`0`;*动画性*:**有** + _值的类型_:`left`|`center`|`right`|**[\](/zh-CN/docs/Web/SVG/Content_type#坐标)** ;_默认值_:`0`;_动画性_:**有** - {{SVGAttr("refY")}} - : 该属性定义了标记参考点的 y 的坐标。 - *值的类型*:`top`|`center`|`bottom`|**[\](/zh-CN/docs/Web/SVG/Content_type#坐标)** ;*默认值*:`0`;*动画性*:**有** + _值的类型_:`top`|`center`|`bottom`|**[\](/zh-CN/docs/Web/SVG/Content_type#坐标)** ;_默认值_:`0`;_动画性_:**有** - {{SVGAttr("viewBox")}} - : 该属性定义了当前 SVG 片段的 SVG 视口边界。 - *值的类型*:**[\](/zh-CN/docs/Web/SVG/Content_type#t值数列)** ;*默认值*:none;*动画性*:**有** + _值的类型_:**[\](/zh-CN/docs/Web/SVG/Content_type#t值数列)** ;_默认值_:none;_动画性_:**有** ### 全局属性 diff --git a/files/zh-cn/web/svg/element/mpath/index.md b/files/zh-cn/web/svg/element/mpath/index.md index 373c6d2dd93b30..12a784c2d8edb7 100644 --- a/files/zh-cn/web/svg/element/mpath/index.md +++ b/files/zh-cn/web/svg/element/mpath/index.md @@ -14,29 +14,44 @@ slug: Web/SVG/Element/mpath ## 示例 ```html - - - + + - - - - + + + + - + - - + + diff --git a/files/zh-cn/web/svg/element/path/index.md b/files/zh-cn/web/svg/element/path/index.md index 7db306653f19de..25dfe7e497626c 100644 --- a/files/zh-cn/web/svg/element/path/index.md +++ b/files/zh-cn/web/svg/element/path/index.md @@ -17,7 +17,11 @@ path 元素是用来定义形状的通用元素。所有的基本形状都可以 ## 示例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html diff --git a/files/zh-cn/web/svg/element/radialgradient/index.md b/files/zh-cn/web/svg/element/radialgradient/index.md index 1d69420bfd07ca..80e792e8b683e0 100644 --- a/files/zh-cn/web/svg/element/radialgradient/index.md +++ b/files/zh-cn/web/svg/element/radialgradient/index.md @@ -41,27 +41,27 @@ svg { ## 属性 - {{SVGAttr("cx")}} - - : 这个属性定义了径向渐变的终点圆的 X 坐标。*值类型*:[**\**](/zh-CN/docs/Web/SVG/Content_type#长度);*默认值*:`50%`;*动画性*:**有** + - : 这个属性定义了径向渐变的终点圆的 X 坐标。_值类型_:[**\**](/zh-CN/docs/Web/SVG/Content_type#长度);_默认值_:`50%`;_动画性_:**有** - {{SVGAttr("cy")}} - - : 这个属性定义了径向渐变的终点圆的 Y 坐标。*值类型*:[**\**](/zh-CN/docs/Web/SVG/Content_type#长度);*默认值*:`50%`;*动画性*:**有** + - : 这个属性定义了径向渐变的终点圆的 Y 坐标。_值类型_:[**\**](/zh-CN/docs/Web/SVG/Content_type#长度);_默认值_:`50%`;_动画性_:**有** - {{SVGAttr("fr")}} - - : 这个属性定义了径向梯度的起点圆的半径。渐变的绘制将使 0% {{SVGElement('stop','gradient stop')}} 被映射到起始圆的周长。*值类型*:[**\**](/zh-CN/docs/Web/SVG/Content_type#长度);*默认值*:`0%`;*动画性*:**有** + - : 这个属性定义了径向梯度的起点圆的半径。渐变的绘制将使 0% {{SVGElement('stop','gradient stop')}} 被映射到起始圆的周长。_值类型_:[**\**](/zh-CN/docs/Web/SVG/Content_type#长度);_默认值_:`0%`;_动画性_:**有** - {{SVGAttr("fx")}} - - : 这个属性定义了径向渐变的起点圆的 X 坐标。*值类型*:[**\**](/zh-CN/docs/Web/SVG/Content_type#长度);*默认值*:与 `cx` 相同;*动画性*:**有** + - : 这个属性定义了径向渐变的起点圆的 X 坐标。_值类型_:[**\**](/zh-CN/docs/Web/SVG/Content_type#长度);_默认值_:与 `cx` 相同;_动画性_:**有** - {{SVGAttr("fy")}} - - : 这个属性定义了径向渐变的起点圆的 Y 坐标。*值类型*:[**\**](/zh-CN/docs/Web/SVG/Content_type#长度);*默认值*:与 `cy` 相同;*动画性*:**有** + - : 这个属性定义了径向渐变的起点圆的 Y 坐标。_值类型_:[**\**](/zh-CN/docs/Web/SVG/Content_type#长度);_默认值_:与 `cy` 相同;_动画性_:**有** - {{SVGAttr("gradientUnits")}} - - : 这个属性定义了 `cx`、`cy`、`r`、`fx`、`fy`、`fr` 属性的坐标系统;*值类型*:`userSpaceOnUse`|`objectBoundingBox`;*默认值*:`objectBoundingBox`;*动画性*:**有** + - : 这个属性定义了 `cx`、`cy`、`r`、`fx`、`fy`、`fr` 属性的坐标系统;_值类型_:`userSpaceOnUse`|`objectBoundingBox`;_默认值_:`objectBoundingBox`;_动画性_:**有** - {{SVGAttr("gradientTransform")}} - - : 这个属性为梯度坐标系提供了额外的[变换](/zh-CN/docs/Web/SVG/Atribute/transform)。*值类型*:**[\](/zh-CN/docs/Web/SVG/Content_type#transform-list)** ;*默认值*:*identity transform*;*动画性*:**有** + - : 这个属性为梯度坐标系提供了额外的[变换](/zh-CN/docs/Web/SVG/Atribute/transform)。_值类型_:**[\](/zh-CN/docs/Web/SVG/Content_type#transform-list)** ;_默认值_:_identity transform_;_动画性_:**有** - {{SVGAttr("href")}} - - : 这个属性定义了对另一个将被用作模板 `` 元素的引用。*值类型*:[**\**](/zh-CN/docs/Web/SVG/Content_type#url);*默认值*:none;*动画性*:**有** + - : 这个属性定义了对另一个将被用作模板 `` 元素的引用。_值类型_:[**\**](/zh-CN/docs/Web/SVG/Content_type#url);_默认值_:none;_动画性_:**有** - {{SVGAttr("r")}} - - : 这个属性定义了径向渐变的终点圆的半径。梯度的绘制将使 100% 的{{SVGElement('stop','gradient stop')}} 被映射到终点圆的周长。*值类型*:[**\**](/zh-CN/docs/Web/SVG/Content_type#长度);*默认值*:`50%`;*动画性*:**有** + - : 这个属性定义了径向渐变的终点圆的半径。梯度的绘制将使 100% 的{{SVGElement('stop','gradient stop')}} 被映射到终点圆的周长。_值类型_:[**\**](/zh-CN/docs/Web/SVG/Content_type#长度);_默认值_:`50%`;_动画性_:**有** - {{SVGAttr("spreadMethod")}} - - : 这个属性表明,如果渐变在包含渐变的形状的边界内开始或结束,它将如何表现。*值类型*:`pad`|`reflect`|`repeat`;*默认值*:`pad`;*动画性*:**有** + - : 这个属性表明,如果渐变在包含渐变的形状的边界内开始或结束,它将如何表现。_值类型_:`pad`|`reflect`|`repeat`;_默认值_:`pad`;_动画性_:**有** - {{SVGAttr("xlink:href")}} - - : {{Deprecated_Header}}对另一个将被用作模板的 `` 元素的 [\](/zh-CN/docs/Web/SVG/Content_type#iri) 引用。*值类型*:[**\**](/zh-CN/docs/Web/SVG/Content_type#iri);*默认值*:none;*动画性*:**有** + - : {{Deprecated_Header}}对另一个将被用作模板的 `` 元素的 [\](/zh-CN/docs/Web/SVG/Content_type#iri) 引用。_值类型_:[**\**](/zh-CN/docs/Web/SVG/Content_type#iri);_默认值_:none;_动画性_:**有** ### 全局属性 diff --git a/files/zh-cn/web/svg/element/rect/index.md b/files/zh-cn/web/svg/element/rect/index.md index 6be358f804dbbd..a3793a8d075945 100644 --- a/files/zh-cn/web/svg/element/rect/index.md +++ b/files/zh-cn/web/svg/element/rect/index.md @@ -14,7 +14,11 @@ slug: Web/SVG/Element/rect ## 示例 ```css hidden -html,body,svg { height:100% } +html, +body, +svg { + height: 100%; +} ``` ```html diff --git a/files/zh-cn/web/svg/element/script/index.md b/files/zh-cn/web/svg/element/script/index.md index 51cdbc96df892c..9b4660b91a12e0 100644 --- a/files/zh-cn/web/svg/element/script/index.md +++ b/files/zh-cn/web/svg/element/script/index.md @@ -16,8 +16,11 @@ slug: Web/SVG/Element/script 下面的代码片段演示了 SVG `script`标签的作用。在代码中,我们使用 JavaScript 改变 SVG {{SVGElement("circle")}} 元素的半径。 ```html - + - + ``` diff --git a/files/zh-cn/web/svg/element/stop/index.md b/files/zh-cn/web/svg/element/stop/index.md index 0e1ef0c8c7538c..c252db3a2ef812 100644 --- a/files/zh-cn/web/svg/element/stop/index.md +++ b/files/zh-cn/web/svg/element/stop/index.md @@ -14,9 +14,11 @@ slug: Web/SVG/Element/stop ## 示例 ```html - - + @@ -25,12 +27,17 @@ slug: Web/SVG/Element/stop - + - + ``` diff --git a/files/zh-cn/web/svg/element/style/index.md b/files/zh-cn/web/svg/element/style/index.md index bb6bd3eb72b4f7..fc5d5e4aa7d2e4 100644 --- a/files/zh-cn/web/svg/element/style/index.md +++ b/files/zh-cn/web/svg/element/style/index.md @@ -14,8 +14,11 @@ slug: Web/SVG/Element/style ## 示例 ```html - + + + + + + + + + + + + - - - + + ``` @@ -49,7 +57,7 @@ slug: Web/SVG/Tutorial/Gradients 以上是一个应用了线性渐变的``元素的示例。线性渐变内部有几个{{SVGElement('stop')}} 结点,这些结点通过指定位置的 offset(偏移)属性和 stop-color(颜色中值)属性来说明在渐变的特定位置上应该是什么颜色;可以直接指定这两个属性值,也可以通过 CSS 来指定他们的值,该例子中混合使用了这两种方法。例如:该示例中指明了渐变开始颜色为红色,到中间位置时变成半透明的黑色,最后变成蓝色。虽然你可以根据需求按照自己的喜好插入很多中间颜色,但是偏移量应该始终从 0% 开始(或者 0 也可以,百分号可以扔掉),到 100%(或 1)结束。如果`stop`设置的位置有重合,将使用 XML 树中较晚设置的值。而且,类似于填充和描边,你也可以指定属性`stop-opacity`来设置某个位置的半透明度(同样,对于 FF3 你也可以设置 rgba 值)。 ```html - + ``` 使用渐变时,我们需要在一个对象的属性`fill`或属性`stroke`中引用它,这跟你在 CSS 中使用`url`引用元素的方法一样。在本例中,url 只是一个渐变的引用,我们已经给这个渐变一个 ID——“Gradient”。要想附加它,将属性`fill`设置为`url(#Gradient)`即可。现在对象就变成多色的了,也可以用同样的方式处理`stroke`。 @@ -57,19 +65,25 @@ slug: Web/SVG/Tutorial/Gradients `` 元素还需要一些其他的属性值,它们指定了渐变的大小和出现范围。渐变的方向可以通过两个点来控制,它们分别是属性 x1、x2、y1 和 y2,这些属性定义了渐变路线走向。渐变色默认是水平方向的,但是通过修改这些属性,就可以旋转该方向。下例中的 Gradient2 创建了一个垂直渐变。 ```html - + ``` > **备注:** 你也可以在渐变上使用`xlink:href 属性。如果`使用了该属性时,一个渐变的属性和颜色中值(stop)可以被另一个渐变包含引用。在下例中,你就不需要在 Grandient2 中重新创建全部的颜色中值(stop)。 > > ```html > -> -> -> +> +> +> > -> xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#Gradient1"/> +> id="Gradient2" +> x1="0" +> x2="0" +> y1="0" +> y2="1" +> xmlns:xlink="http://www.w3.org/1999/xlink" +> xlink:href="#Gradient1" /> > ``` > > 尽管通常你可能在文档的顶部就定义了 Gradient1,但我在结点上直接包含了 xlink 的命名空间,关于这点的更多信息我们会在[讨论图片](/zh-CN/Web/SVG/Tutorial/Other_content_in_SVG)的时候详解。 @@ -84,19 +98,32 @@ slug: Web/SVG/Tutorial/Gradients - - - - - - - - + + + + + + + + - - - + + ``` @@ -111,25 +138,40 @@ slug: Web/SVG/Tutorial/Gradients ```html - + - - - - + + + + - - - - - - (fx,fy) - (cx,cy) - + + + + + + + (fx,fy) + + + (cx,cy) + ``` @@ -146,34 +188,75 @@ slug: Web/SVG/Tutorial/Gradients - - - - - - - - - - - - + + + + + + + + + + + + - - - - - Pad - Repeat - Reflect - + + + + + + Pad + + + Repeat + + + Reflect + ``` diff --git a/files/zh-cn/web/svg/tutorial/patterns/index.md b/files/zh-cn/web/svg/tutorial/patterns/index.md index 2cf4f5d32c390b..e8deda164b5b95 100644 --- a/files/zh-cn/web/svg/tutorial/patterns/index.md +++ b/files/zh-cn/web/svg/tutorial/patterns/index.md @@ -16,23 +16,33 @@ slug: Web/SVG/Tutorial/Patterns - - + + - - + + - - - + + + - - + ``` diff --git a/files/zh-cn/web/svg/tutorial/svg_and_css/index.md b/files/zh-cn/web/svg/tutorial/svg_and_css/index.md index bf7b0829ff5d28..aeafeae53f2910 100644 --- a/files/zh-cn/web/svg/tutorial/svg_and_css/index.md +++ b/files/zh-cn/web/svg/tutorial/svg_and_css/index.md @@ -16,119 +16,133 @@ slug: Web/SVG/Tutorial/SVG_and_CSS 建立一个 SVG 文件 `doc8.svg`。复制下面所有内容: ```html - - - + + SVG demonstration Mozilla CSS Getting Started - SVG demonstration - - - + + + SVG demonstration - Move your mouse pointer over the flower. + + Move your mouse pointer over the flower. + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + @@ -136,93 +150,93 @@ slug: Web/SVG/Tutorial/SVG_and_CSS - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + @@ -287,7 +301,7 @@ svg { /* outer petals */ #outer-petals { - opacity: .75; + opacity: 0.75; --segment-fill-fill: azure; --segment-fill-stroke: lightsteelblue; --segment-fill-stroke-width: 1; From dfba8618f2a5785c42b44d6d6195d6413224df0f Mon Sep 17 00:00:00 2001 From: "Queen Vinyl Da.i'gyu-Kazotetsu" Date: Fri, 28 Jul 2023 04:55:21 -0700 Subject: [PATCH 05/13] zh-cn: Format /web/api using Prettier (part 2) (#14675) Co-authored-by: allo --- .../api/canvasgradient/addcolorstop/index.md | 19 +-- .../api/canvaspattern/settransform/index.md | 20 +-- .../api/canvasrenderingcontext2d/arc/index.md | 28 ++-- .../canvasrenderingcontext2d/arcto/index.md | 23 +-- .../beginpath/index.md | 8 +- .../beziercurveto/index.md | 15 +- .../canvasrenderingcontext2d/canvas/index.md | 2 +- .../clearrect/index.md | 8 +- .../canvasrenderingcontext2d/clip/index.md | 8 +- .../closepath/index.md | 12 +- .../createpattern/index.md | 3 +- .../direction/index.md | 24 ++-- .../drawfocusifneeded/index.md | 26 ++-- .../drawimage/index.md | 24 ++-- .../canvasrenderingcontext2d/ellipse/index.md | 4 +- .../fillrect/index.md | 10 +- .../fillstyle/index.md | 16 ++- .../filltext/index.md | 2 +- .../canvasrenderingcontext2d/filter/index.md | 10 +- .../gettransform/index.md | 11 +- .../globalalpha/index.md | 22 +-- .../imagesmoothingenabled/index.md | 19 +-- .../ispointinpath/index.md | 6 +- .../ispointinstroke/index.md | 6 +- .../canvasrenderingcontext2d/linecap/index.md | 16 +-- .../linedashoffset/index.md | 10 +- .../linewidth/index.md | 4 +- .../miterlimit/index.md | 3 +- .../putimagedata/index.md | 27 ++-- .../quadraticcurveto/index.md | 16 +-- .../resettransform/index.md | 6 +- .../canvasrenderingcontext2d/rotate/index.md | 12 +- .../canvasrenderingcontext2d/scale/index.md | 16 +-- .../setlinedash/index.md | 19 +-- .../shadowcolor/index.md | 6 +- .../canvasrenderingcontext2d/stroke/index.md | 4 +- .../strokerect/index.md | 16 +-- .../textalign/index.md | 18 +-- .../textbaseline/index.md | 19 ++- .../translate/index.md | 8 +- .../using_channel_messaging/index.md | 22 +-- .../channelmergernode/index.md | 4 +- files/zh-cn/web/api/cleartimeout/index.md | 22 ++- .../zh-cn/web/api/client/postmessage/index.md | 41 +++--- files/zh-cn/web/api/clients/claim/index.md | 2 +- files/zh-cn/web/api/clients/get/index.md | 4 +- files/zh-cn/web/api/clients/index.md | 54 +++---- files/zh-cn/web/api/clients/matchall/index.md | 8 +- .../zh-cn/web/api/clients/openwindow/index.md | 8 +- files/zh-cn/web/api/clipboard/index.md | 2 +- files/zh-cn/web/api/clipboard/read/index.md | 6 +- .../zh-cn/web/api/clipboard/readtext/index.md | 5 +- files/zh-cn/web/api/clipboard/write/index.md | 13 +- .../web/api/clipboard/writetext/index.md | 13 +- files/zh-cn/web/api/clipboard_api/index.md | 7 +- files/zh-cn/web/api/clipboarditem/index.md | 13 +- .../web/api/compression_streams_api/index.md | 2 +- .../compressionstream/index.md | 2 +- .../zh-cn/web/api/compressionstream/index.md | 2 +- files/zh-cn/web/api/console/assert/index.md | 14 +- files/zh-cn/web/api/console/index.md | 7 +- files/zh-cn/web/api/console/log/index.md | 2 +- files/zh-cn/web/api/console/table/index.md | 6 +- files/zh-cn/web/api/console_api/index.md | 4 +- .../index.md | 6 +- .../countqueuingstrategy/index.md | 27 ++-- .../highwatermark/index.md | 2 +- .../web/api/countqueuingstrategy/index.md | 25 ++-- .../api/countqueuingstrategy/size/index.md | 27 ++-- .../zh-cn/web/api/createimagebitmap/index.md | 16 +-- .../web/api/crossoriginisolated/index.md | 2 +- .../web/api/crypto/getrandomvalues/index.md | 2 +- files/zh-cn/web/api/crypto_property/index.md | 4 +- files/zh-cn/web/api/cryptokey/index.md | 4 + .../zh-cn/web/api/css/escape_static/index.md | 12 +- .../api/css/factory_functions_static/index.md | 10 +- .../web/api/css/supports_static/index.md | 10 +- .../web/api/css_custom_highlight_api/index.md | 28 ++-- .../web/api/css_font_loading_api/index.md | 8 +- .../index.md | 136 +++++++++--------- files/zh-cn/web/api/cssrule/csstext/index.md | 4 +- .../getpropertycssvalue/index.md | 2 +- .../getpropertypriority/index.md | 2 +- .../getpropertyvalue/index.md | 2 +- .../web/api/cssstyledeclaration/index.md | 2 +- .../web/api/cssstyledeclaration/item/index.md | 2 +- .../api/cssstyledeclaration/length/index.md | 4 +- .../removeproperty/index.md | 2 +- .../cssstyledeclaration/setproperty/index.md | 2 +- files/zh-cn/web/api/cssstylesheet/index.md | 17 +-- .../web/api/cssstylesheet/insertrule/index.md | 51 ++++--- files/zh-cn/web/api/cssvalue/index.md | 10 +- .../api/customelementregistry/define/index.md | 110 +++++++------- .../api/customelementregistry/get/index.md | 17 ++- .../web/api/customelementregistry/index.md | 20 ++- .../customelementregistry/upgrade/index.md | 2 +- .../whendefined/index.md | 12 +- .../web/api/customevent/customevent/index.md | 57 +++++--- .../zh-cn/web/api/customevent/detail/index.md | 8 +- .../web/api/datatransfer/cleardata/index.md | 70 ++++----- 100 files changed, 794 insertions(+), 710 deletions(-) diff --git a/files/zh-cn/web/api/canvasgradient/addcolorstop/index.md b/files/zh-cn/web/api/canvasgradient/addcolorstop/index.md index 70a6b4c0757380..1d957d70e2da0b 100644 --- a/files/zh-cn/web/api/canvasgradient/addcolorstop/index.md +++ b/files/zh-cn/web/api/canvasgradient/addcolorstop/index.md @@ -29,7 +29,7 @@ void gradient.addColorStop(offset, color); #### HTML ```html - + ``` #### JavaScript @@ -38,11 +38,11 @@ void gradient.addColorStop(offset, color); var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); -var gradient = ctx.createLinearGradient(0,0,200,0); -gradient.addColorStop(0,"green"); -gradient.addColorStop(1,"white"); +var gradient = ctx.createLinearGradient(0, 0, 200, 0); +gradient.addColorStop(0, "green"); +gradient.addColorStop(1, "white"); ctx.fillStyle = gradient; -ctx.fillRect(10,10,200,100); +ctx.fillRect(10, 10, 200, 100); ``` 编辑以下代码可看到画布变化: @@ -58,7 +58,8 @@ var gradient = ctx.createLinearGradient(0,0,200,0); gradient.addColorStop(0,"green"); gradient.addColorStop(1,"white"); ctx.fillStyle = gradient; -ctx.fillRect(10,10,200,100); +ctx.fillRect(10,10,200,100); ``` ```js hidden @@ -74,14 +75,14 @@ function drawCanvas() { eval(textarea.value); } -reset.addEventListener("click", function() { +reset.addEventListener("click", function () { textarea.value = code; drawCanvas(); }); -edit.addEventListener("click", function() { +edit.addEventListener("click", function () { textarea.focus(); -}) +}); textarea.addEventListener("input", drawCanvas); window.addEventListener("load", drawCanvas); diff --git a/files/zh-cn/web/api/canvaspattern/settransform/index.md b/files/zh-cn/web/api/canvaspattern/settransform/index.md index 01f07ed271ef05..bd8e8d3be192eb 100644 --- a/files/zh-cn/web/api/canvaspattern/settransform/index.md +++ b/files/zh-cn/web/api/canvaspattern/settransform/index.md @@ -27,8 +27,7 @@ setTransform(matrix) #### HTML ```html - - + ``` #### JavaScript @@ -41,13 +40,13 @@ var svg1 = document.getElementById("svg1"); var matrix = svg1.createSVGMatrix(); var img = new Image(); -img.src = 'canvas_createpattern.png'; +img.src = "canvas_createpattern.png"; -img.onload = function() { - var pattern = ctx.createPattern(img, 'repeat'); +img.onload = function () { + var pattern = ctx.createPattern(img, "repeat"); pattern.setTransform(matrix.rotate(-45).scale(1.5)); ctx.fillStyle = pattern; - ctx.fillRect(0,0,400,400); + ctx.fillRect(0, 0, 400, 400); }; ``` @@ -68,7 +67,8 @@ img.onload = function() { pattern.setTransform(matrix.rotate(-45).scale(1.5)); ctx.fillStyle = pattern; ctx.fillRect(0,0,400,400); -}; +}; ``` ```js hidden @@ -87,14 +87,14 @@ function drawCanvas() { eval(textarea.value); } -reset.addEventListener("click", function() { +reset.addEventListener("click", function () { textarea.value = code; drawCanvas(); }); -edit.addEventListener("click", function() { +edit.addEventListener("click", function () { textarea.focus(); -}) +}); textarea.addEventListener("input", drawCanvas); window.addEventListener("load", drawCanvas); diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/arc/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/arc/index.md index 5adea27eb3c9c3..7ddd2789876071 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/arc/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/arc/index.md @@ -43,8 +43,8 @@ void ctx.arc(x, y, radius, startAngle, endAngle, anticlockwise); #### JavaScript ```js -const canvas = document.querySelector('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.querySelector("canvas"); +const ctx = canvas.getContext("2d"); ctx.beginPath(); ctx.arc(100, 75, 50, 0, 2 * Math.PI); @@ -64,23 +64,23 @@ ctx.stroke(); ``` ```js -var canvas = document.getElementById('canvas'); -var ctx = canvas.getContext('2d'); +var canvas = document.getElementById("canvas"); +var ctx = canvas.getContext("2d"); // Draw shapes -for (i=0;i<4;i++){ - for(j=0;j<3;j++){ +for (i = 0; i < 4; i++) { + for (j = 0; j < 3; j++) { ctx.beginPath(); - var x = 25+j*50; // x coordinate - var y = 25+i*50; // y coordinate - var radius = 20; // Arc radius - var startAngle = 0; // Starting point on circle - var endAngle = Math.PI+(Math.PI*j)/2; // End point on circle - var clockwise = i%2==0 ? false : true; // clockwise or anticlockwise + var x = 25 + j * 50; // x coordinate + var y = 25 + i * 50; // y coordinate + var radius = 20; // Arc radius + var startAngle = 0; // Starting point on circle + var endAngle = Math.PI + (Math.PI * j) / 2; // End point on circle + var clockwise = i % 2 == 0 ? false : true; // clockwise or anticlockwise - ctx.arc(x,y,radius,startAngle,endAngle, clockwise); + ctx.arc(x, y, radius, startAngle, endAngle, clockwise); - if (i>1){ + if (i > 1) { ctx.fill(); } else { ctx.stroke(); diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/arcto/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/arcto/index.md index 405b539be3f55d..c37cb920236636 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/arcto/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/arcto/index.md @@ -44,29 +44,29 @@ void ctx.arcTo(x1, y1, x2, y2, radius); var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); -ctx.setLineDash([]) +ctx.setLineDash([]); ctx.beginPath(); ctx.moveTo(150, 20); -ctx.arcTo(150,100,50,20,30); +ctx.arcTo(150, 100, 50, 20, 30); ctx.stroke(); -ctx.fillStyle = 'blue'; +ctx.fillStyle = "blue"; // base point ctx.fillRect(150, 20, 10, 10); -ctx.fillStyle = 'red'; +ctx.fillStyle = "red"; // control point one ctx.fillRect(150, 100, 10, 10); // control point two ctx.fillRect(50, 20, 10, 10); // -ctx.setLineDash([5,5]) +ctx.setLineDash([5, 5]); ctx.moveTo(150, 20); -ctx.lineTo(150,100); +ctx.lineTo(150, 100); ctx.lineTo(50, 20); ctx.stroke(); ctx.beginPath(); -ctx.arc(120,38,30,0,2*Math.PI); +ctx.arc(120, 38, 30, 0, 2 * Math.PI); ctx.stroke(); ``` @@ -106,7 +106,8 @@ ctx.lineTo(50, 20); ctx.stroke(); ctx.beginPath(); ctx.arc(120,38,30,0,2*Math.PI); -ctx.stroke(); +ctx.stroke(); ``` ```js hidden @@ -122,14 +123,14 @@ function drawCanvas() { eval(textarea.value); } -reset.addEventListener("click", function() { +reset.addEventListener("click", function () { textarea.value = code; drawCanvas(); }); -edit.addEventListener("click", function() { +edit.addEventListener("click", function () { textarea.focus(); -}) +}); textarea.addEventListener("input", drawCanvas); window.addEventListener("load", drawCanvas); diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/beginpath/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/beginpath/index.md index 35f3b9f26c277f..e9102db6f6c1d0 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/beginpath/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/beginpath/index.md @@ -28,19 +28,19 @@ void ctx.beginPath(); #### JavaScript ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); // First path ctx.beginPath(); -ctx.strokeStyle = 'blue'; +ctx.strokeStyle = "blue"; ctx.moveTo(20, 20); ctx.lineTo(200, 20); ctx.stroke(); // Second path ctx.beginPath(); -ctx.strokeStyle = 'green'; +ctx.strokeStyle = "green"; ctx.moveTo(20, 20); ctx.lineTo(120, 120); ctx.stroke(); diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/beziercurveto/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/beziercurveto/index.md index 72c41a602fc8df..03c0cb03745a9d 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/beziercurveto/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/beziercurveto/index.md @@ -47,17 +47,17 @@ var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); ctx.beginPath(); -ctx.moveTo(50,20); +ctx.moveTo(50, 20); ctx.bezierCurveTo(230, 30, 150, 60, 50, 100); ctx.stroke(); -ctx.fillStyle = 'blue'; +ctx.fillStyle = "blue"; // start point ctx.fillRect(50, 20, 10, 10); // end point ctx.fillRect(50, 100, 10, 10); -ctx.fillStyle = 'red'; +ctx.fillStyle = "red"; // control point one ctx.fillRect(230, 30, 10, 10); // control point two @@ -79,7 +79,8 @@ ctx.fillRect(150, 70, 10, 10); +ctx.stroke(); ``` ```js hidden @@ -95,14 +96,14 @@ function drawCanvas() { eval(textarea.value); } -reset.addEventListener("click", function() { +reset.addEventListener("click", function () { textarea.value = code; drawCanvas(); }); -edit.addEventListener("click", function() { +edit.addEventListener("click", function () { textarea.focus(); -}) +}); textarea.addEventListener("input", drawCanvas); window.addEventListener("load", drawCanvas); diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/canvas/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/canvas/index.md index 91eab1a8b353ab..0864cbaa109a5d 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/canvas/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/canvas/index.md @@ -26,7 +26,7 @@ ctx.canvas; ```js var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); -ctx.canvas // HTMLCanvasElement +ctx.canvas; // HTMLCanvasElement ``` ## 规范描述 diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/clearrect/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/clearrect/index.md index 1e258b0f09f2d5..4112c73825e960 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/clearrect/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/clearrect/index.md @@ -35,8 +35,8 @@ void ctx.clearRect(x, y, width, height); 这段代码清除整个画布。这段代码通常在动画的每一帧开始被执行。清除的范围涵覆盖了整个 {{HtmlElement("canvas")}} 元素。 ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); ctx.clearRect(0, 0, canvas.width, canvas.height); ``` @@ -60,12 +60,12 @@ var ctx = canvas.getContext("2d"); // 绘制黄色背景 ctx.beginPath(); -ctx.fillStyle = '#ff6'; +ctx.fillStyle = "#ff6"; ctx.fillRect(0, 0, canvas.width, canvas.height); // 绘制蓝色三角形 ctx.beginPath(); -ctx.fillStyle = 'blue'; +ctx.fillStyle = "blue"; ctx.moveTo(20, 20); ctx.lineTo(180, 20); ctx.lineTo(130, 130); diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/clip/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/clip/index.md index c1725512c08932..87f679de6be9ac 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/clip/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/clip/index.md @@ -47,8 +47,8 @@ void ctx.clip(path, fillRule); #### JavaScript ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); // Create circular clipping region ctx.beginPath(); @@ -56,9 +56,9 @@ ctx.arc(100, 75, 50, 0, Math.PI * 2); ctx.clip(); // Draw stuff that gets clipped -ctx.fillStyle = 'blue'; +ctx.fillStyle = "blue"; ctx.fillRect(0, 0, canvas.width, canvas.height); -ctx.fillStyle = 'orange'; +ctx.fillStyle = "orange"; ctx.fillRect(0, 0, 100, 100); ``` diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/closepath/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/closepath/index.md index 5bbda5f9a4e120..3de7c56c46bb41 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/closepath/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/closepath/index.md @@ -28,14 +28,14 @@ void ctx.closePath(); #### JavaScript ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); ctx.beginPath(); -ctx.moveTo(20, 140); // Move pen to bottom-left corner -ctx.lineTo(120, 10); // Line to top corner -ctx.lineTo(220, 140); // Line to bottom-right corner -ctx.closePath(); // Line to bottom-left corner +ctx.moveTo(20, 140); // Move pen to bottom-left corner +ctx.lineTo(120, 10); // Line to top corner +ctx.lineTo(220, 140); // Line to bottom-right corner +ctx.closePath(); // Line to bottom-left corner ctx.stroke(); ``` diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/createpattern/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/createpattern/index.md index c1092ea332d5c1..55847c2918df8f 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/createpattern/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/createpattern/index.md @@ -63,7 +63,8 @@ const ctx = canvas.getContext("2d"); const img = new Image(); img.src = "canvas_createpattern.png"; -img.onload = () => { // Only use the image after it's loaded +img.onload = () => { + // Only use the image after it's loaded const pattern = ctx.createPattern(img, "repeat"); ctx.fillStyle = pattern; ctx.fillRect(0, 0, 300, 300); diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/direction/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/direction/index.md index 4130fb613c498a..8bb374ae15523e 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/direction/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/direction/index.md @@ -41,13 +41,13 @@ ctx.direction = "ltr" || "rtl" || "inherit"; #### JavaScript ```js -var canvas = document.getElementById('canvas'); -var ctx = canvas.getContext('2d'); +var canvas = document.getElementById("canvas"); +var ctx = canvas.getContext("2d"); -ctx.font = '48px serif'; -ctx.fillText('Hi!', 150, 50); -ctx.direction = 'rtl'; -ctx.fillText('Hi!', 150, 130); +ctx.font = "48px serif"; +ctx.fillText("Hi!", 150, 50); +ctx.direction = "rtl"; +ctx.fillText("Hi!", 150, 130); ``` ```html hidden @@ -55,13 +55,13 @@ ctx.fillText('Hi!', 150, 130); ``` ```js hidden -var canvas = document.getElementById('canvas'); -var ctx = canvas.getContext('2d'); +var canvas = document.getElementById("canvas"); +var ctx = canvas.getContext("2d"); -ctx.font = '48px serif'; -ctx.fillText('Hi!', 150, 50); -ctx.direction = 'rtl'; -ctx.fillText('Hi!', 150, 130); +ctx.font = "48px serif"; +ctx.fillText("Hi!", 150, 50); +ctx.direction = "rtl"; +ctx.fillText("Hi!", 150, 130); ``` #### 结果 diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/drawfocusifneeded/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/drawfocusifneeded/index.md index 1eaa0f924aa620..0cdee1b82ec2d8 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/drawfocusifneeded/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/drawfocusifneeded/index.md @@ -39,14 +39,14 @@ void ctx.drawFocusIfNeeded(path, element); #### JavaScript ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); -const button1 = document.getElementById('button1'); -const button2 = document.getElementById('button2'); - -document.addEventListener('focus', redraw, true); -document.addEventListener('blur', redraw, true); -canvas.addEventListener('click', handleClick, false); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); +const button1 = document.getElementById("button1"); +const button2 = document.getElementById("button2"); + +document.addEventListener("focus", redraw, true); +document.addEventListener("blur", redraw, true); +canvas.addEventListener("click", handleClick, false); redraw(); function redraw() { @@ -79,14 +79,14 @@ function drawButton(el, x, y) { const height = 40; // Button background - ctx.fillStyle = active ? 'pink' : 'lightgray'; + ctx.fillStyle = active ? "pink" : "lightgray"; ctx.fillRect(x, y, width, height); // Button text - ctx.font = '15px sans-serif'; - ctx.textAlign = 'center'; - ctx.textBaseline = 'middle'; - ctx.fillStyle = active ? 'blue' : 'black'; + ctx.font = "15px sans-serif"; + ctx.textAlign = "center"; + ctx.textBaseline = "middle"; + ctx.fillStyle = active ? "blue" : "black"; ctx.fillText(el.textContent, x + width / 2, y + height / 2); // Define clickable area diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/drawimage/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/drawimage/index.md index 4e043226641cca..4116a4a1bd5fe8 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/drawimage/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/drawimage/index.md @@ -10,9 +10,9 @@ Canvas 2D API 中的 **`CanvasRenderingContext2D.drawImage()`** 方法提供了 ## 语法 ```js -drawImage(image, dx, dy) -drawImage(image, dx, dy, dWidth, dHeight) -drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) +drawImage(image, dx, dy); +drawImage(image, dx, dy, dWidth, dHeight); +drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight); ``` ![drawImage](canvas_drawimage.jpg) @@ -61,9 +61,7 @@ drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) ```html
- +
``` @@ -72,11 +70,11 @@ drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) 原图像从坐标 (33,71) 处截取一个宽度为 104 高度为 124 的图像。并将其绘制到画布的 (21, 20) 坐标处,并将其缩放为宽 87、高 104 的图像。 ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); -const image = document.getElementById('source'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); +const image = document.getElementById("source"); -image.addEventListener('load', (e) => { +image.addEventListener("load", (e) => { ctx.drawImage(image, 33, 71, 104, 124, 21, 20, 87, 104); }); ``` @@ -100,14 +98,14 @@ image.addEventListener('load', (e) => { #### JavaScript ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); const image = new Image(60, 45); // Using optional size for image image.onload = drawImageActualSize; // Draw when image has loaded // Load an image of intrinsic size 300x227 in CSS pixels -image.src = 'rhino.jpg'; +image.src = "rhino.jpg"; function drawImageActualSize() { // Use the intrinsic size of image in CSS pixels for the canvas element diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/ellipse/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/ellipse/index.md index e98f26b9ed4111..35fe92d5a19605 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/ellipse/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/ellipse/index.md @@ -47,8 +47,8 @@ void ctx.ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlo #### JavaScript ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); // Draw the ellipse ctx.beginPath(); diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/fillrect/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/fillrect/index.md index 77f4b8b43b2e07..f2eda6154ffe41 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/fillrect/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/fillrect/index.md @@ -45,9 +45,9 @@ void ctx.fillRect(x, y, width, height); 下面绘制的矩形左上顶点在 (20, 10),宽高分别是 150 和 100 像素。 ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); -ctx.fillStyle = 'green'; +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); +ctx.fillStyle = "green"; ctx.fillRect(20, 10, 150, 100); ``` @@ -60,8 +60,8 @@ ctx.fillRect(20, 10, 150, 100); 下面这个代码片段使用本方法填充了整个画布。这样做通常的目的是在开始绘制其他内容前设置一个背景。为了达到这样的效果,需要让填充的范围和画布的范围相同,需要访问{{HtmlElement("canvas")}}元素的`width` 和 `height` 属性。 ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); ctx.fillRect(0, 0, canvas.width, canvas.height); ``` diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/fillstyle/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/fillstyle/index.md index 557c9fa09af897..dfd6e3fae2be8d 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/fillstyle/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/fillstyle/index.md @@ -61,12 +61,16 @@ ctx.fillRect(10, 10, 100, 100); ``` ```js -var ctx = document.getElementById('canvas').getContext('2d'); -for (var i=0;i<6;i++){ - for (var j=0;j<6;j++){ - ctx.fillStyle = 'rgb(' + Math.floor(255-42.5*i) + ',' + - Math.floor(255-42.5*j) + ',0)'; - ctx.fillRect(j*25,i*25,25,25); +var ctx = document.getElementById("canvas").getContext("2d"); +for (var i = 0; i < 6; i++) { + for (var j = 0; j < 6; j++) { + ctx.fillStyle = + "rgb(" + + Math.floor(255 - 42.5 * i) + + "," + + Math.floor(255 - 42.5 * j) + + ",0)"; + ctx.fillRect(j * 25, i * 25, 25, 25); } } ``` diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/filltext/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/filltext/index.md index a4478ec416141f..07bb2b04433485 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/filltext/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/filltext/index.md @@ -5,7 +5,7 @@ slug: Web/API/CanvasRenderingContext2D/fillText {{APIRef}} -**`CanvasRenderingContext2D.fillText()`** 是 Canvas 2D API 在 *(x, y)* 位置填充文本的方法。如果选项的第四个参数提供了最大宽度,文本会进行缩放以适应最大宽度。 +**`CanvasRenderingContext2D.fillText()`** 是 Canvas 2D API 在 _(x, y)_ 位置填充文本的方法。如果选项的第四个参数提供了最大宽度,文本会进行缩放以适应最大宽度。 参见 {{domxref("CanvasRenderingContext2D.strokeText()")}} 方法对文本进行描边。 diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/filter/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/filter/index.md index f349813dbcbdc8..7cdf8784c2ebe6 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/filter/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/filter/index.md @@ -66,12 +66,12 @@ filter 属性接受{{domxref("DOMString")}}字符串,可以包含一个或多 #### JavaScript ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); -ctx.filter = 'blur(4px)'; -ctx.font = '48px serif'; -ctx.fillText('Hello world', 50, 100); +ctx.filter = "blur(4px)"; +ctx.font = "48px serif"; +ctx.fillText("Hello world", 50, 100); ``` #### 结果 diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/gettransform/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/gettransform/index.md index d07c745785dcaf..53a29dd8dc9454 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/gettransform/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/gettransform/index.md @@ -34,8 +34,7 @@ let storedTransform = ctx.getTransform(); #### HTML ```html - - + ``` #### CSS @@ -49,11 +48,11 @@ canvas { #### JavaScript ```js -const canvases = document.querySelectorAll('canvas'); -const ctx1 = canvases[0].getContext('2d'); -const ctx2 = canvases[1].getContext('2d'); +const canvases = document.querySelectorAll("canvas"); +const ctx1 = canvases[0].getContext("2d"); +const ctx2 = canvases[1].getContext("2d"); -ctx1.setTransform(1, .2, .8, 1, 0, 0); +ctx1.setTransform(1, 0.2, 0.8, 1, 0, 0); ctx1.fillRect(25, 25, 50, 50); let storedTransform = ctx1.getTransform(); diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/globalalpha/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/globalalpha/index.md index c5499b6fb4571a..03a018323f13de 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/globalalpha/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/globalalpha/index.md @@ -33,15 +33,15 @@ ctx.globalAlpha = value; #### JavaScript ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); ctx.globalAlpha = 0.5; -ctx.fillStyle = 'blue'; +ctx.fillStyle = "blue"; ctx.fillRect(10, 10, 100, 100); -ctx.fillStyle = 'red'; +ctx.fillStyle = "red"; ctx.fillRect(50, 50, 100, 100); ``` @@ -58,19 +58,19 @@ ctx.fillRect(50, 50, 100, 100); ``` ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); // Draw background -ctx.fillStyle = '#FD0'; +ctx.fillStyle = "#FD0"; ctx.fillRect(0, 0, 75, 75); -ctx.fillStyle = '#6C0'; +ctx.fillStyle = "#6C0"; ctx.fillRect(75, 0, 75, 75); -ctx.fillStyle = '#09F'; +ctx.fillStyle = "#09F"; ctx.fillRect(0, 75, 75, 75); -ctx.fillStyle = '#F30'; +ctx.fillStyle = "#F30"; ctx.fillRect(75, 75, 75, 75); -ctx.fillStyle = '#FFF'; +ctx.fillStyle = "#FFF"; // Set transparency value ctx.globalAlpha = 0.2; diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/imagesmoothingenabled/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/imagesmoothingenabled/index.md index d2de0b95b814e8..40a9ecd5e669d2 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/imagesmoothingenabled/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/imagesmoothingenabled/index.md @@ -37,26 +37,27 @@ ctx.imageSmoothingEnabled = value; #### JavaScript ```js -const canvas = document.getElementById('canvas'); +const canvas = document.getElementById("canvas"); -const ctx = canvas.getContext('2d'); -ctx.font = '16px sans-serif'; -ctx.textAlign = 'center'; +const ctx = canvas.getContext("2d"); +ctx.font = "16px sans-serif"; +ctx.textAlign = "center"; const img = new Image(); -img.src = 'https://interactive-examples.mdn.mozilla.net/media/examples/star.png'; +img.src = + "https://interactive-examples.mdn.mozilla.net/media/examples/star.png"; img.onload = () => { const w = img.width, - h = img.height; + h = img.height; - ctx.fillText('Source', w * .5, 20); + ctx.fillText("Source", w * 0.5, 20); ctx.drawImage(img, 0, 24, w, h); - ctx.fillText('Smoothing = TRUE', w * 2.5, 20); + ctx.fillText("Smoothing = TRUE", w * 2.5, 20); ctx.imageSmoothingEnabled = true; ctx.drawImage(img, w, 24, w * 3, h * 3); - ctx.fillText('Smoothing = FALSE', w * 5.5, 20); + ctx.fillText("Smoothing = FALSE", w * 5.5, 20); ctx.imageSmoothingEnabled = false; ctx.drawImage(img, w * 4, 24, w * 3, h * 3); }; diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/ispointinpath/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/ispointinpath/index.md index 4b77bd66290091..dbc68370f999ac 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/ispointinpath/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/ispointinpath/index.md @@ -56,9 +56,9 @@ isPointInPath(path, x, y, fillRule) #### JavaScript ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); -const result = document.getElementById('result'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); +const result = document.getElementById("result"); ctx.rect(10, 10, 100, 100); ctx.fill(); diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/ispointinstroke/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/ispointinstroke/index.md index 0bf955f38a6f8d..67429c4eca731c 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/ispointinstroke/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/ispointinstroke/index.md @@ -44,9 +44,9 @@ boolean ctx.isPointInStroke(path, x, y); #### JavaScript ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); -const result = document.getElementById('result'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); +const result = document.getElementById("result"); ctx.rect(10, 10, 100, 100); ctx.stroke(); diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/linecap/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/linecap/index.md index 0042c5bf7e2405..e1451fad60b252 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/linecap/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/linecap/index.md @@ -41,13 +41,13 @@ ctx.lineCap = "square"; #### JavaScript ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); ctx.beginPath(); ctx.moveTo(20, 20); ctx.lineWidth = 15; -ctx.lineCap = 'round'; +ctx.lineCap = "round"; ctx.lineTo(100, 100); ctx.stroke(); ``` @@ -67,11 +67,11 @@ ctx.stroke(); ``` ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); // Draw guides -ctx.strokeStyle = '#09f'; +ctx.strokeStyle = "#09f"; ctx.beginPath(); ctx.moveTo(10, 10); ctx.lineTo(140, 10); @@ -80,8 +80,8 @@ ctx.lineTo(140, 140); ctx.stroke(); // Draw lines -ctx.strokeStyle = 'black'; -['butt', 'round', 'square'].forEach((lineCap, i) => { +ctx.strokeStyle = "black"; +["butt", "round", "square"].forEach((lineCap, i) => { ctx.lineWidth = 15; ctx.lineCap = lineCap; ctx.beginPath(); diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/linedashoffset/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/linedashoffset/index.md index e989c979e7f946..3fa4d331c613a2 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/linedashoffset/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/linedashoffset/index.md @@ -31,8 +31,8 @@ ctx.lineDashOffset = value; #### JavaScript ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); ctx.setLineDash([4, 16]); @@ -44,7 +44,7 @@ ctx.stroke(); // Dashed line with offset of 4 ctx.beginPath(); -ctx.strokeStyle = 'red'; +ctx.strokeStyle = "red"; ctx.lineDashOffset = 4; ctx.moveTo(0, 100); ctx.lineTo(300, 100); @@ -71,10 +71,10 @@ var ctx = canvas.getContext("2d"); var offset = 0; function draw() { - ctx.clearRect(0,0, canvas.width, canvas.height); + ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.setLineDash([4, 2]); ctx.lineDashOffset = -offset; - ctx.strokeRect(10,10, 100, 100); + ctx.strokeRect(10, 10, 100, 100); } function march() { diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/linewidth/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/linewidth/index.md index 33e0760096620a..61b4a3069e0310 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/linewidth/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/linewidth/index.md @@ -35,8 +35,8 @@ ctx.lineWidth = value; #### JavaScript ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); ctx.lineWidth = 15; diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/miterlimit/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/miterlimit/index.md index 205da75349f1ca..7178c2aae04d08 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/miterlimit/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/miterlimit/index.md @@ -45,7 +45,8 @@ ctx.beginPath(); ctx.moveTo(0,0); ctx.lineWidth = 15; ctx.lineTo(100, 100); -ctx.stroke(); +ctx.stroke(); ``` ```js hidden diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/putimagedata/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/putimagedata/index.md index c8f45a17d48efd..b4c8a4693930c5 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/putimagedata/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/putimagedata/index.md @@ -55,25 +55,34 @@ void ctx.putImageData(imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight #### JavaScript ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); - -function putImageData(ctx, imageData, dx, dy, - dirtyX, dirtyY, dirtyWidth, dirtyHeight) { +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); + +function putImageData( + ctx, + imageData, + dx, + dy, + dirtyX, + dirtyY, + dirtyWidth, + dirtyHeight, +) { const data = imageData.data; const height = imageData.height; const width = imageData.width; dirtyX = dirtyX || 0; dirtyY = dirtyY || 0; - dirtyWidth = dirtyWidth !== undefined? dirtyWidth: width; - dirtyHeight = dirtyHeight !== undefined? dirtyHeight: height; + dirtyWidth = dirtyWidth !== undefined ? dirtyWidth : width; + dirtyHeight = dirtyHeight !== undefined ? dirtyHeight : height; const limitBottom = dirtyY + dirtyHeight; const limitRight = dirtyX + dirtyWidth; for (let y = dirtyY; y < limitBottom; y++) { for (let x = dirtyX; x < limitRight; x++) { const pos = y * width + x; - ctx.fillStyle = - `rgba(${data[pos*4+0]}, ${data[pos*4+1]}, ${data[pos*4+2]}, ${data[pos*4+3]/255})`; + ctx.fillStyle = `rgba(${data[pos * 4 + 0]}, ${data[pos * 4 + 1]}, ${ + data[pos * 4 + 2] + }, ${data[pos * 4 + 3] / 255})`; ctx.fillRect(x + dx, y + dy, 1, 1); } } diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/quadraticcurveto/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/quadraticcurveto/index.md index a5651fcba98dc1..4281e62440f0d5 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/quadraticcurveto/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/quadraticcurveto/index.md @@ -39,8 +39,8 @@ void ctx.quadraticCurveTo(cpx, cpy, x, y); #### JavaScript ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); // Quadratic Bézier curve ctx.beginPath(); @@ -49,14 +49,14 @@ ctx.quadraticCurveTo(230, 30, 50, 100); ctx.stroke(); // Start and end points -ctx.fillStyle = 'blue'; +ctx.fillStyle = "blue"; ctx.beginPath(); -ctx.arc(50, 20, 5, 0, 2 * Math.PI); // Start point -ctx.arc(50, 100, 5, 0, 2 * Math.PI); // End point +ctx.arc(50, 20, 5, 0, 2 * Math.PI); // Start point +ctx.arc(50, 100, 5, 0, 2 * Math.PI); // End point ctx.fill(); // Control point -ctx.fillStyle = 'red'; +ctx.fillStyle = "red"; ctx.beginPath(); ctx.arc(230, 30, 5, 0, 2 * Math.PI); ctx.fill(); @@ -81,8 +81,8 @@ ctx.fill(); 曲线从`moveTo()`指定的点开始:(20, 110)。控制点位于 (230, 150)。曲线在 (250, 20) 处结束。 ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); ctx.beginPath(); ctx.moveTo(20, 110); diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/resettransform/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/resettransform/index.md index 97191f300c033a..a1b9622fa94dcf 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/resettransform/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/resettransform/index.md @@ -28,11 +28,11 @@ void ctx.resetTransform(); #### JavaScript ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); // Draw a rotated rectangle -ctx.rotate(45 * Math.PI / 180); +ctx.rotate((45 * Math.PI) / 180); ctx.fillRect(60, 0, 100, 30); // Reset transformation matrix to the identity matrix diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/rotate/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/rotate/index.md index 6f4e8b5b75b1fe..d05a17d997b60d 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/rotate/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/rotate/index.md @@ -37,21 +37,21 @@ void ctx.rotate(angle); #### JavaScript ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); // Point of transform origin ctx.arc(0, 0, 5, 0, 2 * Math.PI); -ctx.fillStyle = 'blue'; +ctx.fillStyle = "blue"; ctx.fill(); // Non-rotated rectangle -ctx.fillStyle = 'gray'; +ctx.fillStyle = "gray"; ctx.fillRect(100, 0, 80, 20); // Rotated rectangle -ctx.rotate(45 * Math.PI / 180); -ctx.fillStyle = 'red'; +ctx.rotate((45 * Math.PI) / 180); +ctx.fillStyle = "red"; ctx.fillRect(100, 0, 80, 20); // Reset transformation matrix to the identity matrix diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/scale/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/scale/index.md index a94aeafa31fea2..ecf542d9fced52 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/scale/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/scale/index.md @@ -41,19 +41,19 @@ The rectangle has a specified width of 8 and a height of 20. The transformation Notice that its position on the canvas also changes. Since its specified corner is (10, 10), its rendered corner becomes (90, 30). ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); // Scaled rectangle ctx.scale(9, 3); -ctx.fillStyle = 'red'; +ctx.fillStyle = "red"; ctx.fillRect(10, 10, 8, 20); // Reset current transformation matrix to the identity matrix ctx.setTransform(1, 0, 0, 1, 0, 0); // Non-scaled rectangle -ctx.fillStyle = 'gray'; +ctx.fillStyle = "gray"; ctx.fillRect(10, 10, 8, 20); ``` @@ -78,12 +78,12 @@ Note that the call to {{domxref("CanvasRenderingContext2D.fillText()", "fillText #### JavaScript ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); ctx.scale(-1, 1); -ctx.font = '48px serif'; -ctx.fillText('Hello world!', -280, 90); +ctx.font = "48px serif"; +ctx.fillText("Hello world!", -280, 90); ctx.setTransform(1, 0, 0, 1, 0, 0); ``` diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/setlinedash/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/setlinedash/index.md index bb629eab204a96..72cdbf50da9c79 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/setlinedash/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/setlinedash/index.md @@ -39,8 +39,8 @@ setLineDash(segments); #### JavaScript ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); // Dashed line ctx.beginPath(); @@ -70,7 +70,8 @@ ctx.setLineDash([5, 15]); ctx.beginPath(); ctx.moveTo(0,100); ctx.lineTo(400, 100); -ctx.stroke(); +ctx.stroke(); ``` ```js hidden @@ -86,14 +87,14 @@ function drawCanvas() { eval(textarea.value); } -reset.addEventListener("click", function() { +reset.addEventListener("click", function () { textarea.value = code; drawCanvas(); }); -edit.addEventListener("click", function() { +edit.addEventListener("click", function () { textarea.focus(); -}) +}); textarea.addEventListener("input", drawCanvas); window.addEventListener("load", drawCanvas); @@ -125,8 +126,8 @@ function drawDashedLine(pattern) { y += 20; } -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); let y = 15; drawDashedLine([]); @@ -135,7 +136,7 @@ drawDashedLine([10, 10]); drawDashedLine([20, 5]); drawDashedLine([15, 3, 3, 3]); drawDashedLine([20, 3, 3, 3, 3, 3, 3, 3]); -drawDashedLine([12, 3, 3]); // Equals [12, 3, 3, 12, 3, 3] +drawDashedLine([12, 3, 3]); // Equals [12, 3, 3, 12, 3, 3] ``` #### Result diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/shadowcolor/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/shadowcolor/index.md index 46c58c30b2a2d2..b984ebb1eeffe4 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/shadowcolor/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/shadowcolor/index.md @@ -31,11 +31,11 @@ ctx.shadowColor = color; #### JavaScript ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); // Shadow -ctx.shadowColor = 'red'; +ctx.shadowColor = "red"; ctx.shadowOffsetX = 10; ctx.shadowOffsetY = 10; diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/stroke/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/stroke/index.md index 86063df603c7fc..f62a3ef5d77293 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/stroke/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/stroke/index.md @@ -34,8 +34,8 @@ void ctx.stroke(path); #### JavaScript ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); ctx.rect(10, 10, 150, 100); ctx.stroke(); ``` diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/strokerect/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/strokerect/index.md index 58e0c6c081c9d8..dc530da8009377 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/strokerect/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/strokerect/index.md @@ -45,9 +45,9 @@ void ctx.strokeRect(x, y, width, height); 矩形的左上角是(20,10)。它的宽度为 160,高度为 100。 ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); -ctx.strokeStyle = 'green'; +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); +ctx.strokeStyle = "green"; ctx.strokeRect(20, 10, 160, 100); ``` @@ -68,13 +68,13 @@ ctx.strokeRect(20, 10, 160, 100); #### JavaScript ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); -ctx.shadowColor = '#d53'; +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); +ctx.shadowColor = "#d53"; ctx.shadowBlur = 20; -ctx.lineJoin = 'bevel'; +ctx.lineJoin = "bevel"; ctx.lineWidth = 15; -ctx.strokeStyle = '#38f'; +ctx.strokeStyle = "#38f"; ctx.strokeRect(30, 30, 160, 90); ``` diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/textalign/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/textalign/index.md index fa5346589b22d3..93ae9f990d2f44 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/textalign/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/textalign/index.md @@ -49,9 +49,9 @@ ctx.textAlign = "left" || "right" || "center" || "start" || "end"; #### JavaScript ```js -const canvas = document.getElementById('canvas'); +const canvas = document.getElementById("canvas"); canvas.width = 350; -const ctx = canvas.getContext('2d'); +const ctx = canvas.getContext("2d"); const x = canvas.width / 2; ctx.beginPath(); @@ -59,16 +59,16 @@ ctx.moveTo(x, 0); ctx.lineTo(x, canvas.height); ctx.stroke(); -ctx.font = '30px serif'; +ctx.font = "30px serif"; -ctx.textAlign = 'left'; -ctx.fillText('left-aligned', x, 40); +ctx.textAlign = "left"; +ctx.fillText("left-aligned", x, 40); -ctx.textAlign = 'center'; -ctx.fillText('center-aligned', x, 85); +ctx.textAlign = "center"; +ctx.fillText("center-aligned", x, 85); -ctx.textAlign = 'right'; -ctx.fillText('right-aligned', x, 130); +ctx.textAlign = "right"; +ctx.fillText("right-aligned", x, 130); ``` #### 结果 diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/textbaseline/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/textbaseline/index.md index cc7ba60c81bd26..cdec2659e46dad 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/textbaseline/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/textbaseline/index.md @@ -49,12 +49,19 @@ ctx.textBaseline = "top" || "hanging" || "middle" || "alphabetic" || "ideographi #### JavaScript ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); - -const baselines = ['top', 'hanging', 'middle', 'alphabetic', 'ideographic', 'bottom']; -ctx.font = '36px serif'; -ctx.strokeStyle = 'red'; +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); + +const baselines = [ + "top", + "hanging", + "middle", + "alphabetic", + "ideographic", + "bottom", +]; +ctx.font = "36px serif"; +ctx.strokeStyle = "red"; baselines.forEach((baseline, index) => { ctx.textBaseline = baseline; diff --git a/files/zh-cn/web/api/canvasrenderingcontext2d/translate/index.md b/files/zh-cn/web/api/canvasrenderingcontext2d/translate/index.md index 420549562a6bb9..2983eec4a7807a 100644 --- a/files/zh-cn/web/api/canvasrenderingcontext2d/translate/index.md +++ b/files/zh-cn/web/api/canvasrenderingcontext2d/translate/index.md @@ -39,19 +39,19 @@ void ctx.translate(x, y); #### JavaScript ```js -const canvas = document.getElementById('canvas'); -const ctx = canvas.getContext('2d'); +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); // Moved square ctx.translate(110, 30); -ctx.fillStyle = 'red'; +ctx.fillStyle = "red"; ctx.fillRect(0, 0, 80, 80); // Reset current transformation matrix to the identity matrix ctx.setTransform(1, 0, 0, 1, 0, 0); // Unmoved square -ctx.fillStyle = 'gray'; +ctx.fillStyle = "gray"; ctx.fillRect(0, 0, 80, 80); ``` diff --git a/files/zh-cn/web/api/channel_messaging_api/using_channel_messaging/index.md b/files/zh-cn/web/api/channel_messaging_api/using_channel_messaging/index.md index 92baa8a9c231d4..5cac2ad10f634d 100644 --- a/files/zh-cn/web/api/channel_messaging_api/using_channel_messaging/index.md +++ b/files/zh-cn/web/api/channel_messaging_api/using_channel_messaging/index.md @@ -34,10 +34,10 @@ Channel messaging 在这样的场景中特别有用:假如你有一个社交 在例子的主页面,我们有一个简单的表单,内含一个文本输入框,用来输入要发送到 {{htmlelement("iframe")}} 的消息。我们还有一个段落,我们在稍后将会用它来显示 {{htmlelement("iframe")}} 回传回来的确认消息。 ```js -var input = document.getElementById('message-input'); -var output = document.getElementById('message-output'); -var button = document.querySelector('button'); -var iframe = document.querySelector('iframe'); +var input = document.getElementById("message-input"); +var output = document.getElementById("message-output"); +var button = document.querySelector("button"); +var iframe = document.querySelector("iframe"); var channel = new MessageChannel(); var port1 = channel.port1; @@ -47,13 +47,13 @@ iframe.addEventListener("load", onLoad); function onLoad() { // 监听按钮点击 - button.addEventListener('click', onClick); + button.addEventListener("click", onClick); // 在 port1 监听消息 port1.onmessage = onMessage; // 把 port2 传给 iframe - iframe.contentWindow.postMessage('init', '*', [channel.port2]); + iframe.contentWindow.postMessage("init", "*", [channel.port2]); } // 当按钮点击时,在 port1 上发送一个消息 @@ -65,7 +65,7 @@ function onClick(e) { // 处理 port1 收到的消息 function onMessage(e) { output.innerHTML = e.data; - input.value = ''; + input.value = ""; } ``` @@ -86,11 +86,11 @@ function onMessage(e) { 在 IFrame 里,我们有下面的 JavaScript: ```js -var list = document.querySelector('ul'); +var list = document.querySelector("ul"); var port2; // 监听初始的 port 传递消息 -window.addEventListener('message', initPort); +window.addEventListener("message", initPort); // 设置传过来的 port function initPort(e) { @@ -100,7 +100,7 @@ function initPort(e) { // 处理 port2 收到的消息 function onMessage(e) { - var listItem = document.createElement('li'); + var listItem = document.createElement("li"); listItem.textContent = e.data; list.appendChild(listItem); port2.postMessage('Message received by IFrame: "' + e.data + '"'); @@ -121,7 +121,7 @@ function onMessage(e) { // 处理 port1 上收到的消息 function onMessage(e) { output.innerHTML = e.data; - input.value = ''; + input.value = ""; } ``` diff --git a/files/zh-cn/web/api/channelmergernode/channelmergernode/index.md b/files/zh-cn/web/api/channelmergernode/channelmergernode/index.md index c74eebe5ed97f4..40225385dcc793 100644 --- a/files/zh-cn/web/api/channelmergernode/channelmergernode/index.md +++ b/files/zh-cn/web/api/channelmergernode/channelmergernode/index.md @@ -35,8 +35,8 @@ _从字典_ _{{domxref("AudioNodeOptions")}} 继承。_ var ac = new AudioContext(); var options = { - numberOfInputs : 2 -} + numberOfInputs: 2, +}; var myMerger = new ChannelMergerNode(ac, options); ``` diff --git a/files/zh-cn/web/api/cleartimeout/index.md b/files/zh-cn/web/api/cleartimeout/index.md index 3b11e3a57d8277..d76f69286f4620 100644 --- a/files/zh-cn/web/api/cleartimeout/index.md +++ b/files/zh-cn/web/api/cleartimeout/index.md @@ -26,25 +26,33 @@ scope.clearTimeout(timeoutID) ```js var alarm = { - remind: function(aMessage) { + remind: function (aMessage) { alert(aMessage); delete this.timeoutID; }, - setup: function() { + setup: function () { this.cancel(); var self = this; - this.timeoutID = window.setTimeout(function(msg) {self.remind(msg);}, 1000, "Wake up!"); + this.timeoutID = window.setTimeout( + function (msg) { + self.remind(msg); + }, + 1000, + "Wake up!", + ); }, - cancel: function() { - if(typeof this.timeoutID == "number") { + cancel: function () { + if (typeof this.timeoutID == "number") { window.clearTimeout(this.timeoutID); delete this.timeoutID; } - } + }, +}; +window.onclick = function () { + alarm.setup(); }; -window.onclick = function() { alarm.setup() }; ``` ## 注意 diff --git a/files/zh-cn/web/api/client/postmessage/index.md b/files/zh-cn/web/api/client/postmessage/index.md index 8c0b260c76ee67..977a228525f21b 100644 --- a/files/zh-cn/web/api/client/postmessage/index.md +++ b/files/zh-cn/web/api/client/postmessage/index.md @@ -29,32 +29,33 @@ Void. 从 service worker 向 client 发送消息: ```js -addEventListener('fetch', event => { - event.waitUntil(async function() { - // Exit early if we don't have access to the client. - // Eg, if it's cross-origin. - if (!event.clientId) return; - - // Get the client. - const client = await clients.get(event.clientId); - // Exit early if we don't get the client. - // Eg, if it closed. - if (!client) return; - - // Send a message to the client. - client.postMessage({ - msg: "Hey I just got a fetch from you!", - url: event.request.url - }); - - }()); +addEventListener("fetch", (event) => { + event.waitUntil( + (async function () { + // Exit early if we don't have access to the client. + // Eg, if it's cross-origin. + if (!event.clientId) return; + + // Get the client. + const client = await clients.get(event.clientId); + // Exit early if we don't get the client. + // Eg, if it closed. + if (!client) return; + + // Send a message to the client. + client.postMessage({ + msg: "Hey I just got a fetch from you!", + url: event.request.url, + }); + })(), + ); }); ``` 接收 message: ```js -navigator.serviceWorker.addEventListener('message', event => { +navigator.serviceWorker.addEventListener("message", (event) => { console.log(event.data.msg, event.data.url); }); ``` diff --git a/files/zh-cn/web/api/clients/claim/index.md b/files/zh-cn/web/api/clients/claim/index.md index 7f6f48fe19a3f9..2340bbc9e12650 100644 --- a/files/zh-cn/web/api/clients/claim/index.md +++ b/files/zh-cn/web/api/clients/claim/index.md @@ -28,7 +28,7 @@ A {{jsxref("Promise")}} for `void`. The following example uses `claim()` inside service worker's "`activate`" event listener so that clients loaded in the same scope do not need to be reloaded before their fetches will go through this service worker. ```js -self.addEventListener('activate', event => { +self.addEventListener("activate", (event) => { event.waitUntil(clients.claim()); }); ``` diff --git a/files/zh-cn/web/api/clients/get/index.md b/files/zh-cn/web/api/clients/get/index.md index 19135090ddc946..66913eb6fb5072 100644 --- a/files/zh-cn/web/api/clients/get/index.md +++ b/files/zh-cn/web/api/clients/get/index.md @@ -10,7 +10,7 @@ slug: Web/API/Clients/get ## 语法 ```js -self.clients.get(id).then(function(client) { +self.clients.get(id).then(function (client) { // do something with your returned client }); ``` @@ -27,7 +27,7 @@ self.clients.get(id).then(function(client) { ## 示例 ```js -self.clients.get(options).then(function(client) { +self.clients.get(options).then(function (client) { self.clients.openWindow(client.url); }); ``` diff --git a/files/zh-cn/web/api/clients/index.md b/files/zh-cn/web/api/clients/index.md index aaba90ab4312ca..5d202e24f3f2a2 100644 --- a/files/zh-cn/web/api/clients/index.md +++ b/files/zh-cn/web/api/clients/index.md @@ -23,35 +23,37 @@ slug: Web/API/Clients 下面示例显示一个已有的聊天窗口,或者当用户点击通知时创建新的窗口。 ```js -addEventListener('notificationclick', event => { - event.waitUntil(async function() { - const allClients = await clients.matchAll({ - includeUncontrolled: true - }); - - let chatClient; - - // Let's see if we already have a chat window open: - for (const client of allClients) { - const url = new URL(client.url); - - if (url.pathname == '/chat/') { - // Excellent, let's use it! - client.focus(); - chatClient = client; - break; +addEventListener("notificationclick", (event) => { + event.waitUntil( + (async function () { + const allClients = await clients.matchAll({ + includeUncontrolled: true, + }); + + let chatClient; + + // Let's see if we already have a chat window open: + for (const client of allClients) { + const url = new URL(client.url); + + if (url.pathname == "/chat/") { + // Excellent, let's use it! + client.focus(); + chatClient = client; + break; + } } - } - // If we didn't find an existing chat window, - // open a new one: - if (!chatClient) { - chatClient = await clients.openWindow('/chat/'); - } + // If we didn't find an existing chat window, + // open a new one: + if (!chatClient) { + chatClient = await clients.openWindow("/chat/"); + } - // Message the client: - chatClient.postMessage("New chat messages!"); - }()); + // Message the client: + chatClient.postMessage("New chat messages!"); + })(), + ); }); ``` diff --git a/files/zh-cn/web/api/clients/matchall/index.md b/files/zh-cn/web/api/clients/matchall/index.md index df0f5f56a2e062..6b89827593154a 100644 --- a/files/zh-cn/web/api/clients/matchall/index.md +++ b/files/zh-cn/web/api/clients/matchall/index.md @@ -10,7 +10,7 @@ slug: Web/API/Clients/matchAll ## 语法 ```js -ServiceWorkerClients.matchAll(options).then(function(clients) { +ServiceWorkerClients.matchAll(options).then(function (clients) { // do something with your clients list }); ``` @@ -31,9 +31,9 @@ resolve 为一个 {{domxref("Client")}} 对象数组的 [`Promise`](/zh-CN/docs/ ## 示例 ```js -clients.matchAll(options).then(function(clientList) { - for (var i = 0 ; i < clients.length ; i++) { - if (clientList[i].url === 'index.html') { +clients.matchAll(options).then(function (clientList) { + for (var i = 0; i < clients.length; i++) { + if (clientList[i].url === "index.html") { clients.openWindow(clientList[i]); // or do something else involving the matching client } diff --git a/files/zh-cn/web/api/clients/openwindow/index.md b/files/zh-cn/web/api/clients/openwindow/index.md index 92064e56ec04b9..ae694b2f214e2f 100644 --- a/files/zh-cn/web/api/clients/openwindow/index.md +++ b/files/zh-cn/web/api/clients/openwindow/index.md @@ -14,7 +14,7 @@ slug: Web/API/Clients/openWindow ## 语法 ```js -ServiceWorkerClients.openWindow(url).then(function(WindowClient) { +ServiceWorkerClients.openWindow(url).then(function (WindowClient) { // do something with your WindowClient }); ``` @@ -33,9 +33,9 @@ ServiceWorkerClients.openWindow(url).then(function(WindowClient) { ```js // When the user clicks a notification focus the window if it exists or open // a new one otherwise. -onotificationclick = function(event) { +onotificationclick = function (event) { var found = false; - clients.matchAll().then(function(clientsArr) { + clients.matchAll().then(function (clientsArr) { for (i = 0; i < clientsArr.length; i++) { if (clientsArr[i].url === event.data.url) { // We already have a window to use, focus it. @@ -46,7 +46,7 @@ onotificationclick = function(event) { } if (!found) { // Create a new window. - clients.openWindow(event.data.url).then(function(windowClient) { + clients.openWindow(event.data.url).then(function (windowClient) { // do something with the windowClient. }); } diff --git a/files/zh-cn/web/api/clipboard/index.md b/files/zh-cn/web/api/clipboard/index.md index 33277883036746..a7ab2b349ccd2c 100644 --- a/files/zh-cn/web/api/clipboard/index.md +++ b/files/zh-cn/web/api/clipboard/index.md @@ -23,7 +23,7 @@ slug: Web/API/Clipboard ## 方法 -*`Clipboard` 继承自 {{domxref("EventTarget")}} 接口,因此拥有它的方法。* +_`Clipboard` 继承自 {{domxref("EventTarget")}} 接口,因此拥有它的方法。_ - {{domxref("Clipboard.read()","read()")}} - : 从剪贴板读取数据(比如图片),返回一个 {{jsxref("Promise")}} 对象。在检索到数据后,promise 将兑现一个 {{domxref("ClipboardItem")}} 对象的数组来提供剪切板数据。 diff --git a/files/zh-cn/web/api/clipboard/read/index.md b/files/zh-cn/web/api/clipboard/read/index.md index 9bc7bc42b97f1f..9e33ef113b98e7 100644 --- a/files/zh-cn/web/api/clipboard/read/index.md +++ b/files/zh-cn/web/api/clipboard/read/index.md @@ -33,13 +33,13 @@ After using {{domxref("Permissions.query", "navigator.permissions.query()")}} to // First, ask the Permissions API if we have some kind of access to // the "clipboard-read" feature. -navigator.permissions.query({name: "clipboard-read"}).then(result => { +navigator.permissions.query({ name: "clipboard-read" }).then((result) => { // If permission to read the clipboard is granted or if the user will // be prompted to allow it, we proceed. if (result.state == "granted" || result.state == "prompt") { - navigator.clipboard.read().then(data => { - for (let i=0; i { + for (let i = 0; i < data.items.length; i++) { if (data.items[i].type != "text/plain") { alert("Clipboard contains non-text data. Unable to access it."); } else { diff --git a/files/zh-cn/web/api/clipboard/readtext/index.md b/files/zh-cn/web/api/clipboard/readtext/index.md index 701c672f224ca2..dda2be6e248057 100644 --- a/files/zh-cn/web/api/clipboard/readtext/index.md +++ b/files/zh-cn/web/api/clipboard/readtext/index.md @@ -28,8 +28,9 @@ A {{jsxref("Promise")}} that resolves with a {{domxref("DOMString")}} containing 此示例检索剪贴板的文本内容,并将返回的文本插入元素的内容中。 ```js -navigator.clipboard.readText().then( - clipText => document.getElementById("outbox").innerText = clipText); +navigator.clipboard + .readText() + .then((clipText) => (document.getElementById("outbox").innerText = clipText)); ``` ## 规范 diff --git a/files/zh-cn/web/api/clipboard/write/index.md b/files/zh-cn/web/api/clipboard/write/index.md index 78ca3a5f4ea81a..3bc68cddb43f93 100644 --- a/files/zh-cn/web/api/clipboard/write/index.md +++ b/files/zh-cn/web/api/clipboard/write/index.md @@ -35,11 +35,14 @@ function setClipboard(text) { let data = new DataTransfer(); data.items.add("text/plain", text); - navigator.clipboard.write(data).then(function() { - /* success */ - }, function() { - /* failure */ - }); + navigator.clipboard.write(data).then( + function () { + /* success */ + }, + function () { + /* failure */ + }, + ); } ``` diff --git a/files/zh-cn/web/api/clipboard/writetext/index.md b/files/zh-cn/web/api/clipboard/writetext/index.md index b93ce9cb058ad2..95b9b9bf9a9eb3 100644 --- a/files/zh-cn/web/api/clipboard/writetext/index.md +++ b/files/zh-cn/web/api/clipboard/writetext/index.md @@ -29,11 +29,14 @@ var promise = navigator.clipboard.writeText(newClipText) 此示例将剪贴板的内容设置为字符串“\”。 ```js -navigator.clipboard.writeText("").then(function() { - /* clipboard successfully set */ -}, function() { - /* clipboard write failed */ -}); +navigator.clipboard.writeText("").then( + function () { + /* clipboard successfully set */ + }, + function () { + /* clipboard write failed */ + }, +); ``` ## 规范 diff --git a/files/zh-cn/web/api/clipboard_api/index.md b/files/zh-cn/web/api/clipboard_api/index.md index 3eb6ce0fdd2347..be729c2e97d6b8 100644 --- a/files/zh-cn/web/api/clipboard_api/index.md +++ b/files/zh-cn/web/api/clipboard_api/index.md @@ -14,8 +14,11 @@ slug: Web/API/Clipboard_API 除了在实例化中创建一个 `Clipboard` 对象,你还可以使用全局的 {{domxref("Navigator.clipboard")}} 来访问系统剪贴板。 ```js -navigator.clipboard.readText().then( - clipText => document.querySelector(".editor").innerText += clipText); +navigator.clipboard + .readText() + .then( + (clipText) => (document.querySelector(".editor").innerText += clipText), + ); ``` 上述代码提取了剪贴板的文本并将其附在 class 为 `editor` 的第一个元素后面。因为当剪贴板中不是文本时, {{domxref("Clipboard.readText", "readText()")}} (and {{domxref("Clipboard.read", "read()")}}, for that matter) 会返回一个空字符串,所以这段代码是安全的。 diff --git a/files/zh-cn/web/api/clipboarditem/index.md b/files/zh-cn/web/api/clipboarditem/index.md index 230ba714d86139..ee13098c4d47a3 100644 --- a/files/zh-cn/web/api/clipboarditem/index.md +++ b/files/zh-cn/web/api/clipboarditem/index.md @@ -43,17 +43,17 @@ Here we're writing a new {{domxref("ClipboardItem.ClipboardItem()")}} to the {{d ```js async function writeClipImg() { try { - const imgURL = '/myimage.png'; + const imgURL = "/myimage.png"; const data = await fetch(imgURL); const blob = await data.blob(); await navigator.clipboard.write([ new ClipboardItem({ - [blob.type]: blob - }) + [blob.type]: blob, + }), ]); - console.log('Fetched image copied.'); - } catch(err) { + console.log("Fetched image copied."); + } catch (err) { console.error(err.name, err.message); } } @@ -69,14 +69,11 @@ async function getClipboardContents() { const clipboardItems = await navigator.clipboard.read(); for (const clipboardItem of clipboardItems) { - for (const type of clipboardItem.types) { const blob = await clipboardItem.getType(type); // we can now use blob here } - } - } catch (err) { console.error(err.name, err.message); } diff --git a/files/zh-cn/web/api/compression_streams_api/index.md b/files/zh-cn/web/api/compression_streams_api/index.md index 3b55b1fa62cac8..5657ee261a2fd5 100644 --- a/files/zh-cn/web/api/compression_streams_api/index.md +++ b/files/zh-cn/web/api/compression_streams_api/index.md @@ -22,7 +22,7 @@ slug: Web/API/Compression_Streams_API ```js const compressedReadableStream = inputReadableStream.pipeThrough( - new CompressionStream("gzip") + new CompressionStream("gzip"), ); ``` diff --git a/files/zh-cn/web/api/compressionstream/compressionstream/index.md b/files/zh-cn/web/api/compressionstream/compressionstream/index.md index c295169fde6134..2ec1a5a0abdb1b 100644 --- a/files/zh-cn/web/api/compressionstream/compressionstream/index.md +++ b/files/zh-cn/web/api/compressionstream/compressionstream/index.md @@ -34,7 +34,7 @@ new CompressionStream(format) ```js const compressedReadableStream = inputReadableStream.pipeThrough( - new CompressionStream("gzip") + new CompressionStream("gzip"), ); ``` diff --git a/files/zh-cn/web/api/compressionstream/index.md b/files/zh-cn/web/api/compressionstream/index.md index 2f0f0521aa02f1..0e135ef1f17ea1 100644 --- a/files/zh-cn/web/api/compressionstream/index.md +++ b/files/zh-cn/web/api/compressionstream/index.md @@ -25,7 +25,7 @@ slug: Web/API/CompressionStream ```js const compressedReadableStream = inputReadableStream.pipeThrough( - new CompressionStream("gzip") + new CompressionStream("gzip"), ); ``` diff --git a/files/zh-cn/web/api/console/assert/index.md b/files/zh-cn/web/api/console/assert/index.md index 2074a22463f07b..aef5c0a50227e8 100644 --- a/files/zh-cn/web/api/console/assert/index.md +++ b/files/zh-cn/web/api/console/assert/index.md @@ -34,12 +34,12 @@ console.assert(assertion, msg [, subst1, ..., substN]); // c-like message format 下面的代码示例演示了 JavaScript 对象的使用: ```js -const errorMsg = 'the # is not even'; +const errorMsg = "the # is not even"; for (let number = 2; number <= 5; number += 1) { - console.log('the # is ' + number); - console.assert(number % 2 === 0, {number: number, errorMsg: errorMsg}); - // 或者使用 ES2015 对象简写: - // console.assert(number % 2 === 0, {number, errorMsg}); + console.log("the # is " + number); + console.assert(number % 2 === 0, { number: number, errorMsg: errorMsg }); + // 或者使用 ES2015 对象简写: + // console.assert(number % 2 === 0, {number, errorMsg}); } // 输出: // the # is 2 @@ -53,14 +53,14 @@ for (let number = 2; number <= 5; number += 1) { 请注意,你可以在大多数浏览器中使用 console.log 进行格式化输出 ```js -console.log('the word is %s try number %d', 'foo', 123); +console.log("the word is %s try number %d", "foo", 123); // 输出:the word is foo try number 123 ``` `但是 console.assert` 在不同浏览器中可能获得不同的效果: ```js -console.assert(false, 'the word is %s', 'foo'); +console.assert(false, "the word is %s", "foo"); // correct output in Node (e.g. v8.10.0) and some browsers // (e.g. Firefox v60.0.2): // Assertion failed: the word is foo diff --git a/files/zh-cn/web/api/console/index.md b/files/zh-cn/web/api/console/index.md index b048aa6558f69f..a1d761035e7278 100644 --- a/files/zh-cn/web/api/console/index.md +++ b/files/zh-cn/web/api/console/index.md @@ -10,7 +10,7 @@ slug: Web/API/console `Console` 对象可以从任何全局对象中访问到,如 浏览器作用域上的 {{domxref("Window")}},以及通过属性控制台作为 workers 中的特定变体的 {{domxref("WorkerGlobalScope")}}。可以通过 {{domxref("Window.console")}} 引用,也可以简单的通过 `console` 引用。例: ```js -console.log("Failed to open the specified link") +console.log("Failed to open the specified link"); ``` 本页面记录了 `Console` 对象上的[方法](#方法)并给出了几个 [Usage](#usage) (用例)。 @@ -143,7 +143,10 @@ for (var i=0; i<5; i++) { 可以使用 `%c` 为打印内容定义样式: ```js -console.log("This is %cMy stylish message", "color: yellow; font-style: italic; background-color: blue;padding: 2px"); +console.log( + "This is %cMy stylish message", + "color: yellow; font-style: italic; background-color: blue;padding: 2px", +); ``` 指令前的文本不会受到影响,但指令后的文本将会使用参数中声明的 CSS 样式。![](css-styling.png) diff --git a/files/zh-cn/web/api/console/log/index.md b/files/zh-cn/web/api/console/log/index.md index 769e696482dc77..b14dd46ac23657 100644 --- a/files/zh-cn/web/api/console/log/index.md +++ b/files/zh-cn/web/api/console/log/index.md @@ -5,7 +5,7 @@ slug: Web/API/console/log {{APIRef("Console API")}} - **`console.log()`** 方法向 Web 控制台输出一条信息。这条信息可能是单个字符串(包括可选的替代字符串),也可能是一个或多个对象。 +**`console.log()`** 方法向 Web 控制台输出一条信息。这条信息可能是单个字符串(包括可选的替代字符串),也可能是一个或多个对象。 {{AvailableInWorkers}} diff --git a/files/zh-cn/web/api/console/table/index.md b/files/zh-cn/web/api/console/table/index.md index 7ce0c825826b70..cef454ea915019 100644 --- a/files/zh-cn/web/api/console/table/index.md +++ b/files/zh-cn/web/api/console/table/index.md @@ -49,7 +49,11 @@ console.table(me); ```js // 二元数组的打印 -var people = [["John", "Smith"], ["Jane", "Doe"], ["Emily", "Jones"]] +var people = [ + ["John", "Smith"], + ["Jane", "Doe"], + ["Emily", "Jones"], +]; console.table(people); ``` diff --git a/files/zh-cn/web/api/console_api/index.md b/files/zh-cn/web/api/console_api/index.md index 3956c782c0ccf4..6a58bf346e3482 100644 --- a/files/zh-cn/web/api/console_api/index.md +++ b/files/zh-cn/web/api/console_api/index.md @@ -26,10 +26,10 @@ Console API 最初是一个专有的 API,不同的浏览器以自己的实现 ## 示例 ```js -let myString = 'Hello world'; +let myString = "Hello world"; // Output "Hello world" to the console -console.log(myString) +console.log(myString); ``` 到[Console reference page](/zh-CN/docs/Web/API/Console#Usage)查看更多示例 diff --git a/files/zh-cn/web/api/contentvisibilityautostatechangeevent/index.md b/files/zh-cn/web/api/contentvisibilityautostatechangeevent/index.md index 5299eb03fb0fa0..7a0cecc590ef24 100644 --- a/files/zh-cn/web/api/contentvisibilityautostatechangeevent/index.md +++ b/files/zh-cn/web/api/contentvisibilityautostatechangeevent/index.md @@ -20,7 +20,7 @@ slug: Web/API/ContentVisibilityAutoStateChangeEvent ## 实例属性 -*从其父接口 {{DOMxRef("Event")}} 继承属性。* +_从其父接口 {{DOMxRef("Event")}} 继承属性。_ - {{domxref("ContentVisibilityAutoStateChangeEvent.skipped", "skipped")}} {{ReadOnlyInline}} - : 如果用户代理正在跳过元素的渲染则返回 `true`,否则返回 `false`。 @@ -28,9 +28,9 @@ slug: Web/API/ContentVisibilityAutoStateChangeEvent ## 示例 ```js -const canvasElem = document.querySelector('canvas'); +const canvasElem = document.querySelector("canvas"); -canvasElem.addEventListener('contentvisibilityautostatechange', stateChanged); +canvasElem.addEventListener("contentvisibilityautostatechange", stateChanged); canvasElem.style.contentVisibility = "auto"; function stateChanged(event) { diff --git a/files/zh-cn/web/api/countqueuingstrategy/countqueuingstrategy/index.md b/files/zh-cn/web/api/countqueuingstrategy/countqueuingstrategy/index.md index 8322374d5df7c6..5c53adec806e1e 100644 --- a/files/zh-cn/web/api/countqueuingstrategy/countqueuingstrategy/index.md +++ b/files/zh-cn/web/api/countqueuingstrategy/countqueuingstrategy/index.md @@ -9,7 +9,7 @@ slug: Web/API/CountQueuingStrategy/CountQueuingStrategy ## 语法 -```js +```js-nolint new CountQueuingStrategy(highWaterMark) ``` @@ -31,18 +31,21 @@ new CountQueuingStrategy(highWaterMark) ```js const queuingStrategy = new CountQueuingStrategy({ highWaterMark: 1 }); -const writableStream = new WritableStream({ - // Implement the sink - write(chunk) { - // … - }, - close() { - // … +const writableStream = new WritableStream( + { + // Implement the sink + write(chunk) { + // … + }, + close() { + // … + }, + abort(err) { + console.log("Sink error:", err); + }, }, - abort(err) { - console.log("Sink error:", err); - } -}, queuingStrategy); + queuingStrategy, +); const size = queuingStrategy.size(); ``` diff --git a/files/zh-cn/web/api/countqueuingstrategy/highwatermark/index.md b/files/zh-cn/web/api/countqueuingstrategy/highwatermark/index.md index e19047864ca2fe..12b764a631adfa 100644 --- a/files/zh-cn/web/api/countqueuingstrategy/highwatermark/index.md +++ b/files/zh-cn/web/api/countqueuingstrategy/highwatermark/index.md @@ -28,7 +28,7 @@ const readableStream = new ReadableStream( console.log("stream error:", err); }, }, - queuingStrategy + queuingStrategy, ); const size = queuingStrategy.size(chunk); diff --git a/files/zh-cn/web/api/countqueuingstrategy/index.md b/files/zh-cn/web/api/countqueuingstrategy/index.md index 6fdd2339c4d086..4e8d51bca011d1 100644 --- a/files/zh-cn/web/api/countqueuingstrategy/index.md +++ b/files/zh-cn/web/api/countqueuingstrategy/index.md @@ -27,18 +27,21 @@ slug: Web/API/CountQueuingStrategy ```js const queueingStrategy = new CountQueuingStrategy({ highWaterMark: 1 }); -const writableStream = new WritableStream({ - // Implement the sink - write(chunk) { - // … +const writableStream = new WritableStream( + { + // Implement the sink + write(chunk) { + // … + }, + close() { + // … + }, + abort(err) { + console.log("Sink error:", err); + }, }, - close() { - // … - }, - abort(err) { - console.log("Sink error:", err); - } -}, queueingStrategy); + queueingStrategy, +); const size = queueingStrategy.size(); ``` diff --git a/files/zh-cn/web/api/countqueuingstrategy/size/index.md b/files/zh-cn/web/api/countqueuingstrategy/size/index.md index 818f98ff56e885..61a9086a8336aa 100644 --- a/files/zh-cn/web/api/countqueuingstrategy/size/index.md +++ b/files/zh-cn/web/api/countqueuingstrategy/size/index.md @@ -9,7 +9,7 @@ slug: Web/API/CountQueuingStrategy/size ## 语法 -```js +```js-nolint size() ``` @@ -26,18 +26,21 @@ size() ```js const queuingStrategy = new CountQueuingStrategy({ highWaterMark: 1 }); -const writableStream = new WritableStream({ - // Implement the sink - write(chunk) { - // … - }, - close() { - // … +const writableStream = new WritableStream( + { + // Implement the sink + write(chunk) { + // … + }, + close() { + // … + }, + abort(err) { + console.log("Sink error:", err); + }, }, - abort(err) { - console.log("Sink error:", err); - } -}, queuingStrategy); + queuingStrategy, +); const size = queuingStrategy.size(); ``` diff --git a/files/zh-cn/web/api/createimagebitmap/index.md b/files/zh-cn/web/api/createimagebitmap/index.md index f1f8f455cc781c..397b7ed02c46f3 100644 --- a/files/zh-cn/web/api/createimagebitmap/index.md +++ b/files/zh-cn/web/api/createimagebitmap/index.md @@ -44,21 +44,21 @@ createImageBitmap(image, sx, sy, sw, sh[, options]).then(function(response) { .. ## Example ```js -var canvas = document.getElementById('myCanvas'), -ctx = canvas.getContext('2d'), -image = new Image(); +var canvas = document.getElementById("myCanvas"), + ctx = canvas.getContext("2d"), + image = new Image(); -image.onload = function() { +image.onload = function () { Promise.all([ createImageBitmap(this, 0, 0, 32, 32), - createImageBitmap(this, 32, 0, 32, 32) - ]).then(function(sprites) { + createImageBitmap(this, 32, 0, 32, 32), + ]).then(function (sprites) { ctx.drawImage(sprites[0], 0, 0); ctx.drawImage(sprites[1], 32, 32); }); -} +}; -image.src = 'sprites.png'; +image.src = "sprites.png"; ``` ## Specifications diff --git a/files/zh-cn/web/api/crossoriginisolated/index.md b/files/zh-cn/web/api/crossoriginisolated/index.md index a707f61b18b505..4d33121291f379 100644 --- a/files/zh-cn/web/api/crossoriginisolated/index.md +++ b/files/zh-cn/web/api/crossoriginisolated/index.md @@ -22,7 +22,7 @@ var myCrossOriginIsolated = self.crossOriginIsolated; // 或直接 crossOriginIs ## 示例 ```js -if(crossOriginIsolated) { +if (crossOriginIsolated) { // post SharedArrayBuffer } else { // Do something else diff --git a/files/zh-cn/web/api/crypto/getrandomvalues/index.md b/files/zh-cn/web/api/crypto/getrandomvalues/index.md index a057cf8b5a69f8..60b09aea8fb252 100644 --- a/files/zh-cn/web/api/crypto/getrandomvalues/index.md +++ b/files/zh-cn/web/api/crypto/getrandomvalues/index.md @@ -35,7 +35,7 @@ window.crypto.getRandomValues(array); console.log("Your lucky numbers:"); for (var i = 0; i < array.length; i++) { - console.log(array[i]); + console.log(array[i]); } ``` diff --git a/files/zh-cn/web/api/crypto_property/index.md b/files/zh-cn/web/api/crypto_property/index.md index daeb0683590c89..6961a8db1b778a 100644 --- a/files/zh-cn/web/api/crypto_property/index.md +++ b/files/zh-cn/web/api/crypto_property/index.md @@ -35,9 +35,7 @@ globalThis.genRandomNumbers = () => { ```html

随机数为:

- + ``` ### 结果 diff --git a/files/zh-cn/web/api/cryptokey/index.md b/files/zh-cn/web/api/cryptokey/index.md index c8893273a49078..c77a8dce12e1c1 100644 --- a/files/zh-cn/web/api/cryptokey/index.md +++ b/files/zh-cn/web/api/cryptokey/index.md @@ -12,6 +12,7 @@ slug: Web/API/CryptoKey ## 实例属性 - `CryptoKey.type` + - : 返回一个表示密钥类型的字符串,可使用以下值: - `"secret"`:为密钥(secret key),用于{{Glossary("Symmetric-key cryptography", "对称加密算法")}}。 @@ -19,12 +20,14 @@ slug: Web/API/CryptoKey - `"public"`:为{{Glossary("Public-key cryptography", "非对称加密算法")}}的 [`CryptoKeyPair`](/zh-CN/docs/Web/API/CryptoKeyPair) 的公钥(public key)部分。 - `CryptoKey.extractable` + - : 一个布尔值,表示原始信息是否能使用 [`SubtleCrypto.exportKey()`](/zh-CN/docs/Web/API/SubtleCrypto/exportKey) 或 [`SubtleCrypto.wrapKey()`](/zh-CN/docs/Web/API/SubtleCrypto/wrapKey) 导出。 - `true`:密钥可以导出。 - `false`:密钥不能导出。使用 [`exportKey()`](/zh-CN/docs/Web/API/SubtleCrypto/exportKey) 或 [`wrapKey()`](/zh-CN/docs/Web/API/SubtleCrypto/wrapKey) 方法来导出此密钥将会抛出异常。 - `CryptoKey.algorithm` + - : 一个描述可使用此密钥的算法及任何关联的额外参数的对象。 - [`AesKeyGenParams`](/zh-CN/docs/Web/API/AesKeyGenParams) 如果算法是任意高级加密标准(AES)的变体。 @@ -33,6 +36,7 @@ slug: Web/API/CryptoKey - [`HmacKeyGenParams`](/zh-CN/docs/Web/API/HmacKeyGenParams) 如果算法是任意密钥散列消息认证码(HMAC)的变体。 - `CryptoKey.usages` + - : 一个字符串的{{jsxref("Array", "数组", "", 1)}},指明密钥的用途。数组元素可能的值有: - `"encrypt"`:密钥可用于{{domxref("SubtleCrypto.encrypt()", "加密", "", 1)}}消息。 diff --git a/files/zh-cn/web/api/css/escape_static/index.md b/files/zh-cn/web/api/css/escape_static/index.md index 3ee66eb42db2d9..c600bfe15173bc 100644 --- a/files/zh-cn/web/api/css/escape_static/index.md +++ b/files/zh-cn/web/api/css/escape_static/index.md @@ -24,11 +24,11 @@ escapedStr = CSS.escape(str); ### 基本结果 ```js -CSS.escape(".foo#bar") // "\.foo\#bar" -CSS.escape("()[]{}") // "\(\)\[\]\\{\\}" -CSS.escape('--a') // "--a" -CSS.escape(0) // "\30 ", Unicode 代码点“0”是 30 -CSS.escape('\0') // "\ufffd", Unicode 替换字符 +CSS.escape(".foo#bar"); // "\.foo\#bar" +CSS.escape("()[]{}"); // "\(\)\[\]\\{\\}" +CSS.escape("--a"); // "--a" +CSS.escape(0); // "\30 ", Unicode 代码点“0”是 30 +CSS.escape("\0"); // "\ufffd", Unicode 替换字符 ``` ### 在上下文使用 @@ -36,7 +36,7 @@ CSS.escape('\0') // "\ufffd", Unicode 替换字符 要转义一个字符串作为选择器使用, `escape()`方法可以用于: ```js -var element = document.querySelector('#' + CSS.escape(id) + ' > img'); +var element = document.querySelector("#" + CSS.escape(id) + " > img"); ``` `escape()`方法也可以用于转义字符串,它也转义了不严格需要转义的字符: diff --git a/files/zh-cn/web/api/css/factory_functions_static/index.md b/files/zh-cn/web/api/css/factory_functions_static/index.md index 71cfd02a300370..968c628c38c9af 100644 --- a/files/zh-cn/web/api/css/factory_functions_static/index.md +++ b/files/zh-cn/web/api/css/factory_functions_static/index.md @@ -64,16 +64,16 @@ CSS.fr(number); ```js let height = CSS.vmax(50); -console.log( height ); // CSSUnitValue {value: 50, unit: "vmax"} -console.log( height.value ) // 50 -console.log( height.unit ) // vmax +console.log(height); // CSSUnitValue {value: 50, unit: "vmax"} +console.log(height.value); // 50 +console.log(height.unit); // vmax ``` 在这个例子中,我们给元素设定 margin 属性值,使用 `CSS.px()` 函数: ```js -myElement.attributeStyleMap.set('margin', CSS.px(40)); -let currentMargin = myElement.attributeStyleMap.get('margin'); +myElement.attributeStyleMap.set("margin", CSS.px(40)); +let currentMargin = myElement.attributeStyleMap.get("margin"); console.log(currentMargin.value, currentMargin.unit); // 40, 'px' ``` diff --git a/files/zh-cn/web/api/css/supports_static/index.md b/files/zh-cn/web/api/css/supports_static/index.md index 335f05c2815d0b..1fbda172fffcb3 100644 --- a/files/zh-cn/web/api/css/supports_static/index.md +++ b/files/zh-cn/web/api/css/supports_static/index.md @@ -34,11 +34,13 @@ boolValue = CSS.supports(supportCondition); ```js result = CSS.supports("text-decoration-style", "blink"); result = CSS.supports("display", "flex"); -result = CSS.supports('--foo', 'red'); -result = CSS.supports('(--foo: red)'); +result = CSS.supports("--foo", "red"); +result = CSS.supports("(--foo: red)"); result = CSS.supports("( transform-origin: 5% 5% )"); -result = CSS.supports("( transform-style: preserve ) or ( -moz-transform-style: preserve ) or " + - "( -o-transform-style: preserve ) or ( -webkit-transform-style: preserve )" ); +result = CSS.supports( + "( transform-style: preserve ) or ( -moz-transform-style: preserve ) or " + + "( -o-transform-style: preserve ) or ( -webkit-transform-style: preserve )", +); //result is true or false ``` diff --git a/files/zh-cn/web/api/css_custom_highlight_api/index.md b/files/zh-cn/web/api/css_custom_highlight_api/index.md index 3ca8c9fb92a5e5..7288189969c6b1 100644 --- a/files/zh-cn/web/api/css_custom_highlight_api/index.md +++ b/files/zh-cn/web/api/css_custom_highlight_api/index.md @@ -109,25 +109,25 @@ CSS.highlights.clear(); 下面的 HTML 代码片段定义了一个搜索框和有几段文字的文章: ```html - +

Maxime debitis hic, delectus perspiciatis laborum molestiae labore, - deleniti, quam consequatur iure veniam alias voluptas nisi quo. - Dolorem eaque alias, quo vel quas repudiandae architecto deserunt - quidem, sapiente laudantium nulla. + deleniti, quam consequatur iure veniam alias voluptas nisi quo. Dolorem + eaque alias, quo vel quas repudiandae architecto deserunt quidem, sapiente + laudantium nulla.

- Maiores odit molestias, necessitatibus doloremque dolor illum - reprehenderit provident nostrum laboriosam iste, tempore perferendis! - Ab porro neque esse voluptas libero necessitatibus fugiat, ex, minus - atque deserunt veniam molestiae tempora? Vitae. + Maiores odit molestias, necessitatibus doloremque dolor illum reprehenderit + provident nostrum laboriosam iste, tempore perferendis! Ab porro neque esse + voluptas libero necessitatibus fugiat, ex, minus atque deserunt veniam + molestiae tempora? Vitae.

- Dolorum facilis voluptate eaque eius similique ducimus dignissimos - assumenda quos architecto. Doloremque deleniti non exercitationem - rerum quam alias harum, nisi obcaecati corporis temporibus vero sapiente - voluptatum est quibusdam id ipsa. + Dolorum facilis voluptate eaque eius similique ducimus dignissimos assumenda + quos architecto. Doloremque deleniti non exercitationem rerum quam alias + harum, nisi obcaecati corporis temporibus vero sapiente voluptatum est + quibusdam id ipsa.

``` @@ -159,7 +159,7 @@ query.addEventListener("input", () => { return; } - // Clear the HighlightRegistry to remove the + // Clear the HighlightRegistry to remove the // previous search results. CSS.highlights.clear(); @@ -185,7 +185,7 @@ query.addEventListener("input", () => { startPos = index + str.length; } - // Create a range object for each instance of + // Create a range object for each instance of // str we found in the text node. return indices.map((index) => { const range = new Range(); diff --git a/files/zh-cn/web/api/css_font_loading_api/index.md b/files/zh-cn/web/api/css_font_loading_api/index.md index 3b570877da3c51..6f8ffd5ffe8e9b 100644 --- a/files/zh-cn/web/api/css_font_loading_api/index.md +++ b/files/zh-cn/web/api/css_font_loading_api/index.md @@ -120,7 +120,7 @@ canvas.height = 75; ```js const bitterFontFace = new FontFace( "FontFamily Bitter", - "url(https://fonts.gstatic.com/s/bitter/v7/HEpP8tJXlWaYHimsnXgfCOvvDin1pK8aKteLpeZ5c0A.woff2)" + "url(https://fonts.gstatic.com/s/bitter/v7/HEpP8tJXlWaYHimsnXgfCOvvDin1pK8aKteLpeZ5c0A.woff2)", ); document.fonts.add(bitterFontFace); log.textContent += `Bitter font: ${bitterFontFace.status}\n`; // > Bitter font: unloaded @@ -139,7 +139,7 @@ bitterFontFace.load().then( }, (err) => { console.error(err); - } + }, ); ``` @@ -176,7 +176,7 @@ const ctx = canvas.getContext("2d"); const oxygenFontFace = new FontFace( "FontFamily Oxygen", - "url(https://fonts.gstatic.com/s/oxygen/v5/qBSyz106i5ud7wkBU-FrPevvDin1pK8aKteLpeZ5c0A.woff2)" + "url(https://fonts.gstatic.com/s/oxygen/v5/qBSyz106i5ud7wkBU-FrPevvDin1pK8aKteLpeZ5c0A.woff2)", ); document.fonts.add(oxygenFontFace); log.textContent += `Oxygen status: ${oxygenFontFace.status}\n`; @@ -194,7 +194,7 @@ document.fonts.load("36px FontFamily Oxygen").then( }, (err) => { console.error(err); - } + }, ); ``` diff --git a/files/zh-cn/web/api/css_object_model/using_dynamic_styling_information/index.md b/files/zh-cn/web/api/css_object_model/using_dynamic_styling_information/index.md index 2fea78af708464..adc45e24fddd7f 100644 --- a/files/zh-cn/web/api/css_object_model/using_dynamic_styling_information/index.md +++ b/files/zh-cn/web/api/css_object_model/using_dynamic_styling_information/index.md @@ -17,21 +17,22 @@ CSS 对象模型(CSSOM),是 DOM 的一部分,通过暴露一些接口, ```html - -Modifying a stylesheet rule with CSSOM - - - - -The stylesheet declaration for the body's background color is modified via JavaScript. - + + Modifying a stylesheet rule with CSSOM + + + + + The stylesheet declaration for the body's background color is modified via + JavaScript. + ``` @@ -51,39 +52,36 @@ The stylesheet declaration for the body's background color is modified via JavaS ```html - -simple style example - - - - - - - - - -

- Click here to change background color. -

- - - - - + + simple style example + + + + + + + + +

+ Click here to change background color. +

+ + + + ``` @@ -98,26 +96,26 @@ function resetStyle(elemId) { 比这两个属性更重要的是使用 `style` 对象来给某个元素设置单独的样式属性。 ```html - + - - style Property Example - - - - - -
Thunder
- - - + + style Property Example + + + + + +
Thunder
+ + + ``` @@ -130,8 +128,8 @@ style 的 media 和 type 给不给出都可以。 注意,你也可以通过获得元素的引用,然后使用它的 [`setAttribute`](/zh-CN/DOM/element.setAttribute) 方法,指定 CSS 属性和值,来改变该元素的样式。 ```js -var el = document.getElementById('some-element'); -el.setAttribute('style', 'background-color:darkblue;'); +var el = document.getElementById("some-element"); +el.setAttribute("style", "background-color:darkblue;"); ``` 但请注意,`setAttribute` 会移除该元素样式对象中已经定义的其他样式属性。如果上面的 `some-element` 有一个行内样式属性:`style="font-size: 18px"`,其值将会因为使用了 `setAttribute` 方法而被移除。 diff --git a/files/zh-cn/web/api/cssrule/csstext/index.md b/files/zh-cn/web/api/cssrule/csstext/index.md index a5a3cbc516a27c..1e2d20f41842f5 100644 --- a/files/zh-cn/web/api/cssrule/csstext/index.md +++ b/files/zh-cn/web/api/cssrule/csstext/index.md @@ -17,7 +17,9 @@ string = cssRule.cssText ```html @@ -339,14 +351,14 @@ for (let i = 0; i < divs.length; i++) {
- +
- +
- +

@@ -361,17 +373,17 @@ div { さあちょっとした JavaScript です — ここでは [onsubmit](/ja/docs/Web/API/GlobalEventHandlers/onsubmit) イベントハンドラー(フォームがサブミットされるとサブミットイベントが発火します)の中で、テキストフィールドが空かどうかテストするだけのとても簡単なチェックを実装します。もし空なら、イベントオブジェクトの [`preventDefault()`](/ja/docs/Web/API/Event/preventDefault) 関数— これでフォームの送信を抑制します — を呼び、それからフォームの下にあるパラグラフに、何が問題なのかユーザーに伝えるためのエラーメッセージを表示します: ```js -const form = document.querySelector('form'); -const fname = document.getElementById('fname'); -const lname = document.getElementById('lname'); -const para = document.querySelector('p'); +const form = document.querySelector("form"); +const fname = document.getElementById("fname"); +const lname = document.getElementById("lname"); +const para = document.querySelector("p"); -form.onsubmit = function(e) { - if (fname.value === '' || lname.value === '') { +form.onsubmit = function (e) { + if (fname.value === "" || lname.value === "") { e.preventDefault(); - para.textContent = 'You need to fill in both names!'; + para.textContent = "You need to fill in both names!"; } -} +}; ``` 言うまでもなく弱っちいフォームの検証です — 例えばフォームに空白や数字が入っていても止められません — が、例としては十分です。結果はこうなります。 @@ -385,21 +397,25 @@ form.onsubmit = function(e) { ここで最後に説明していくのは、滅多には遭遇しませんが、理解できていないととても苦痛になるかもしれない事柄です。ある一つの要素で同じイベントに紐付く二つのハンドラが活性化された時に何が起きるのかを説明するのが、イベントのバブリングとキャプチャリングという二種類のメカニズムです。わかりやすくするために次の例を見てください — [show-video-box.html](http://mdn.github.io/learning-area/javascript/building-blocks/events/show-video-box.html) 例を新しいタブで開いてください ([ソースコード](https://github.com/mdn/learning-area/blob/master/javascript/building-blocks/events/show-video-box.html) もまた別のタブに)。ライブでも下で見られます: ```html hidden - + - + Show video box example @@ -423,36 +438,41 @@ form.onsubmit = function(e) { @@ -467,9 +487,12 @@ form.onsubmit = function(e) { ``` @@ -477,9 +500,9 @@ form.onsubmit = function(e) { {{htmlelement("button")}} がクリックされると、`
` のクラス属性を `hidden` から `showing` に変更するので、ビデオが表示されます(例の CSS にこの二つのクラスが含まれており、それぞれはボックスの位置をスクリーンの外、内にします)。 ```js -btn.onclick = function() { - videoBox.setAttribute('class', 'showing'); -} +btn.onclick = function () { + videoBox.setAttribute("class", "showing"); +}; ``` では二つばかり `onclick` イベントハンドラーを追加します — 最初のは `
` に、二つ目は `
- - - - - - - - - - - - - - - - - - -
バブリングあり
キャンセル不可
インターフェイス{{domxref("TransitionEvent")}}
イベントハンドラープロパティ - {{domxref("GlobalEventHandlers.ontransitioncancel")}} -
- -このイベントの本来の対象は、トランジションが適用された {{domxref("Element")}} です。このイベントを {{domxref("Document")}} インターフェイス上で待ち受けし、キャプチャやバブリングの局面で処理することができます。このイベントについて完全な詳細は、 [HTMLElement: transitioncancel イベント](/ja/docs/Web/API/HTMLElement/transitioncancel_event)を参照してください。 +{{APIRef}} + +**`transitioncancel`** イベントは、 [CSS トランジション](/ja/docs/Web/CSS/CSS_transitions/Using_CSS_transitions)がキャンセルされたときに発生します。 + +## 構文 + +このイベント名を {{domxref("EventTarget.addEventListener", "addEventListener()")}} などのメソッドで使用するか、イベントハンドラープロパティを設定するかしてください。 + +```js +addEventListener("transitioncancel", (event) => {}); + +ontransitioncancel = (event) => {}; +``` + +## イベント型 + +{{domxref("TransitionEvent")}} です。 {{domxref("Event")}} を継承しています。 + +{{InheritanceDiagram("TransitionEvent")}} + +## イベントプロパティ + +_親である {{domxref("Event")}} から継承したプロパティもあります。_ + +- {{domxref("TransitionEvent.propertyName")}} {{ReadOnlyInline}} + - : 文字列で、このトランジションに関連付けられた CSS プロパティの名前が入ります。 +- {{domxref("TransitionEvent.elapsedTime")}} {{ReadOnlyInline}} + - : float` で、このイベントが発行されたときにトランジションが実行されていた時間を秒単位で表します。この値は {{cssxref("transition-delay")}} プロパティの影響を受けません。 +- {{domxref("TransitionEvent.pseudoElement")}} {{ReadOnlyInline}} + - : 文字列で、アニメーションが実行する[擬似要素](/ja/docs/Web/CSS/Pseudo-elements)の名前が入ります。トランジションが擬似要素上で実行されず、要素上で実行される場合は空文字列 (`''`) です。 ## 例 -このコードは、リスナーに `transitioncancel` イベントを追加します。 +このコードはトランジションを定義している要素を取得し、`transitioncancel` イベントのリスナーを追加します。 ```js -document.addEventListener('transitioncancel', () => { - console.log('Transition canceled'); +const transition = document.querySelector(".transition"); + +transition.addEventListener("transitioncancel", () => { + console.log("Transition canceled"); }); ``` -同様に、 {{domxref("GlobalEventHandlers.ontransitioncancel", "ontransitioncancel")}} プロパティを `addEventListener()` の代わりに使用した例です。 +同じことを、`ontransitioncancel` プロパティを `addEventListener()` の代わりに使用して行った例です。 ```js -document.ontransitioncancel = () => { - console.log('Transition canceled'); +const transition = document.querySelector(".transition"); + +transition.ontransitioncancel = () => { + console.log("Transition canceled"); }; ``` -[このイベントのライブデモを参照してください。](/ja/docs/Web/API/HTMLElement/transitioncancel_event#Live_example) +### ライブ例 + +次の例では、単純な {{htmlelement("div")}} 要素に遅延を含むトランジションをスタイル設定しています。 + +```html +
+
+``` + +```css +.transition { + width: 100px; + height: 100px; + background: rgba(255, 0, 0, 1); + transition-property: transform, background; + transition-duration: 2s; + transition-delay: 2s; +} + +.transition:hover { + transform: rotate(90deg); + background: rgba(255, 0, 0, 0); +} +``` + +これにいくらかの JavaScript を追加して、[`transitionstart`](/ja/docs/Web/API/Element/transitionstart_event)、[`transitionrun`](/ja/docs/Web/API/Element/transitionrun_event)、`transitioncancel`、[`transitionend`](/ja/docs/Web/API/Element/transitionend_event) の各イベントが発生すると実行されるようにします。この例では、トランジションをキャンセルするには、トランジションが終了する前にトランジション中のボックスに宛てたマウスを外してください。トランジション終了イベントを発生させるには、トランジションが終了するまでトランジションの上にマウスを当てたままにしてください。 + +```js +const message = document.querySelector(".message"); +const el = document.querySelector(".transition"); + +el.addEventListener("transitionrun", () => { + message.textContent = "transitionrun が発生"; +}); + +el.addEventListener("transitionstart", () => { + message.textContent = "transitionstart が発生"; +}); + +el.addEventListener("transitioncancel", () => { + message.textContent = "transitioncancel が発生"; +}); + +el.addEventListener("transitionend", () => { + message.textContent = "transitionend が発生"; +}); +``` + +{{ EmbedLiveSample('Live_example', '100%', '150px') }} + +`transitioncancel` イベントは `transitionrun` イベントが発生した後、`transitionend` イベントが発生する前にトランジションがどちらかの方向に取り消された場合に発行されます。 + +トランジションの遅延や継続時間がない場合、両方が 0s である場合、または両方とも宣言されていない場合、トランジションは発生せず、トランジションイベントは何も発行されません。 + +`transitioncancel` イベントが発行された場合、`transitionend` イベントは発行されません。 ## 仕様書 @@ -65,9 +126,6 @@ document.ontransitioncancel = () => { ## 関連情報 -- {{domxref("GlobalEventHandlers.ontransitioncancel")}} イベントハンドラー - {{domxref("TransitionEvent")}} インターフェイス - CSS プロパティ: {{cssxref("transition")}}, {{cssxref("transition-delay")}}, {{cssxref("transition-duration")}}, {{cssxref("transition-property")}}, {{cssxref("transition-timing-function")}} -- 関連イベント: {{domxref("Document/transitionrun_event", "transitionrun")}}, {{domxref("Document/transitionstart_event", "transitionstart")}}, {{domxref("Document/transitionend_event", "transitionend")}} -- {{domxref("HTMLElement")}} を対象としたこのイベント: {{domxref("HTMLElement/transitioncancel_event", "transitioncancel")}} -- {{domxref("Window")}} を対象としたこのイベント: {{domxref("Window/transitioncancel_event", "transitioncancel")}} +- 関連イベント: {{domxref("Element/transitionrun_event", "transitionrun")}}, {{domxref("Element/transitionstart_event", "transitionstart")}}, {{domxref("Element/transitionend_event", "transitionend")}} diff --git a/files/ja/web/api/element/transitionend_event/index.md b/files/ja/web/api/element/transitionend_event/index.md index 7082260652abac..e98c72447d15fb 100644 --- a/files/ja/web/api/element/transitionend_event/index.md +++ b/files/ja/web/api/element/transitionend_event/index.md @@ -1,59 +1,124 @@ --- -title: 'Document: transitionend イベント' +title: "Element: transitionend イベント" +short-title: transitionend slug: Web/API/Element/transitionend_event original_slug: Web/API/Document/transitionend_event +l10n: + sourceCommit: 1b094710cd2816a6669ce616b6f56d0a5b25e6ad --- {{APIRef}} -**`transitionend`** イベントは、 [CSS トランジション](/ja/docs/CSS/Using_CSS_transitions)が完了したときに発生します。トランジションが完了前に削除された場合、例えば {{cssxref("transition-property")}} が削除されたり、 {{cssxref("display")}} が `none` に設定されたりした場合、イベントは生成されません。 - - - - - - - - - - - - - - - - - - - - -
バブリングあり
キャンセル
インターフェイス{{domxref("TransitionEvent")}}
イベントハンドラープロパティ - {{domxref("GlobalEventHandlers/ontransitionend", "ontransitionend")}} -
- -`transitionend` イベントは二つの方向で発生します。 - トランジション終了の状態まで遷移し終わったときと、既定またはトランジションがない状態まで完全に戻ったときです。トランジションに待ち時間や実行時間がない場合、両方が 0 秒またはどちらも宣言されていなかった場合、トランジションは発生せず、トランジションイベントは発生しません。 `transitioncancel` イベントが発生すると、 `transitionend` イベントは発生しません。 - -このイベントの本来の対象は、トランジションが適用された {{domxref("Element")}} です。このイベントを {{domxref("Document")}} インターフェイス上で待ち受けし、キャプチャやバブリングの局面で処理することができます。このイベントについて完全な詳細は、 [HTMLElement: transitionend イベント](/ja/docs/Web/API/HTMLElement/transitionend_event)を参照してください。 +**`transitionend`** イベントは、 [CSS トランジション](/ja/docs/Web/CSS/CSS_transitions/Using_CSS_transitions)が完了したときに発生します。トランジションが完了前に削除された場合、例えば {{cssxref("transition-property")}} が削除されたり、 {{cssxref("display")}} が `none` に設定されたりした場合、イベントは生成されません。 + +`transitionend` イベントは二つの方向で発生します。トランジション終了の状態まで遷移し終わったときと、既定またはトランジションがない状態まで完全に戻ったときです。トランジションに待ち時間や実行時間がない場合、両方が 0 秒またはどちらも宣言されていなかった場合、トランジションは発生せず、トランジションイベントは発生しません。 `transitioncancel` イベントが発生すると、 `transitionend` イベントは発生しません。 + +このイベントはキャンセルできません。 + +## 構文 + +このイベント名を {{domxref("EventTarget.addEventListener", "addEventListener()")}} などのメソッドで使用するか、イベントハンドラープロパティを設定するかしてください。 + +```js +addEventListener("transitionend", (event) => {}); + +ontransitionend = (event) => {}; +``` + +## イベント型 + +{{domxref("TransitionEvent")}} です。 {{domxref("Event")}} を継承しています。 + +{{InheritanceDiagram("TransitionEvent")}} + +## イベントプロパティ + +_親である {{domxref("Event")}} から継承したプロパティもあります。_ + +- {{domxref("TransitionEvent.propertyName")}} {{ReadOnlyInline}} + - : 文字列で、このトランジションに関連付けられた CSS プロパティの名前が入ります。 +- {{domxref("TransitionEvent.elapsedTime")}} {{ReadOnlyInline}} + - : float` で、このイベントが発行されたときにトランジションが実行されていた時間を秒単位で表します。この値は {{cssxref("transition-delay")}} プロパティの影響を受けません。 +- {{domxref("TransitionEvent.pseudoElement")}} {{ReadOnlyInline}} + - : 文字列で、アニメーションが実行する[擬似要素](/ja/docs/Web/CSS/Pseudo-elements)の名前が入ります。トランジションが擬似要素上で実行されず、要素上で実行される場合は空文字列 (`''`) です。 ## 例 -このコードはリスナーに `transitionend` イベントを追加します。 +このコードはトランジションを定義している要素を取得し、`transitionend` イベントのリスナーを追加します。 ```js -document.addEventListener('transitionend', () => { - console.log('Transition ended'); +const transition = document.querySelector(".transition"); + +transition.addEventListener("transitionend", () => { + console.log("Transition ended"); }); ``` -同様に、 {{domxref("GlobalEventHandlers/ontransitioncancel", "ontransitionend")}} プロパティを `addEventListener()` の代わりに使用した例です。 +同じことを、`ontransitionend` を使用して行う例です。 ```js -document.ontransitionend = () => { - console.log('Transition ended'); +const transition = document.querySelector(".transition"); + +transition.ontransitionend = () => { + console.log("Transition ended"); }; ``` -[このイベントのライブデモを参照してください。](/ja/docs/Web/API/HTMLElement/transitionend_event#Live_example) +### ライブ例 + +次の例では、単純な {{htmlelement("div")}} 要素に遅延を含むトランジションをスタイル設定しています。 + +```html +
+
+``` + +```css +.transition { + width: 100px; + height: 100px; + background: rgba(255, 0, 0, 1); + transition-property: transform, background; + transition-duration: 2s; + transition-delay: 2s; +} + +.transition:hover { + transform: rotate(90deg); + background: rgba(255, 0, 0, 0); +} +``` + +これにいくらかの JavaScript を追加して、[`transitionstart`](/ja/docs/Web/API/Element/transitionstart_event)、[`transitionrun`](/ja/docs/Web/API/Element/transitionrun_event)、[`transitioncancel`](/ja/docs/Web/API/Element/transitioncancel_event)、`transitionend` の各イベントが発生すると実行されるようにします。この例では、トランジションをキャンセルするには、トランジションが終了する前にトランジション中のボックスに宛てたマウスを外してください。トランジション終了イベントを発生させるには、トランジションが終了するまでトランジションの上にマウスを当てたままにしてください。 + +```js +const message = document.querySelector(".message"); +const el = document.querySelector(".transition"); + +el.addEventListener("transitionrun", () => { + message.textContent = "transitionrun が発生"; +}); + +el.addEventListener("transitionstart", () => { + message.textContent = "transitionstart が発生"; +}); + +el.addEventListener("transitioncancel", () => { + message.textContent = "transitioncancel が発生"; +}); + +el.addEventListener("transitionend", () => { + message.textContent = "transitionend が発生"; +}); +``` + +{{ EmbedLiveSample('Live_example', '100%', '150px') }} + +`transitionend` イベントは両方向に発生します。ボックスの回転が完了し、不透明度が方向に応じて 0 または 1 になったときです。 + +トランジションの遅延や継続時間がない場合、両方が 0s である場合、または両方とも宣言されていない場合、トランジションは発生せず、トランジションイベントは何も発行されません。 + +`transitioncancel` イベントが発行された場合、`transitionend` イベントは発行されません。 ## 仕様書 @@ -65,9 +130,6 @@ document.ontransitionend = () => { ## 関連情報 -- {{domxref("GlobalEventHandlers.ontransitionend")}} イベントハンドラー - {{domxref("TransitionEvent")}} インターフェイス - CSS プロパティ: {{cssxref("transition")}}, {{cssxref("transition-delay")}}, {{cssxref("transition-duration")}}, {{cssxref("transition-property")}}, {{cssxref("transition-timing-function")}} -- 関連イベント: {{domxref("Document/transitionrun_event", "transitionrun")}}, {{domxref("Document/transitionstart_event", "transitionstart")}}, {{domxref("Document/transitioncancel_event", "transitioncancel")}} -- {{domxref("HTMLElement")}} を対象としたこのイベント: {{domxref("HTMLElement/transitionend_event", "transitionend")}} -- {{domxref("Window")}} を対象としたこのイベント: {{domxref("Window/transitionend_event", "transitionend")}} +- 関連イベント: {{domxref("Element/transitionrun_event", "transitionrun")}}, {{domxref("Element/transitionstart_event", "transitionstart")}}, {{domxref("Element/transitioncancel_event", "transitioncancel")}} diff --git a/files/ja/web/api/element/transitionrun_event/index.md b/files/ja/web/api/element/transitionrun_event/index.md index cbb7c0f7ae7c93..444d04a9c66fda 100644 --- a/files/ja/web/api/element/transitionrun_event/index.md +++ b/files/ja/web/api/element/transitionrun_event/index.md @@ -1,57 +1,119 @@ --- -title: 'Document: transitionrun イベント' +title: "Element: transitionrun イベント" +short-title: transitionrun slug: Web/API/Element/transitionrun_event original_slug: Web/API/Document/transitionrun_event +l10n: + sourceCommit: 1b094710cd2816a6669ce616b6f56d0a5b25e6ad --- -{{APIRef}}{{SeeCompatTable}} - -**`transitionrun`** イベントは、 [CSS トランジション](/ja/docs/CSS/Using_CSS_transitions)が最初に生成されたとき、すなわち {{cssxref("transition-delay")}} が始まる前に発生します。 - - - - - - - - - - - - - - - - - - - - -
バブリングあり
キャンセル不可
インターフェイス{{domxref("TransitionEvent")}}
イベントハンドラープロパティ - {{domxref("GlobalEventHandlers/ontransitionrun", "ontransitionrun")}} -
- -このイベントの本来の対象は、トランジションが適用された {{domxref("Element")}} です。このイベントを {{domxref("Document")}} インターフェイス上で待ち受けし、キャプチャやバブリングの局面で処理することができます。このイベントについて完全な詳細は、 [HTMLElement: transitionrun イベント](/ja/docs/Web/API/HTMLElement/transitionrun_event)を参照してください。 +{{APIRef}} + +**`transitionrun`** イベントは、 [CSS トランジション](/ja/docs/Web/CSS/CSS_transitions/Using_CSS_transitions)が最初に生成されたとき、すなわち {{cssxref("transition-delay")}} が始まる前に発生します。 + +このイベントはキャンセルできません。 + +## 構文 + +このイベント名を {{domxref("EventTarget.addEventListener", "addEventListener()")}} などのメソッドで使用するか、イベントハンドラープロパティを設定するかしてください。 + +```js +addEventListener("transitionrun", (event) => {}); + +ontransitionrun = (event) => {}; +``` + +## イベント型 + +{{domxref("TransitionEvent")}} です。 {{domxref("Event")}} を継承しています。 + +{{InheritanceDiagram("TransitionEvent")}} + +## イベントプロパティ + +_親である {{domxref("Event")}} から継承したプロパティもあります。_ + +- {{domxref("TransitionEvent.propertyName")}} {{ReadOnlyInline}} + - : 文字列で、このトランジションに関連付けられた CSS プロパティの名前が入ります。 +- {{domxref("TransitionEvent.elapsedTime")}} {{ReadOnlyInline}} + - : float` で、このイベントが発行されたときにトランジションが実行されていた時間を秒単位で表します。この値は {{cssxref("transition-delay")}} プロパティの影響を受けません。 +- {{domxref("TransitionEvent.pseudoElement")}} {{ReadOnlyInline}} + - : 文字列で、アニメーションが実行する[擬似要素](/ja/docs/Web/CSS/Pseudo-elements)の名前が入ります。トランジションが擬似要素上で実行されず、要素上で実行される場合は空文字列 (`''`) です。 ## 例 -次のコードは `transitionrun` イベントにリスナーを追加します。 +このコードは `transitionrun` イベントのリスナーを追加します。 ```js -document.addEventListener('transitionrun', () => { - console.log('Transition is running but hasn't necessarily started transitioning yet'); +el.addEventListener("transitionrun", () => { + console.log( + "トランジションは実行中ですが、まだトランジションは始まっていません。", + ); }); ``` -同じですが、 {{domxref("GlobalEventHandlers/ontransitionrun", "ontransitionrun")}} を `addEventListener()` の代わりに使用すると次のようになります。 +同じことを、`ontransitionrun` プロパティを `addEventListener()` の代わりに使用して行います。 ```js -document.ontransitionrun = () => { - console.log('Transition started running'); +el.ontransitionrun = () => { + console.log( + "トランジションの実行が開始され、トランジションの遅延時間が経過した時点でトランジションを開始します。", + ); }; ``` -[このイベントのライブデモを参照してください。](/ja/docs/Web/API/HTMLElement/transitionrun_event#Live_example) +### ライブ例 + +次の例では、単純な {{htmlelement("div")}} 要素に遅延を含むトランジションをスタイル設定しています。 + +```html +
ここにポインターを当ててください
+
+``` + +```css +.transition { + width: 100px; + height: 100px; + background: rgba(255, 0, 0, 1); + transition-property: transform, background; + transition-duration: 2s; + transition-delay: 1s; +} + +.transition:hover { + transform: rotate(90deg); + background: rgba(255, 0, 0, 0); +} +``` + +これにいくらかの JavaScript を追加して、{{domxref("Element/transitionstart_event", "transitionstart")}} および {{domxref("Element/transitionrun_event", "transitionrun")}} イベントが発生すると実行されるようにします。 + +```js +const el = document.querySelector(".transition"); +const message = document.querySelector(".message"); + +el.addEventListener("transitionrun", () => { + message.textContent = "transitionrun が発生"; +}); + +el.addEventListener("transitionstart", () => { + message.textContent = "transitionstart が発生"; +}); + +el.addEventListener("transitionend", () => { + message.textContent = "transitionend が発生"; +}); +``` + +{{ EmbedLiveSample('Live_example', '100%', '150px') }} + +違いは次の通りです。 + +- `transitionrun` は、トランジションが作成されたとき(つまり、遅延が始まるとき)に発生します。 +- `transitionstart` は、実際のアニメーションが始まったとき(つまり、遅延が終わったとき)に発生します。 + +`transitionrun` は、トランジションが遅延時間内にキャンセルされた場合でも発生します。トランジションの遅延がない場合や、transition-delay が負の場合は、`transitionrun` と `transitionstart` の両方が発生します。 ## 仕様書 @@ -63,9 +125,6 @@ document.ontransitionrun = () => { ## 関連情報 -- {{domxref("GlobalEventHandlers.ontransitionrun")}} イベントハンドラー - {{domxref("TransitionEvent")}} インターフェイス - CSS プロパティ: {{cssxref("transition")}}, {{cssxref("transition-delay")}}, {{cssxref("transition-duration")}}, {{cssxref("transition-property")}}, {{cssxref("transition-timing-function")}} -- 関連イベント: {{domxref("Document/transitionend_event", "transitionend")}}, {{domxref("Document/transitionstart_event", "transitionstart")}}, {{domxref("Document/transitioncancel_event", "transitioncancel")}} -- {{domxref("HTMLElement")}} を対象としたこのイベント: {{domxref("HTMLElement/transitionrun_event", "transitionrun")}} -- {{domxref("Window")}} を対象としたこのイベント: {{domxref("Window/transitionstart_run", "transitionrun")}} +- 関連イベント: {{domxref("Element/transitionend_event", "transitionend")}}, {{domxref("Element/transitionstart_event", "transitionstart")}}, {{domxref("Element/transitioncancel_event", "transitioncancel")}} diff --git a/files/ja/web/api/element/transitionstart_event/index.md b/files/ja/web/api/element/transitionstart_event/index.md index 0f023fa69b8890..62638fd5bf89ce 100644 --- a/files/ja/web/api/element/transitionstart_event/index.md +++ b/files/ja/web/api/element/transitionstart_event/index.md @@ -1,59 +1,113 @@ --- -title: 'Document: transitionstart イベント' +title: "Element: transitionstart イベント" +short-title: transitionstart slug: Web/API/Element/transitionstart_event original_slug: Web/API/Document/transitionstart_event +l10n: + sourceCommit: 1b094710cd2816a6669ce616b6f56d0a5b25e6ad --- -{{APIRef}}{{SeeCompatTable}} - -**`transitionstart`** イベントは、 [CSS トランジション](/ja/docs/CSS/Using_CSS_transitions)が実際に始まったとき、すなわち {{cssxref("transition-delay")}} が終了した後に発生します。 - -`transitionstart` と `transitionrun` の違いは、 `transitionrun` がトランジションが生成されたとき (すなわち、待ち時間の開始) に発生するのに対し、 `transitionstart` は実際にアニメーションが始まったとき (すなわち、待ち時間の終了) に発生することです。 - - - - - - - - - - - - - - - - - - - - -
バブリングあり
キャンセル不可
インターフェイス{{domxref("TransitionEvent")}}
イベントハンドラープロパティ - {{domxref("GlobalEventHandlers.ontransitionstart")}} -
- -このイベントの本来の対象は、トランジションが適用された {{domxref("Element")}} です。このイベントを {{domxref("Document")}} インターフェイス上で待ち受けし、キャプチャやバブリングの局面で処理することができます。このイベントについて完全な詳細は、 [HTMLElement: transitionstart イベント](/ja/docs/Web/API/HTMLElement/transitionstart_event)を参照してください。 +{{APIRef}} + +**`transitionstart`** イベントは、 [CSS トランジション](/ja/docs/Web/CSS/CSS_transitions/Using_CSS_transitions)が実際に始まったとき、すなわち {{cssxref("transition-delay")}} が終了した後に発生します。 + +このイベントはキャンセルできません。 + +## 構文 + +このイベント名を {{domxref("EventTarget.addEventListener", "addEventListener()")}} などのメソッドで使用するか、イベントハンドラープロパティを設定するかしてください。 + +```js +addEventListener("transitionstart", (event) => {}); + +ontransitionstart = (event) => {}; +``` + +## イベント型 + +{{domxref("TransitionEvent")}} です。 {{domxref("Event")}} を継承しています。 + +{{InheritanceDiagram("TransitionEvent")}} + +## イベントプロパティ + +_親である {{domxref("Event")}} から継承したプロパティもあります。_ + +- {{domxref("TransitionEvent.propertyName")}} {{ReadOnlyInline}} + - : 文字列で、このトランジションに関連付けられた CSS プロパティの名前が入ります。 +- {{domxref("TransitionEvent.elapsedTime")}} {{ReadOnlyInline}} + - : float` で、このイベントが発行されたときにトランジションが実行されていた時間を秒単位で表します。この値は {{cssxref("transition-delay")}} プロパティの影響を受けません。 +- {{domxref("TransitionEvent.pseudoElement")}} {{ReadOnlyInline}} + - : 文字列で、アニメーションが実行する[擬似要素](/ja/docs/Web/CSS/Pseudo-elements)の名前が入ります。トランジションが擬似要素上で実行されず、要素上で実行される場合は空文字列 (`''`) です。 ## 例 -次のコードは `transitionstart` イベントにリスナーを追加します。 +このコードは `transitionstart` イベントのリスナーを追加します。 ```js -document.addEventListener('transitionrun', () => { - console.log('Transition is running but hasn't necessarily started transitioning yet'); +element.addEventListener("transitionstart", () => { + console.log("トランジション開始"); }); ``` -同じですが、 {{domxref("GlobalEventHandlers/ontransitionstart", "ontransitionstart")}} を `addEventListener()` の代わりに使用すると次のようになります。 +同じことを、`ontransitionstart` プロパティを `addEventListener()` の代わりに使用して行います。 ```js -document.ontransitionrun = () => { - console.log('Transition started running'); +element.ontransitionstart = () => { + console.log("トランジション開始"); }; ``` -[このイベントのライブデモを参照してください。](/ja/docs/Web/API/HTMLElement/transitionstart_event#Live_example) +### ライブ例 + +次の例では、単純な {{htmlelement("div")}} 要素に遅延を含むトランジションをスタイル設定しています。 + +```html +
ここにポインターを当ててください
+
+``` + +```css +.transition { + width: 100px; + height: 100px; + background: rgba(255, 0, 0, 1); + transition-property: transform, background; + transition-duration: 2s; + transition-delay: 1s; +} + +.transition:hover { + transform: rotate(90deg); + background: rgba(255, 0, 0, 0); +} +``` + +これにいくらかの JavaScript を追加して、{{domxref("Element/transitionstart_event", "transitionstart")}} および {{domxref("Element/transitionrun_event", "transitionrun")}} イベントが発生すると実行されるようにします。 + +```js +const transition = document.querySelector(".transition"); +const message = document.querySelector(".message"); + +transition.addEventListener("transitionrun", () => { + message.textContent = "transitionrun が発生"; +}); + +transition.addEventListener("transitionstart", () => { + message.textContent = "transitionstart が発生"; +}); + +transition.addEventListener("transitionend", () => { + message.textContent = "transitionend が発生"; +}); +``` + +{{ EmbedLiveSample('Live example', '100%', '170') }} + +違いは次の通りです。 + +- `transitionrun` は、トランジションが作成されたとき(つまり、遅延が始まるとき)に発生します。 +- `transitionstart` は、実際のアニメーションが始まったとき(つまり、遅延が終わったとき)に発生します。 ## 仕様書 @@ -65,9 +119,6 @@ document.ontransitionrun = () => { ## 関連情報 -- {{domxref("GlobalEventHandlers.ontransitionstart")}} イベントハンドラー - {{domxref("TransitionEvent")}} インターフェイス - CSS プロパティ: {{cssxref("transition")}}, {{cssxref("transition-delay")}}, {{cssxref("transition-duration")}}, {{cssxref("transition-property")}}, {{cssxref("transition-timing-function")}} -- 関連イベント: {{domxref("Document/transitionend_event", "transitionend")}}, {{domxref("Document/transitionrun_event", "transitionrun")}}, {{domxref("Document/transitioncancel_event", "transitioncancel")}} -- {{domxref("HTMLElement")}} を対象としたこのイベント: {{domxref("HTMLElement/transitionstart_event", "transitionstart")}} -- {{domxref("Window")}} を対象としたこのイベント: {{domxref("Window/transitionstart_event", "transitionstart")}} +- 関連イベント: {{domxref("Element/transitionend_event", "transitionend")}}, {{domxref("Element/transitionrun_event", "transitionrun")}}, {{domxref("Element/transitioncancel_event", "transitioncancel")}} From 60c19b1e1cf344f2ccf2c72891f438e367da0b4b Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Tue, 25 Jul 2023 00:06:39 +0900 Subject: [PATCH 08/13] =?UTF-8?q?2023/04/07=20=E6=99=82=E7=82=B9=E3=81=AE?= =?UTF-8?q?=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=90=8C=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/federatedcredential/protocol/index.md | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/files/ja/web/api/federatedcredential/protocol/index.md b/files/ja/web/api/federatedcredential/protocol/index.md index 034220c759bb31..2e894d8e0395d8 100644 --- a/files/ja/web/api/federatedcredential/protocol/index.md +++ b/files/ja/web/api/federatedcredential/protocol/index.md @@ -1,21 +1,18 @@ --- -title: FederatedCredential.protocol +title: "FederatedCredential: protocol プロパティ" +short-title: protocol slug: Web/API/FederatedCredential/protocol +l10n: + sourceCommit: 339595951b78774e951b1a9d215a6db6b856f6b2 --- -{{SeeCompatTable}}{{APIRef("")}}{{securecontext_header}} +{{SeeCompatTable}}{{APIRef("Credential Management API")}}{{securecontext_header}} -**`protocol`** は {{domxref("FederatedCredential")}} インターフェイスのプロパティで、認証情報の連合アイデンティティプロトコルが入った読み取り専用の {{domxref("DOMString")}} を返します。このプロパティが {{jsxref("null")}} の場合、プロトコルは {{domxref("FederatedCredential.provider")}} プロパティから推測される可能性があります。 - -## 構文 - -``` -var protocol = FederatedCredential.protocol -``` +**`protocol`** は {{domxref("FederatedCredential")}} インターフェイスのプロパティで、資格情報の連合アイデンティティプロトコルが入った読み取り専用の文字列を返します。このプロパティが [`null`](/ja/docs/Web/JavaScript/Reference/Operators/null) の場合、プロトコルは {{domxref("FederatedCredential.provider")}} プロパティから推測される可能性があります。 ### 値 -認証情報の連合アイデンティティプロトコルが入った {{domxref("DOMString")}} です (例えば `openidconnect`)。 +資格情報の連合アイデンティティプロトコル(例えば `openidconnect`)が入った文字列です。 ## 例 @@ -27,6 +24,6 @@ var protocol = FederatedCredential.protocol {{Specifications}} -## ブラウザーの対応 +## ブラウザーの互換性 -{{Compat("api.FederatedCredential.protocol")}} +{{Compat}} From a4d5ab56b9417afd104a4b2c874623cccfc81365 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Tue, 25 Jul 2023 00:04:08 +0900 Subject: [PATCH 09/13] =?UTF-8?q?2023/04/07=20=E6=99=82=E7=82=B9=E3=81=AE?= =?UTF-8?q?=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=9F=BA=E3=81=A5=E3=81=8D?= =?UTF-8?q?=E6=96=B0=E8=A6=8F=E7=BF=BB=E8=A8=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../federatedcredential/index.md | 34 +++++++++++++++++++ .../api/federatedcredential/provider/index.md | 29 ++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 files/ja/web/api/federatedcredential/federatedcredential/index.md create mode 100644 files/ja/web/api/federatedcredential/provider/index.md diff --git a/files/ja/web/api/federatedcredential/federatedcredential/index.md b/files/ja/web/api/federatedcredential/federatedcredential/index.md new file mode 100644 index 00000000000000..3a843cbf6a4aba --- /dev/null +++ b/files/ja/web/api/federatedcredential/federatedcredential/index.md @@ -0,0 +1,34 @@ +--- +title: "FederatedCredential: FederatedCredential() コンストラクター" +short-title: FederatedCredential() +slug: Web/API/FederatedCredential/FederatedCredential +l10n: + sourceCommit: 339595951b78774e951b1a9d215a6db6b856f6b2 +--- + +{{APIRef("Credential Management API")}}{{SeeCompatTable}} + +**`FederatedCredential()`** コンストラクターは、新しい {{domxref("FederatedCredential")}} オブジェクトを作成します。対応しているブラウザーでは、このクラスのインスタンスにグローバル {{domxref('fetch()')}} の `init` オブジェクトから受け取った `credential` を渡すことができます。 + +## 構文 + +```js-nolint +new FederatedCredential(init) +``` + +### 引数 + +- `init` + + - : オプションは次の通りです。 + + - `provider` + - : 文字列で、資格情報プロバイダーを識別します。 + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} diff --git a/files/ja/web/api/federatedcredential/provider/index.md b/files/ja/web/api/federatedcredential/provider/index.md new file mode 100644 index 00000000000000..9dfda0b5cce5a9 --- /dev/null +++ b/files/ja/web/api/federatedcredential/provider/index.md @@ -0,0 +1,29 @@ +--- +title: "FederatedCredential: provider プロパティ" +short-title: provider +slug: Web/API/FederatedCredential/provider +l10n: + sourceCommit: 339595951b78774e951b1a9d215a6db6b856f6b2 +--- + +{{SeeCompatTable}}{{APIRef("Credential Management API")}} + +**`provider`** は {{domxref("FederatedCredential")}} インターフェイスのプロパティで、資格情報の連合アイデンティティプロバイダーの入った文字列を返します。 + +## 値 + +資格情報の連合アイデンティティプロバイダーの入った文字列です。 + +## 例 + +```js +// TBD +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} From 51156b3843bf6c64a339aa09f088bc415cd537ea Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Tue, 25 Jul 2023 00:13:25 +0900 Subject: [PATCH 10/13] =?UTF-8?q?2023/03/22=20=E6=99=82=E7=82=B9=E3=81=AE?= =?UTF-8?q?=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=90=8C=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/ja/web/api/federatedcredential/index.md | 37 +++++++++++-------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/files/ja/web/api/federatedcredential/index.md b/files/ja/web/api/federatedcredential/index.md index e17677b92838b6..12ca9f238ca775 100644 --- a/files/ja/web/api/federatedcredential/index.md +++ b/files/ja/web/api/federatedcredential/index.md @@ -1,27 +1,33 @@ --- title: FederatedCredential slug: Web/API/FederatedCredential +l10n: + sourceCommit: 1ac70b362b94fc4d781b4cfbc7d0508eaf91b05c --- {{SeeCompatTable}}{{APIRef("Credential Management API")}} -**`FederatedCredential`** は [Credential Management API](/ja/docs/Web/API/Credential_Management_API) のインターフェイスで、連合アイデンティティのプロバイダーからの認証情報についての情報を提供します。連合アイデンティティのプロバイダーは、ウェブサイトが正しくユーザーを認証し、そのための API を提供する主体です。連合アイデンティティプロバイダーの一例として、 [OpenID Connect](http://openid.net/developers/specs/) があります。 +**`FederatedCredential`** は[資格情報管理 API](/ja/docs/Web/API/Credential_Management_API) のインターフェイスで、連合アイデンティティプロバイダーからの資格情報についての情報を提供します。連合アイデンティティプロバイダーは、ウェブサイトが正しくユーザーを認証し、そのための API を提供する主体です。連合アイデンティティプロバイダーの一例として、 [OpenID Connect](https://openid.net/developers/specs/) があります。 + +> **メモ:** [連合資格情報管理 API (FedCM)](/ja/docs/Web/API/FedCM_API) は、ブラウザーで ID フェデレーションを処理するためのより完全なソリューションを提供し、{{domxref("IdentityCredential")}} 型を使用します。 対応しているブラウザーにおいては、このインターフェイスのインスタンスがグローバル {{domxref('fetch')}} の `init` オブジェクトの `credential` メンバーとして渡されることがあります。 +{{InheritanceDiagram}} + ## コンストラクター -- {{domxref("FederatedCredential.FederatedCredential()","FederatedCredential()")}} +- {{domxref("FederatedCredential.FederatedCredential()","FederatedCredential()")}} {{Experimental_Inline}} - : 新しい `FederatedCredential` オブジェクトを生成します。 ## プロパティ -_祖先である {{domxref("Credential")}} からプロパティを継承しています。_ +_祖先である {{domxref("Credential")}} から継承したプロパティがあります。_ -- {{domxref("FederatedCredential.provider")}} {{readonlyInline}} - - : 認証情報の連合アイデンティティプロバイダーを含む {{domxref("USVString")}} です。 -- {{domxref("FederatedCredential.protocol")}} {{readonlyInline}} - - : 認証情報の連合アイデンティティプロトコルを含む {{domxref("DOMString")}} です。 +- {{domxref("FederatedCredential.provider")}} {{ReadOnlyInline}} {{Experimental_Inline}} + - : 資格情報の連合アイデンティティプロバイダーの入った文字列を返します。 +- {{domxref("FederatedCredential.protocol")}} {{ReadOnlyInline}} {{Experimental_Inline}} + - : 資格情報の連合アイデンティティプロトコルの入った文字列を返します。 ### イベントハンドラー @@ -34,16 +40,15 @@ _祖先である {{domxref("Credential")}} からプロパティを継承して ## 例 ```js -var cred = new FederatedCredential({ - id: id, - name: name, - provider: 'https://account.google.com', - iconURL: iconUrl +const cred = new FederatedCredential({ + id, + name, + provider: "https://account.google.com", + iconURL, }); // 格納 -navigator.credentials.store(cred) - .then(function() { +navigator.credentials.store(cred).then(() => { // 他に何かをする }); ``` @@ -52,6 +57,6 @@ navigator.credentials.store(cred) {{Specifications}} -## ブラウザーの対応 +## ブラウザーの互換性 -{{Compat("api.FederatedCredential")}} +{{Compat}} From 11a19c13ff40f04efc1ba00a084a7c8aad5a0780 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Tue, 25 Jul 2023 01:10:18 +0900 Subject: [PATCH 11/13] =?UTF-8?q?2023/07/07=20=E6=99=82=E7=82=B9=E3=81=AE?= =?UTF-8?q?=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=90=8C=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ja/web/api/file/lastmodifieddate/index.md | 34 ++++++++----------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/files/ja/web/api/file/lastmodifieddate/index.md b/files/ja/web/api/file/lastmodifieddate/index.md index 56109631b9a527..e08cd135b6e1d0 100644 --- a/files/ja/web/api/file/lastmodifieddate/index.md +++ b/files/ja/web/api/file/lastmodifieddate/index.md @@ -1,19 +1,16 @@ --- -title: File.lastModifiedDate +title: "File: lastModifiedDate プロパティ" +short-title: lastModifiedDate slug: Web/API/File/lastModifiedDate +l10n: + sourceCommit: acfe8c9f1f4145f77653a2bc64a9744b001358dc --- -{{APIRef("File API") }} {{deprecated_header}} +{{APIRef("File API")}}{{Deprecated_Header}}{{Non-standard_Header}} **`File.lastModifiedDate`** 読み取り専用プロパティは、ファイルの最終更新日を返します。最終更新日がわからないファイルは、現在の日付を返します。 -## 構文 - -```js -var time = instanceOfFile.lastModifiedDate -``` - -### 値 +## 値 [`Date`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Date) オブジェクトで、ファイルが最後に変更された日時を表します。 @@ -21,19 +18,18 @@ var time = instanceOfFile.lastModifiedDate ```js // fileInput は HTMLInputElement である -var fileInput = document.getElementById("myfileinput"); - -// files は (NodeList に似た) FileList オブジェクト -var files = fileInput.files; +const fileInput = document.getElementById("myfileinput"); -for (var i = 0; i < files.length; i++) { - alert(files[i].name + " の最終更新日は " + files[i].lastModifiedDate); +for (const file of fileInput.files) { + console.log( + `${file.name} の最終更新日は ${file.lastModifiedDate}`, + ); } ``` ## 時間の精度の低下 -タイミング攻撃やフィンガープリンティングに対する保護機能を提供するために、 `someFile.lastModifiedDate.getTime()` の精度がブラウザーの設定に応じて丸められることがあります。 +タイミング攻撃や[フィンガープリンティング](/ja/docs/Glossary/Fingerprinting)に対する保護機能を提供するために、 `someFile.lastModifiedDate.getTime()` の精度がブラウザーの設定に応じて丸められることがあります。 Firefox では、`privacy.reduceTimerPrecision` 設定は既定で有効になっており、 Firefox 59 では既定で 20 us に設定されています。60 で 2 ms になります。 @@ -43,21 +39,21 @@ someFile.lastModifiedDate.getTime(); // 1519211809934 // 1519211810362 // 1519211811670 -// ... +// … // `privacy.resistFingerprinting` が有効な場合の時間の制度の低下 someFile.lastModifiedDate.getTime(); // 1519129853500 // 1519129858900 // 1519129864400 -// ... +// … ``` Firefox では、`privacy.resistFingerprinting` を有効にすることもできます。精度は 100ms か `privacy.resistFingerprinting.reduceTimerPrecision.microseconds` のいずれか大きい方の値になります。 ## 仕様書 -_File API 仕様の初期のドラフトにありますが、このプロパティは削除されており、現在は非標準です。代わりに{{domxref("File.lastModified")}} を使用してください。_ +_ファイル API 仕様の初期のドラフトにありますが、このプロパティは削除されており、現在は非標準です。代わりに{{domxref("File.lastModified")}} を使用してください。_ ## ブラウザーの互換性 From ec318ee3571a390c9236f18fb288ec274c5b9ec3 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Tue, 25 Jul 2023 01:01:23 +0900 Subject: [PATCH 12/13] =?UTF-8?q?2023/04/07=20=E6=99=82=E7=82=B9=E3=81=AE?= =?UTF-8?q?=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=90=8C=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/ja/web/api/file/file/index.md | 22 ++++--- files/ja/web/api/file/lastmodified/index.md | 66 ++++++++++++------- files/ja/web/api/file/name/index.md | 52 +++++++-------- files/ja/web/api/file/type/index.md | 45 ++++++++----- .../web/api/file/webkitrelativepath/index.md | 58 ++++++++-------- 5 files changed, 141 insertions(+), 102 deletions(-) diff --git a/files/ja/web/api/file/file/index.md b/files/ja/web/api/file/file/index.md index 1d4a772a83ad94..dbf09db9c208e3 100644 --- a/files/ja/web/api/file/file/index.md +++ b/files/ja/web/api/file/file/index.md @@ -1,6 +1,9 @@ --- -title: File() +title: "File: File() コンストラクター" +short-title: File() slug: Web/API/File/File +l10n: + sourceCommit: 339595951b78774e951b1a9d215a6db6b856f6b2 --- {{APIRef("File")}} @@ -9,27 +12,30 @@ slug: Web/API/File/File ## 構文 -```js -new File(bits, name[, options]); +```js-nolint +new File(bits, name) +new File(bits, name, options) ``` ### 引数 - `bits` - - : {{jsxref("Array")}}、{{jsxref("ArrayBuffer")}}、{{domxref("ArrayBufferView")}}、{{domxref("Blob")}}、{{domxref("USVString")}} の {{jsxref("Array")}} オブジェクト、またはそれらをあわせたものを {{domxref("File")}} 内に格納します。`USVString` オブジェクトは UTF-8 でエンコードされます。 + - : [反復可能](/ja/docs/Web/JavaScript/Reference/Iteration_protocols#反復可能プロトコル)オブジェクト、例えば {{jsxref("Array")}}、{{jsxref("ArrayBuffer")}}、{{jsxref("TypedArray")}}、{{jsxref("DataView")}}、{{domxref("Blob")}}、文字列、またはそのような要素を混合させたものを {{domxref("File")}} 内に格納します。なお、文字列は JavaScript の UTF-16 文字列ではなく、UTF-8 でエンコードされます。 - `name` - - : {{domxref("USVString")}} で、ファイル名またはファイルへのパスを表します。 + - : 文字列で、ファイル名またはファイルへのパスを表します。 - `options` {{optional_inline}} - : ファイルのオプション属性を含むオプションオブジェクト。利用可能なオプションは以下の通りです。 - - `type`: ファイルの中に入るコンテンツの MIME タイプを表す {{domxref("DOMString")}} です。既定値は `""` です。 - - `lastModified`: UNIX 元期からのミリ秒単位で、ファイルが最後に更新された時刻を表す数値です。既定値は {{jsxref("Date.now()")}} です。 + - `type` + - : ファイルの中に入るコンテンツの MIME タイプを表す文字列です。既定値は `""` です。 + - `lastModified` + - : UNIX 元期からのミリ秒単位で、ファイルが最後に更新された時刻を表す数値です。既定値は {{jsxref("Date.now()")}} です。 ## 例 ```js -var file = new File(["foo"], "foo.txt", { +const file = new File(["foo"], "foo.txt", { type: "text/plain", }); ``` diff --git a/files/ja/web/api/file/lastmodified/index.md b/files/ja/web/api/file/lastmodified/index.md index 0cccd9560456dd..1960b12530ac1a 100644 --- a/files/ja/web/api/file/lastmodified/index.md +++ b/files/ja/web/api/file/lastmodified/index.md @@ -1,59 +1,75 @@ --- -title: File.lastModified +title: "File: lastModified プロパティ" +short-title: lastModified slug: Web/API/File/lastModified +l10n: + sourceCommit: 339595951b78774e951b1a9d215a6db6b856f6b2 --- {{APIRef("File")}} -**`File.lastModified`** は読み取り専用プロパティで、ファイルの最終更新日時を UNIX 元期 (1970 年 1 月 1 日の深夜 0 時) からのミリ秒数で返します。最終更新日時が分からないファイルは、現在の日時を返します。 +**`File.lastModified`** は読み取り専用プロパティで、ファイルの最終更新日時を UNIX 元期(1970 年 1 月 1 日の深夜 0 時)からのミリ秒数で返します。最終更新日時が分からないファイルは、現在の日時を返します。 -## 構文 +## 値 -```js -const time = instanceOfFile.lastModified; -``` - -### 値 - -UNIX 元気からのミリ秒数を表す数値です。 +UNIX 元期からのミリ秒数を表す数値です。 ## 例 -### file 入力欄からの読み込み +下記の例では、選んだファイルをループして、それぞれのファイルが過去 1 年以内に変更されたかどうかを出力します。 + +### HTML ```html - + + ``` +```css hidden +output { + display: block; + white-space: pre-wrap; +} +``` + +### JavaScript + ```js -const fileInput = document.querySelector('#fileInput'); -fileInput.addEventListener('change', (event) => { - // filesはFileList型オブジェクト (NodeListと似ている) +const output = document.getElementById("output"); +const filepicker = document.getElementById("filepicker"); + +filepicker.addEventListener("change", (event) => { const files = event.target.files; + const now = new Date(); + output.textContent = ""; - for (let file of files) { + for (const file of files) { const date = new Date(file.lastModified); - console.log(`${file.name} has a last modified date of ${date}`); + // ファイルが 1 年以上変更されていなければtrue + const stale = now.getTime() - file.lastModified > 31_536_000_000; + output.textContent += `${file.name} is ${ + stale ? "stale" : "fresh" + } (${date}).\n`; } }); ``` -以下の結果を試してみてください。 +### 結果 -{{ EmbedLiveSample('Reading_from_file_input', 300, 50) }} +{{EmbedLiveSample('Examples')}} ### 動的に生成されるファイル ファイルが動的に生成された場合、最終更新日時は {{domxref("File.File()", "new File()")}} コンストラクター関数で指定することができます。ファイルが見つからない場合、 `lastModified` は `File` オブジェクトの作成時に {{jsxref("Date.now()")}} から現在の時刻を継承します。 ```js -const fileWithDate = new File([], 'file.bin', { +const fileWithDate = new File([], "file.bin", { lastModified: new Date(2017, 1, 1), }); -console.log(fileWithDate.lastModified); //returns 1485903600000 +console.log(fileWithDate.lastModified); // returns 1485903600000 -const fileWithoutDate = new File([], 'file.bin'); -console.log(fileWithoutDate.lastModified); //returns current time +const fileWithoutDate = new File([], "file.bin"); +console.log(fileWithoutDate.lastModified); // returns current time ``` ## 時間の精度の低下 @@ -67,14 +83,14 @@ someFile.lastModified; // 1519211809934 // 1519211810362 // 1519211811670 -// ... +// … // `privacy.resistFingerprinting` が有効な場合の時間の制度の低下 someFile.lastModified; // 1519129853500 // 1519129858900 // 1519129864400 -// ... +// … ``` Firefox では、`privacy.resistFingerprinting` を有効にすることもできます。精度は 100ms か `privacy.resistFingerprinting.reduceTimerPrecision.microseconds` のいずれか大きい方の値になります。 diff --git a/files/ja/web/api/file/name/index.md b/files/ja/web/api/file/name/index.md index af9b9ff3a049bb..f6ad5518f74748 100644 --- a/files/ja/web/api/file/name/index.md +++ b/files/ja/web/api/file/name/index.md @@ -1,52 +1,52 @@ --- -title: File.name +title: "File: name プロパティ" +short-title: name slug: Web/API/File/name +l10n: + sourceCommit: 339595951b78774e951b1a9d215a6db6b856f6b2 --- {{APIRef("File API")}} {{domxref("File")}} オブジェクトによって表されるファイルの名前を返します。セキュリティ上の理由から、パスはこのプロパティから除外されます。 -## 構文 - -```js -var name = file.name; -``` - ## 値 パスを除いたファイル名の入った文字列。 "My Resume.rtf" など。 ## 例 -```html - +### HTML -
+```html + +
+

選択されたファイルのリスト:

+
    +
    ``` +### JavaScript + ```js -const output = document.querySelector("#output"); -function processSelectedFiles(fileInput) { - let files = fileInput.files; - output.textContent = "選択されたファイルのリスト:"; +const output = document.getElementById("output"); +const filepicker = document.getElementById("filepicker"); - for (let i = 0; i < files.length; i++) { - output.textContent += `\nファイル名: ${files[i].name}`; - } -} -``` +filepicker.addEventListener("change", (event) => { + const files = event.target.files; + output.textContent = ""; -```css hidden -#output{ - padding: 0.5em 0; - white-space: pre; -} + for (const file of files) { + const li = document.createElement("li"); + li.textContent = file.name; + output.appendChild(li); + } +}); ``` -#### 結果 +### 結果 -{{ EmbedLiveSample('Example', 300, 100) }} +{{EmbedLiveSample('Examples')}} ## 仕様書 diff --git a/files/ja/web/api/file/type/index.md b/files/ja/web/api/file/type/index.md index 1cd5a100c58ca9..050a4bc1ffb5ca 100644 --- a/files/ja/web/api/file/type/index.md +++ b/files/ja/web/api/file/type/index.md @@ -1,40 +1,55 @@ --- -title: File.type +title: "File: type プロパティ" +short-title: type slug: Web/API/File/type +l10n: + sourceCommit: 339595951b78774e951b1a9d215a6db6b856f6b2 --- {{APIRef("File API")}} {{domxref("File")}} オブジェクトによって表されるファイルのメディアタイプ ([MIME](/ja/docs/Web/HTTP/Basics_of_HTTP/MIME_types)) を返します。 -## 構文 - -```js -var name = file.type; -``` - ## 値 ファイルのタイプを示すメディアタイプ (MIME) を含む文字列。たとえば、 PNG 画像の場合は "image/png" です。 ## 例 +### HTML + ```html - + + ``` +```css hidden +output { + display: block; + white-space: pre-wrap; +} +``` + +### JavaScript + ```js -function showType(fileInput) { - var files = fileInput.files; +const output = document.getElementById("output"); +const filepicker = document.getElementById("filepicker"); + +filepicker.addEventListener("change", (event) => { + const files = event.target.files; + output.textContent = ""; - for (var i = 0; i < files.length; i++) { - var name = files[i].name; - var type = files[i].type; - alert("Filename: " + name + " , Type: " + type); + for (const file of files) { + output.textContent += `${file.name}: ${file.type || "unknown"}\n`; } -} +}); ``` +### 結果 + +{{EmbedLiveSample('Examples')}} + > **メモ:** 現在の実装に基づくと、ブラウザーは実際にファイルのバイトストリームを読み取ってメディアタイプを判断している訳ではありません。ファイルの拡張子に基づいて推測します。 PNG 画像ファイルを .txt に改名すると "_text/plain_" となり、"_image/png_" とはなりません。さらに `file.type` は一般的に、画像、 HTML 文書、音声、動画などの一般的なファイルタイプに対してのみ信頼できます。一般的ではないファイルの拡張子に対しては、空の文字列を返します。クライアントの構成 (Windows レジストリーなど) によっては、一般的なタイプの場合でも予期しない値が発生することがあります。**開発者は、このプロパティを唯一の検証方法として信頼しないことをお勧めします。** ## 仕様書 diff --git a/files/ja/web/api/file/webkitrelativepath/index.md b/files/ja/web/api/file/webkitrelativepath/index.md index 8d7f2aa8230460..9086d006befbf2 100644 --- a/files/ja/web/api/file/webkitrelativepath/index.md +++ b/files/ja/web/api/file/webkitrelativepath/index.md @@ -1,64 +1,66 @@ --- -title: File.webkitRelativePath +title: "File: webkitRelativePath プロパティ" +short-title: webkitRelativePath slug: Web/API/File/webkitRelativePath +l10n: + sourceCommit: 339595951b78774e951b1a9d215a6db6b856f6b2 --- -{{APIRef("File API")}}{{non-standard_header}} +{{APIRef("File API")}} -**`File.webkitRelativePath`** は、 [`webkitdirectory`](/ja/docs/Web/HTML/Element/input#webkitdirectory) 属性が設定された {{HTMLElement("input")}} 要素でユーザーが選択したディレクトリーに対するファイルのパスを指定する {{domxref("USVString")}} を持つ読み取り専用のプロパティです。 +**`File.webkitRelativePath`** は、[`webkitdirectory`](/ja/docs/Web/HTML/Element/input#webkitdirectory) 属性が設定された {{HTMLElement("input")}} 要素で、ユーザーが選択したディレクトリーに対するファイルのパスを指定する文字列を持つ読み取り専用のプロパティです。 -## 構文 +## 値 -```js -relativePath = File.webkitRelativePath -``` - -### 値 - -ユーザーが選択した祖先ディレクトリーを基準にしたファイルのパスを含む {{domxref("USVString")}}。 +ユーザーが選択した祖先ディレクトリーを基準にしたファイルのパスを含む文字列。 ## 例 この例では、ユーザーが 1 つまたは複数のディレクトリーを選択することができるディレクトリーピッカーが表示されます。 {{domxref("HTMLElement/change_event", "change")}} イベントが発生すると、選択されたディレクトリ階層に含まれるすべてのファイルのリストが生成され、表示されます。 -### HTML コンテンツ +### HTML ```html -
      + ``` -### JavaScript コンテンツ +```css hidden +output { + display: block; + white-space: pre-wrap; +} +``` + +### JavaScript ```js -document.getElementById("filepicker").addEventListener("change", function(event) { - let output = document.getElementById("listing"); - let files = event.target.files; - - for (let i=0; i { + const files = event.target.files; + + for (const file of files) { + output.textContent += `${file.webkitRelativePath}\n`; + } +}); ``` ### 結果 -{{ EmbedLiveSample('Example') }} +{{EmbedLiveSample('Example')}} ## 仕様書 {{Specifications}} -この API には、公式の W3C または WHATWG 仕様はありません。 - ## ブラウザーの互換性 {{Compat}} ## 関連情報 -- [File and Directory Entries API](/ja/docs/Web/API/File_and_Directory_Entries_API) +- [ファイルとディレクトリー項目 API](/ja/docs/Web/API/File_and_Directory_Entries_API) - {{domxref("HTMLInputElement.webkitEntries")}} - {{domxref("HTMLInputElement.webkitdirectory")}} From 6cb0f57a3455a84e625f852947f9caa9228a07d6 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Tue, 25 Jul 2023 01:26:30 +0900 Subject: [PATCH 13/13] =?UTF-8?q?2023/04/15=20=E6=99=82=E7=82=B9=E3=81=AE?= =?UTF-8?q?=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=90=8C=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/ja/web/api/file/index.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/files/ja/web/api/file/index.md b/files/ja/web/api/file/index.md index ae4a60ac5c3919..fb09cd0a48ec84 100644 --- a/files/ja/web/api/file/index.md +++ b/files/ja/web/api/file/index.md @@ -1,15 +1,17 @@ --- title: File slug: Web/API/File +l10n: + sourceCommit: 2a09bee9b36fd9a53c1bce641297021bfe274a33 --- -{{APIRef}} +{{APIRef("File API")}} **`File`** インターフェイスは、ファイルについての情報を提供したり、ウェブページ内の JavaScript からその内容にアクセスできるようにしたりします。 -`File` オブジェクトは通常、 {{HTMLElement("input")}} 要素を使用してファイルを選択した結果として返される {{DOMxRef("FileList")}} オブジェクト、ドラッグ&ドロップ操作の {{DOMxRef("DataTransfer")}} オブジェクト、または {{DOMxRef("HTMLCanvasElement")}} 上の `mozGetAsFile()` API から取得します。 +`File` オブジェクトは通常、{{HTMLElement("input")}} 要素を使用してファイルを選択した結果として返される {{DOMxRef("FileList")}} オブジェクト、またはドラッグ&ドロップ操作の {{DOMxRef("DataTransfer")}} オブジェクトから取得します。 -`File` オブジェクトは特別な種類の {{DOMxRef("Blob")}} オブジェクトであり、 Blob が利用できる場面ではどこでも利用できます。特に、{{DOMxRef("FileReader")}}、{{DOMxRef("URL.createObjectURL()")}}、{{DOMxRef("createImageBitmap()")}}、{{DOMxRef("XMLHttpRequest", "", "send()")}} は、`Blob` と `File` の両方を受け付けます。 +`File` オブジェクトは特別な種類の {{DOMxRef("Blob")}} オブジェクトであり、 Blob が利用できる場面ではどこでも利用できます。特に、{{DOMxRef("FileReader")}}、{{DOMxRef("URL.createObjectURL_static")}}、{{DOMxRef("createImageBitmap()")}}、{{DOMxRef("XMLHttpRequest", "", "send()")}} は、`Blob` と `File` の両方を受け付けます。 詳しい情報や例は、[ウェブアプリケーションからのファイルの使用](/ja/docs/Web/API/File_API/Using_files_from_web_applications) を参照してください。 @@ -24,16 +26,16 @@ slug: Web/API/File - {{DOMxRef("File.prototype.lastModified")}} {{ReadOnlyInline}} - : ファイルの最終更新時刻を、 UNIX 元期 (1970 年 1 月 1 日深夜) からの経過ミリ秒数で返します。 -- {{DOMxRef("File.prototype.lastModifiedDate")}} {{Deprecated_Inline}} {{ReadOnlyInline}} +- {{DOMxRef("File.prototype.lastModifiedDate")}} {{Deprecated_Inline}} {{ReadOnlyInline}} {{Non-standard_Inline}} - : `File` オブジェクトが参照しているファイルの最終更新時刻の {{JSxRef("Date")}} を返します。 -- {{DOMxRef("File.prototype.name")}}{{ReadOnlyInline}} +- {{DOMxRef("File.prototype.name")}} {{ReadOnlyInline}} - : `File` オブジェクトが参照しているファイルの名前を返します。 -- {{DOMxRef("File.prototype.webkitRelativePath")}} {{Non-standard_Inline}} {{ReadOnlyInline}} +- {{DOMxRef("File.prototype.webkitRelativePath")}} {{ReadOnlyInline}} - : {{DOMxRef("File")}} の URL の相対パスを返します。 `File` は {{DOMxRef("Blob")}} を実装しているので、以下のようなプロパティも利用できます。 -- {{DOMxRef("File.prototype.size")}} {{ReadOnlyInline}} +- {{DOMxRef("Blob.size")}} {{ReadOnlyInline}} - : ファイルのサイズをバイト単位で返します。 - {{DOMxRef("File.prototype.type")}} {{ReadOnlyInline}} - : ファイルの [MIME](/ja/docs/Web/HTTP/Basics_of_HTTP/MIME_types) タイプを返します。 @@ -47,7 +49,7 @@ _`File` インターフェイスはメソッドを定義せず、{{DOMxRef("Blob - {{DOMxRef("Blob.prototype.stream()")}} - : `File` を {{DOMxRef("ReadableStream")}} に変換し、`File` の内容を読み込めるようにします。 - {{DOMxRef("Blob.prototype.text()")}} - - : `File` をストリームに変換し、最後まで読み込みます。これは、{{DOMxRef("USVString")}} (テキスト) で解決するプロミスを返します。 + - : `File` をストリームに変換し、最後まで読み込みます。これは、文字列(テキスト)で解決するプロミスを返します。 - {{DOMxRef("Blob.prototype.arrayBuffer()")}} - : `File` をストリームに変換し、最後まで読み込みます。 {{jsxref("ArrayBuffer")}} で解決するプロミスを返します。 @@ -63,4 +65,3 @@ _`File` インターフェイスはメソッドを定義せず、{{DOMxRef("Blob - [ウェブアプリケーションからのファイルの使用](/ja/docs/Web/API/File_API/Using_files_from_web_applications) - {{DOMxRef("FileReader")}} -- [DOM の File API をクロームコードで使う](/ja/docs/Extensions/Using_the_DOM_File_API_in_chrome_code) (Firefox アドオンのような Gecko で実行される特権コード向け)