General

DTD (Document Type Definition)

HTML μ—μ„œ λ¬Έμ„œ ν˜•μ‹μ„ μ§€μ •ν•˜λŠ” 것을 DTD 라고 ν•˜λ©° DTD λŠ” HTML λ¬Έμ„œμ— 첫번째 쀄에 μœ„μΉ˜ν•΄μ•Ό ν•œλ‹€.

λ¬Έμ„œν˜•μ‹μ€ HTML 버전과 μ’…λ₯˜λ₯Ό λͺ…μ‹œν•¨μœΌλ‘œμ¨, λΈŒλΌμš°μ €κ°€ λ¬Έμ„œλ₯Ό ν•΄μ„ν•˜κ³  좜λ ₯ν•˜λŠ”λ° μ§μ ‘μ μœΌλ‘œ 영ν–₯ 을 μ€€λ‹€.

μ˜¬λ°”λ₯΄κ²Œ λ¬Έμ„œν˜•μ‹μ΄ μ§€μ •λœ κ²½μš°μ—λŠ” ν‘œμ€€ (Strict) 방식, 그렇지 μ•ŠλŠ” κ²½μš°μ—λŠ” ν˜Έν™˜ (Quirks) λ°©μ‹μœΌλ‘œ 좜λ ₯ν•œλ‹€.

ν˜Έν™˜ 좜λ ₯ 방식 (Quirks Rendering Mode) νŠΉμ§•

  • λΈŒλΌμš°μ €κ°€ HTML 을 λžœλ”λ§ (읽기, 해석, 좜λ ₯) ν•˜λŠ” μ‹œκ°„μ΄ 더 κ±Έλ¦°λ‹€.
  • λΈŒλΌμš°μ €λ§ˆλ‹€ HTML 좜λ ₯을 각각 λ‹€λ₯΄κ²Œ 좜λ ₯ν•œλ‹€.

Example #1 : HTML

<!DOCTYPE html>
<html>
    <head></head>
    <body></body>
</html>

onload

object κ°€ λ‘œλ“œ λ˜μ—ˆμ„ λ•Œ λ°œμƒ ν•©λ‹ˆλ‹€.
μ›Ή νŽ˜μ΄μ§€κ°€ λͺ¨λ“  컨텐츠 (이미지, 슀크립트 파일, μŠ€νƒ€μΌμ‹œνŠΈ) 등을 μ™„μ „νžˆ λ‘œλ“œν•œ ν›„ μ‹€ν–‰ ν•©λ‹ˆλ‹€.

Syntax

<tag onload="myScript"></tag>
<tag onload="script"></tag>
object.onload = function () {/* script */};
object.addEventListener('load', script);

$(document).ready vs $(window).load 차이점

두 이벀트 λ¦¬μŠ€λ„ˆ λͺ¨λ‘ jQuery 라이브러리λ₯Ό ν•„μš”λ‘œ ν•˜λ©° 차이점은 μ•„λž˜μ™€ κ°™λ‹€.

  • ready μ΄λ²€νŠΈλŠ” DOM 이 λ‘œλ“œλ˜κ³  Element 의 접근이 μ•ˆμ •λ  λ•Œ λ°œμƒν•œλ‹€.
  • load μ΄λ²€νŠΈλŠ” DOM κ³Ό λͺ¨λ“  Asset (이미지, λ¬Έμ„œ λ“±λ“±...) 듀이 λ‘œλ“œλœ 이후에 λ°œμƒν•œλ‹€.

Syntax

$(document).ready(function () {
    /* statement */
});
$(window).load(function () {
    /* statement */
});

Vanilla JS

IE 9 이상

document.addEventListener('DOMContentLoaded', function () {
    /* statement */
});

IE8 μ΄ν•˜

IE8 μ΄ν•˜μ—μ„œλŠ” μ•„λž˜μ™€ 같이 μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

document.onreadystatechange = function () {
    if (document.readyState === 'complete') {
        /* statement */
    }
};

readyState 에 ν•„λ“œ κ°’ μœ ν˜•

readyState Description
uninitialized 아직 λ‘œλ”©μ΄ μ‹œμž‘λ˜μ§€ μ•ŠμŒ
loading λ‘œλ”©μ€‘
interactive μ–΄λŠμ •λ„ λ‘œλ“œκ°€ λ˜μ—ˆμœΌλ©° μ‚¬μš©μžκ°€ μƒν˜Έμž‘μš© ν•  수 있음
complete λ‘œλ”© μ™„λ£Œ
window.onload = function () {
    /* statement */
}

Detail

Feature Description
이벀트 버블링 NO
쀑단 κ°€λŠ₯ μ—¬λΆ€ NO
이벀트 μœ ν˜• UI μƒμ„±μ‹œ
지원 νƒœκ·Έ <body>, <frame>, <iframe>, <img>, <input type="image">, <link>, <script>, <style>
DOM 버전 Level 2 이벀트

μ‹œλ§¨ν‹± (Semantic) λ§ˆν¬μ—…

λΈŒλΌμš°μ €κ°€ μ›Ή λ¬Έμ„œ (HTML) λ₯Ό μ •ν™•νžˆ 읽어내기 μœ„ν•˜μ—¬ μ •λ³΄μ˜ μ˜λ―Έμ— λ§žλŠ” HTML Tag λ₯Ό μ΄μš©ν•˜μ—¬ μž‘μ„±ν•˜λŠ” 것
좜λ ₯ ν˜•νƒœλŠ” <div> 와 별 μ°¨μ΄λŠ” μ—†λ‹€.

μž₯점

  • μ›Ή 접근성이 쒋아짐
  • SEO (Search Engine Optimization) κ°œμ„  효과
  • μ½”λ“œ 가독성, μž¬μ‚¬μš©μ„±μ΄ 높아짐

λŒ€ν‘œμ μœΌλ‘œ <header> <nav> <section> <article> <footer> κ°€ μžˆλ‹€.

νƒœκ·Έ μ„€λͺ…
section λ¬Έμ„œμ˜ ꡬ획 (예: μž₯, 절)
article λ…λ¦½λœ μ½˜ν…μΈ  μ˜μ—­ (예: κ°œλ³„ 신문기사)
nav λ„€λΉ„κ²Œμ΄μ…˜ 메뉴 μ˜μ—­
aside λΆ€κ°€ μ½˜ν…μΈ (예: μ‚¬μ΄λ“œλ°”, κ΄‘κ³  λ“±) λ³Έλ¬Έ λ‚΄μš©κ³Ό 비ꡐ적 관련성이 적은 것
header 헀더글. λ³Έλ¬Έ μœ„μ— μ²¨κ°€ν•˜λŠ” 짧은 κΈ€ μ˜μ—­
footer λ°”λ‹₯κΈ€. λ³Έλ¬Έ μ•„λž˜μ— μ²¨κ°€ν•˜λŠ” 짧은 κΈ€ μ˜μ—­
hgroup 제λͺ©(h1 ~ h6) 을 κ·Έλ£Ήν™”ν•˜λŠ” μš”μ†Œ