diff --git a/docs/ko/fully_untranslated_files/Learn_HTML_Multimedia_and_embedding_Images_in_HTML.md b/docs/ko/fully_untranslated_files/Learn_HTML_Multimedia_and_embedding_Images_in_HTML.md deleted file mode 100644 index 6a9b123f68bcd3..00000000000000 --- a/docs/ko/fully_untranslated_files/Learn_HTML_Multimedia_and_embedding_Images_in_HTML.md +++ /dev/null @@ -1,508 +0,0 @@ ---- -title: HTML의 이미지 -slug: Learn/HTML/Multimedia_and_embedding/Images_in_HTML ---- - -{{LearnSidebar}}{{NextMenu("Learn/HTML/Multimedia_and_embedding/Video_and_audio_content", "Learn/HTML/Multimedia_and_embedding")}} - -초창기의 웹에는 텍스트만 있었고 조금 지루했습니다. 다행히도 웹 페이지 안에 이미지 (및 보다 흥미로운 유형의 컨텐츠)를 삽입하는 기능이 추가되기까지는 오래 걸리지 않았습니다. 시작해볼 수 있는 다른 유형의 멀티미디어가 있지만 단순한 이미지를 웹 페이지에 삽입하는 데 사용되는 {{htmlelement ( "img")}} 요소로 쉽게 시작해 보겠습니다. 이 글에서는 기초내용 부터 심층적으로 사용하는 방법, {{htmlelement("figure")}}를 사용하여 캡션을 주석으로 추가하는 방법, {{htmlelement("CSS")}}배경 이미지와 관련된 사용 방법을 자세히 설명합니다. - -
선행사항: | -- 기본 컴퓨터 활용 능력, - 기본 소프트웨어 설치, - 파일작업에 대한 기본 지식, HTML 기초 지식 익숙 (HTML 시작하기에서 설명) - | -
---|---|
목표: | -- 간단한 이미지를 HTML에 삽입하고, 캡션을 사용하여 주석을 추가하는 방법과 - HTML 이미지가 CSS 배경 이미지와 관련되는 방법을 배우십시오. - | -
- Press Esc to move focus away from the code area (Tab inserts a tab character). -
- - - - -``` - -```css hidden -html { - font-family: sans-serif; -} - -h2 { - font-size: 16px; -} - -.a11y-label { - margin: 0; - text-align: right; - font-size: 0.7rem; - width: 98%; -} - -body { - margin: 10px; - background: #f5f9fa; -} -``` - -```js hidden -var textarea = document.getElementById("code"); -var reset = document.getElementById("reset"); -var solution = document.getElementById("solution"); -var output = document.querySelector(".output"); -var code = textarea.value; -var userEntry = textarea.value; - -function updateCode() { - output.innerHTML = textarea.value; -} - -reset.addEventListener("click", function () { - textarea.value = code; - userEntry = textarea.value; - solutionEntry = htmlSolution; - solution.value = "Show solution"; - updateCode(); -}); - -solution.addEventListener("click", function () { - if (solution.value === "Show solution") { - textarea.value = solutionEntry; - solution.value = "Hide solution"; - } else { - textarea.value = userEntry; - solution.value = "Show solution"; - } - updateCode(); -}); - -var htmlSolution = - ''; -var solutionEntry = htmlSolution; - -textarea.addEventListener("input", updateCode); -window.addEventListener("load", updateCode); - -// stop tab key tabbing out of textarea and -// make it write a tab at the caret position instead - -textarea.onkeydown = function (e) { - if (e.keyCode === 9) { - e.preventDefault(); - insertAtCaret("\t"); - } - - if (e.keyCode === 27) { - textarea.blur(); - } -}; - -function insertAtCaret(text) { - var scrollPos = textarea.scrollTop; - var caretPos = textarea.selectionStart; - - var front = textarea.value.substring(0, caretPos); - var back = textarea.value.substring( - textarea.selectionEnd, - textarea.value.length, - ); - textarea.value = front + text + back; - caretPos = caretPos + text.length; - textarea.selectionStart = caretPos; - textarea.selectionEnd = caretPos; - textarea.focus(); - textarea.scrollTop = scrollPos; -} - -// Update the saved userCode every time the user updates the text area code - -textarea.onkeyup = function () { - // We only want to save the state when the user code is being shown, - // not the solution, so that solution is not saved over the user code - if (solution.value === "Show solution") { - userEntry = textarea.value; - } else { - solutionEntry = textarea.value; - } - - updateCode(); -}; -``` - -{{ EmbedLiveSample('Playable_code', 700, 350, "", "", "hide-codepen-jsfiddle") }} - -## Annotating images with figures and figure captions - -Speaking of captions, there are a number of ways that you could add a caption to go with your image. For example, there would be nothing to stop you doing this: - -```html -A T-Rex on display in the Manchester University Museum.
-- Press Esc to move focus away from the code area (Tab inserts a tab character). -
- - - - -``` - -```css hidden -html { - font-family: sans-serif; -} - -h2 { - font-size: 16px; -} - -.a11y-label { - margin: 0; - text-align: right; - font-size: 0.7rem; - width: 98%; -} - -body { - margin: 10px; - background: #f5f9fa; -} -``` - -```js hidden -var textarea = document.getElementById("code"); -var reset = document.getElementById("reset"); -var solution = document.getElementById("solution"); -var output = document.querySelector(".output"); -var code = textarea.value; -var userEntry = textarea.value; - -function updateCode() { - output.innerHTML = textarea.value; -} - -reset.addEventListener("click", function () { - textarea.value = code; - userEntry = textarea.value; - solutionEntry = htmlSolution; - solution.value = "Show solution"; - updateCode(); -}); - -solution.addEventListener("click", function () { - if (solution.value === "Show solution") { - textarea.value = solutionEntry; - solution.value = "Hide solution"; - } else { - textarea.value = userEntry; - solution.value = "Show solution"; - } - updateCode(); -}); - -var htmlSolution = - ''; -var solutionEntry = htmlSolution; - -textarea.addEventListener("input", updateCode); -window.addEventListener("load", updateCode); - -// stop tab key tabbing out of textarea and -// make it write a tab at the caret position instead - -textarea.onkeydown = function (e) { - if (e.keyCode === 9) { - e.preventDefault(); - insertAtCaret("\t"); - } - - if (e.keyCode === 27) { - textarea.blur(); - } -}; - -function insertAtCaret(text) { - var scrollPos = textarea.scrollTop; - var caretPos = textarea.selectionStart; - - var front = textarea.value.substring(0, caretPos); - var back = textarea.value.substring( - textarea.selectionEnd, - textarea.value.length, - ); - textarea.value = front + text + back; - caretPos = caretPos + text.length; - textarea.selectionStart = caretPos; - textarea.selectionEnd = caretPos; - textarea.focus(); - textarea.scrollTop = scrollPos; -} - -// Update the saved userCode every time the user updates the text area code - -textarea.onkeyup = function () { - // We only want to save the state when the user code is being shown, - // not the solution, so that solution is not saved over the user code - if (solution.value === "Show solution") { - userEntry = textarea.value; - } else { - solutionEntry = textarea.value; - } - - updateCode(); -}; -``` - -{{ EmbedLiveSample('Playable_code_2', 700, 350, "", "", "hide-codepen-jsfiddle") }} - -## CSS background images - -You can also use CSS to embed images into webpages (and JavaScript, but that's another story entirely). The CSS {{cssxref("background-image")}} property, and the other `background-*` properties, are used to control background image placement. For example, to place a background image on every paragraph on a page, you could do this: - -```css -p { - background-image: url("images/dinosaur.jpg"); -} -``` - -The resulting embedded image, is arguably easier to position and control than HTML images. So why bother with HTML images? As hinted to above, CSS background images are for decoration only. If you just want to add something pretty to your page to enhance the visuals, this is fine. Though, such images have no semantic meaning at all. They can't have any text equivalents, are invisible to screen readers, etc. This is HTML images time to shine! - -Summing up: if an image has meaning, in terms of your content, you should use an HTML image. If an image is purely decoration, you should use CSS background images. - -> **참고:** You'll learn a lot more about [CSS background images](/ko/docs/Learn/CSS/Styling_boxes/Backgrounds) in our [CSS](/ko/docs/Learn/CSS) topic. - -That's all for now. We have covered images and captions in detail. In the next article we'll move it up a gear, looking at how to use HTML to embed video and audio in web pages. - -{{NextMenu("Learn/HTML/Multimedia_and_embedding/Video_and_audio_content", "Learn/HTML/Multimedia_and_embedding")}} diff --git a/files/ko/learn/html/multimedia_and_embedding/images_in_html/index.md b/files/ko/learn/html/multimedia_and_embedding/images_in_html/index.md new file mode 100644 index 00000000000000..30a172ffd834ff --- /dev/null +++ b/files/ko/learn/html/multimedia_and_embedding/images_in_html/index.md @@ -0,0 +1,621 @@ +--- +title: HTML의 이미지 +slug: Learn/HTML/Multimedia_and_embedding/Images_in_HTML +l10n: + sourceCommit: 8d0cbeacdc1872f7e4d966177151585c58fb879e +--- + +{{LearnSidebar}}{{NextMenu("Learn/HTML/Multimedia_and_embedding/Video_and_audio_content", "Learn/HTML/Multimedia_and_embedding")}} + +초창기 웹에는 텍스트만 있었고 꽤 지루했습니다. 다행히도 웹 페이지 안에 이미지 (및 보다 흥미로운 유형의 컨텐츠)를 삽입하는 기능이 추가되기까지는 오래 걸리지 않았습니다. 고려해 볼 수 있는 다른 유형의 멀티미디어가 있지만 단순한 이미지를 웹 페이지에 삽입하는 데 사용되는 {{htmlelement("img")}} 요소로 쉽게 시작해 보겠습니다. 이 글에서는 기초 내용부터 심층적으로 사용하는 방법, {{htmlelement("figure")}}를 사용하여 캡션을 주석으로 추가하는 방법, {{glossary("CSS")}} 배경 이미지와 관련된 사용 방법을 자세히 설명합니다. + +필요한 사전 지식: | ++ 기본 컴퓨터 활용 능력, + 기본 소프트웨어 설치, + 파일 작업에 대한 기본 지식, HTML 기초 지식 숙지 (HTML 시작하기에서 설명) + | +
---|---|
목표: | ++ 간단한 이미지를 HTML에 삽입하고, 캡션을 사용하여 주석을 추가하는 방법과 + HTML 이미지가 CSS 배경 이미지와 관련되는 방법을 배웁니다. + | +
++``` + +브라우저가 HTML을 다운로드 받자마자, 브라우저는 페이지를 보여주기 시작할 것입니다. + +이미지가 불러와지면, 브라우저는 이미지를 페이지에 추가할 것입니다. 이미지가 공간을 차지하기 때문에, 브라우저는 텍스트를 아래로 내려서 이미지를 위에 맞추어야 합니다. + +![브라우저가 페이지를 로드하는 동안과 페이지가 완료된 후 이미지 크기를 지정하지 않은 경우 페이지 레이아웃을 비교합니다.](no-size.png) + +텍스트가 이렇게 옮겨지는 것은 사용자를 매우 불편하게 합니다. 특히 이미 읽기 시작했다면 더욱 그렇습니다. + +HTML에 이미지의 실제 사이즈를 명시했다면, `width`와 `height` 속성을 사용하여, 브라우저는 이미지를 다운로드하기 전에 이미지를 위한 공간이 얼마나 필요한지 알 수 있습니다. + +이것은 이미지가 다운로드 되었을 때, 브라우저가 주변 콘텐츠를 옮길 필요가 없다는 것을 의미합니다. + +![브라우저가 페이지를 로드하는 동안과 페이지가 완료된 후 이미지 크기를 지정했을 때의 페이지 레이아웃을 비교합니다.](size.png) + +이 기능에 대한 훌륭한 기사는 [이미지에 높이와 너비를 설정하는 것은 정말 중요합니다](https://www.smashingmagazine.com/2020/03/setting-height-width-images-important-again/)를 참고하세요. + +> **Note:** 그럼에도 불구하고, 우리가 말했듯이, HTML 속성을 사용하여 이미지의 실제 크기를 지정하는 것이 좋은 습관이지만, 이미지의 크기를 *조정*하는 데 사용해서는 안 됩니다. +> +> 만약 이미지 크기를 너무 크게 설정한다면, 이미지가 거칠거나, 흐릿하거나 너무 작아 보이고, 사용자의 요구에 맞지 않는 이미지를 다운로드 하는데 많은 대역폭을 사용하게 될 것입니다. 이미지는 또한 왜곡되어 보일 수 있습니다. 만약 올바른 [종횡비](https://en.wikipedia.org/wiki/Aspect_ratio_%28image%29)를 유지하지 않는다면. 웹페이지에 올리기 전에 이미지 편집기를 사용하여 이미지를 올바른 크기로 조정해야 합니다. +> +> 만약 이미지의 크기를 조정해야 한다면, [CSS](/ko/docs/Learn/CSS)를 사용하세요. + +### 이미지 제목 + +[링크](/ko/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks#title_속성에_부가적인_정보를_더하기)와 마찬가지로, 이미지에 `title` 속성을 추가하여, 필요한 경우 추가적인 정보를 제공할 수 있습니다. 우리의 예제에서, 우리는 다음과 같이 할 수 있습니다. + +```html + +``` + +이것은 마우스를 올렸을때 툴팁을 제공합니다. 링크의 title과 같습니다. + +![맨체스터 대학교 박물관에 전시된 티라노사우루스라는 툴팁 제목과 함께 공룡 이미지가 표시됩니다.](image-with-title.png) + +그러나 이 방법은 추천되지 않습니다. `title`에는 접근성 문제가 많습니다. 주로 스크린 리더 지원을 예측할 수 없고, 대부분의 브라우저는 마우스를 올려야만 표시됩니다. (키보드 사용자는 접근할 수 없습니다). 이에 대한 자세한 내용은 [title 속성의 시련과 고난](https://www.24a11y.com/2017/the-trials-and-tribulations-of-the-title-attribute/)을 참고하세요. + +지원하는 정보 같은 경우 이미지에 첨부하는 것보다는, 본문에 포함하는 것이 좋습니다. + +### 학습하기: 이미지 삽입하기 + +이제 당신의 차례입니다! 이 활동적인 학습 섹션에서는 간단한 이미지 첨부 연습을 할 수 있습니다. 당신은 기본적인 {{htmlelement("img")}} 태그를 제공받았습니다. 우리는 다음 URL에 위치한 이미지를 삽입하길 원합니다. + +```url +https://raw.githubusercontent.com/mdn/learning-area/master/html/multimedia-and-embedding/images-in-html/dinosaur_small.jpg +``` + +전에 이미지에 핫링크를 넣지 말라고 했지만 이것은 학습 목적이기 때문에, 이번 한 번은 괜찮습니다. + +다음 내용을 수행해 주세요. + +- 대체 텍스트를 추가하세요. 그리고 이미지 URL을 잘못 입력하여 작동하는지 확인하세요. +- 이미지의 올바른 `너비`와 `높이`를 설정하세요. (힌트: 200px 너비와 171px 높이입니다.) 그리고 다른 값들을 실험하여 어떤 효과가 있는지 확인하세요. +- 이미지에 `title`을 설정하세요. + +만약 실수했다면, 당신은 항상 Reset 버튼을 눌러서 초기화할 수 있습니다. 만약 당신이 정말로 막혔다면, Show solution 버튼을 눌러서 답을 확인하세요. + +```html hidden ++ But down there it would be dark now, and not the lovely lighted aquarium she + imagined it to be during the daylight hours, eddying with schools of tiny, + delicate animals floating and dancing slowly to their own serene currents + and creating the look of a living painting. That was wrong, in any case. The + ocean was different from an aquarium, which was an artificial environment. + The ocean was a world. And a world is not art. Dorothy thought about the + living things that moved in that world: large, ruthless and hungry. Like us + up here. +
+ +
+ Press Esc to move focus away from the code area (Tab inserts a tab character). +
+ + + + +``` + +```css hidden +html { + font-family: sans-serif; +} + +h2 { + font-size: 16px; +} + +.a11y-label { + margin: 0; + text-align: right; + font-size: 0.7rem; + width: 98%; +} + +body { + margin: 10px; + background: #f5f9fa; +} +``` + +```js hidden +const textarea = document.getElementById("code"); +const reset = document.getElementById("reset"); +const solution = document.getElementById("solution"); +const output = document.querySelector(".output"); +const code = textarea.value; +let userEntry = textarea.value; + +function updateCode() { + output.innerHTML = textarea.value; +} + +const htmlSolution = + ''; +let solutionEntry = htmlSolution; + +reset.addEventListener("click", () => { + textarea.value = code; + userEntry = textarea.value; + solutionEntry = htmlSolution; + solution.value = "Show solution"; + updateCode(); +}); + +solution.addEventListener("click", () => { + if (solution.value === "Show solution") { + textarea.value = solutionEntry; + solution.value = "Hide solution"; + } else { + textarea.value = userEntry; + solution.value = "Show solution"; + } + updateCode(); +}); + +textarea.addEventListener("input", updateCode); +window.addEventListener("load", updateCode); + +// textarea 외부에서 탭 키 탭을 중지하고 +// 대신 캐럿 위치에 탭을 작성하도록 합니다. + +textarea.onkeydown = (e) => { + if (e.keyCode === 9) { + e.preventDefault(); + insertAtCaret("\t"); + } + + if (e.keyCode === 27) { + textarea.blur(); + } +}; + +function insertAtCaret(text) { + const scrollPos = textarea.scrollTop; + let caretPos = textarea.selectionStart; + + const front = textarea.value.substring(0, caretPos); + const back = textarea.value.substring( + textarea.selectionEnd, + textarea.value.length, + ); + textarea.value = front + text + back; + caretPos += text.length; + textarea.selectionStart = caretPos; + textarea.selectionEnd = caretPos; + textarea.focus(); + textarea.scrollTop = scrollPos; +} + +// 사용자가 텍스트 영역 코드를 업데이트할 때마다 저장된 사용자 코드를 업데이트합니다. + +textarea.onkeyup = function () { + // 사용자 코드가 표시될 때만 상태를 저장하려고 합니다, + // 솔루션이 아닌 사용자 코드를 통해 솔루션이 저장되지 않도록 합니다. + if (solution.value === "Show solution") { + userEntry = textarea.value; + } else { + solutionEntry = textarea.value; + } + + updateCode(); +}; +``` + +{{ EmbedLiveSample('Active_learning_embedding_an_image', 700, 350) }} + +## 미디어 애셋 및 라이선스 + +이미지들(그리고 다른 미디어 자산들)은 여러 라이선스 타입들 아래에서 찾을 수 있습니다. 당신이 만드는 사이트에 이미지를 사용하기 전에 당신이 그것을 소유하고 있거나, 사용할 수 있는 권한이 있거나, 또는 소유자의 라이선스 조건을 준수하는지 확인하세요. + +### 라이선스 타입 이해하기 + +웹에서 찾을 수 있는 일반적인 라이선스 카테고리들을 살펴봅시다. + +#### 모든 권리 보유 + +음악, 책 또는 소프트웨어와 같은 원본 작업물의 창작자들은 종종 그들의 작업물을 닫힌 저작권 보호 아래에서 발표합니다. 이것은 기본적으로 그들 (또는 그들의 출판사)이 그들의 작업물을 사용하는 (예를 들어, 표시하거나 배포하는) 독점적인 권리를 가지고 있다는 것을 의미합니다. 당신이 저작권 보호 이미지를 사용하고 싶다면, 당신은 다음 중 하나를 해야 합니다. + +- 명시적으로 작성된 허가를 저작권 보유자로부터 얻으세요. +- 사용하기 위해 라이선스 비용을 지불하세요. 이것은 무제한 사용을 위한 일회성 비용("로열티 프리")이거나, "권리 관리"일 수 있습니다. 이 경우, 당신은 시간대, 지리적 영역, 산업 또는 미디어 유형 등에 따라 사용당 특정 비용을 지불해야 할 수 있습니다. +- 관할 지역에서 [공정 사용](https://fairuse.stanford.edu/overview/fair-use/what-is-fair-use/) 또는 [공정 거래](https://www.bl.uk/business-and-ip-centre/articles/fair-dealing-copyright-explained)로 간주되는 경우에만 사용하세요. + +저작권자들은 저작물에 저작권 표시 또는 라이선스 조건을 포함시키는 것이 필수적이지 않습니다. 저작권은 저작물이 유형화된 매체에 창작되면 자동으로 발생합니다. 그래서 당신이 온라인에서 이미지를 찾고, 저작권 표시나 라이선스 조건이 없다면, 가장 안전한 방법은 모든 권리가 보호되는 저작권에 의해 보호된다고 가정하는 것입니다. + +#### 허용 + +[MIT](https://mit-license.org/), [BSD](https://opensource.org/license/BSD-3-clause/), 또는 적절한 [크리에이티브 커먼즈(CC) 라이선스](https://creativecommons.org/choose/)와 같은 허용 라이센스에 따라 이미지를 공개하는 경우, 당신은 라이선스 비용을 지불하거나 사용을 위한 허가를 요청할 필요가 없습니다. 그럼에도 불구하고, 당신은 라이선스에 따라 다양한 라이선스 조건을 충족해야 합니다. + +예를 들어 당신은 다음 내용들을 해야 할 수 있습니다. + +- 이미지의 원본 소스에 대한 링크를 제공하고, 그것의 창작자에게 크레딧을 제공합니다. +- 변경사항이 있는지 표시합니다. +- 이미지를 사용하여 만든 모든 2차 작업물을 원본과 동일한 라이선스 하에 공유합니다. +- 2차 작업물을 공유하지 않습니다. +- 이미지를 상업적인 작업물에 사용하지 않습니다. +- 이미지를 사용하는 모든 릴리즈와 함께 라이선스의 사본을 포함합니다. + +적용 가능한 라이선스를 확인하여 따라야 할 구체적인 조건을 확인해야 합니다. + +> **참고:** "copyleft"라는 용어를 허용 라이선스의 문맥에서 만날 수 있습니다. Copyleft 라이선스 (예를 들어, [GNU General Public License (GPL)](https://www.gnu.org/licenses/gpl-3.0.en.html) 또는 "Share Alike" Creative Commons 라이선스)는 2차 작업물이 원본과 동일한 라이선스 하에 공개되어야 한다고 규정합니다. + +Copyleft 라이선스들은 소프트웨어 세계에서 두드러집니다. 기본적인 아이디어는 Copyleft 라이선스를 받은 프로젝트의 코드로 만들어진 새로운 프로젝트(이것은 원본 소프트웨어의 "fork"라고 불립니다)도 동일한 Copyleft 라이선스 하에 라이선스 되어야 한다는 것입니다. 이것은 새로운 프로젝트의 소스 코드가 다른 사람들이 공부하고 수정할 수 있도록 공개되어야 한다는 것을 보장합니다. 일반적으로, 소프트웨어를 위해 작성된 라이선스들은 비소프트웨어 작업물을 위해 작성되지 않았기 때문에, GPL과 같은 라이선스들은 비-소프트웨어 작업물을 위한 좋은 라이선스로 간주되지 않습니다. + +이전에 제공된 링크를 확인해서 다른 라이선스 유형과 그들이 지정하는 조건들을 읽어보세요. + +#### 공개 도메인/CC0 + +공개된 도메인은 때때로 "권리가 보호되지 않음"이라고 불립니다. 저작권이 적용되지 않으며 허가 없이 사용할 수 있고 라이선스 조건을 충족할 필요가 없습니다. 저작물은 저작권의 만료 또는 특정 권리 포기와 같은 다양한 방법으로 공개 도메인에 들어갈 수 있습니다. + +공개된 도메인에 작업물을 놓는 가장 효과적인 방법 중 하나는 [CC0](https://creativecommons.org/share-your-work/public-domain/cc0/)라는 특정 크리에이티브 커먼즈 라이선스를 사용하는 것입니다. 이것은 명확하고 모호하지 않은 법적 도구를 제공합니다. + +공개된 도메인을 사용할 때, 이미지가 공개된 도메인에 있는 것임을 증명하고 증명을 기록해 두세요. 예를 들어, 라이선스 상태가 명확하게 표시된 원본 소스의 스크린샷을 찍고, 라이선스 요구사항과 함께 이미지를 획득한 웹사이트에 페이지를 추가하는 것을 고려해 보세요. + +### 허가된 라이선스 이미지 검색하기 + +당신은 당신의 프로젝트를 위해서 허가된 라이선스 이미지를 찾을 수 있습니다. 이미지 검색 엔진이나 이미지 저장소에서 직접 찾을 수 있습니다. + +당신이 찾고 있는 이미지에 대한 설명과 관련된 라이선스 조건을 포함해서 이미지를 검색하세요. 예를 들어, "노란 공룡"을 검색할 때 "공개 도메인 이미지", "공개 도메인 이미지 라이브러리", "오픈 라이선스 이미지" 또는 비슷한 용어를 검색어에 추가하세요. + +어떤 검색 엔진은 허가된 라이선스 이미지를 찾는 데 도움을 주는 도구를 가지고 있습니다. 예를 들어, Google을 사용할 때, 이미지를 검색하기 위해 "이미지" 탭을 클릭하고, "도구"를 클릭하세요. 그러면 툴바에 "사용 권한" 드롭다운이 나타납니다. 여기서 크리에이티브 커먼즈 라이선스 하에 있는 이미지를 검색할 수 있습니다. + +이미지 레포지토리 사이트 (예: [Flickr](https://flickr.com/), [ShutterStock](https://www.shutterstock.com), [Pixabay](https://pixabay.com/))는 허가된 라이선스 이미지만 검색할 수 있도록 검색 옵션을 제공합니다. [Picryl](https://picryl.com)과 [The Noun Project](https://thenounproject.com/)와 같은 사이트는 허가된 라이선스 이미지와 아이콘만 배포합니다. + +이미지가 배포된 라이선스를 준수하려면 라이선스 세부 사항을 찾고 소스에서 제공하는 라이선스 또는 지시사항 페이지를 읽고 그 지시사항을 따르면 됩니다. 신뢰할 수 있는 이미지 레포지토리는 라이선스 조건을 명확하고 쉽게 찾을 수 있도록 합니다. + +## figures 및 figure captions으로 이미지에 주석 달기 + +캡션에 대해 말하자면, 이미지에 캡션을 추가하는 몇 가지 방법이 있습니다. 예를 들어, 다음과 같이 캡션을 추가하는 것을 막을 수는 없습니다. + +```html +A T-Rex on display in the Manchester University Museum.
++ Press Esc to move focus away from the code area (Tab inserts a tab character). +
+ + + + +``` + +```css hidden +html { + font-family: sans-serif; +} + +h2 { + font-size: 16px; +} + +.a11y-label { + margin: 0; + text-align: right; + font-size: 0.7rem; + width: 98%; +} + +body { + margin: 10px; + background: #f5f9fa; +} +``` + +```js hidden +const textarea = document.getElementById("code"); +const reset = document.getElementById("reset"); +const solution = document.getElementById("solution"); +const output = document.querySelector(".output"); +const code = textarea.value; +let userEntry = textarea.value; + +function updateCode() { + output.innerHTML = textarea.value; +} + +const htmlSolution = + ''; +let solutionEntry = htmlSolution; + +reset.addEventListener("click", () => { + textarea.value = code; + userEntry = textarea.value; + solutionEntry = htmlSolution; + solution.value = "Show solution"; + updateCode(); +}); + +solution.addEventListener("click", () => { + if (solution.value === "Show solution") { + textarea.value = solutionEntry; + solution.value = "Hide solution"; + } else { + textarea.value = userEntry; + solution.value = "Show solution"; + } + updateCode(); +}); + +textarea.addEventListener("input", updateCode); +window.addEventListener("load", updateCode); + +// textarea 외부에서 탭 키 탭을 중지하고 +// 대신 캐럿 위치에 탭을 작성하도록 합니다. + +textarea.onkeydown = (e) => { + if (e.keyCode === 9) { + e.preventDefault(); + insertAtCaret("\t"); + } + + if (e.keyCode === 27) { + textarea.blur(); + } +}; + +function insertAtCaret(text) { + const scrollPos = textarea.scrollTop; + let caretPos = textarea.selectionStart; + + const front = textarea.value.substring(0, caretPos); + const back = textarea.value.substring( + textarea.selectionEnd, + textarea.value.length, + ); + textarea.value = front + text + back; + caretPos += text.length; + textarea.selectionStart = caretPos; + textarea.selectionEnd = caretPos; + textarea.focus(); + textarea.scrollTop = scrollPos; +} + +// 사용자가 텍스트 영역 코드를 업데이트할 때마다 저장된 사용자 코드를 업데이트합니다. + +textarea.onkeyup = () => { + // 사용자 코드가 표시될 때만 상태를 저장하려고 합니다, + // 솔루션이 아닌 사용자 코드를 통해 솔루션이 저장되지 않도록 합니다. + + if (solution.value === "Show solution") { + userEntry = textarea.value; + } else { + solutionEntry = textarea.value; + } + + updateCode(); +}; +``` + +{{ EmbedLiveSample('Active_learning_creating_a_figure', 700, 350) }} + +## CSS 배경 이미지 + +이미지를 웹페이지에 삽입하기 위해 CSS도 사용할 수 있습니다. (JavaScript도 사용할 수 있지만, 이건 완전 다른 이야기 입니다). CSS {{cssxref("background-image")}} 속성과 다른 `background-*` 속성들은 배경 이미지의 위치를 제어하는 데 사용됩니다. 예를 들어, 페이지의 모든 문단에 배경 이미지를 놓기 위해, 다음과 같이 할 수 있습니다. + +```css +p { + background-image: url("images/dinosaur.jpg"); +} +``` + +임베디드 이미지는 HTML 이미지보다 위치 지정과 제어가 훨씬 쉽습니다. 그렇다면 HTML 이미지를 사용해야 할 이유가 무엇일까요? 위에서 언급했듯이, CSS 배경 이미지는 장식용입니다. 페이지에 예쁜 것을 추가하여 시각적으로 더욱 향상시키고 싶다면, 이것은 괜찮습니다. 하지만, 이러한 이미지는 의미가 없습니다. 텍스트 대체가 없으며, 스크린 리더에서도 보이지 않습니다. 이 부분에서 HTML 이미지가 빛을 발합니다. + +요약하기: 이미지가 의미가 있다면, 콘텐츠 관점에서, HTML 이미지를 사용해야 합니다. 이미지가 순전히 장식이라면, CSS 배경 이미지를 사용해야 합니다. + +> **참고:** [CSS 배경 이미지](/ko/docs/Learn/CSS/Building_blocks/Backgrounds_and_borders)에 대해서는 [CSS](/ko/docs/Learn/CSS) 주제에서 더 자세히 배울 수 있습니다. + +## 스킬을 테스트 하세요! + +기사의 마지막에 도달했지만, 가장 중요한 정보를 기억하고 있나요? 다음으로 넘어가기 전에 이 정보를 기억하고 있는지 확인할 수 있는 몇 가지 테스트를 찾을 수 있습니다. [스킬 테스트하기: HTML 이미지](/ko/docs/Learn/HTML/Multimedia_and_embedding/Images_in_HTML/Test_your_skills:_HTML_images)를 참고하세요. + +## 요약 + +여기까지입니다. 이미지와 캡션에 대해 자세히 알아보았습니다. 다음 기사에서는 웹 페이지에 [비디오와 오디오 콘텐츠](/ko/docs/Learn/HTML/Multimedia_and_embedding/Video_and_audio_content)를 삽입하는 방법에 대해 알아보겠습니다. + +{{NextMenu("Learn/HTML/Multimedia_and_embedding/Video_and_audio_content", "Learn/HTML/Multimedia_and_embedding")}}