An interesting aside to share with you...
@@ -149,7 +151,7 @@ let paraTextNode = paraNode.childNodes[1];
let range = document.createRange();
range.setStart(paraTextNode, 6);
-range.setEnd(paraTextNode, paraTextNode.length-1);
+range.setEnd(paraTextNode, paraTextNode.length - 1);
let fragment = range.cloneContents();
document.body.appendChild(fragment);
diff --git a/files/ko/web/api/analysernode/fftsize/index.md b/files/ko/web/api/analysernode/fftsize/index.md
index bd6f2d01b0c1b1..bf1e17dfe365ba 100644
--- a/files/ko/web/api/analysernode/fftsize/index.md
+++ b/files/ko/web/api/analysernode/fftsize/index.md
@@ -2,6 +2,7 @@
title: AnalyserNode.fftSize
slug: Web/API/AnalyserNode/fftSize
---
+
{{APIRef("Web Audio API")}}
{{domxref("AnalyserNode")}} 인터페이스의 **`fftSize`** 속성은 unsigned long 값이고 주파수 영역 데이터를 얻기 위해 [고속 푸리에 변환](https://en.wikipedia.org/wiki/Fast_Fourier_transform)(FFT)을 수행할 때 사용될 샘플에서의 window 사이즈를 나타냅니다.
diff --git a/files/ko/web/api/analysernode/getfloatfrequencydata/index.md b/files/ko/web/api/analysernode/getfloatfrequencydata/index.md
index 3d9c9a5b59e203..e17832567144ff 100644
--- a/files/ko/web/api/analysernode/getfloatfrequencydata/index.md
+++ b/files/ko/web/api/analysernode/getfloatfrequencydata/index.md
@@ -47,7 +47,7 @@ analyser.getFloatFrequencyData(myDataArray);
보다 완전한 응용 예제/정보를 보려면 [Voice-change-O-matic](https://github.com/mdn/webaudio-examples/tree/main/voice-change-o-matic) 데모를 확인하세요. ([app.js의 108-193번째 줄](https://github.com/mdn/webaudio-examples/blob/main/voice-change-o-matic/scripts/app.js#L108-L193)에서 관련 코드 확인)
```html
-
+
@@ -39,7 +39,7 @@ slug: Web/API/Canvas_API/Manipulating_video_using_canvas
@@ -113,21 +113,20 @@ main.js에 있는 자바스크립트 코드는 3개의 메서드로 구성됩니
아래의 `computeFrame()` 메서드는 프레임 데이터를 가져와서 크로마 키잉 효과를 수행하는 역할을 합니다.
```js
- processor.computeFrame = function computeFrame() {
- this.ctx1.drawImage(this.video, 0, 0, this.width, this.height);
- let frame = this.ctx1.getImageData(0, 0, this.width, this.height);
- let l = frame.data.length / 4;
-
- for (let i = 0; i < l; i++) {
- let r = frame.data[i * 4 + 0];
- let g = frame.data[i * 4 + 1];
- let b = frame.data[i * 4 + 2];
- if (g > 100 && r > 100 && b < 43)
- frame.data[i * 4 + 3] = 0;
- }
- this.ctx2.putImageData(frame, 0, 0);
- return;
+processor.computeFrame = function computeFrame() {
+ this.ctx1.drawImage(this.video, 0, 0, this.width, this.height);
+ let frame = this.ctx1.getImageData(0, 0, this.width, this.height);
+ let l = frame.data.length / 4;
+
+ for (let i = 0; i < l; i++) {
+ let r = frame.data[i * 4 + 0];
+ let g = frame.data[i * 4 + 1];
+ let b = frame.data[i * 4 + 2];
+ if (g > 100 && r > 100 && b < 43) frame.data[i * 4 + 3] = 0;
}
+ this.ctx2.putImageData(frame, 0, 0);
+ return;
+};
```
위 과정이 계속 호출 되면, 아래와 같이 비디오 요소에 가장 최근 프레임의 비디오 데이터가 표출됩니다.
diff --git a/files/ko/web/api/canvas_api/tutorial/advanced_animations/index.md b/files/ko/web/api/canvas_api/tutorial/advanced_animations/index.md
index 7800582cdc32b9..ec1b3c1936020b 100644
--- a/files/ko/web/api/canvas_api/tutorial/advanced_animations/index.md
+++ b/files/ko/web/api/canvas_api/tutorial/advanced_animations/index.md
@@ -19,21 +19,21 @@ original_slug: Web/HTML/Canvas/Tutorial/Advanced_animations
언제나처럼, 우리는 context를 먼저 그려야 한다. 공을 그리기 위해 우리는 캔버스에 그림을 그리기 위한 프로퍼티와 `draw()` 메소드를 가진 `ball` 오브젝트를 생성할 것이다.
```js
-var canvas = document.getElementById('canvas');
-var ctx = canvas.getContext('2d');
+var canvas = document.getElementById("canvas");
+var ctx = canvas.getContext("2d");
var ball = {
x: 100,
y: 100,
radius: 25,
- color: 'blue',
- draw: function() {
+ color: "blue",
+ draw: function () {
ctx.beginPath();
ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2, true);
ctx.closePath();
ctx.fillStyle = this.color;
ctx.fill();
- }
+ },
};
ball.draw();
@@ -46,8 +46,8 @@ ball.draw();
우리한테는 이제 공이 있다. 이제 이 튜토리얼 [마지막 챕터](/ko/docs/Web/API/Canvas_API/Tutorial/Basic_animations)에서 배웠던 것과 같은 기본 애니메이션을 추가할 준비가 되었다. 다시 한 번, 애니메이션 컨트롤은 {{domxref("window.requestAnimationFrame()")}}가 도와주 것이다. 공은 위치에 속도 벡터를 추가하여 움직일 수 있게 된다. 각각의 프레임에, 우리는{{domxref("CanvasRenderingContext2D.clearRect", "clear", "", 1)}}를 캔버스에 주어 오래된 원을 이전 프래임에서 지운다.
```js
-var canvas = document.getElementById('canvas');
-var ctx = canvas.getContext('2d');
+var canvas = document.getElementById("canvas");
+var ctx = canvas.getContext("2d");
var raf;
var ball = {
@@ -56,29 +56,29 @@ var ball = {
vx: 5,
vy: 2,
radius: 25,
- color: 'blue',
- draw: function() {
+ color: "blue",
+ draw: function () {
ctx.beginPath();
ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2, true);
ctx.closePath();
ctx.fillStyle = this.color;
ctx.fill();
- }
+ },
};
function draw() {
- ctx.clearRect(0,0, canvas.width, canvas.height);
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
ball.draw();
ball.x += ball.vx;
ball.y += ball.vy;
raf = window.requestAnimationFrame(draw);
}
-canvas.addEventListener('mouseover', function(e) {
+canvas.addEventListener("mouseover", function (e) {
raf = window.requestAnimationFrame(draw);
});
-canvas.addEventListener('mouseout', function(e) {
+canvas.addEventListener("mouseout", function (e) {
window.cancelAnimationFrame(raf);
});
@@ -107,8 +107,8 @@ if (ball.x + ball.vx > canvas.width || ball.x + ball.vx < 0) {
```
```js hidden
-var canvas = document.getElementById('canvas');
-var ctx = canvas.getContext('2d');
+var canvas = document.getElementById("canvas");
+var ctx = canvas.getContext("2d");
var raf;
var ball = {
@@ -117,39 +117,37 @@ var ball = {
vx: 5,
vy: 2,
radius: 25,
- color: 'blue',
- draw: function() {
+ color: "blue",
+ draw: function () {
ctx.beginPath();
ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2, true);
ctx.closePath();
ctx.fillStyle = this.color;
ctx.fill();
- }
+ },
};
function draw() {
- ctx.clearRect(0,0, canvas.width, canvas.height);
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
ball.draw();
ball.x += ball.vx;
ball.y += ball.vy;
- if (ball.y + ball.vy > canvas.height ||
- ball.y + ball.vy < 0) {
+ if (ball.y + ball.vy > canvas.height || ball.y + ball.vy < 0) {
ball.vy = -ball.vy;
}
- if (ball.x + ball.vx > canvas.width ||
- ball.x + ball.vx < 0) {
+ if (ball.x + ball.vx > canvas.width || ball.x + ball.vx < 0) {
ball.vx = -ball.vx;
}
raf = window.requestAnimationFrame(draw);
}
-canvas.addEventListener('mouseover', function(e) {
+canvas.addEventListener("mouseover", function (e) {
raf = window.requestAnimationFrame(draw);
});
-canvas.addEventListener('mouseout', function(e) {
+canvas.addEventListener("mouseout", function (e) {
window.cancelAnimationFrame(raf);
});
@@ -163,8 +161,8 @@ ball.draw();
움직임을 좀 더 리얼하게 만들기 위해, 우리는 속도를 다음과 같이 줄 겁니다. 예를 들어:
```js
-ball.vy *= .99;
-ball.vy += .25;
+ball.vy *= 0.99;
+ball.vy += 0.25;
```
이것은 각 프레임의 세로 속도를 줄여주어, 공이 결국 바닥에서 튀게 만듭니다.
@@ -174,8 +172,8 @@ ball.vy += .25;
```
```js hidden
-var canvas = document.getElementById('canvas');
-var ctx = canvas.getContext('2d');
+var canvas = document.getElementById("canvas");
+var ctx = canvas.getContext("2d");
var raf;
var ball = {
@@ -184,41 +182,39 @@ var ball = {
vx: 5,
vy: 2,
radius: 25,
- color: 'blue',
- draw: function() {
+ color: "blue",
+ draw: function () {
ctx.beginPath();
ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2, true);
ctx.closePath();
ctx.fillStyle = this.color;
ctx.fill();
- }
+ },
};
function draw() {
- ctx.clearRect(0,0, canvas.width, canvas.height);
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
ball.draw();
ball.x += ball.vx;
ball.y += ball.vy;
- ball.vy *= .99;
- ball.vy += .25;
+ ball.vy *= 0.99;
+ ball.vy += 0.25;
- if (ball.y + ball.vy > canvas.height ||
- ball.y + ball.vy < 0) {
+ if (ball.y + ball.vy > canvas.height || ball.y + ball.vy < 0) {
ball.vy = -ball.vy;
}
- if (ball.x + ball.vx > canvas.width ||
- ball.x + ball.vx < 0) {
+ if (ball.x + ball.vx > canvas.width || ball.x + ball.vx < 0) {
ball.vx = -ball.vx;
}
raf = window.requestAnimationFrame(draw);
}
-canvas.addEventListener('mouseover', function(e) {
+canvas.addEventListener("mouseover", function (e) {
raf = window.requestAnimationFrame(draw);
});
-canvas.addEventListener('mouseout', function(e) {
+canvas.addEventListener("mouseout", function (e) {
window.cancelAnimationFrame(raf);
});
@@ -232,7 +228,7 @@ ball.draw();
지금까지 우리는 {{domxref("CanvasRenderingContext2D.clearRect", "clearRect")}}메소드를 사용해서 이전 프레임을 지웠다. 만약 당신이 {{domxref("CanvasRenderingContext2D.fillRect", "fillRect")}}르 사용하여 약간 투명도를 준다면, 쉽게 후행 효과(Trailing effect)를 만들 수 있을 것이다.
```js
-ctx.fillStyle = 'rgba(255, 255, 255, 0.3)';
+ctx.fillStyle = "rgba(255, 255, 255, 0.3)";
ctx.fillRect(0, 0, canvas.width, canvas.height);
```
@@ -241,8 +237,8 @@ ctx.fillRect(0, 0, canvas.width, canvas.height);
```
```js hidden
-var canvas = document.getElementById('canvas');
-var ctx = canvas.getContext('2d');
+var canvas = document.getElementById("canvas");
+var ctx = canvas.getContext("2d");
var raf;
var ball = {
@@ -251,42 +247,40 @@ var ball = {
vx: 5,
vy: 2,
radius: 25,
- color: 'blue',
- draw: function() {
+ color: "blue",
+ draw: function () {
ctx.beginPath();
ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2, true);
ctx.closePath();
ctx.fillStyle = this.color;
ctx.fill();
- }
+ },
};
function draw() {
- ctx.fillStyle = 'rgba(255, 255, 255, 0.3)';
+ ctx.fillStyle = "rgba(255, 255, 255, 0.3)";
ctx.fillRect(0, 0, canvas.width, canvas.height);
ball.draw();
ball.x += ball.vx;
ball.y += ball.vy;
- ball.vy *= .99;
- ball.vy += .25;
+ ball.vy *= 0.99;
+ ball.vy += 0.25;
- if (ball.y + ball.vy > canvas.height ||
- ball.y + ball.vy < 0) {
+ if (ball.y + ball.vy > canvas.height || ball.y + ball.vy < 0) {
ball.vy = -ball.vy;
}
- if (ball.x + ball.vx > canvas.width ||
- ball.x + ball.vx < 0) {
+ if (ball.x + ball.vx > canvas.width || ball.x + ball.vx < 0) {
ball.vx = -ball.vx;
}
raf = window.requestAnimationFrame(draw);
}
-canvas.addEventListener('mouseover', function(e) {
+canvas.addEventListener("mouseover", function (e) {
raf = window.requestAnimationFrame(draw);
});
-canvas.addEventListener('mouseout', function(e) {
+canvas.addEventListener("mouseout", function (e) {
window.cancelAnimationFrame(raf);
});
@@ -304,8 +298,8 @@ ball.draw();
```
```js
-var canvas = document.getElementById('canvas');
-var ctx = canvas.getContext('2d');
+var canvas = document.getElementById("canvas");
+var ctx = canvas.getContext("2d");
var raf;
var running = false;
@@ -315,19 +309,19 @@ var ball = {
vx: 5,
vy: 1,
radius: 25,
- color: 'blue',
- draw: function() {
+ color: "blue",
+ draw: function () {
ctx.beginPath();
ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2, true);
ctx.closePath();
ctx.fillStyle = this.color;
ctx.fill();
- }
+ },
};
function clear() {
- ctx.fillStyle = 'rgba(255, 255, 255, 0.3)';
- ctx.fillRect(0,0,canvas.width,canvas.height);
+ ctx.fillStyle = "rgba(255, 255, 255, 0.3)";
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
}
function draw() {
@@ -346,7 +340,7 @@ function draw() {
raf = window.requestAnimationFrame(draw);
}
-canvas.addEventListener('mousemove', function(e) {
+canvas.addEventListener("mousemove", function (e) {
if (!running) {
clear();
ball.x = e.clientX;
@@ -355,14 +349,14 @@ canvas.addEventListener('mousemove', function(e) {
}
});
-canvas.addEventListener('click', function(e) {
+canvas.addEventListener("click", function (e) {
if (!running) {
raf = window.requestAnimationFrame(draw);
running = true;
}
});
-canvas.addEventListener('mouseout', function(e) {
+canvas.addEventListener("mouseout", function (e) {
window.cancelAnimationFrame(raf);
running = false;
});
diff --git a/files/ko/web/api/canvas_api/tutorial/applying_styles_and_colors/index.md b/files/ko/web/api/canvas_api/tutorial/applying_styles_and_colors/index.md
index 85242df1859274..45dbb1e2a9275d 100644
--- a/files/ko/web/api/canvas_api/tutorial/applying_styles_and_colors/index.md
+++ b/files/ko/web/api/canvas_api/tutorial/applying_styles_and_colors/index.md
@@ -102,8 +102,8 @@ draw();
```js
// 외곽선과 채움 스타일에 투명 적용
-ctx.strokeStyle = 'rgba(255, 0, 0, 0.5)';
-ctx.fillStyle = 'rgba(255, 0, 0, 0.5)';
+ctx.strokeStyle = "rgba(255, 0, 0, 0.5)";
+ctx.fillStyle = "rgba(255, 0, 0, 0.5)";
```
`rgba()` 함수는 `rgb()` 함수와 비슷하지만, 인자가 하나 더 있습니다. 마지막 인자는 투명도 값을 설정하는 인자입니다. 올바른 범위는 0.0(완전히 투명)에서 1.0(완전히 불투명)입니다.
@@ -408,11 +408,13 @@ function draw() {
|
- Change the miterLimit by entering a new value below and clicking the redraw button.
+ |
+ Change the miterLimit by entering a new value below and
+ clicking the redraw button.
|
@@ -420,7 +422,9 @@ function draw() {
```
```js hidden
-document.getElementById('miterLimit').value = document.getElementById('canvas').getContext('2d').miterLimit;
+document.getElementById("miterLimit").value = document
+ .getElementById("canvas")
+ .getContext("2d").miterLimit;
draw();
```
@@ -437,7 +441,7 @@ draw();
```
```js
-var ctx = document.getElementById('canvas').getContext('2d');
+var ctx = document.getElementById("canvas").getContext("2d");
var offset = 0;
function draw() {
@@ -486,8 +490,8 @@ var radialgradient = ctx.createRadialGradient(75, 75, 0, 75, 75, 100);
```js
var lineargradient = ctx.createLinearGradient(0, 0, 150, 150);
-lineargradient.addColorStop(0, 'white');
-lineargradient.addColorStop(1, 'black');
+lineargradient.addColorStop(0, "white");
+lineargradient.addColorStop(1, "black");
```
### `createLinearGradient` 예제
@@ -496,18 +500,18 @@ lineargradient.addColorStop(1, 'black');
```js
function draw() {
- var ctx = document.getElementById('canvas').getContext('2d');
+ var ctx = document.getElementById("canvas").getContext("2d");
// 그레이디언트를 생성한다
var lingrad = ctx.createLinearGradient(0, 0, 0, 150);
- lingrad.addColorStop(0, '#00ABEB');
- lingrad.addColorStop(0.5, '#fff');
- lingrad.addColorStop(0.5, '#26C000');
- lingrad.addColorStop(1, '#fff');
+ lingrad.addColorStop(0, "#00ABEB");
+ lingrad.addColorStop(0.5, "#fff");
+ lingrad.addColorStop(0.5, "#26C000");
+ lingrad.addColorStop(1, "#fff");
var lingrad2 = ctx.createLinearGradient(0, 50, 0, 95);
- lingrad2.addColorStop(0.5, '#000');
- lingrad2.addColorStop(1, 'rgba(0, 0, 0, 0)');
+ lingrad2.addColorStop(0.5, "#000");
+ lingrad2.addColorStop(1, "rgba(0, 0, 0, 0)");
// 외곽선과 채움 스타일에 그레이디언트를 적용한다
ctx.fillStyle = lingrad;
@@ -516,7 +520,6 @@ function draw() {
// 도형을 그린다
ctx.fillRect(10, 10, 130, 130);
ctx.strokeRect(50, 50, 50, 50);
-
}
```
@@ -540,38 +543,38 @@ draw();
```js
function draw() {
- var ctx = document.getElementById('canvas').getContext('2d');
+ var ctx = document.getElementById("canvas").getContext("2d");
// 그라디언트를 생성한다
- var radgrad = ctx.createRadialGradient(45,45,10,52,50,30);
- radgrad.addColorStop(0, '#A7D30C');
- radgrad.addColorStop(0.9, '#019F62');
- radgrad.addColorStop(1, 'rgba(1,159,98,0)');
-
- var radgrad2 = ctx.createRadialGradient(105,105,20,112,120,50);
- radgrad2.addColorStop(0, '#FF5F98');
- radgrad2.addColorStop(0.75, '#FF0188');
- radgrad2.addColorStop(1, 'rgba(255,1,136,0)');
-
- var radgrad3 = ctx.createRadialGradient(95,15,15,102,20,40);
- radgrad3.addColorStop(0, '#00C9FF');
- radgrad3.addColorStop(0.8, '#00B5E2');
- radgrad3.addColorStop(1, 'rgba(0,201,255,0)');
-
- var radgrad4 = ctx.createRadialGradient(0,150,50,0,140,90);
- radgrad4.addColorStop(0, '#F4F201');
- radgrad4.addColorStop(0.8, '#E4C700');
- radgrad4.addColorStop(1, 'rgba(228,199,0,0)');
+ var radgrad = ctx.createRadialGradient(45, 45, 10, 52, 50, 30);
+ radgrad.addColorStop(0, "#A7D30C");
+ radgrad.addColorStop(0.9, "#019F62");
+ radgrad.addColorStop(1, "rgba(1,159,98,0)");
+
+ var radgrad2 = ctx.createRadialGradient(105, 105, 20, 112, 120, 50);
+ radgrad2.addColorStop(0, "#FF5F98");
+ radgrad2.addColorStop(0.75, "#FF0188");
+ radgrad2.addColorStop(1, "rgba(255,1,136,0)");
+
+ var radgrad3 = ctx.createRadialGradient(95, 15, 15, 102, 20, 40);
+ radgrad3.addColorStop(0, "#00C9FF");
+ radgrad3.addColorStop(0.8, "#00B5E2");
+ radgrad3.addColorStop(1, "rgba(0,201,255,0)");
+
+ var radgrad4 = ctx.createRadialGradient(0, 150, 50, 0, 140, 90);
+ radgrad4.addColorStop(0, "#F4F201");
+ radgrad4.addColorStop(0.8, "#E4C700");
+ radgrad4.addColorStop(1, "rgba(228,199,0,0)");
// 도형을 그린다
ctx.fillStyle = radgrad4;
- ctx.fillRect(0,0,150,150);
+ ctx.fillRect(0, 0, 150, 150);
ctx.fillStyle = radgrad3;
- ctx.fillRect(0,0,150,150);
+ ctx.fillRect(0, 0, 150, 150);
ctx.fillStyle = radgrad2;
- ctx.fillRect(0,0,150,150);
+ ctx.fillRect(0, 0, 150, 150);
ctx.fillStyle = radgrad;
- ctx.fillRect(0,0,150,150);
+ ctx.fillRect(0, 0, 150, 150);
}
```
@@ -611,8 +614,8 @@ draw();
```js
var img = new Image();
-img.src = 'someimage.png';
-var ptrn = ctx.createPattern(img, 'repeat');
+img.src = "someimage.png";
+var ptrn = ctx.createPattern(img, "repeat");
```
> **참고:** `drawImage ()` 메서드와 마찬가지로 이 메소드를 호출하기 전에 이미지가 로드되었는지 확인해야합니다. 그렇지 않으면 패턴이 잘못 그려 질 수 있습니다.
@@ -623,19 +626,17 @@ var ptrn = ctx.createPattern(img, 'repeat');
```js
function draw() {
- var ctx = document.getElementById('canvas').getContext('2d');
+ var ctx = document.getElementById("canvas").getContext("2d");
// 패턴으로 사용할 이미지 오브젝트를 생성한다
var img = new Image();
- img.src = 'canvas_createpattern.png';
- img.onload = function() {
-
+ img.src = "canvas_createpattern.png";
+ img.onload = function () {
// 패턴을 생성한다
- var ptrn = ctx.createPattern(img,'repeat');
+ var ptrn = ctx.createPattern(img, "repeat");
ctx.fillStyle = ptrn;
- ctx.fillRect(0,0,150,150);
-
- }
+ ctx.fillRect(0, 0, 150, 150);
+ };
}
```
@@ -678,7 +679,7 @@ The result looks like this:
```js
function draw() {
- var ctx = document.getElementById('canvas').getContext('2d');
+ var ctx = document.getElementById("canvas").getContext("2d");
ctx.shadowOffsetX = 2;
ctx.shadowOffsetY = 2;
@@ -718,11 +719,11 @@ In this example we are using the `evenodd` rule.
```js
function draw() {
- var ctx = document.getElementById('canvas').getContext('2d');
+ var ctx = document.getElementById("canvas").getContext("2d");
ctx.beginPath();
ctx.arc(50, 50, 30, 0, Math.PI * 2, true);
ctx.arc(50, 50, 15, 0, Math.PI * 2, true);
- ctx.fill('evenodd');
+ ctx.fill("evenodd");
}
```
diff --git a/files/ko/web/api/canvas_api/tutorial/basic_animations/index.md b/files/ko/web/api/canvas_api/tutorial/basic_animations/index.md
index a1075b658aa437..a156960f28ee30 100644
--- a/files/ko/web/api/canvas_api/tutorial/basic_animations/index.md
+++ b/files/ko/web/api/canvas_api/tutorial/basic_animations/index.md
@@ -13,13 +13,13 @@ original_slug: Web/HTML/Canvas/Tutorial/Basic_animations
한 장면을 그리려면 아래와 같은 단계를 밟습니다.
1. **캔버스를 비웁니다.**
- 그리려는 도형이 (배경 이미지를 만들 때처럼) 캔버스를 가득 채우는 것이 아니라면, 이전에 그려진 모든 도형을 지울 필요가 있습니다. 가장 쉬운 방법은 `clearRect()` 메소드를 사용하는 것입니다.
+ 그리려는 도형이 (배경 이미지를 만들 때처럼) 캔버스를 가득 채우는 것이 아니라면, 이전에 그려진 모든 도형을 지울 필요가 있습니다. 가장 쉬운 방법은 `clearRect()` 메소드를 사용하는 것입니다.
2. **캔버스 상태를 저장합니다.**
- 캔버스 상태에 영향을 주는 (스타일 변경, 모양 변형 등의) 설정값을 바꾸려고 하고, 바뀐 값을 각 장면마다 사용하려고 한다면, 원래 상태를 저장할 필요가 있습니다.
+ 캔버스 상태에 영향을 주는 (스타일 변경, 모양 변형 등의) 설정값을 바꾸려고 하고, 바뀐 값을 각 장면마다 사용하려고 한다면, 원래 상태를 저장할 필요가 있습니다.
3. **애니메이션할 도형을 그립니다.**
- 실제 장면을 그리는 단계입니다.
+ 실제 장면을 그리는 단계입니다.
4. **캔버스 상태를 복원합니다.**
- 새로운 장면을 그리기 전에 저장된 상태를 복원합니다.
+ 새로운 장면을 그리기 전에 저장된 상태를 복원합니다.
## 애니메이션 제어하기
@@ -66,45 +66,51 @@ var myAnimation = new Daemon(null, animateShape, 500, Infinity);
var sun = new Image();
var moon = new Image();
var earth = new Image();
-function init(){
- sun.src = 'canvas_sun.png';
- moon.src = 'canvas_moon.png';
- earth.src = 'canvas_earth.png';
- setInterval(draw,100);
+function init() {
+ sun.src = "canvas_sun.png";
+ moon.src = "canvas_moon.png";
+ earth.src = "canvas_earth.png";
+ setInterval(draw, 100);
}
function draw() {
- var ctx = document.getElementById('canvas').getContext('2d');
+ var ctx = document.getElementById("canvas").getContext("2d");
- ctx.globalCompositeOperation = 'destination-over';
- ctx.clearRect(0,0,300,300); // 캔버스를 비운다
+ ctx.globalCompositeOperation = "destination-over";
+ ctx.clearRect(0, 0, 300, 300); // 캔버스를 비운다
- ctx.fillStyle = 'rgba(0,0,0,0.4)';
- ctx.strokeStyle = 'rgba(0,153,255,0.4)';
+ ctx.fillStyle = "rgba(0,0,0,0.4)";
+ ctx.strokeStyle = "rgba(0,153,255,0.4)";
ctx.save();
- ctx.translate(150,150);
+ ctx.translate(150, 150);
// 지구
var time = new Date();
- ctx.rotate( ((2*Math.PI)/60)*time.getSeconds() + ((2*Math.PI)/60000)*time.getMilliseconds() );
- ctx.translate(105,0);
- ctx.fillRect(0,-12,50,24); // Shadow
- ctx.drawImage(earth,-12,-12);
+ ctx.rotate(
+ ((2 * Math.PI) / 60) * time.getSeconds() +
+ ((2 * Math.PI) / 60000) * time.getMilliseconds(),
+ );
+ ctx.translate(105, 0);
+ ctx.fillRect(0, -12, 50, 24); // Shadow
+ ctx.drawImage(earth, -12, -12);
// 달
ctx.save();
- ctx.rotate( ((2*Math.PI)/6)*time.getSeconds() + ((2*Math.PI)/6000)*time.getMilliseconds() );
- ctx.translate(0,28.5);
- ctx.drawImage(moon,-3.5,-3.5);
+ ctx.rotate(
+ ((2 * Math.PI) / 6) * time.getSeconds() +
+ ((2 * Math.PI) / 6000) * time.getMilliseconds(),
+ );
+ ctx.translate(0, 28.5);
+ ctx.drawImage(moon, -3.5, -3.5);
ctx.restore();
ctx.restore();
ctx.beginPath();
- ctx.arc(150,150,105,0,Math.PI*2,false); // 지구 궤도
+ ctx.arc(150, 150, 105, 0, Math.PI * 2, false); // 지구 궤도
ctx.stroke();
- ctx.drawImage(sun,0,0,300,300);
+ ctx.drawImage(sun, 0, 0, 300, 300);
}
```
@@ -123,19 +129,19 @@ init();
이 예제에서는, 현재 시각을 보여주는 움직이는 시계를 만듭니다.
```js
-function init(){
+function init() {
clock();
- setInterval(clock,1000);
+ setInterval(clock, 1000);
}
-function clock(){
+function clock() {
var now = new Date();
- var ctx = document.getElementById('canvas').getContext('2d');
+ var ctx = document.getElementById("canvas").getContext("2d");
ctx.save();
- ctx.clearRect(0,0,150,150);
- ctx.translate(75,75);
- ctx.scale(0.4,0.4);
- ctx.rotate(-Math.PI/2);
+ ctx.clearRect(0, 0, 150, 150);
+ ctx.translate(75, 75);
+ ctx.scale(0.4, 0.4);
+ ctx.rotate(-Math.PI / 2);
ctx.strokeStyle = "black";
ctx.fillStyle = "white";
ctx.lineWidth = 8;
@@ -143,11 +149,11 @@ function clock(){
// 시계판 - 시
ctx.save();
- for (var i=0;i<12;i++){
+ for (var i = 0; i < 12; i++) {
ctx.beginPath();
- ctx.rotate(Math.PI/6);
- ctx.moveTo(100,0);
- ctx.lineTo(120,0);
+ ctx.rotate(Math.PI / 6);
+ ctx.moveTo(100, 0);
+ ctx.lineTo(120, 0);
ctx.stroke();
}
ctx.restore();
@@ -155,69 +161,71 @@ function clock(){
// 시계판 - 분
ctx.save();
ctx.lineWidth = 5;
- for (i=0;i<60;i++){
- if (i%5!=0) {
+ for (i = 0; i < 60; i++) {
+ if (i % 5 != 0) {
ctx.beginPath();
- ctx.moveTo(117,0);
- ctx.lineTo(120,0);
+ ctx.moveTo(117, 0);
+ ctx.lineTo(120, 0);
ctx.stroke();
}
- ctx.rotate(Math.PI/30);
+ ctx.rotate(Math.PI / 30);
}
ctx.restore();
var sec = now.getSeconds();
var min = now.getMinutes();
- var hr = now.getHours();
- hr = hr>=12 ? hr-12 : hr;
+ var hr = now.getHours();
+ hr = hr >= 12 ? hr - 12 : hr;
ctx.fillStyle = "black";
// 시간 표시 - 시
ctx.save();
- ctx.rotate( hr*(Math.PI/6) + (Math.PI/360)*min + (Math.PI/21600)*sec )
+ ctx.rotate(
+ hr * (Math.PI / 6) + (Math.PI / 360) * min + (Math.PI / 21600) * sec,
+ );
ctx.lineWidth = 14;
ctx.beginPath();
- ctx.moveTo(-20,0);
- ctx.lineTo(80,0);
+ ctx.moveTo(-20, 0);
+ ctx.lineTo(80, 0);
ctx.stroke();
ctx.restore();
// 시간 표시 - 분
ctx.save();
- ctx.rotate( (Math.PI/30)*min + (Math.PI/1800)*sec )
+ ctx.rotate((Math.PI / 30) * min + (Math.PI / 1800) * sec);
ctx.lineWidth = 10;
ctx.beginPath();
- ctx.moveTo(-28,0);
- ctx.lineTo(112,0);
+ ctx.moveTo(-28, 0);
+ ctx.lineTo(112, 0);
ctx.stroke();
ctx.restore();
// 시간 표시 - 초
ctx.save();
- ctx.rotate(sec * Math.PI/30);
+ ctx.rotate((sec * Math.PI) / 30);
ctx.strokeStyle = "#D40000";
ctx.fillStyle = "#D40000";
ctx.lineWidth = 6;
ctx.beginPath();
- ctx.moveTo(-30,0);
- ctx.lineTo(83,0);
+ ctx.moveTo(-30, 0);
+ ctx.lineTo(83, 0);
ctx.stroke();
ctx.beginPath();
- ctx.arc(0,0,10,0,Math.PI*2,true);
+ ctx.arc(0, 0, 10, 0, Math.PI * 2, true);
ctx.fill();
ctx.beginPath();
- ctx.arc(95,0,10,0,Math.PI*2,true);
+ ctx.arc(95, 0, 10, 0, Math.PI * 2, true);
ctx.stroke();
ctx.fillStyle = "rgba(0,0,0,0)";
- ctx.arc(0,0,3,0,Math.PI*2,true);
+ ctx.arc(0, 0, 3, 0, Math.PI * 2, true);
ctx.fill();
ctx.restore();
ctx.beginPath();
ctx.lineWidth = 14;
- ctx.strokeStyle = '#325FA2';
- ctx.arc(0,0,142,0,Math.PI*2,true);
+ ctx.strokeStyle = "#325FA2";
+ ctx.arc(0, 0, 142, 0, Math.PI * 2, true);
ctx.stroke();
ctx.restore();
@@ -244,7 +252,7 @@ var img = new Image();
// 변수
// 스크롤될 이미지, 방향, 속도를 바꾸려면 변수값을 바꾼다.
-img.src = 'capitan_meadows,_yosemite_national_park.jpg';
+img.src = "capitan_meadows,_yosemite_national_park.jpg";
var CanvasXSize = 800;
var CanvasYSize = 200;
var speed = 30; // 값이 작을 수록 빨라진다
@@ -261,41 +269,59 @@ var clearX;
var clearY;
var ctx;
-img.onload = function() {
- imgW = img.width*scale;
- imgH = img.height*scale;
- if (imgW > CanvasXSize) { x = CanvasXSize-imgW; } // 캔버스보다 큰 이미지
- if (imgW > CanvasXSize) { clearX = imgW; } // 캔버스보다 큰 이미지
- else { clearX = CanvasXSize; }
- if (imgH > CanvasYSize) { clearY = imgH; } // 캔버스보다 큰 이미지
- else { clearY = CanvasYSize; }
- // 캔버스 요소 얻기
- ctx = document.getElementById('canvas').getContext('2d');
- // 새로 그리기 속도 설정
- return setInterval(draw, speed);
-}
+img.onload = function () {
+ imgW = img.width * scale;
+ imgH = img.height * scale;
+ if (imgW > CanvasXSize) {
+ x = CanvasXSize - imgW;
+ } // 캔버스보다 큰 이미지
+ if (imgW > CanvasXSize) {
+ clearX = imgW;
+ } // 캔버스보다 큰 이미지
+ else {
+ clearX = CanvasXSize;
+ }
+ if (imgH > CanvasYSize) {
+ clearY = imgH;
+ } // 캔버스보다 큰 이미지
+ else {
+ clearY = CanvasYSize;
+ }
+ // 캔버스 요소 얻기
+ ctx = document.getElementById("canvas").getContext("2d");
+ // 새로 그리기 속도 설정
+ return setInterval(draw, speed);
+};
function draw() {
- // 캔버스를 비운다
- ctx.clearRect(0,0,clearX,clearY);
- // 이미지가 캔버스보다 작거나 같다면 (If image is <= Canvas Size)
- if (imgW <= CanvasXSize) {
- // 재설정, 처음부터 시작
- if (x > (CanvasXSize)) { x = 0; }
- // 추가 이미지 그리기
- if (x > (CanvasXSize-imgW)) { ctx.drawImage(img,x-CanvasXSize+1,y,imgW,imgH); }
+ // 캔버스를 비운다
+ ctx.clearRect(0, 0, clearX, clearY);
+ // 이미지가 캔버스보다 작거나 같다면 (If image is <= Canvas Size)
+ if (imgW <= CanvasXSize) {
+ // 재설정, 처음부터 시작
+ if (x > CanvasXSize) {
+ x = 0;
}
- // 이미지가 캔버스보다 크다면 (If image is > Canvas Size)
- else {
- // 재설정, 처음부터 시작
- if (x > (CanvasXSize)) { x = CanvasXSize-imgW; }
- // 추가 이미지 그리기
- if (x > (CanvasXSize-imgW)) { ctx.drawImage(img,x-imgW+1,y,imgW,imgH); }
+ // 추가 이미지 그리기
+ if (x > CanvasXSize - imgW) {
+ ctx.drawImage(img, x - CanvasXSize + 1, y, imgW, imgH);
}
- // 이미지 그리기
- ctx.drawImage(img,x,y,imgW,imgH);
- // 움직임 정도
- x += dx;
+ }
+ // 이미지가 캔버스보다 크다면 (If image is > Canvas Size)
+ else {
+ // 재설정, 처음부터 시작
+ if (x > CanvasXSize) {
+ x = CanvasXSize - imgW;
+ }
+ // 추가 이미지 그리기
+ if (x > CanvasXSize - imgW) {
+ ctx.drawImage(img, x - imgW + 1, y, imgW, imgH);
+ }
+ }
+ // 이미지 그리기
+ ctx.drawImage(img, x, y, imgW, imgH);
+ // 움직임 정도
+ x += dx;
}
```
diff --git a/files/ko/web/api/canvas_api/tutorial/basic_usage/index.md b/files/ko/web/api/canvas_api/tutorial/basic_usage/index.md
index da7f44116a0dbd..9413d70c72007f 100644
--- a/files/ko/web/api/canvas_api/tutorial/basic_usage/index.md
+++ b/files/ko/web/api/canvas_api/tutorial/basic_usage/index.md
@@ -36,7 +36,7 @@ original_slug: Web/HTML/Canvas/Tutorial/Basic_usage
```
@@ -55,8 +55,8 @@ original_slug: Web/HTML/Canvas/Tutorial/Basic_usage
캔버스는 처음에 비어있습니다. 무언가를 표시하기 위해서, 어떤 스크립트가 랜더링 컨텍스트에 접근하여 그리도록 할 필요가 있습니다. {{HTMLElement("canvas")}} 요소는 {{domxref("HTMLCanvasElement.getContext", "getContext()")}} 메서드를 이용해서, 랜더링 컨텍스트와 (렌더링 컨텍스트의) 그리기 함수들을 사용할 수 있습니다. getContext() 메서드는 렌더링 컨텍스트 타입을 지정하는 하나의 파라메터를 가집니다. 본 튜토리얼에서 다루고 있는 2D 그래픽의 경우, {{domxref("CanvasRenderingContext2D")}}을 얻기위해 `"2d"`로 지정합니다.
```js
-var canvas = document.getElementById('tutorial');
-var ctx = canvas.getContext('2d');
+var canvas = document.getElementById("tutorial");
+var ctx = canvas.getContext("2d");
```
첫 번째 줄의 스크립트는 {{domxref ( "document.getElementById()")}} 메서드를 호출하여 {{HTMLElement ( "canvas")}} 요소를 표시할 DOM을 검색합니다. 요소가 있으면 `getContext()` 메서드를 사용하여 드로잉 컨텍스트에 액세스 할 수 있습니다.
@@ -66,10 +66,10 @@ var ctx = canvas.getContext('2d');
대체 콘텐츠는 {{HTMLElement ( "canvas")}}를 지원하지 않는 브라우저에 표시됩니다. 스크립트 역시 간단하게 `getContext()` 메소드의 존재 여부를 테스트함으로써 프로그래밍 방식으로 지원하는지를 확인할 수 있습니다. 위의 코드 예제는 다음과 같이 될 수 있습니다:
```js
-var canvas = document.getElementById('tutorial');
+var canvas = document.getElementById("tutorial");
-if (canvas.getContext){
- var ctx = canvas.getContext('2d');
+if (canvas.getContext) {
+ var ctx = canvas.getContext("2d");
// drawing code here
} else {
// canvas-unsupported code here
@@ -83,21 +83,23 @@ if (canvas.getContext){
> **참고:** **알아두기:** HTML 내에 스크립트(script)를 사용하는것은 좋은 연습 방법이 아닙니다. 다음의 예시에서는 간결하게 나타내기 위해 사용 한 것입니다.
```html
-
+
-
+
Canvas tutorial
@@ -117,28 +119,28 @@ if (canvas.getContext){
먼저 두 개의 직사각형을 그린 간단한 예제를 보도록하겠습니다. 그 중 하나는 투명도(alpha transparency)를가집니다. 나중에 이 예제가 어떻게 작동하는지 자세히 살펴 보겠습니다.
```html
-
+
-
-
-
-
-
-
-
+
+
+
+
+
```
diff --git a/files/ko/web/api/canvas_api/tutorial/compositing/example/index.md b/files/ko/web/api/canvas_api/tutorial/compositing/example/index.md
index 21ce1976929d13..cd25b1439d5b8b 100644
--- a/files/ko/web/api/canvas_api/tutorial/compositing/example/index.md
+++ b/files/ko/web/api/canvas_api/tutorial/compositing/example/index.md
@@ -17,40 +17,62 @@ original_slug: Web/HTML/Canvas/Tutorial/Compositing/Example
```js
var canvas1 = document.createElement("canvas");
var canvas2 = document.createElement("canvas");
-var gco = [ 'source-over','source-in','source-out','source-atop',
- 'destination-over','destination-in','destination-out','destination-atop',
- 'lighter', 'copy','xor', 'multiply', 'screen', 'overlay', 'darken',
- 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light',
- 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'
- ].reverse();
+var gco = [
+ "source-over",
+ "source-in",
+ "source-out",
+ "source-atop",
+ "destination-over",
+ "destination-in",
+ "destination-out",
+ "destination-atop",
+ "lighter",
+ "copy",
+ "xor",
+ "multiply",
+ "screen",
+ "overlay",
+ "darken",
+ "lighten",
+ "color-dodge",
+ "color-burn",
+ "hard-light",
+ "soft-light",
+ "difference",
+ "exclusion",
+ "hue",
+ "saturation",
+ "color",
+ "luminosity",
+].reverse();
var gcoText = [
-'기본 설정으로, 새로운 도형이 원래 도형 위에 그려집니다.',
-'새로운 도형이 원래 도형과 겹치는 부분에만 그려지며, 나머지는 투명하게 설정됩니다.',
-'새로운 도형이 원래 도형과 겹치지 않는 부분에만 그려집니다.',
-'새로운 도형이 원래 도형과 겹치는 부분에만 그려집니다.',
-'새로운 도형이 원래 도형 아래에 그려집니다.',
-'원래 도형 중 새로운 도형과 겹치는 부분이 유지되며, 나머지는 투명하게 설정됩니다.',
-'원래 도형 중 새로운 도형과 겹치지 않는 부분이 유지됩니다.',
-'원래 도형 중 새로운 도형과 겹치는 부분만 유지됩니다. 새로운 도형은 원래 도형 아래에 그려집니다.',
-'두 도형이 겹치는 곳의 색상이 두 색상값을 합한 값으로 결정됩니다.',
-'새로운 도형만 그려집니다.',
-'두 도형이 겹치는 곳이 투명하게 변하며, 나머지는 평범하게 그려집니다.',
-'위쪽 레이어의 픽셀값이 아래쪽 레이어의 해당하는 픽셀값과 곱해지며, 결과적으로 어두운 이미지가 생성됩니다.',
-'픽셀값을 뒤집고 곱한 다음 도로 뒤집습니다. 결과적으로 밝은 이미지가 생성됩니다(multiply의 반대).',
-'multiply와 screen의 조합입니다. 아래쪽 레이어의 어두운 부분은 더 어두워지고, 밝은 부분은 더 밝아집니다.',
-'두 레이어 중 어두운 픽셀값을 취합니다.',
-'두 레이어 중 밝은 픽셀값을 취합니다.',
-'아래쪽 레이어의 픽셀값을 위쪽 레이어의 뒤집힌 픽셀값으로 나눕니다.',
-'아래쪽 레이어의 뒤집힌 픽셀값을 위쪽 레이어의 픽셀값으로 나누고, 그 값을 도로 뒤집습니다.',
-'overlay와 같이 multiply와 screen의 조합이지만, 위아래 레이어의 순서가 바뀐 상태입니다.',
-'조금 더 부드러운 hard-light입니다. 완전한 검은색/흰색에서 무조건 완전한 검은색/흰색이 나오지 않습니다.',
-'한쪽 레이어의 픽셀값에서 다른 쪽 레이어의 픽셀값을 뺍니다. 빼는 순서는 결과값이 양수가 나오는 순서입니다.',
-'difference와 비슷하지만 대비가 덜합니다.',
-'아래쪽 레이어의 채도(chroma)와 명도(luma)를 보존하고 위쪽 레이어의 색상(hue)을 적용합니다.',
-'아래쪽 레이어의 색상과 명도를 보존하고 위쪽 레이어의 채도를 적용합니다.',
-'아래쪽 레이어의 명도를 보존하고 위쪽 레이어의 색상과 채도를 적용합니다.',
-'아래쪽 레이어의 색상과 채도를 보존하고 위쪽 레이어의 명도를 적용합니다.'
- ].reverse();
+ "기본 설정으로, 새로운 도형이 원래 도형 위에 그려집니다.",
+ "새로운 도형이 원래 도형과 겹치는 부분에만 그려지며, 나머지는 투명하게 설정됩니다.",
+ "새로운 도형이 원래 도형과 겹치지 않는 부분에만 그려집니다.",
+ "새로운 도형이 원래 도형과 겹치는 부분에만 그려집니다.",
+ "새로운 도형이 원래 도형 아래에 그려집니다.",
+ "원래 도형 중 새로운 도형과 겹치는 부분이 유지되며, 나머지는 투명하게 설정됩니다.",
+ "원래 도형 중 새로운 도형과 겹치지 않는 부분이 유지됩니다.",
+ "원래 도형 중 새로운 도형과 겹치는 부분만 유지됩니다. 새로운 도형은 원래 도형 아래에 그려집니다.",
+ "두 도형이 겹치는 곳의 색상이 두 색상값을 합한 값으로 결정됩니다.",
+ "새로운 도형만 그려집니다.",
+ "두 도형이 겹치는 곳이 투명하게 변하며, 나머지는 평범하게 그려집니다.",
+ "위쪽 레이어의 픽셀값이 아래쪽 레이어의 해당하는 픽셀값과 곱해지며, 결과적으로 어두운 이미지가 생성됩니다.",
+ "픽셀값을 뒤집고 곱한 다음 도로 뒤집습니다. 결과적으로 밝은 이미지가 생성됩니다(multiply의 반대).",
+ "multiply와 screen의 조합입니다. 아래쪽 레이어의 어두운 부분은 더 어두워지고, 밝은 부분은 더 밝아집니다.",
+ "두 레이어 중 어두운 픽셀값을 취합니다.",
+ "두 레이어 중 밝은 픽셀값을 취합니다.",
+ "아래쪽 레이어의 픽셀값을 위쪽 레이어의 뒤집힌 픽셀값으로 나눕니다.",
+ "아래쪽 레이어의 뒤집힌 픽셀값을 위쪽 레이어의 픽셀값으로 나누고, 그 값을 도로 뒤집습니다.",
+ "overlay와 같이 multiply와 screen의 조합이지만, 위아래 레이어의 순서가 바뀐 상태입니다.",
+ "조금 더 부드러운 hard-light입니다. 완전한 검은색/흰색에서 무조건 완전한 검은색/흰색이 나오지 않습니다.",
+ "한쪽 레이어의 픽셀값에서 다른 쪽 레이어의 픽셀값을 뺍니다. 빼는 순서는 결과값이 양수가 나오는 순서입니다.",
+ "difference와 비슷하지만 대비가 덜합니다.",
+ "아래쪽 레이어의 채도(chroma)와 명도(luma)를 보존하고 위쪽 레이어의 색상(hue)을 적용합니다.",
+ "아래쪽 레이어의 색상과 명도를 보존하고 위쪽 레이어의 채도를 적용합니다.",
+ "아래쪽 레이어의 명도를 보존하고 위쪽 레이어의 색상과 채도를 적용합니다.",
+ "아래쪽 레이어의 색상과 채도를 보존하고 위쪽 레이어의 명도를 적용합니다.",
+].reverse();
var width = 320;
var height = 340;
```
@@ -60,22 +82,22 @@ var height = 340;
페이지를 불러오고 나면 다음 코드에서 예제를 준비하고 실행합니다:
```js
-window.onload = function() {
- // lum in sRGB
- var lum = {
- r: 0.33,
- g: 0.33,
- b: 0.33
- };
- // 캔버스 크기 변경
- canvas1.width = width;
- canvas1.height = height;
- canvas2.width = width;
- canvas2.height = height;
- lightMix()
- colorSphere();
- runComposite();
- return;
+window.onload = function () {
+ // lum in sRGB
+ var lum = {
+ r: 0.33,
+ g: 0.33,
+ b: 0.33,
+ };
+ // 캔버스 크기 변경
+ canvas1.width = width;
+ canvas1.height = height;
+ canvas2.width = width;
+ canvas2.height = height;
+ lightMix();
+ colorSphere();
+ runComposite();
+ return;
};
```
@@ -83,75 +105,75 @@ window.onload = function() {
```js
function createCanvas() {
- var canvas = document.createElement("canvas");
- canvas.style.background = "url("+op_8x8.data+")";
- canvas.style.border = "1px solid #000";
- canvas.style.margin = "5px";
- canvas.width = width/2;
- canvas.height = height/2;
- return canvas;
+ var canvas = document.createElement("canvas");
+ canvas.style.background = "url(" + op_8x8.data + ")";
+ canvas.style.border = "1px solid #000";
+ canvas.style.margin = "5px";
+ canvas.width = width / 2;
+ canvas.height = height / 2;
+ return canvas;
}
function runComposite() {
- var dl = document.createElement("dl");
- document.body.appendChild(dl);
- while(gco.length) {
- var pop = gco.pop();
- var dt = document.createElement("dt");
- dt.textContent = pop;
- dl.appendChild(dt);
- var dd = document.createElement("dd");
- var p = document.createElement("p");
- p.textContent = gcoText.pop();
- dd.appendChild(p);
+ var dl = document.createElement("dl");
+ document.body.appendChild(dl);
+ while (gco.length) {
+ var pop = gco.pop();
+ var dt = document.createElement("dt");
+ dt.textContent = pop;
+ dl.appendChild(dt);
+ var dd = document.createElement("dd");
+ var p = document.createElement("p");
+ p.textContent = gcoText.pop();
+ dd.appendChild(p);
- var canvasToDrawOn = createCanvas();
- var canvasToDrawFrom = createCanvas();
- var canvasToDrawResult = createCanvas();
+ var canvasToDrawOn = createCanvas();
+ var canvasToDrawFrom = createCanvas();
+ var canvasToDrawResult = createCanvas();
- var ctx = canvasToDrawResult.getContext('2d');
- ctx.clearRect(0, 0, width, height)
- ctx.save();
- ctx.drawImage(canvas1, 0, 0, width/2, height/2);
- ctx.globalCompositeOperation = pop;
- ctx.drawImage(canvas2, 0, 0, width/2, height/2);
- ctx.globalCompositeOperation = "source-over";
- ctx.fillStyle = "rgba(0,0,0,0.8)";
- ctx.fillRect(0, height/2 - 20, width/2, 20);
- ctx.fillStyle = "#FFF";
- ctx.font = "14px arial";
- ctx.fillText(pop, 5, height/2 - 5);
- ctx.restore();
+ var ctx = canvasToDrawResult.getContext("2d");
+ ctx.clearRect(0, 0, width, height);
+ ctx.save();
+ ctx.drawImage(canvas1, 0, 0, width / 2, height / 2);
+ ctx.globalCompositeOperation = pop;
+ ctx.drawImage(canvas2, 0, 0, width / 2, height / 2);
+ ctx.globalCompositeOperation = "source-over";
+ ctx.fillStyle = "rgba(0,0,0,0.8)";
+ ctx.fillRect(0, height / 2 - 20, width / 2, 20);
+ ctx.fillStyle = "#FFF";
+ ctx.font = "14px arial";
+ ctx.fillText(pop, 5, height / 2 - 5);
+ ctx.restore();
- var ctx = canvasToDrawOn.getContext('2d');
- ctx.clearRect(0, 0, width, height)
- ctx.save();
- ctx.drawImage(canvas1, 0, 0, width/2, height/2);
- ctx.fillStyle = "rgba(0,0,0,0.8)";
- ctx.fillRect(0, height/2 - 20, width/2, 20);
- ctx.fillStyle = "#FFF";
- ctx.font = "14px arial";
- ctx.fillText('기존 도형', 5, height/2 - 5);
- ctx.restore();
+ var ctx = canvasToDrawOn.getContext("2d");
+ ctx.clearRect(0, 0, width, height);
+ ctx.save();
+ ctx.drawImage(canvas1, 0, 0, width / 2, height / 2);
+ ctx.fillStyle = "rgba(0,0,0,0.8)";
+ ctx.fillRect(0, height / 2 - 20, width / 2, 20);
+ ctx.fillStyle = "#FFF";
+ ctx.font = "14px arial";
+ ctx.fillText("기존 도형", 5, height / 2 - 5);
+ ctx.restore();
- var ctx = canvasToDrawFrom.getContext('2d');
- ctx.clearRect(0, 0, width, height)
- ctx.save();
- ctx.drawImage(canvas2, 0, 0, width/2, height/2);
- ctx.fillStyle = "rgba(0,0,0,0.8)";
- ctx.fillRect(0, height/2 - 20, width/2, 20);
- ctx.fillStyle = "#FFF";
- ctx.font = "14px arial";
- ctx.fillText('새로운 도형', 5, height/2 - 5);
- ctx.restore();
+ var ctx = canvasToDrawFrom.getContext("2d");
+ ctx.clearRect(0, 0, width, height);
+ ctx.save();
+ ctx.drawImage(canvas2, 0, 0, width / 2, height / 2);
+ ctx.fillStyle = "rgba(0,0,0,0.8)";
+ ctx.fillRect(0, height / 2 - 20, width / 2, 20);
+ ctx.fillStyle = "#FFF";
+ ctx.font = "14px arial";
+ ctx.fillText("새로운 도형", 5, height / 2 - 5);
+ ctx.restore();
- dd.appendChild(canvasToDrawOn);
- dd.appendChild(canvasToDrawFrom);
- dd.appendChild(canvasToDrawResult);
+ dd.appendChild(canvasToDrawOn);
+ dd.appendChild(canvasToDrawFrom);
+ dd.appendChild(canvasToDrawResult);
- dl.appendChild(dd);
- }
-};
+ dl.appendChild(dd);
+ }
+}
```
### 보조 함수
@@ -159,60 +181,68 @@ function runComposite() {
이 프로그램에서는 몇몇 보조 함수를 사용합니다.
```js
-var lightMix = function() {
- var ctx = canvas2.getContext("2d");
- ctx.save();
- ctx.globalCompositeOperation = "lighter";
- ctx.beginPath();
- ctx.fillStyle = "rgba(255,0,0,1)";
- ctx.arc(100, 200, 100, Math.PI*2, 0, false);
- ctx.fill()
- ctx.beginPath();
- ctx.fillStyle = "rgba(0,0,255,1)";
- ctx.arc(220, 200, 100, Math.PI*2, 0, false);
- ctx.fill()
- ctx.beginPath();
- ctx.fillStyle = "rgba(0,255,0,1)";
- ctx.arc(160, 100, 100, Math.PI*2, 0, false);
- ctx.fill();
- ctx.restore();
- ctx.beginPath();
- ctx.fillStyle = "#f00";
- ctx.fillRect(0,0,30,30)
- ctx.fill();
+var lightMix = function () {
+ var ctx = canvas2.getContext("2d");
+ ctx.save();
+ ctx.globalCompositeOperation = "lighter";
+ ctx.beginPath();
+ ctx.fillStyle = "rgba(255,0,0,1)";
+ ctx.arc(100, 200, 100, Math.PI * 2, 0, false);
+ ctx.fill();
+ ctx.beginPath();
+ ctx.fillStyle = "rgba(0,0,255,1)";
+ ctx.arc(220, 200, 100, Math.PI * 2, 0, false);
+ ctx.fill();
+ ctx.beginPath();
+ ctx.fillStyle = "rgba(0,255,0,1)";
+ ctx.arc(160, 100, 100, Math.PI * 2, 0, false);
+ ctx.fill();
+ ctx.restore();
+ ctx.beginPath();
+ ctx.fillStyle = "#f00";
+ ctx.fillRect(0, 0, 30, 30);
+ ctx.fill();
};
```
```js
-var colorSphere = function(element) {
- var ctx = canvas1.getContext("2d");
- var width = 360;
- var halfWidth = width / 2;
- var rotate = (1 / 360) * Math.PI * 2; // per degree
- var offset = 0; // scrollbar offset
- var oleft = -20;
- var otop = -20;
- for (var n = 0; n <= 359; n ++) {
- var gradient = ctx.createLinearGradient(oleft + halfWidth, otop, oleft + halfWidth, otop + halfWidth);
- var color = Color.HSV_RGB({ H: (n + 300) % 360, S: 100, V: 100 });
- gradient.addColorStop(0, "rgba(0,0,0,0)");
- gradient.addColorStop(0.7, "rgba("+color.R+","+color.G+","+color.B+",1)");
- gradient.addColorStop(1, "rgba(255,255,255,1)");
- ctx.beginPath();
- ctx.moveTo(oleft + halfWidth, otop);
- ctx.lineTo(oleft + halfWidth, otop + halfWidth);
- ctx.lineTo(oleft + halfWidth + 6, otop);
- ctx.fillStyle = gradient;
- ctx.fill();
- ctx.translate(oleft + halfWidth, otop + halfWidth);
- ctx.rotate(rotate);
- ctx.translate(-(oleft + halfWidth), -(otop + halfWidth));
- }
+var colorSphere = function (element) {
+ var ctx = canvas1.getContext("2d");
+ var width = 360;
+ var halfWidth = width / 2;
+ var rotate = (1 / 360) * Math.PI * 2; // per degree
+ var offset = 0; // scrollbar offset
+ var oleft = -20;
+ var otop = -20;
+ for (var n = 0; n <= 359; n++) {
+ var gradient = ctx.createLinearGradient(
+ oleft + halfWidth,
+ otop,
+ oleft + halfWidth,
+ otop + halfWidth,
+ );
+ var color = Color.HSV_RGB({ H: (n + 300) % 360, S: 100, V: 100 });
+ gradient.addColorStop(0, "rgba(0,0,0,0)");
+ gradient.addColorStop(
+ 0.7,
+ "rgba(" + color.R + "," + color.G + "," + color.B + ",1)",
+ );
+ gradient.addColorStop(1, "rgba(255,255,255,1)");
ctx.beginPath();
- ctx.fillStyle = "#00f";
- ctx.fillRect(15,15,30,30)
+ ctx.moveTo(oleft + halfWidth, otop);
+ ctx.lineTo(oleft + halfWidth, otop + halfWidth);
+ ctx.lineTo(oleft + halfWidth + 6, otop);
+ ctx.fillStyle = gradient;
ctx.fill();
- return ctx.canvas;
+ ctx.translate(oleft + halfWidth, otop + halfWidth);
+ ctx.rotate(rotate);
+ ctx.translate(-(oleft + halfWidth), -(otop + halfWidth));
+ }
+ ctx.beginPath();
+ ctx.fillStyle = "#00f";
+ ctx.fillRect(15, 15, 30, 30);
+ ctx.fill();
+ return ctx.canvas;
};
```
@@ -220,76 +250,78 @@ var colorSphere = function(element) {
// HSV (1978) = H: Hue / S: Saturation / V: Value
Color = {};
Color.HSV_RGB = function (o) {
- var H = o.H / 360,
- S = o.S / 100,
- V = o.V / 100,
- R, G, B;
- var A, B, C, D;
- if (S == 0) {
- R = G = B = Math.round(V * 255);
- } else {
- if (H >= 1) H = 0;
- H = 6 * H;
- D = H - Math.floor(H);
- A = Math.round(255 * V * (1 - S));
- B = Math.round(255 * V * (1 - (S * D)));
- C = Math.round(255 * V * (1 - (S * (1 - D))));
- V = Math.round(255 * V);
- switch (Math.floor(H)) {
- case 0:
- R = V;
- G = C;
- B = A;
- break;
- case 1:
- R = B;
- G = V;
- B = A;
- break;
- case 2:
- R = A;
- G = V;
- B = C;
- break;
- case 3:
- R = A;
- G = B;
- B = V;
- break;
- case 4:
- R = C;
- G = A;
- B = V;
- break;
- case 5:
- R = V;
- G = A;
- B = B;
- break;
- }
+ var H = o.H / 360,
+ S = o.S / 100,
+ V = o.V / 100,
+ R,
+ G,
+ B;
+ var A, B, C, D;
+ if (S == 0) {
+ R = G = B = Math.round(V * 255);
+ } else {
+ if (H >= 1) H = 0;
+ H = 6 * H;
+ D = H - Math.floor(H);
+ A = Math.round(255 * V * (1 - S));
+ B = Math.round(255 * V * (1 - S * D));
+ C = Math.round(255 * V * (1 - S * (1 - D)));
+ V = Math.round(255 * V);
+ switch (Math.floor(H)) {
+ case 0:
+ R = V;
+ G = C;
+ B = A;
+ break;
+ case 1:
+ R = B;
+ G = V;
+ B = A;
+ break;
+ case 2:
+ R = A;
+ G = V;
+ B = C;
+ break;
+ case 3:
+ R = A;
+ G = B;
+ B = V;
+ break;
+ case 4:
+ R = C;
+ G = A;
+ B = V;
+ break;
+ case 5:
+ R = V;
+ G = A;
+ B = B;
+ break;
}
- return {
- R: R,
- G: G,
- B: B
- };
+ }
+ return {
+ R: R,
+ G: G,
+ B: B,
+ };
};
var createInterlace = function (size, color1, color2) {
- var proto = document.createElement("canvas").getContext("2d");
- proto.canvas.width = size * 2;
- proto.canvas.height = size * 2;
- proto.fillStyle = color1; // top-left
- proto.fillRect(0, 0, size, size);
- proto.fillStyle = color2; // top-right
- proto.fillRect(size, 0, size, size);
- proto.fillStyle = color2; // bottom-left
- proto.fillRect(0, size, size, size);
- proto.fillStyle = color1; // bottom-right
- proto.fillRect(size, size, size, size);
- var pattern = proto.createPattern(proto.canvas, "repeat");
- pattern.data = proto.canvas.toDataURL();
- return pattern;
+ var proto = document.createElement("canvas").getContext("2d");
+ proto.canvas.width = size * 2;
+ proto.canvas.height = size * 2;
+ proto.fillStyle = color1; // top-left
+ proto.fillRect(0, 0, size, size);
+ proto.fillStyle = color2; // top-right
+ proto.fillRect(size, 0, size, size);
+ proto.fillStyle = color2; // bottom-left
+ proto.fillRect(0, size, size, size);
+ proto.fillStyle = color1; // bottom-right
+ proto.fillRect(size, size, size, size);
+ var pattern = proto.createPattern(proto.canvas, "repeat");
+ pattern.data = proto.canvas.toDataURL();
+ return pattern;
};
var op_8x8 = createInterlace(8, "#FFF", "#eee");
diff --git a/files/ko/web/api/canvas_api/tutorial/compositing/index.md b/files/ko/web/api/canvas_api/tutorial/compositing/index.md
index b6db685bf8414d..b28c65e6bd1274 100644
--- a/files/ko/web/api/canvas_api/tutorial/compositing/index.md
+++ b/files/ko/web/api/canvas_api/tutorial/compositing/index.md
@@ -38,45 +38,46 @@ original_slug: Web/HTML/Canvas/Tutorial/Compositing
```js
function draw() {
- var ctx = document.getElementById('canvas').getContext('2d');
- ctx.fillRect(0,0,150,150);
- ctx.translate(75,75);
+ var ctx = document.getElementById("canvas").getContext("2d");
+ ctx.fillRect(0, 0, 150, 150);
+ ctx.translate(75, 75);
// 동그란 모양의 잘라내기 경로를 생성한다
ctx.beginPath();
- ctx.arc(0,0,60,0,Math.PI*2,true);
+ ctx.arc(0, 0, 60, 0, Math.PI * 2, true);
ctx.clip();
// 배경을 그린다
- var lingrad = ctx.createLinearGradient(0,-75,0,75);
- lingrad.addColorStop(0, '#232256');
- lingrad.addColorStop(1, '#143778');
+ var lingrad = ctx.createLinearGradient(0, -75, 0, 75);
+ lingrad.addColorStop(0, "#232256");
+ lingrad.addColorStop(1, "#143778");
ctx.fillStyle = lingrad;
- ctx.fillRect(-75,-75,150,150);
+ ctx.fillRect(-75, -75, 150, 150);
// 별을 그린다
- for (var j=1;j<50;j++){
+ for (var j = 1; j < 50; j++) {
ctx.save();
- ctx.fillStyle = '#fff';
- ctx.translate(75-Math.floor(Math.random()*150),
- 75-Math.floor(Math.random()*150));
- drawStar(ctx,Math.floor(Math.random()*4)+2);
+ ctx.fillStyle = "#fff";
+ ctx.translate(
+ 75 - Math.floor(Math.random() * 150),
+ 75 - Math.floor(Math.random() * 150),
+ );
+ drawStar(ctx, Math.floor(Math.random() * 4) + 2);
ctx.restore();
}
-
}
-function drawStar(ctx,r){
+function drawStar(ctx, r) {
ctx.save();
- ctx.beginPath()
- ctx.moveTo(r,0);
- for (var i=0;i<9;i++){
- ctx.rotate(Math.PI/5);
- if(i%2 == 0) {
- ctx.lineTo((r/0.525731)*0.200811,0);
+ ctx.beginPath();
+ ctx.moveTo(r, 0);
+ for (var i = 0; i < 9; i++) {
+ ctx.rotate(Math.PI / 5);
+ if (i % 2 == 0) {
+ ctx.lineTo((r / 0.525731) * 0.200811, 0);
} else {
- ctx.lineTo(r,0);
+ ctx.lineTo(r, 0);
}
}
ctx.closePath();
diff --git a/files/ko/web/api/canvas_api/tutorial/drawing_shapes/index.md b/files/ko/web/api/canvas_api/tutorial/drawing_shapes/index.md
index 5b9a1ea552332a..d52e23026c9ac2 100644
--- a/files/ko/web/api/canvas_api/tutorial/drawing_shapes/index.md
+++ b/files/ko/web/api/canvas_api/tutorial/drawing_shapes/index.md
@@ -33,17 +33,17 @@ original_slug: Web/HTML/Canvas/Tutorial/Drawing_shapes
```html hidden
-
-
-
+
+
+
```
```js
function draw() {
- var canvas = document.getElementById('canvas');
+ var canvas = document.getElementById("canvas");
if (canvas.getContext) {
- var ctx = canvas.getContext('2d');
+ var ctx = canvas.getContext("2d");
ctx.fillRect(25, 25, 100, 100);
ctx.clearRect(45, 45, 60, 60);
@@ -99,17 +99,17 @@ function draw() {
```html hidden
-
-
-
+
+
+
```
```js
function draw() {
- var canvas = document.getElementById('canvas');
+ var canvas = document.getElementById("canvas");
if (canvas.getContext) {
- var ctx = canvas.getContext('2d');
+ var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.moveTo(75, 50);
@@ -137,26 +137,26 @@ function draw() {
```html hidden
-
-
-
+
+
+
```
```js
function draw() {
- var canvas = document.getElementById('canvas');
+ var canvas = document.getElementById("canvas");
if (canvas.getContext) {
- var ctx = canvas.getContext('2d');
+ var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.arc(75, 75, 50, 0, Math.PI * 2, true); // Outer circle
ctx.moveTo(110, 75);
- ctx.arc(75, 75, 35, 0, Math.PI, false); // Mouth (clockwise)
+ ctx.arc(75, 75, 35, 0, Math.PI, false); // Mouth (clockwise)
ctx.moveTo(65, 65);
- ctx.arc(60, 65, 5, 0, Math.PI * 2, true); // Left eye
+ ctx.arc(60, 65, 5, 0, Math.PI * 2, true); // Left eye
ctx.moveTo(95, 65);
- ctx.arc(90, 65, 5, 0, Math.PI * 2, true); // Right eye
+ ctx.arc(90, 65, 5, 0, Math.PI * 2, true); // Right eye
ctx.stroke();
}
}
@@ -183,17 +183,17 @@ function draw() {
```html hidden
-
-
-
+
+
+
```
```js
function draw() {
- var canvas = document.getElementById('canvas');
+ var canvas = document.getElementById("canvas");
if (canvas.getContext) {
- var ctx = canvas.getContext('2d');
+ var ctx = canvas.getContext("2d");
// Filled triangle
ctx.beginPath();
@@ -244,9 +244,9 @@ function draw() {
```html hidden
-
-
-
+
+
+
```
@@ -304,17 +304,17 @@ function draw() {
```html hidden
-
-
-
+
+
+
```
```js
function draw() {
- var canvas = document.getElementById('canvas');
+ var canvas = document.getElementById("canvas");
if (canvas.getContext) {
- var ctx = canvas.getContext('2d');
+ var ctx = canvas.getContext("2d");
// Quadratric curves example
ctx.beginPath();
@@ -338,17 +338,17 @@ function draw() {
```html hidden
-
-
-
+
+
+
```
```js
function draw() {
- var canvas = document.getElementById('canvas');
+ var canvas = document.getElementById("canvas");
if (canvas.getContext) {
- var ctx = canvas.getContext('2d');
+ var ctx = canvas.getContext("2d");
// Cubic curves example
ctx.beginPath();
@@ -381,17 +381,17 @@ function draw() {
```html hidden
-
-
-
+
+
+
```
```js
function draw() {
- var canvas = document.getElementById('canvas');
+ var canvas = document.getElementById("canvas");
if (canvas.getContext) {
- var ctx = canvas.getContext('2d');
+ var ctx = canvas.getContext("2d");
roundedRect(ctx, 12, 12, 150, 150, 15);
roundedRect(ctx, 19, 19, 150, 150, 9);
@@ -431,7 +431,7 @@ function draw() {
ctx.lineTo(83, 116);
ctx.fill();
- ctx.fillStyle = 'white';
+ ctx.fillStyle = "white";
ctx.beginPath();
ctx.moveTo(91, 96);
ctx.bezierCurveTo(88, 96, 87, 99, 87, 101);
@@ -445,7 +445,7 @@ function draw() {
ctx.bezierCurveTo(107, 99, 106, 96, 103, 96);
ctx.fill();
- ctx.fillStyle = 'black';
+ ctx.fillStyle = "black";
ctx.beginPath();
ctx.arc(101, 102, 2, 0, Math.PI * 2, true);
ctx.fill();
@@ -464,7 +464,7 @@ function roundedRect(ctx, x, y, width, height, radius) {
ctx.lineTo(x, y + height - radius);
ctx.arcTo(x, y + height, x + radius, y + height, radius);
ctx.lineTo(x + width - radius, y + height);
- ctx.arcTo(x + width, y + height, x + width, y + height-radius, radius);
+ ctx.arcTo(x + width, y + height, x + width, y + height - radius, radius);
ctx.lineTo(x + width, y + radius);
ctx.arcTo(x + width, y, x + width - radius, y, radius);
ctx.lineTo(x + radius, y);
@@ -491,9 +491,9 @@ function roundedRect(ctx, x, y, width, height, radius) {
- : **`Path2D()`** 생성자는 새로운 `Path2D` 객체를 반환합니다. 선택적으로 다른 경로를 인수로 받거나(복사본을 생성), SVG 경로 데이터로 구성된 문자열을 받아서 객체로 반환합니다.
```js
-new Path2D(); // empty path object
+new Path2D(); // empty path object
new Path2D(path); // copy from another Path2D object
-new Path2D(d); // path from SVG path data
+new Path2D(d); // path from SVG path data
```
`moveTo`, `rect`, `arc` 혹은 `quadraticCurveTo` 등과 같은 모든 경로 메소드 ([path methods](/ko/docs/Web/API/CanvasRenderingContext2D#Paths))들은 `Path2D` 객체에서 사용 가능합니다.
@@ -509,17 +509,17 @@ new Path2D(d); // path from SVG path data
```html hidden
-
-
-
+
+
+
```
```js
function draw() {
- var canvas = document.getElementById('canvas');
+ var canvas = document.getElementById("canvas");
if (canvas.getContext) {
- var ctx = canvas.getContext('2d');
+ var ctx = canvas.getContext("2d");
var rectangle = new Path2D();
rectangle.rect(10, 10, 50, 50);
@@ -543,7 +543,7 @@ function draw() {
path는 (`M10 10`) 점으로 이동한 다음, 수평하게 오른쪽으로 으로 80 포인트 (`h 80`) 만큼 이동합니다. 이후 수직으로 80포인트 (v 80) 내려간 다음, 80 포인트 왼쪽으로 (`h -80`) 수평하게 이동하고 다시 시작점 (`z`)으로 돌아갑니다. 예시는 [이곳](/ko/docs/Web/API/Path2D.Path2D#Using_SVG_paths)( `Path2D` constructor )에서 확인하실 수 있습니다.
```js
-var p = new Path2D('M10 10 h 80 v 80 h -80 Z');
+var p = new Path2D("M10 10 h 80 v 80 h -80 Z");
```
{{PreviousNext("Web/API/Canvas_API/Tutorial/Basic_usage", "Web/API/Canvas_API/Tutorial/Applying_styles_and_colors")}}
diff --git a/files/ko/web/api/canvas_api/tutorial/drawing_text/index.md b/files/ko/web/api/canvas_api/tutorial/drawing_text/index.md
index e33a36b66fbdce..24af74d5f6fe97 100644
--- a/files/ko/web/api/canvas_api/tutorial/drawing_text/index.md
+++ b/files/ko/web/api/canvas_api/tutorial/drawing_text/index.md
@@ -23,9 +23,9 @@ original_slug: Drawing_text_using_a_canvas
```js
function draw() {
- var ctx = document.getElementById('canvas').getContext('2d');
- ctx.font = '48px serif';
- ctx.fillText('Hello world', 10, 50);
+ var ctx = document.getElementById("canvas").getContext("2d");
+ ctx.font = "48px serif";
+ ctx.fillText("Hello world", 10, 50);
}
```
@@ -45,9 +45,9 @@ draw();
```js
function draw() {
- var ctx = document.getElementById('canvas').getContext('2d');
- ctx.font = '48px serif';
- ctx.strokeText('Hello world', 10, 50);
+ var ctx = document.getElementById("canvas").getContext("2d");
+ ctx.font = "48px serif";
+ ctx.strokeText("Hello world", 10, 50);
}
```
@@ -92,9 +92,9 @@ baselines, due to glyphs extending far outside the em square.](http://www.whatwg
아래의 코드를 수정하여 캔버스에서 어떻게 바뀌는지 실시간으로 확인해 보세요.
```js
-ctx.font = '48px serif';
-ctx.textBaseline = 'hanging';
-ctx.strokeText('Hello world', 0, 100);
+ctx.font = "48px serif";
+ctx.textBaseline = "hanging";
+ctx.strokeText("Hello world", 0, 100);
```
```html hidden
@@ -106,15 +106,16 @@ ctx.strokeText('Hello world', 0, 100);
+ctx.strokeText("Hello world", 0, 100);
```
```js hidden
-var canvas = document.getElementById('canvas');
-var ctx = canvas.getContext('2d');
-var textarea = document.getElementById('code');
-var reset = document.getElementById('reset');
-var edit = document.getElementById('edit');
+var canvas = document.getElementById("canvas");
+var ctx = canvas.getContext("2d");
+var textarea = document.getElementById("code");
+var reset = document.getElementById("reset");
+var edit = document.getElementById("edit");
var code = textarea.value;
function drawCanvas() {
@@ -122,17 +123,17 @@ 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);
+textarea.addEventListener("input", drawCanvas);
+window.addEventListener("load", drawCanvas);
```
{{ EmbedLiveSample('Playable_code', 700, 360) }}
@@ -148,8 +149,8 @@ window.addEventListener('load', drawCanvas);
```js
function draw() {
- var ctx = document.getElementById('canvas').getContext('2d');
- var text = ctx.measureText('foo'); // TextMetrics object
+ var ctx = document.getElementById("canvas").getContext("2d");
+ var text = ctx.measureText("foo"); // TextMetrics object
text.width; // 16;
}
```
diff --git a/files/ko/web/api/canvas_api/tutorial/optimizing_canvas/index.md b/files/ko/web/api/canvas_api/tutorial/optimizing_canvas/index.md
index 0befb6d26d705f..28f547e6e32577 100644
--- a/files/ko/web/api/canvas_api/tutorial/optimizing_canvas/index.md
+++ b/files/ko/web/api/canvas_api/tutorial/optimizing_canvas/index.md
@@ -17,11 +17,11 @@ original_slug: Web/HTML/Canvas/Tutorial/Optimizing_canvas
만약 당신이 캔버스에 애니메이션 프레임을 그리면서 반복적인 작업이 발견된다면, 눈에 보이지 않는 숨겨진 캔버스 요소를 새로 만들고 그 캔버스에 미리 그려 넣는 방법을 고려하세요. 그렇게 하면 필요한 순간에 숨긴 캔버스에 그려진 이미지를 다시 주 캔버스 이미지에 그려넣어, 불필요한 렌더링 반복 작업을 줄여 성능 향상을 꾀할 수 있습니다.
```js
-myCanvas.offscreenCanvas = document.createElement('canvas');
+myCanvas.offscreenCanvas = document.createElement("canvas");
myCanvas.offscreenCanvas.width = myCanvas.width;
myCanvas.offscreenCanvas.height = myCanvas.height;
-myCanvas.getContext('2d').drawImage(myCanvas.offScreenCanvas, 0, 0);
+myCanvas.getContext("2d").drawImage(myCanvas.offScreenCanvas, 0, 0);
```
### 부동 소수점 좌표를 피하고 대신 정수를 사용하라.
@@ -59,10 +59,18 @@ ctx.drawImage(myImage, 0.3, 0.5);
border: 2px solid black;
}
- canvas { position: absolute; }
- #ui-layer { z-index: 3; }
- #game-layer { z-index: 2; }
- #background-layer { z-index: 1; }
+ canvas {
+ position: absolute;
+ }
+ #ui-layer {
+ z-index: 3;
+ }
+ #game-layer {
+ z-index: 2;
+ }
+ #background-layer {
+ z-index: 1;
+ }
```
@@ -81,8 +89,8 @@ var scaleY = window.innerHeight / canvas.height;
var scaleToFit = Math.min(scaleX, scaleY);
var scaleToCover = Math.max(scaleX, scaleY);
-stage.style.transformOrigin = '0 0'; //scale from top left
-stage.style.transform = 'scale(' + scaleToFit + ')';
+stage.style.transformOrigin = "0 0"; //scale from top left
+stage.style.transform = "scale(" + scaleToFit + ")";
```
### 투명도를 사용하지 마라.
@@ -90,7 +98,7 @@ stage.style.transform = 'scale(' + scaleToFit + ')';
응용 프로그램이 캔버스를 사용하고 투명 배경을 필요로하지 않는 경우 [`HTMLCanvasElement.getContext()`](/ko/docs/Web/API/HTMLCanvasElement/getContext)를 사용하여 드로잉 컨텍스트를 만들 때 alpha 옵션을 false로 설정합니다. 이 정보는 렌더링을 최적화하기 위해 브라우저에서 내부적으로 사용할 수 있습니다.
```js
-var ctx = canvas.getContext('2d', { alpha: false });
+var ctx = canvas.getContext("2d", { alpha: false });
```
### 추가 팁들
diff --git a/files/ko/web/api/canvas_api/tutorial/transformations/index.md b/files/ko/web/api/canvas_api/tutorial/transformations/index.md
index 30584779052534..9266d995f0dfcd 100644
--- a/files/ko/web/api/canvas_api/tutorial/transformations/index.md
+++ b/files/ko/web/api/canvas_api/tutorial/transformations/index.md
@@ -32,24 +32,24 @@ Canvas 상태는 스택(stack)에 쌓입니다. `save()` 메소드가 호출될
```js
function draw() {
- var ctx = document.getElementById('canvas').getContext('2d');
+ var ctx = document.getElementById("canvas").getContext("2d");
- ctx.fillRect(0, 0, 150, 150); // 기본 설정으로 사각형을 그리기
- ctx.save(); // 기본 상태를 저장하기
+ ctx.fillRect(0, 0, 150, 150); // 기본 설정으로 사각형을 그리기
+ ctx.save(); // 기본 상태를 저장하기
- ctx.fillStyle = '#09F'; // 설정 변경하기
+ ctx.fillStyle = "#09F"; // 설정 변경하기
ctx.fillRect(15, 15, 120, 120); // 새로운 설정으로 사각형 그리기
- ctx.save(); // 현재 상태 저장하기
- ctx.fillStyle = '#FFF'; // 설정 변경하기
+ ctx.save(); // 현재 상태 저장하기
+ ctx.fillStyle = "#FFF"; // 설정 변경하기
ctx.globalAlpha = 0.5;
- ctx.fillRect(30, 30, 90, 90); // 새로운 설정으로 사각형 그리기
+ ctx.fillRect(30, 30, 90, 90); // 새로운 설정으로 사각형 그리기
- ctx.restore(); // 이전 상태 복원하기
- ctx.fillRect(45, 45, 60, 60); // 복원된 설정으로 사각형 그리기
+ ctx.restore(); // 이전 상태 복원하기
+ ctx.fillRect(45, 45, 60, 60); // 복원된 설정으로 사각형 그리기
- ctx.restore(); // 초기 상태를 복원하기
- ctx.fillRect(60, 60, 30, 30); // 복원된 설정으로 사각형 그리기
+ ctx.restore(); // 초기 상태를 복원하기
+ ctx.fillRect(60, 60, 30, 30); // 복원된 설정으로 사각형 그리기
}
```
@@ -86,11 +86,11 @@ draw();
```js
function draw() {
- var ctx = document.getElementById('canvas').getContext('2d');
+ var ctx = document.getElementById("canvas").getContext("2d");
for (var i = 0; i < 3; i++) {
for (var j = 0; j < 3; j++) {
ctx.save();
- ctx.fillStyle = 'rgb(' + (51 * i) + ', ' + (255 - 51 * i) + ', 255)';
+ ctx.fillStyle = "rgb(" + 51 * i + ", " + (255 - 51 * i) + ", 255)";
ctx.translate(10 + j * 50, 10 + i * 50);
ctx.fillRect(0, 0, 25, 25);
ctx.restore();
@@ -126,32 +126,32 @@ draw();
```js
function draw() {
- var ctx = document.getElementById('canvas').getContext('2d');
+ var ctx = document.getElementById("canvas").getContext("2d");
// 좌측 사각형, canvas 원점에서 회전하기
ctx.save();
// 파란 사각형
- ctx.fillStyle = '#0095DD';
+ ctx.fillStyle = "#0095DD";
ctx.fillRect(30, 30, 100, 100);
ctx.rotate((Math.PI / 180) * 25);
// 회색 사각형
- ctx.fillStyle = '#4D4E53';
+ ctx.fillStyle = "#4D4E53";
ctx.fillRect(30, 30, 100, 100);
ctx.restore();
// 우측 사각형, 사각형 중심에서 회전하기
// 파란 사각형 그리기
- ctx.fillStyle = '#0095DD';
+ ctx.fillStyle = "#0095DD";
ctx.fillRect(150, 30, 100, 100);
ctx.translate(200, 80); // 사각형 중심으로 이동하기
- // x = x + 0.5 * width
- // y = y + 0.5 * height
+ // x = x + 0.5 * width
+ // y = y + 0.5 * height
ctx.rotate((Math.PI / 180) * 25); // 회전
ctx.translate(-200, -80); // 예전 위치로 이동하기
// 회색 사각형 그리기
- ctx.fillStyle = '#4D4E53';
+ ctx.fillStyle = "#4D4E53";
ctx.fillRect(150, 30, 100, 100);
}
```
@@ -185,7 +185,7 @@ draw();
```js
function draw() {
- var ctx = document.getElementById('canvas').getContext('2d');
+ var ctx = document.getElementById("canvas").getContext("2d");
// 간단하지만 확대·축소 비율을 적용한 사각형 그리기
ctx.save();
@@ -195,8 +195,8 @@ function draw() {
// 수평으로 대칭하기
ctx.scale(-1, 1);
- ctx.font = '48px serif';
- ctx.fillText('MDN', -135, 120);
+ ctx.font = "48px serif";
+ ctx.fillText("MDN", -135, 120);
}
```
@@ -242,21 +242,21 @@ draw();
```js
function draw() {
- var ctx = document.getElementById('canvas').getContext('2d');
+ var ctx = document.getElementById("canvas").getContext("2d");
var sin = Math.sin(Math.PI / 6);
var cos = Math.cos(Math.PI / 6);
ctx.translate(100, 100);
var c = 0;
for (var i = 0; i <= 12; i++) {
- c = Math.floor(255 / 12 * i);
- ctx.fillStyle = 'rgb(' + c + ', ' + c + ', ' + c + ')';
+ c = Math.floor((255 / 12) * i);
+ ctx.fillStyle = "rgb(" + c + ", " + c + ", " + c + ")";
ctx.fillRect(0, 0, 100, 10);
ctx.transform(cos, sin, -sin, cos, 0, 0);
}
ctx.setTransform(-1, 0, 0, 1, 100, 100);
- ctx.fillStyle = 'rgba(255, 128, 255, 0.5)';
+ ctx.fillStyle = "rgba(255, 128, 255, 0.5)";
ctx.fillRect(0, 50, 100, 100);
}
```
diff --git a/files/ko/web/api/canvas_api/tutorial/using_images/index.md b/files/ko/web/api/canvas_api/tutorial/using_images/index.md
index f2c6f81a89cac2..fea28b6ccbb655 100644
--- a/files/ko/web/api/canvas_api/tutorial/using_images/index.md
+++ b/files/ko/web/api/canvas_api/tutorial/using_images/index.md
@@ -55,8 +55,8 @@ One of the more practical uses of this would be to use a second canvas element a
Another option is to create new {{domxref("HTMLImageElement")}} objects in our script. To do this, you can use the convenient `Image()` constructor:
```js
-var img = new Image(); // Create new img element
-img.src = 'myImage.png'; // Set source path
+var img = new Image(); // Create new img element
+img.src = "myImage.png"; // Set source path
```
When this script gets executed, the image starts loading.
@@ -64,11 +64,15 @@ When this script gets executed, the image starts loading.
If you try to call `drawImage()` before the image has finished loading, it won't do anything (or, in older browsers, may even throw an exception). So you need to be sure to use the load event so you don't try this before the image has loaded:
```js
-var img = new Image(); // Create new img element
-img.addEventListener('load', function() {
- // execute drawImage statements here
-}, false);
-img.src = 'myImage.png'; // Set source path
+var img = new Image(); // Create new img element
+img.addEventListener(
+ "load",
+ function () {
+ // execute drawImage statements here
+ },
+ false,
+);
+img.src = "myImage.png"; // Set source path
```
If you're only using one external image this can be a good approach, but once you need to track more than one we need to resort to something more clever. It's beyond the scope of this tutorial to look at image pre-loading tactics, but you should keep that in mind.
@@ -78,8 +82,9 @@ If you're only using one external image this can be a good approach, but once yo
Another possible way to include images is via the [data: url](/ko/docs/Web/HTTP/data_URIs). Data URLs allow you to completely define an image as a Base64 encoded string of characters directly in your code.
```js
-var img = new Image(); // Create new img element
-img.src = 'data:image/gif;base64,R0lGODlhCwALAIAAAAAA3pn/ZiH5BAEAAAEALAAAAAALAAsAAAIUhA+hkcuO4lmNVindo7qyrIXiGBYAOw==';
+var img = new Image(); // Create new img element
+img.src =
+ "data:image/gif;base64,R0lGODlhCwALAIAAAAAA3pn/ZiH5BAEAAAEALAAAAAALAAsAAAIUhA+hkcuO4lmNVindo7qyrIXiGBYAOw==";
```
One advantage of data URLs is that the resulting image is available immediately without another round trip to the server. Another potential advantage is that it is also possible to encapsulate in one file all of your [CSS](/ko/docs/Web/CSS), [JavaScript](/ko/docs/Web/JavaScript), [HTML](/ko/docs/Web/HTML), and images, making it more portable to other locations.
@@ -92,11 +97,11 @@ You can also use frames from a video being presented by a {{HTMLElement("video")
```js
function getMyVideo() {
- var canvas = document.getElementById('canvas');
+ var canvas = document.getElementById("canvas");
if (canvas.getContext) {
- var ctx = canvas.getContext('2d');
+ var ctx = canvas.getContext("2d");
- return document.getElementById('myvideo');
+ return document.getElementById("myvideo");
}
}
```
@@ -118,17 +123,17 @@ In the following example, we will use an external image as the backdrop for a sm
```html hidden
-
-
-
+
+
+
```
```js
function draw() {
- var ctx = document.getElementById('canvas').getContext('2d');
+ var ctx = document.getElementById("canvas").getContext("2d");
var img = new Image();
- img.onload = function() {
+ img.onload = function () {
ctx.drawImage(img, 0, 0);
ctx.beginPath();
ctx.moveTo(30, 96);
@@ -137,7 +142,7 @@ function draw() {
ctx.lineTo(170, 15);
ctx.stroke();
};
- img.src = 'backdrop.png';
+ img.src = "backdrop.png";
}
```
@@ -160,24 +165,24 @@ In this example, we'll use an image as a wallpaper and repeat it several times o
```html hidden
-
-
-
+
+
+
```
```js
function draw() {
- var ctx = document.getElementById('canvas').getContext('2d');
+ var ctx = document.getElementById("canvas").getContext("2d");
var img = new Image();
- img.onload = function() {
+ img.onload = function () {
for (var i = 0; i < 4; i++) {
for (var j = 0; j < 3; j++) {
ctx.drawImage(img, j * 50, i * 38, 50, 38);
}
}
};
- img.src = 'rhino.jpg';
+ img.src = "rhino.jpg";
}
```
@@ -202,27 +207,36 @@ In this example, we'll use the same rhino as in the previous example, but we'll
```html
-
-
-
-
-
-
-
+
+
+
+
+
+
+
```
```js
function draw() {
- var canvas = document.getElementById('canvas');
- var ctx = canvas.getContext('2d');
+ var canvas = document.getElementById("canvas");
+ var ctx = canvas.getContext("2d");
// Draw slice
- ctx.drawImage(document.getElementById('source'),
- 33, 71, 104, 124, 21, 20, 87, 104);
+ ctx.drawImage(
+ document.getElementById("source"),
+ 33,
+ 71,
+ 104,
+ 124,
+ 21,
+ 20,
+ 87,
+ 104,
+ );
// Draw frame
- ctx.drawImage(document.getElementById('frame'), 0, 0);
+ ctx.drawImage(document.getElementById("frame"), 0, 0);
}
```
@@ -242,23 +256,23 @@ The code below should be self-explanatory. We loop through the {{domxref("docume
```html
-
-
+
+
- |
- |
- |
- |
+ |
+ |
+ |
+ |
- |
- |
- |
- |
+ |
+ |
+ |
+ |
-
-
-
+
+
+
```
@@ -266,7 +280,7 @@ And here's some CSS to make things look nice:
```css
body {
- background: 0 -100px repeat-x url(bg_gallery.png) #4F191A;
+ background: 0 -100px repeat-x url(bg_gallery.png) #4f191a;
margin: 10px;
}
@@ -287,28 +301,25 @@ Tying it all together is the JavaScript to draw our framed images:
```js
function draw() {
-
// Loop through all images
for (var i = 0; i < document.images.length; i++) {
-
// Don't add a canvas for the frame image
- if (document.images[i].getAttribute('id') != 'frame') {
-
+ if (document.images[i].getAttribute("id") != "frame") {
// Create canvas element
- canvas = document.createElement('canvas');
- canvas.setAttribute('width', 132);
- canvas.setAttribute('height', 150);
+ canvas = document.createElement("canvas");
+ canvas.setAttribute("width", 132);
+ canvas.setAttribute("height", 150);
// Insert before the image
- document.images[i].parentNode.insertBefore(canvas,document.images[i]);
+ document.images[i].parentNode.insertBefore(canvas, document.images[i]);
- ctx = canvas.getContext('2d');
+ ctx = canvas.getContext("2d");
// Draw image to canvas
ctx.drawImage(document.images[i], 15, 20);
// Add frame
- ctx.drawImage(document.getElementById('frame'), 0, 0);
+ ctx.drawImage(document.getElementById("frame"), 0, 0);
}
}
}
diff --git a/files/ko/web/api/channel_messaging_api/using_channel_messaging/index.md b/files/ko/web/api/channel_messaging_api/using_channel_messaging/index.md
index dbe6efbfbc01ac..faf96a01ecdb3a 100644
--- a/files/ko/web/api/channel_messaging_api/using_channel_messaging/index.md
+++ b/files/ko/web/api/channel_messaging_api/using_channel_messaging/index.md
@@ -2,6 +2,7 @@
title: Using channel messaging
slug: Web/API/Channel_Messaging_API/Using_channel_messaging
---
+
{{DefaultAPISidebar("Channel Messaging API")}}
[Channel Messaging API](/ko/docs/Web/API/Channel_Messaging_API) 는 두 개의 독립적인 스크립트(예를 들면, 두 개의 IFrame, 또는 메인 다큐먼트와 IFrame, 또는 {{domxref("SharedWorker")}}에 의한 두 개의 다큐먼트)를 각 포트를 가진 양방향 채널(또는 파이프)을 통해 서로 직접 통신할 수 있도록 해줍니다. 이 문서에서 이 기술을 사용하는 기본내용에 대해 살펴봅시다.
@@ -29,28 +30,28 @@ We'll be focusing on the latter example in this article. It looks like so:
In the main page of the demo, we have a paragraph and a simple form with a text input for entering messages to be sent to an {{htmlelement("iframe")}}.
```js
-var para = document.querySelector('p');
-var textInput = document.querySelector('.message-box');
-var button = document.querySelector('button');
+var para = document.querySelector("p");
+var textInput = document.querySelector(".message-box");
+var button = document.querySelector("button");
-var ifr = document.querySelector('iframe');
+var ifr = document.querySelector("iframe");
var otherWindow = ifr.contentWindow;
ifr.addEventListener("load", iframeLoaded, false);
function iframeLoaded() {
- button.onclick = function(e) {
+ button.onclick = function (e) {
e.preventDefault();
var channel = new MessageChannel();
- otherWindow.postMessage(textInput.value, '*', [channel.port2]);
+ otherWindow.postMessage(textInput.value, "*", [channel.port2]);
channel.port1.onmessage = handleMessage;
function handleMessage(e) {
para.innerHTML = e.data;
- textInput.value = '';
+ textInput.value = "";
}
- }
+ };
}
```
@@ -69,14 +70,14 @@ At the bottom of the `iframeLoaded()` function there is a {{domxref("MessagePort
Over in the IFrame, we have the following JavaScript:
```js
-var list = document.querySelector('ul');
+var list = document.querySelector("ul");
-onmessage = function(e) {
- var listItem = document.createElement('li');
+onmessage = function (e) {
+ var listItem = document.createElement("li");
listItem.textContent = e.data;
list.appendChild(listItem);
e.ports[0].postMessage('Message received by IFrame: "' + e.data + '"');
-}
+};
```
The entirety of the code is wrapped in a {{domxref("window.onmessage")}} handler, which runs when the message is received from the main page (via its `postMessage()`.) First we create a list item and insert it in the unordered list, setting the {{domxref("textContent","Node.textContent")}} of the list item equal to the event's `data` attribute (this contains the actual message).
@@ -91,7 +92,7 @@ Returning to the main page, let's now look at the onmessage handler at the botto
channel.port1.onmessage = handleMessage;
function handleMessage(e) {
para.innerHTML = e.data;
- textInput.value = '';
+ textInput.value = "";
}
```
diff --git a/files/ko/web/api/characterdata/index.md b/files/ko/web/api/characterdata/index.md
index 31683efb7de2f3..ab26b7d7891c41 100644
--- a/files/ko/web/api/characterdata/index.md
+++ b/files/ko/web/api/characterdata/index.md
@@ -2,6 +2,7 @@
title: CharacterData
slug: Web/API/CharacterData
---
+
{{APIRef("DOM")}}
**`CharacterData`** 추상 인터페이스는 문자를 포함하는 {{domxref("Node")}} 객체를 나타냅니다. 이는 추상 인터페이스로 `CharacterData` 타입의 객체로는 존재하지 않음을 의미합니다. {{domxref("Text")}}, {{domxref("Comment")}}, {{domxref("ProcessingInstruction")}} 와 같은 추상 인터페이스가 아닌 다른 인터페이스에의해 구현되었습니다.
diff --git a/files/ko/web/api/cleartimeout/index.md b/files/ko/web/api/cleartimeout/index.md
index d145a18601bdb6..a1d17598967646 100644
--- a/files/ko/web/api/cleartimeout/index.md
+++ b/files/ko/web/api/cleartimeout/index.md
@@ -50,7 +50,7 @@ const alarm = {
this.remind(msg);
},
1000,
- "일어나세요!"
+ "일어나세요!",
);
},
diff --git a/files/ko/web/api/clients/claim/index.md b/files/ko/web/api/clients/claim/index.md
index 512cc61995d4ee..559d940331d139 100644
--- a/files/ko/web/api/clients/claim/index.md
+++ b/files/ko/web/api/clients/claim/index.md
@@ -2,6 +2,7 @@
title: Clients.claim()
slug: Web/API/Clients/claim
---
+
{{SeeCompatTable}}{{APIRef("Service Worker Clients")}}
{{domxref("Clients")}} 의 **`claim()`** 메소드는 active 서비스워커가 그것의 {{domxref("ServiceWorkerRegistration.scope", "scope")}} 를 가지는 모든 클라이언트들의 {{domxref("ServiceWorkerContainer.controller", "controller")}} 로서 자신을 등록하는 것을 허용한다. 이것은 이 서비스워커가 제어하게 될 클라이언트들에 "`controllerchange`" 이벤트를 발생시킨다.
@@ -27,7 +28,7 @@ A {{jsxref("Promise")}} for `void`.
다음 예시는 서비스워커의 "`activate`" 이벤트 리스너에서 `claim()` 를 사용하므로, fetch 들이 이 서비스워커를 통과하기 전에 동일한 스코프에서 로드된 클라이언트들은 다시 로드될 필요가 없다. .
```js
-self.addEventListener('activate', event => {
+self.addEventListener("activate", (event) => {
event.waitUntil(clients.claim());
});
```
diff --git a/files/ko/web/api/clients/index.md b/files/ko/web/api/clients/index.md
index 18b2cd347554e9..e067eadd41dfe4 100644
--- a/files/ko/web/api/clients/index.md
+++ b/files/ko/web/api/clients/index.md
@@ -23,35 +23,37 @@ The `Clients` interface provides access to {{domxref("Client")}} objects. Access
The following example shows an existing chat window or creates a new one when the user clicks a notification.
```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/ko/web/api/clipboard_api/index.md b/files/ko/web/api/clipboard_api/index.md
index c200c7372e007e..a2e54fca39e6b2 100644
--- a/files/ko/web/api/clipboard_api/index.md
+++ b/files/ko/web/api/clipboard_api/index.md
@@ -2,6 +2,7 @@
title: Clipboard API
slug: Web/API/Clipboard_API
---
+
{{DefaultAPISidebar("Clipboard API")}}
**Clipboard API**는 클립보드 명령(잘라내기, 복사, 붙여넣기)에 응답하거나 시스템 클립보드에 비동기적으로 접근하고 쓸 수 있는 기능을 제공합니다.
@@ -15,8 +16,11 @@ Clipboard API는 {{domxref("document.execCommand()")}}를 사용한 클립보드
시스템 클립보드에 접근할 땐 `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),
+ );
```
위의 코드 조각은 클립보드에서 텍스트를 가져와서, `editor` 클래스를 가진 첫 번째 요소의 콘텐츠 뒤에 추가합니다. {{domxref("Clipboard.readText", "readText()")}}는 ({{domxref("Clipboard.read", "read()")}}도 마찬가지로) 클립보드의 내용이 텍스트가 아니면 빈 문자열을 반환하므로, 이 코드는 안전합니다.
diff --git a/files/ko/web/api/clipboardevent/clipboarddata/index.md b/files/ko/web/api/clipboardevent/clipboarddata/index.md
index 24d50390dad00d..6744be361fba14 100644
--- a/files/ko/web/api/clipboardevent/clipboarddata/index.md
+++ b/files/ko/web/api/clipboardevent/clipboarddata/index.md
@@ -2,6 +2,7 @@
title: ClipboardEvent.clipboardData
slug: Web/API/ClipboardEvent/clipboardData
---
+
{{APIRef("Clipboard API")}} {{SeeCompatTable}}
**`ClipboardEvent.clipboardData`** 속성은 다음과 같은 용도로 사용할 수 있는 {{domxref("DataTransfer")}} 객체입니다.
@@ -14,7 +15,7 @@ slug: Web/API/ClipboardEvent/clipboardData
## 구문
```js
-data = ClipboardEvent.clipboardData
+data = ClipboardEvent.clipboardData;
```
## 명세
diff --git a/files/ko/web/api/console/assert/index.md b/files/ko/web/api/console/assert/index.md
index bb9177f2a15113..59880aba92321d 100644
--- a/files/ko/web/api/console/assert/index.md
+++ b/files/ko/web/api/console/assert/index.md
@@ -2,6 +2,7 @@
title: console.assert()
slug: Web/API/console/assert
---
+
{{APIRef("Console API")}}
**`console.assert()`** 메서드는 주어진 가정이 거짓인 경우 콘솔에 오류 메시지를 출력합니다. 참인 경우, 아무것도 하지 않습니다.
@@ -31,12 +32,12 @@ console.assert(assertion, msg [, subst1, ..., substN]); // C-like message format
다음 예제는 객체와 가정을 함께 사용하는 법을 보입니다.
```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});
- // or, using ES2015 object property shorthand:
- // console.assert(number % 2 === 0, {number, errorMsg});
+ console.log("the # is " + number);
+ console.assert(number % 2 === 0, { number: number, errorMsg: errorMsg });
+ // or, using ES2015 object property shorthand:
+ // console.assert(number % 2 === 0, {number, errorMsg});
}
// output:
// the # is 2
diff --git a/files/ko/web/api/console/clear/index.md b/files/ko/web/api/console/clear/index.md
index 5d1740b35f63c9..f4bae25560c4ef 100644
--- a/files/ko/web/api/console/clear/index.md
+++ b/files/ko/web/api/console/clear/index.md
@@ -2,6 +2,7 @@
title: console.clear()
slug: Web/API/console/clear
---
+
{{APIRef("Console API")}}
**`console.clear()`** 메서드는 현재 환경에서 가능한 경우, 콘솔에 기록된 메시지를 모두 지웁니다.
diff --git a/files/ko/web/api/console/countreset/index.md b/files/ko/web/api/console/countreset/index.md
index be192b6d5700f4..aad1849a6ea8a0 100644
--- a/files/ko/web/api/console/countreset/index.md
+++ b/files/ko/web/api/console/countreset/index.md
@@ -2,6 +2,7 @@
title: console.countReset()
slug: Web/API/console/countReset
---
+
{{APIRef("Console API")}}
**`console.countReset()`** 메서드는 {{domxref("console.count()")}}의 카운터를 초기화합니다.
diff --git a/files/ko/web/api/console/debug/index.md b/files/ko/web/api/console/debug/index.md
index 99c1240e93f2b0..5c3bbbe75d3add 100644
--- a/files/ko/web/api/console/debug/index.md
+++ b/files/ko/web/api/console/debug/index.md
@@ -2,6 +2,7 @@
title: console.debug()
slug: Web/API/console/debug
---
+
{{APIRef("Console API")}}
**`console.debug()`** 메서드는 메시지를 "디버그" 중요도로 콘솔에 출력합니다. 디버그 중요도 메시지는 별도 설정 없이는 보이지 않습니다. 대부분의 경우 로그 수준은 콘솔 UI 내에서 구성됩니다. 이 로그 수준은 \`Debug\` 또는 \`Verbose\` 로그 수준에 해당할 수 있습니다.
diff --git a/files/ko/web/api/console/groupcollapsed/index.md b/files/ko/web/api/console/groupcollapsed/index.md
index 41a2ba39e07f59..1c569622f4a728 100644
--- a/files/ko/web/api/console/groupcollapsed/index.md
+++ b/files/ko/web/api/console/groupcollapsed/index.md
@@ -16,8 +16,8 @@ slug: Web/API/console/groupCollapsed
## 구문
```js
-groupCollapsed()
-groupCollapsed(label)
+groupCollapsed();
+groupCollapsed(label);
```
### 매개변수
diff --git a/files/ko/web/api/console/groupend/index.md b/files/ko/web/api/console/groupend/index.md
index 5759189963fb44..cba2c417e6521c 100644
--- a/files/ko/web/api/console/groupend/index.md
+++ b/files/ko/web/api/console/groupend/index.md
@@ -12,7 +12,7 @@ slug: Web/API/console/groupEnd
## 구문
```js
-groupEnd()
+groupEnd();
```
### 매개변수
diff --git a/files/ko/web/api/console/index.md b/files/ko/web/api/console/index.md
index a5fa9fd00b9633..cb1ce6d715ddb2 100644
--- a/files/ko/web/api/console/index.md
+++ b/files/ko/web/api/console/index.md
@@ -10,7 +10,7 @@ slug: Web/API/console
`console` 객체는 아무 전역 객체에서나 접근할 수 있습니다. 브라우징 문맥에선 {{domxref("Window")}}, 워커에서는 {{domxref("WorkerGlobalScope")}}이 속성으로 포함하고 있습니다. {{domxref("Window.console")}}의 형태로 노출되어 있으므로 간단하게 `console`로 참조할 수 있습니다.
```js
-console.log("링크를 열 수 없습니다")
+console.log("링크를 열 수 없습니다");
```
이 문서는 콘솔 객체에서 사용할 수 있는 [메서드](#메서드)와 몇 가지 [예제](#예제)를 다룹니다.
@@ -93,7 +93,7 @@ console.log(someObject);
```js
var car = "Dodge Charger";
-var someObject = {str:"Some text", id:5};
+var someObject = { str: "Some text", id: 5 };
console.info("My first car was a", car, ". The object is: ", someObject);
```
@@ -121,8 +121,8 @@ console.info("My first car was a", car, ". The object is: ", someObject);
각각의 치환 문자열은 이후 매개변수에서 값을 가져옵니다. 예를 들어...
```js
-for (var i=0; i<5; i++) {
- console.log("Hello, %s. You've called me %d times.", "Bob", i+1);
+for (var i = 0; i < 5; i++) {
+ console.log("Hello, %s. You've called me %d times.", "Bob", i + 1);
}
```
@@ -141,7 +141,10 @@ for (var i=0; i<5; i++) {
`"%c"` 명령을 사용해 콘솔 출력에 CSS 스타일을 적용할 수 있습니다.
```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 선언을 적용합니다.
@@ -151,7 +154,12 @@ console.log("This is %cMy stylish message", "color: yellow; font-style: italic;
`"%c"` 명령을 여러 번 사용할 수도 있습니다.
```js
-console.log("Multiple styles: %cred %corange", "color: red", "color: orange", "Additional unformatted message");
+console.log(
+ "Multiple styles: %cred %corange",
+ "color: red",
+ "color: orange",
+ "Additional unformatted message",
+);
```
`%c` 구문과 함께 사용할 수 있는 CSS 속성은 다음과 같습니다. (Firefox 기준, 브라우저마다 다를 수 있음)
diff --git a/files/ko/web/api/console/table/index.md b/files/ko/web/api/console/table/index.md
index b8d0b4056fdb16..82a8fa5d115b9c 100644
--- a/files/ko/web/api/console/table/index.md
+++ b/files/ko/web/api/console/table/index.md
@@ -15,8 +15,8 @@ slug: Web/API/console/table
테이블의 첫 번째 칼럼은 `(index)`를 레이블로 사용합니다. `data`가 배열인 경우에는 배열의 인덱스가
이 칼럼의 값으로 사용됩니다. `data`가 객체인 경우에는 속성 이름이 값으로 사용됩니다. (파이어폭스에서는)
- `console.table`이 1000줄 까지만 표현할 수 있는 제약이 있다는 점에 주의하세요
- (첫 번째 줄은 레이블 인덱스입니다).
+`console.table`이 1000줄 까지만 표현할 수 있는 제약이 있다는 점에 주의하세요
+(첫 번째 줄은 레이블 인덱스입니다).
{{AvailableInWorkers}}
@@ -31,7 +31,7 @@ console.table(["apples", "oranges", "bananas"]);
```
| (index) | Values |
-|---------|-----------|
+| ------- | --------- |
| 0 | 'apples' |
| 1 | 'oranges' |
| 2 | 'bananas' |
@@ -50,7 +50,7 @@ console.table(me);
```
| (index) | Values |
-|-----------|----------|
+| --------- | -------- |
| firstName | 'Tyrone' |
| lastName | 'Jones' |
@@ -70,7 +70,7 @@ console.table(people);
```
| (index) | 0 | 1 |
-|---------|----------|---------|
+| ------- | -------- | ------- |
| 0 | 'Tyrone' | 'Jones' |
| 1 | 'Janet' | 'Smith' |
| 2 | 'Maria' | 'Cruz' |
@@ -93,7 +93,7 @@ console.table([tyrone, janet, maria]);
배열이 객체를 포함하고 있다면 칼럼은 속성의 이름을 레이블로 사용한다는 점에 주의하세요.
| (index) | firstName | lastName |
-|---------|-----------|----------|
+| ------- | --------- | -------- |
| 0 | 'Tyrone' | 'Jones' |
| 1 | 'Janet' | 'Smith' |
| 2 | 'Maria' | 'Cruz' |
@@ -111,7 +111,7 @@ console.table(family);
```
| (index) | firstName | lastName |
-|----------|-----------|----------|
+| -------- | --------- | -------- |
| daughter | 'Maria' | 'Jones' |
| father | 'Tyrone' | 'Jones' |
| mother | 'Janet' | 'Jones' |
@@ -137,7 +137,7 @@ console.table([tyrone, janet, maria], ["firstName"]);
```
| (index) | firstName |
-|---------|-----------|
+| ------- | --------- |
| 0 | 'Tyrone' |
| 1 | 'Janet' |
| 2 | 'Maria' |
diff --git a/files/ko/web/api/console/time/index.md b/files/ko/web/api/console/time/index.md
index dd44151753f5a8..44aab683ce2eb2 100644
--- a/files/ko/web/api/console/time/index.md
+++ b/files/ko/web/api/console/time/index.md
@@ -2,6 +2,7 @@
title: console.time()
slug: Web/API/console/time
---
+
{{APIRef("Console API")}}
**`console.time()`** 메서드는 타이머를 시작해 작업이 얼마나 걸리는지 추적할 수 있습니다. 각 타이머에게 고유한 이름을 줄 수 있고, 한 페이지에 최대 10,000개의 타이머를 설정할 수 있습니다. 같은 이름으로 {{domxref("console.timeEnd()")}}를 호출할 때, 브라우저가 밀리초 단위로 경과한 시간을 출력합니다.
diff --git a/files/ko/web/api/console/timeend/index.md b/files/ko/web/api/console/timeend/index.md
index 61f94866fb26ba..4d4068a4f0512a 100644
--- a/files/ko/web/api/console/timeend/index.md
+++ b/files/ko/web/api/console/timeend/index.md
@@ -2,6 +2,7 @@
title: console.timeEnd()
slug: Web/API/console/timeEnd
---
+
{{APIRef("Console API")}}
**`console.timeEnd()`** 는 이전에 {{domxref("console.time()")}}를 호출하여 시작된 타이머를 중지합니다.
diff --git a/files/ko/web/api/console/trace/index.md b/files/ko/web/api/console/trace/index.md
index c19b3f44437474..7c756d1215d508 100644
--- a/files/ko/web/api/console/trace/index.md
+++ b/files/ko/web/api/console/trace/index.md
@@ -2,6 +2,7 @@
title: console.trace()
slug: Web/API/console/trace
---
+
{{APIRef("Console API")}}
**`console.trace()`** 메서드는 [웹 콘솔](/ko/docs/Tools/Web_Console)에 스택 추적을 출력합니다.
@@ -13,7 +14,7 @@ slug: Web/API/console/trace
## 구문
```js
-console.trace( [...any, ...data ]);
+console.trace([...any, ...data]);
```
### 매개변수
diff --git a/files/ko/web/api/console_api/index.md b/files/ko/web/api/console_api/index.md
index d73c10254601aa..219e1394ed212b 100644
--- a/files/ko/web/api/console_api/index.md
+++ b/files/ko/web/api/console_api/index.md
@@ -2,6 +2,7 @@
title: Console API
slug: Web/API/Console_API
---
+
{{DefaultAPISidebar("Console API")}}
**Console API**는 코드의 특정 지점에서 값이나 변수를 기록하고, 작업의 소요 시간을 알아내는 등 개발자가 사용할 수 있는 디버깅 기능을 제공합니다.
@@ -25,7 +26,7 @@ Console API는 사유 API로 시작하였으며, 브라우저가 각자 다른
## 예제
```js
-let myString = 'Hello world';
+let myString = "Hello world";
// Output "Hello world" to the console
console.log(myString);
diff --git a/files/ko/web/api/crypto/getrandomvalues/index.md b/files/ko/web/api/crypto/getrandomvalues/index.md
index 4fd829c6f8ecf9..6e7d619d5739ab 100644
--- a/files/ko/web/api/crypto/getrandomvalues/index.md
+++ b/files/ko/web/api/crypto/getrandomvalues/index.md
@@ -2,6 +2,7 @@
title: Crypto.getRandomValues()
slug: Web/API/Crypto/getRandomValues
---
+
{{APIRef("Web Crypto API")}}
**`Crypto.getRandomValues()`** 메서드는 암호학적으로 강력한 난수를 생성할 수 있습니다. 매개변수로 제공한 배열을 무작위 (암호학에서의 '무작위') 숫자로 채웁니다.
@@ -13,7 +14,7 @@ slug: Web/API/Crypto/getRandomValues
## 구문
```js
-getRandomValues(typedArray)
+getRandomValues(typedArray);
```
### 매개변수
diff --git a/files/ko/web/api/crypto_property/index.md b/files/ko/web/api/crypto_property/index.md
index 793283f56ac400..0f76efb12cbd47 100644
--- a/files/ko/web/api/crypto_property/index.md
+++ b/files/ko/web/api/crypto_property/index.md
@@ -3,6 +3,7 @@ title: Window.crypto
slug: Web/API/crypto_property
original_slug: Web/API/Window/crypto
---
+
{{APIRef}}
**`Window.crypto`**속성은 전역 객체인 {{domxref("Crypto")}} 객체를 반환합니다. `Crypto` 객체는 웹 페이지가 특정 암호학적 서비스에 접근할 수 있는 경로입니다. `crypto` 속성 자체는 읽기 전용이지만, 모든 메서드(와 자식 객체 {{domxref("SubtleCrypto")}})의 메서드)는 읽기 전용이 아니므로 {{glossary("polyfill", "폴리필")}}을 통한 공격에 취약합니다.
@@ -25,18 +26,20 @@ genRandomNumbers = function getRandomNumbers() {
window.crypto.getRandomValues(array);
var randText = document.getElementById("myRandText");
- randText.innerHTML = "The random numbers are: "
+ randText.innerHTML = "The random numbers are: ";
for (var i = 0; i < array.length; i++) {
randText.innerHTML += array[i] + " ";
}
-}
+};
```
### HTML
```html
-The random numbers are:
-
+The random numbers are:
+
```
### 결과
diff --git a/files/ko/web/api/css/index.md b/files/ko/web/api/css/index.md
index 890534eb3b3dbf..9e6d8a951db5f0 100644
--- a/files/ko/web/api/css/index.md
+++ b/files/ko/web/api/css/index.md
@@ -2,6 +2,7 @@
title: CSS
slug: Web/API/CSS
---
+
{{APIRef("CSSOM")}}
**`CSS`** 인터페이스는 유용한 CSS 관련 메서드를 가집니다. `CSS` 인터페이스는 정적 속성과 메서드만 가지고 있으며 아무런 객체도 `CSS` 인터페이스를 구현하지 않습니다.
@@ -22,6 +23,7 @@ _CSS 인터페이스는 유틸리티 인터페이스이며, 이러한 형식의
- {{domxref("CSS.registerProperty()")}}
- : [사용자 지정 CSS 속성](/ko/docs/Web/CSS/--*)을 등록하고 속성 자료형 검사, 기본값, 상속 여부 등을 설정할 수 있습니다.
- {{domxref("CSS.supports()")}}
+
- : 매개변수로 주어진 속성-값 쌍 또는 조건의 지원 여부를 나타내는 {{jsxref("Boolean")}}을 반환합니다.
- {{domxref("CSS.escape()")}} {{experimental_inline}}
diff --git a/files/ko/web/api/css_object_model/index.md b/files/ko/web/api/css_object_model/index.md
index 270a1fdbb35e32..364a9bc0cce0c1 100644
--- a/files/ko/web/api/css_object_model/index.md
+++ b/files/ko/web/api/css_object_model/index.md
@@ -2,6 +2,7 @@
title: CSS 객체 모델 (CSSOM)
slug: Web/API/CSS_Object_Model
---
+
{{DefaultAPISidebar('CSSOM')}}
**CSS Object Model**은 JavaScript에서 CSS를 조작할 수 있는 API 집합입니다. HTML 대신 CSS가 대상인 DOM이라고 생각할 수 있으며, 사용자가 CSS 스타일을 동적으로 읽고 수정할 수 있는 방법입니다.
diff --git a/files/ko/web/api/css_object_model/managing_screen_orientation/index.md b/files/ko/web/api/css_object_model/managing_screen_orientation/index.md
index 6e411e21ab2586..697de25f6d7f50 100644
--- a/files/ko/web/api/css_object_model/managing_screen_orientation/index.md
+++ b/files/ko/web/api/css_object_model/managing_screen_orientation/index.md
@@ -27,7 +27,12 @@ Screen orientation 은 [device orientation](/ko/docs/WebAPI/Detecting_device_ori
C
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis lacinia nisi nec sem viverra vitae fringilla nulla ultricies. In ac est dolor, quis tincidunt leo. Cras commodo quam non tortor consectetur eget rutrum dolor ultricies. Ut interdum tristique dapibus. Nullam quis malesuada est.
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis lacinia nisi nec
+ sem viverra vitae fringilla nulla ultricies. In ac est dolor, quis tincidunt
+ leo. Cras commodo quam non tortor consectetur eget rutrum dolor ultricies. Ut
+ interdum tristique dapibus. Nullam quis malesuada est.
+
```
CSS 는 화면 방향에 따라 특정 스타일을 을 다루기 위해 orientation media query 에 의존한다
@@ -35,8 +40,9 @@ CSS 는 화면 방향에 따라 특정 스타일을 을 다루기 위해 orienta
```css
/* First let's define some common styles */
-html, body {
- width : 100%;
+html,
+body {
+ width: 100%;
height: 100%;
}
@@ -48,17 +54,17 @@ body {
}
p {
- font : 1em sans-serif;
- margin : 0;
- padding: .5em;
+ font: 1em sans-serif;
+ margin: 0;
+ padding: 0.5em;
}
ul {
list-style: none;
- font : 1em monospace;
- margin : 0;
- padding: .5em;
+ font: 1em monospace;
+ margin: 0;
+ padding: 0.5em;
-moz-box-sizing: border-box;
box-sizing: border-box;
@@ -68,7 +74,7 @@ ul {
li {
display: inline-block;
- margin : 0;
+ margin: 0;
padding: 0.5em;
background: white;
}
@@ -99,15 +105,15 @@ Once we have some common styles we can start defining a special case for the ori
}
li + li {
- margin-top: .5em;
+ margin-top: 0.5em;
}
}
```
실행 결과를 보자
-| Portrait | Landscape |
-| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
+| Portrait | Landscape |
+| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| {{ EmbedLiveSample('Adjusting_layout_based_on_the_orientation', 180, 350) }} | {{ EmbedLiveSample('Adjusting_layout_based_on_the_orientation', 350, 180) }} |
> **참고:** orientation media query 는 실제로 브라우저 창 (또는 iframe) 의 방향에 따라 적용한다. 장치의 방향이 아니다.
@@ -137,7 +143,7 @@ screen.addEventListener("orientationchange", function () {
{{domxref("window.screen.lockOrientation","screen.lockOrientation()")}} 는 적용 할 잠금의 종류를 정의하는 문자열 (또는 일련의 문자열) 을 수용한다. 수용하는 값들: `portrait-primary`, `portrait-secondary`, `landscape-primary`, `landscape-secondary`, `portrait`, `landscape` (각각의 값들에 대해 좀 더 알려면 {{domxref("window.screen.lockOrientation","lockOrientation")}} 를 보라).
```js
-screen.lockOrientation('landscape');
+screen.lockOrientation("landscape");
```
> **참고:** **Note:** 화면 잠금은 웹 어플리케이션에 따라 다르다. 어플레케이션 A이 가로모드로 잠겨 있고 어플레케이션 B가 세로모드로 잠겨 있을 때, 어플리케이션을 A 에서 B 로 또는 B 에서 A 로 전환하면 {{domxref("Window.orientationchange_event", "orientationchange")}} 를 호출하지 않는다. 왜냐하면 각 어플리케이션은 각자의 방향을 유지 하기 때문이다.그러나, 만약 잠금요구를 만족하기 위해 방향이 바뀌어야한다면 화면잠금은 {{domxref("Window.orientationchange_event", "orientationchange")}} 이벤트를 호출 할 수 있다.
diff --git a/files/ko/web/api/cssstylesheet/index.md b/files/ko/web/api/cssstylesheet/index.md
index 71d5e9a334da8b..28aacce869c4df 100644
--- a/files/ko/web/api/cssstylesheet/index.md
+++ b/files/ko/web/api/cssstylesheet/index.md
@@ -40,13 +40,13 @@ A `CSSStyleSheet` object is created and inserted into the document's `styleSheet
A (possibly incomplete) list of ways a style sheet can be associated with a document follows:
-| Reason for the style sheet to be associated with the document | Appears in `document. styleSheets` list | Getting the owner element/rule given the style sheet object | The interface for the owner object | Getting the CSSStyleSheet object from the owner |
-| ---------------------------------------------------------------------------------------------- | --------------------------------------- | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
-| {{HTMLElement("style")}} and {{HTMLElement("link")}} elements in the document | Yes | {{domxref("StyleSheet.ownerNode", ".ownerNode")}} | {{domxref("HTMLLinkElement")}}, {{domxref("HTMLStyleElement")}}, or {{domxref("SVGStyleElement")}} | {{domxref("LinkStyle.sheet", ".sheet")}} |
-| CSS {{cssxref("@import")}} rule in other style sheets applied to the document | Yes | {{domxref("CSSStyleSheet.ownerRule", ".ownerRule")}} | {{domxref("CSSImportRule")}} | {{domxref("CSSImportRule.styleSheet", ".styleSheet")}} |
-| `` processing instruction in the (non-HTML) document | Yes | {{domxref("StyleSheet.ownerNode", ".ownerNode")}} | {{domxref("ProcessingInstruction")}} | {{domxref("LinkStyle.sheet", ".sheet")}} |
-| HTTP Link Header | Yes | _N/A_ | N/A | N/A |
-| User agent (default) style sheets | No | N/A | N/A | N/A |
+| Reason for the style sheet to be associated with the document | Appears in `document. styleSheets` list | Getting the owner element/rule given the style sheet object | The interface for the owner object | Getting the CSSStyleSheet object from the owner |
+| ----------------------------------------------------------------------------- | --------------------------------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
+| {{HTMLElement("style")}} and {{HTMLElement("link")}} elements in the document | Yes | {{domxref("StyleSheet.ownerNode", ".ownerNode")}} | {{domxref("HTMLLinkElement")}}, {{domxref("HTMLStyleElement")}}, or {{domxref("SVGStyleElement")}} | {{domxref("LinkStyle.sheet", ".sheet")}} |
+| CSS {{cssxref("@import")}} rule in other style sheets applied to the document | Yes | {{domxref("CSSStyleSheet.ownerRule", ".ownerRule")}} | {{domxref("CSSImportRule")}} | {{domxref("CSSImportRule.styleSheet", ".styleSheet")}} |
+| `` processing instruction in the (non-HTML) document | Yes | {{domxref("StyleSheet.ownerNode", ".ownerNode")}} | {{domxref("ProcessingInstruction")}} | {{domxref("LinkStyle.sheet", ".sheet")}} |
+| HTTP Link Header | Yes | _N/A_ | N/A | N/A |
+| User agent (default) style sheets | No | N/A | N/A | N/A |
## 명세서
diff --git a/files/ko/web/api/customelementregistry/index.md b/files/ko/web/api/customelementregistry/index.md
index 7892af25c95eb2..b90a0ff0b31deb 100644
--- a/files/ko/web/api/customelementregistry/index.md
+++ b/files/ko/web/api/customelementregistry/index.md
@@ -32,25 +32,28 @@ class WordCount extends HTMLParagraphElement {
// 요소 부모의 단어 수 세기
const wcParent = this.parentNode;
- function countWords(node){
+ function countWords(node) {
const text = node.innerText || node.textContent;
- return text.trim().split(/\s+/g).filter(a => a.trim().length > 0).length;
+ return text
+ .trim()
+ .split(/\s+/g)
+ .filter((a) => a.trim().length > 0).length;
}
const count = `Words: ${countWords(wcParent)}`;
// 섀도 루트 생성
- const shadow = this.attachShadow({mode: 'open'});
+ const shadow = this.attachShadow({ mode: "open" });
// 텍스트 노드 생성 후 단어 수로 채우기
- const text = document.createElement('span');
+ const text = document.createElement("span");
text.textContent = count;
// 텍스트 노드를 섀도 루트에 추가
shadow.appendChild(text);
// 요소 콘텐츠가 바뀌면 단어 수 업데이트
- setInterval(function() {
+ setInterval(function () {
const count = `Words: ${countWords(wcParent)}`;
text.textContent = count;
}, 200);
@@ -58,7 +61,7 @@ class WordCount extends HTMLParagraphElement {
}
// 새로운 요소 정의
-customElements.define('word-count', WordCount, { extends: 'p' });
+customElements.define("word-count", WordCount, { extends: "p" });
```
> **참고:** `CustomElementRegistry`는 {{domxref("Window.customElements")}} 속성으로 접근할 수 있습니다.
diff --git a/files/ko/web/api/customevent/customevent/index.md b/files/ko/web/api/customevent/customevent/index.md
index 8da6a4f9580464..fe54daf5e617cd 100644
--- a/files/ko/web/api/customevent/customevent/index.md
+++ b/files/ko/web/api/customevent/customevent/index.md
@@ -27,19 +27,19 @@ CustomEvent(typeArg, options);
```js
// CustomEvent 생성
-const catFound = new CustomEvent('animalfound', {
+const catFound = new CustomEvent("animalfound", {
detail: {
- name: 'cat'
- }
+ name: "cat",
+ },
});
-const dogFound = new CustomEvent('animalfound', {
+const dogFound = new CustomEvent("animalfound", {
detail: {
- name: 'dog'
- }
+ name: "dog",
+ },
});
// 적합한 이벤트 수신기 부착
-obj.addEventListener('animalfound', (e) => console.log(e.detail.name));
+obj.addEventListener("animalfound", (e) => console.log(e.detail.name));
// 이벤트 발송
obj.dispatchEvent(catFound);
diff --git a/files/ko/web/api/customevent/detail/index.md b/files/ko/web/api/customevent/detail/index.md
index 414e21e4a77fef..78a81d709ba1a1 100644
--- a/files/ko/web/api/customevent/detail/index.md
+++ b/files/ko/web/api/customevent/detail/index.md
@@ -15,19 +15,19 @@ slug: Web/API/CustomEvent/detail
```js
// CustomEvent 생성
-const catFound = new CustomEvent('animalfound', {
+const catFound = new CustomEvent("animalfound", {
detail: {
- name: 'cat'
- }
+ name: "cat",
+ },
});
-const dogFound = new CustomEvent('animalfound', {
+const dogFound = new CustomEvent("animalfound", {
detail: {
- name: 'dog'
- }
+ name: "dog",
+ },
});
// 적합한 이벤트 수신기 부착
-obj.addEventListener('animalfound', (e) => console.log(e.detail.name));
+obj.addEventListener("animalfound", (e) => console.log(e.detail.name));
// 이벤트 발송
obj.dispatchEvent(catFound);
diff --git a/files/ko/web/api/customevent/index.md b/files/ko/web/api/customevent/index.md
index 84f72af58cd781..b60946ca646e03 100644
--- a/files/ko/web/api/customevent/index.md
+++ b/files/ko/web/api/customevent/index.md
@@ -2,6 +2,7 @@
title: CustomEvent
slug: Web/API/CustomEvent
---
+
{{APIRef("DOM")}}
**`CustomEvent`** 인터페이스는 어떤 목적이든간에 애플리케이션이 초기화한 이벤트를 나타냅니다.