├── CONTRIBUTING.md ├── README.ko.md ├── README.md └── README.ja.md /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Contributing to HTML Best Practice 2 | ================================== 3 | 4 | Thanks for taking the time to contribute! 5 | 6 | Your new practice must have “Bad” and “Good”code examples. A detailed 7 | explanation of your new practice should be written in commit message or pull 8 | request comment. 9 | 10 | 11 | About ToC 12 | --------- 13 | 14 | ToC is generated by [gfmtoc][1]. You need not update ToC with this tool. I will 15 | update later. 16 | 17 | 18 | 日本の方へ 19 | ---------- 20 | 21 | このドキュメントを英語で書いたことにはあまり意味はないので、イシューやプル・リクエストは好きな言語で書いてくれて構いません。新たなベスト・プラクティスの提案も日本語で結構です。マージする際にこちらで適当に英語に訳します。 22 | 23 | 24 | [1]: https://github.com/hail2u/node-gfmtoc 25 | -------------------------------------------------------------------------------- /README.ko.md: -------------------------------------------------------------------------------- 1 | Translations: [English (en)](README.md) · [日本語 (ja)](README.ja.md) · [한국어 (ko)](README.ko.md) 2 | 3 | HTML Best Practices 4 | =================== 5 | 6 | 유지보수 및 확장할 수 있는 HTML 문서를 만들기 위해 7 | 8 | 9 | 10 | * [공통](#공통) 11 | * [`DOCTYPE`으로 시작해라](#doctype으로-시작해라) 12 | * [레거시 혹은 폐기된 `DOCTYPE`을 쓰지 마라](#레거시-혹은-폐기된-doctype을-쓰지-마라) 13 | * [XML 선언을 쓰지 말아라](#xml-선언을-쓰지-말아라) 14 | * [문자 레퍼런스를 가능한 한 사용하지 말아라](#문자-레퍼런스를-가능한-한-사용하지-말아라) 15 | * [`&`, `<`, `>`, `"`, `'`를 문자 레퍼런스로 변환해라](#----를-문자-레퍼런스로-변환해라) 16 | * [제어 문자나 보이지 않는 문자를 제어하기 위해 숫자 문자 레퍼런스를 사용하라](#제어-문자나-보이지-않는-문자를-제어하기-위해-숫자-문자-레퍼런스를-사용하라) 17 | * [주석 내용 주위에 공백을 넣어라](#주석-내용-주위에-공백을-넣어라) 18 | * [닫는 태그를 생략하지 말아라](#닫는-태그를-생략하지-말아라) 19 | * [빈 요소 포맷을 섞지 마라](#빈-요소-포맷을-섞지-마라) 20 | * [태그 및 속성 값 사이에 공백문자를 넣지 말아라](#태그-및-속성-값-사이에-공백문자를-넣지-말아라) 21 | * [대소문자를 섞지 말아라](#대소문자를-섞지-말아라) 22 | * [인용 부호를 섞지 말아라](#인용-부호를-섞지-말아라) 23 | * [속성을 두개 이상의 공백 문자로 나누지 마라](#속성을-두개-이상의-공백-문자로-나누지-마라) 24 | * [불리언 속성값을 생략해라](#불리언-속성값을-생략해라) 25 | * [네임스페이스를 생략해라](#네임스페이스를-생략해라) 26 | * [XML 속성을 쓰지 마라](#xml-속성을-쓰지-마라) 27 | * [`data-*`, 마이크로데이터, RDFa Lite 속성을 일반 속성과 섞어쓰지 마라](#data--마이크로데이터-rdfa-lite-속성을-일반-속성과-섞어쓰지-마라) 28 | * [기본 암시적 ARIA 시맨틱을 선호하라](#기본-암시적-aria-시맨틱을-선호하라) 29 | * [루트 요소](#루트-요소) 30 | * [`lang` 속성을 추가해라](#lang-속성을-추가해라) 31 | * [`lang` 속성을 가능하면 짧게 유지해라](#lang-속성을-가능하면-짧게-유지해라) 32 | * [`data-*`을 가능한 한 없애라](#data-을-가능한-한-없애라) 33 | * [문서 메타데이터](#문서-메타데이터) 34 | * [`title` 요소를 넣어라](#title-요소를-넣어라) 35 | * [`base` 요소를 쓰지 마라](#base-요소를-쓰지-마라) 36 | * [마이너한 링크 리소스에 MIME 타입을 정의해라](#마이너한-링크-리소스에-mime-타입을-정의해라) 37 | * [`favicon.ico` 링크하지 마라](#faviconico-링크하지-마라) 38 | * [대체 스타일시트에 `title` 속성을 넣어라](#대체-스타일시트에-title-속성을-넣어라) 39 | * [URL을 위해서 `link` 요소를 써라](#url을-위해서-link-요소를-써라) 40 | * [문서의 문자 인코딩을 정의해라](#문서의-문자-인코딩을-정의해라) 41 | * [레거시 인코딩 포맷을 쓰지 마라](#레거시-인코딩-포맷을-쓰지-마라) 42 | * [문자 인코딩을 처음으로 선언해라](#문자-인코딩을-처음으로-선언해라) 43 | * [UTF-8을 써라](#utf-8을-써라) 44 | * [CSS를 위한 `type` 속성을 생략해라](#css를-위한-type-속성을-생략해라) 45 | * [`style` 요소의 내용을 주석처리하지 마라](#style-요소의-내용을-주석처리하지-마라) 46 | * [CSS와 JavaScript 태그를 섞지 말아라](#css와-javascript-태그를-섞지-말아라) 47 | * [섹션](#섹션) 48 | * [`body` 요소를 넣어라](#body-요소를-넣어라) 49 | * [`hgroup` 요소는 잊어라](#hgroup-요소는-잊어라) 50 | * [`address` 요소는 콘택트 정보를 제공하는 데만 써라](#address-요소는-콘택트-정보를-제공하는-데만-써라) 51 | * [그룹 콘텐츠](#그룹-콘텐츠) 52 | * [`pre` 요소에서 새 줄로 시작하지 말아라](#pre-요소에서-새-줄로-시작하지-말아라) 53 | * [`blockquote` 요소에 적절한 요소를 써라](#blockquote-요소에-적절한-요소를-써라) 54 | * [`blockquote` 요소 안에 직접 포함하지 마라](#blockquote-요소-안에-직접-포함하지-마라) 55 | * [한 줄에 한 리스트 아이템을 써라](#한-줄에-한-리스트-아이템을-써라) 56 | * [`ol` 요소에 `type` 속성을 써라](#ol-요소에-type-속성을-써라) 57 | * [다이얼로그를 위해 `dl`을 쓰지 마라](#다이얼로그를-위해-dl을-쓰지-마라) 58 | * [`figcaption` 요소를 `figure` 요소의 첫째 or 마지막 자식요소로 써라](#figcaption--요소를-figure-요소의-첫째-or-마지막-자식요소로-써라) 59 | * [`main` 요소를 써라](#main-요소를-써라) 60 | * [`div` 요소를 가능한 한 많이 없애라](#div-요소를-가능한-한-많이-없애라) 61 | * [Text-level 시맨틱](#Text-level-시맨틱) 62 | * [그룹 가능한 동일 링크를 분리하지 마라](#그룹-가능한-동일-링크를-분리하지-마라) 63 | * [리소스를 다운하고자 할 때 `download` 속성을 사용하라](#리소스를-다운하고자-할-때-download-속성을-사용하라) 64 | * [필요하다면 `rel`, `hreflang`, `type` 속성을 사용해라](#필요하다면-rel-hreflang-type-속성을-사용해라) 65 | * [링크 텍스트를 명확히 하라](#링크-텍스트를-명확히-하라) 66 | * [경고나 주의를 위해 `em`을 사용하지 말아라](#경고나-주의를-위해-em을-사용하지-말아라) 67 | * [`s`, `i`, `b`, `u` 요소를 가능한 한 없애라](#s-i-b-u-요소를-가능한-한-없애라) 68 | * [`q `요소에 따옴표를 넣지 말아라](#q-요소에-따옴표를-넣지-말아라) 69 | * [`abbr` 요소에 `title` 속성을 써라](#abbr-요소에-title-속성을-써라) 70 | * [`ruby` 요소를 자세히 마크업해라](#ruby-요소를-자세히-마크업해라) 71 | * [기계가 읽을 수 없는 `time` 요소에 `datetime` 속성을 추가해라](#기계가-읽을-수-없는-time-요소에-datetime-속성을-추가해라) 72 | * [`class` 속성 접두어로 `language-`를 넣어 code 언어를 정의하라](#class-속성-접두어로-language-를-넣어-code-언어를-정의하라) 73 | * [`kbd` 요소를 가능한 한 단순하게 둬라](#kbd-요소를-가능한-한-단순하게-둬라) 74 | * [`span` 요소를 가능한 한 많이 제거해라.](#span-요소를-가능한-한-많이-제거해라) 75 | * [`br` 요소 뒤에 줄바꿈해라](#br-요소-뒤에-줄바꿈해라) 76 | * [프레젠테이션 목적으로만 `br` 요소를 쓰지 마라](#프레젠테이션-목적으로만-br-요소를-쓰지-마라) 77 | * [에디트](#에디트) 78 | * [`ins`와 `del` 요소로 다른 요소를 뛰어넘지 마라](#ins와-del-요소로-다른-요소를-뛰어넘지-마라) 79 | * [Embedded 콘텐츠](#Embedded-콘텐츠) 80 | * [`picture` 요소의 폴백으로 `img` 요소를 제공해라](#picture-요소의-폴백으로-img-요소를-제공해라) 81 | * [만약 필요하다면 `img` 요소에 `alt` 속성을 추가해라](#만약-필요하다면-img-요소에-alt-속성을-추가해라) 82 | * [가능한 경우 `alt` 속성을 비워둬라](#가능한-경우-alt-속성을-비워둬라) 83 | * [가능한 경우 `alt` 속성을 생략해라](#가능한-경우-alt-속성을-생략해라) 84 | * [`iframe` 요소를 비워둬라](#iframe-요소를-비워둬라) 85 | * [`map` 요소 콘텐츠도 마크업해라](#map-요소-콘텐츠도-마크업해라) 86 | * [`audio`나 `video` 요소를 위한 폴백 콘텐츠를 제공해라.](#audio나-video-요소를-위한-폴백-콘텐츠를-제공해라) 87 | * [테이블 데이터](#테이블-데이터) 88 | * [한 줄에 한 셀만 써라](#한-줄에-한-셀만-써라) 89 | * [`th` 요소를 헤더 셀로 써라](#th-요소를-헤더-셀로-써라) 90 | * [폼](#폼) 91 | * [폼 컨트롤을 `label` 요소로 감싸라](#폼-컨트롤을-label-요소로-감싸라) 92 | * [가능한 경우 `for` 속성을 생략해라](#가능한-경우-for-속성을-생략해라) 93 | * [`input` 요소에 적절한 `type` 속성을 사용해라](#input-요소에-적절한-type-속성을-사용해라) 94 | * [`input type="submit"`에 `value` 속성을 넣어라](#input-typesubmit에-value-속성을-넣어라) 95 | * [`input` 요소에 `pattern` 속성이 있는 경우 `title` 속성을 추가해라](#input-요소에-pattern-속성이-있는-경우-title-속성을-추가해라) 96 | * [레이블하기 위해 `placeholder` 속성을 쓰지 마라](#레이블하기-위해-placeholder-속성을-쓰지-마라) 97 | * [한 줄에 한 `option` 요소만 사용해라](#한-줄에-한-option-요소만-사용해라) 98 | * [`progress` 요소에 `max` 속성을 추가해라](#progress-요소에-max-속성을-추가해라) 99 | * [`meter` 요소에 `min`, `max` 속성을 추가해라](#meter-요소에-min-max-속성을-추가해라) 100 | * [`legend` 요소를 `fieldset` 요소의 첫번째 자식으로 둬라.](#legend-요소를-fieldset-요소의-첫번째-자식으로-둬라) 101 | * [스크립트](#스크립트) 102 | * [자바스크립트를 위한 `type` 속성을 생략해라](#자바스크립트를-위한-type-속성을-생략해라) 103 | * [`script` 요소의 내용을 주석처리하지 마라](#script-요소의-내용을-주석처리하지-마라) 104 | * [스크립트가 삽입된 `script` 요소를 쓰지 마라](#스크립트가-삽입된-script-요소를-쓰지-마라) 105 | * [기타](#기타) 106 | * [일관된 들여쓰기](#일관된-들여쓰기) 107 | * [내부 링크에 절대 경로를 사용해라](#내부-링크에-절대-경로를-사용해라) 108 | 109 | 110 | 111 | 공통 112 | ------- 113 | 114 | ### DOCTYPE으로 시작해라 115 | 116 | DOCTYPE은 표준 모드를 활성화하기 위해 필요하다. 117 | 118 | Bad: 119 | 120 | 121 | ... 122 | 123 | 124 | Good: 125 | 126 | 127 | 128 | ... 129 | 130 | 131 | 132 | ### 레거시 혹은 폐기된 DOCTYPE을 쓰지 마라 133 | 134 | DOCTYPE은 더 이상 DTD가 아니다, 간단해져라 135 | 136 | Bad: 137 | 138 | 140 | 141 | Good: 142 | 143 | 144 | 145 | 146 | ### XML 선언을 쓰지 말아라 147 | 148 | 정말 XHTML을 쓸거니? 149 | 150 | Bad: 151 | 152 | 153 | 154 | 155 | Good: 156 | 157 | 158 | 159 | 160 | ### 문자 레퍼런스를 가능한 한 사용하지 말아라 161 | 162 | 만약 HTML문서를 UTF-8로 작성하고 있다면, 163 | 대부분의 문자(이모티콘 포함)를 직접적으로 쓸 수 있다. 164 | 165 | Bad: 166 | 167 |

Copyright © 2014 W3C®

168 | 169 | Good: 170 | 171 |

Copyright © 2014 W3C®

172 | 173 | 174 | ### `&`, `<`, `>`, `"`, `'`를 문자 레퍼런스로 변환해라 175 | 176 | 이 문자들은 버그가 없는 HTML 문서를 만들기위해 반드시 변환해두어야한다. 177 | 178 | Bad: 179 | 180 |

The "&" character

181 | 182 | Good: 183 | 184 |

The "&" character

185 | 186 | 187 | ### 제어 문자나 보이지 않는 문자를 제어하기 위해 숫자 문자 레퍼런스를 사용하라 188 | 189 | 이 문자들은 다른 문자로 쉽게 오인된다. 190 | spec은 이러한 문자에 대해 사람이 읽을 수 있는 이름을 정의하는 걸 보장하지 않는다. 191 | 192 | Bad: 193 | 194 |

This book can read in 1 hour.

195 | 196 | Good: 197 | 198 |

This book can read in 1 hour.

199 | 200 | 201 | ### 주석 내용 주위에 공백을 넣어라 202 | 203 | 일부 문자는 주석의 여는 태그 바로 뒤나 닫는 태그 바로 앞에 붙어서 넣을 수 없다. 204 | 205 | Bad: 206 | 207 | 208 | 209 | Good: 210 | 211 | 212 | 213 | 214 | ### 닫는 태그를 생략하지 말아라 215 | 216 | 내 생각엔 닫는 태그 생략 룰에 대해 이해하지 못했을 가능성이 높다. 217 | 218 | Bad: 219 | 220 | 221 | 222 | ... 223 | 224 | Good: 225 | 226 | 227 | 228 | ... 229 | 230 | 231 | 232 | 233 | ### 빈 요소 포맷을 섞지 마라 234 | 235 | 일관성은 가독성의 핵심이다. 236 | 237 | Bad: 238 | 239 | HTML Best Practices 240 |
241 | 242 | Good: 243 | 244 | HTML Best Practices 245 |
246 | 247 | 248 | ### 태그 및 속성 값 사이에 공백문자를 넣지 말아라 249 | 250 | 그럴 이유가 없다. 251 | 252 | Bad: 253 | 254 |

HTML Best Practices

255 | 256 | Good: 257 | 258 |

HTML Best Practices

259 | 260 | 261 | ### 대소문자를 섞지 말아라 262 | 263 | 일관성을 줄거다. 264 | 265 | Bad: 266 | 267 | General 268 | 269 | Good: 270 | 271 | General 272 | 273 | Also Good: 274 | 275 | General 276 | 277 | 278 | ### 인용 부호를 섞지 말아라 279 | 280 | 위와 같다. 281 | 282 | Bad: 283 | 284 | HTML Best Practices 285 | 286 | Good: 287 | 288 | HTML Best Practices 289 | 290 | 291 | ### 속성을 두개 이상의 공백 문자로 나누지 마라 292 | 293 | 이상한 규칙이 누군가를 혼란하게 한다. 294 | 295 | Bad: 296 | 297 | 298 | 299 | Good: 300 | 301 | 302 | 303 | 304 | ### 불리언 속성값을 생략해라 305 | 306 | 작성하기 쉽다, 안그래? 307 | 308 | Bad: 309 | 310 |