λͺ©μ°¨
1 λ°°κ²½
μ΄ λ¬Έμλ HTML λ° CSSμ λν νμ λ° μ€νμΌ κ·μΉμ μ μνλ€. νμ , μ½λ νμ§μ κ°μ νκ³ μ§μ μΈνλΌλ₯Ό νμ±ννλ κ²μ λͺ©νλ‘ νλ€.
2 μΌλ°
2.1 μΌλ° μ€νμΌ κ·μΉ
2.1.1 νλ‘ν μ½(Protocol)
리μμ€μ HTTPSλ₯Ό λ£λ κ²μ΄ μ’λ€.
HTTPS(
https:
) λ μ΄λ―Έμ§ λ° κΈ°ν λ―Έλμ΄ νμΌ, μ€νμΌ μνΈ λ° μ€ν¬λ¦½νΈμ λΆμ΄λ κ²μ΄ μ’λ€.
<!-- κΆμ₯νμ§ μμ : νλ‘ν μ½ μλ΅ -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<!-- κΆμ₯νμ§ μμ : HTTP μ¬μ© -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<!-- κΆμ₯ -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
/* κΆμ₯νμ§ μμ : νλ‘ν μ½ μλ΅ */
@import '//fonts.googleapis.com/css?family=Open+Sans';
<!-- κΆμ₯νμ§ μμ : HTTP μ¬μ© -->
@import 'http://fonts.googleapis.com/css?family=Open+Sans';
/* κΆμ₯ */
@import 'https://fonts.googleapis.com/css?family=Open+Sans';
2.2 μΌλ° μμ κ·μΉ
2.2.1 λ€μ¬μ°κΈ°
ν μΉΈμ 2μΉΈ λ€μ¬μ°κΈ°.
λ€μ¬μ°κΈ°λ₯Ό μν΄ νμ μ¬μ©νκ±°λ 곡백μ νΌν©νμ§ λ§ κ².
2.2.2 λλ¬Έμ μ¬μ©
- λͺ¨λ μ½λλ μλ¬Έμλ₯Ό μ΄λ€.
- HTMLμ μμμ΄λ¦, μμ±, μμ±κ°(λ¨, text/CDATA μ μΈ), CSS μ νμ, μμ±, μμ±κ°(λ¬Έμμ΄ μ μΈ)μ μ μ©λλ€.
<!-- κΆμ₯νμ§ μμ -->
<A HREF="/">Home</A>
<!-- κΆμ₯ -->
<img src="google.png" alt="Google">
/* κΆμ₯νμ§ μμ */
color: #E5E5E5;
/* κΆμ₯ */
color: #e5e5e5;
2.2.3 곡백 μ§μ°κΈ°
νκ·Έμ ν μ€νΈ λ€μ 곡백μ λΆνμνλ€.
2.3 μΌλ° λ©ν κ·μΉ
2.3.1 μΈμ½λ©
UTF-8
μ μ¬μ©νλ€.
<meta charset="utf-8">
μ ν΅ν΄ HTML ν
νλ¦Ώ λ° λ¬Έμμ μΈμ½λ©μ μ§μ .
2.3.2 μ£Όμμ μ¬μ©ν μ½λ©νΈ
μ£Όμμ μ¬μ©νμ¬ μ½λλ 무μμ λ€λ£¨κ³ , μ΄λ€ λͺ©μ μ΄λ©° μ μ¬μ©λλμ§ μ½λλ₯Ό μ€λͺ ννλ κ²μ΄ μ’λ€.
2.3.3 μμ νλͺ©
μλ΅
3 HTML
3.1 HTML μ€νμΌ κ·μΉ
3.1.1 λ¬Έμ μ ν
- HTML5λ₯Ό μ¬μ©νλ€.
<!DOCTYPE html>..
(HTML μ μ¬μ©νλ κ²μ΄ μ’λ€. XHTML μ λΈλΌμ°μ μ μΈνλΌ μ§μμ΄ λΆμ‘±νκ³ HTML λ³΄λ€ μ΅μ ν 곡κ°μ΄ μ κΈ° λλ¬Έ.)
3.1.2 HTML μ ν¨μ±
- W3C HTML μ ν¨μ± κ²μ¬κΈ°λ₯Ό ν΅ν΄ κ²μ¬νλ€.
- μ ν¨ν HTMLμ μ¬μ©νλ κ²μ΄ μꡬμ¬ν λ° μ νμ λν νμ΅μ κΈ°μ¬νλ€.
/* κΆμ₯νμ§ μμ */
<title>Test</title>
<article>This is only a test.
/* κΆμ₯ */
<!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<article>This is only a test.</article>
3.1.3 μλ©ν±(Semantics)
- λͺ©μ μ λ°λΌ HTML μ¬μ©.
- μμ±λ λͺ©μ μ λν΄ *μμ(νκ·Έκ° μλλ€.)λ₯Ό μ¬μ©.
μλ₯Ό λ€μ΄ headingμ heading μμ,
p
μμλ λ¨λ½,a
μμλ anchors.
<!-- κΆμ₯νμ§ μμ -->
<div onlick="goToRecommendations();">All recommendations</div>
<!-- κΆμ₯ -->
<a href="recommendations/">All recommendations</a>
3.1.4 λ©ν°λ―Έλμ΄ λ체(Mulitimedia Fallback)
- λ©ν°λ―Έλμ΄μ λν λ체 μ½ν μΈ λ₯Ό μ 곡.
- canvas, μ΄λ―Έμ§, λΉλμ€, μ λλ©μ΄μ
κ°μ²΄μ κ°μ λ©ν°λ―Έλμ΄μ κ²½μ° λ체 μμΈμ€λ₯Ό μ 곡νλ€.
(μ΄λ―Έμ§μ λΉλμ€μ μλ―Έ μλ λ체 ν
μ€νΈ μ¬μ©(
alt
), μ€λμ€ μ€ν¬λ¦½νΈμ μΊ‘μ (κ°λ₯ν κ²½μ°)) - μ κ·Όμ±μ μν΄ λ체 μ½ν μΈ λ₯Ό μ 곡νλ κ²μ μ€μνλ€.
- μ€λ³΅λ μ΄λ―Έμ§λ μ₯μμ μΈ λͺ©μ μ κ°μ§ μ΄λ―Έμ§μ κ²½μ°
alt=""
μ κ°μ λ체 ν μ€νΈλ₯Ό μ¬μ©νμ§ μλλ€.)
<!-- κΆμ₯νμ§ μμ -->
<img src="spreadsheet.png">
<!-- κΆμ₯ -->
<img src="spreadsheet.png" alt="Spareadsheet screenshot.">
3.1.5 λΆλ¦¬μ μ°λ €μ¬ν
- ꡬ쑰(λ§ν¬μ ) / νλ©΄(μ€νμΌλ§) / λμ(μ€ν¬λ¦½νΈ) λ₯Ό μ격ν λΆλ¦¬νλ€. λμμμ ꡬ쑰λ₯Ό λΆλ¦¬νλ κ²μ μ μ§ κ΄λ¦¬μμ μ΄μ λ‘ μ€μνλ€.
<!-- κΆμ₯νμ§ μμ -->
<!DOCTYPE html>
<title>HTML</title>
<link rel="stylesheet" href="base.css" media="screen">
<link rel="stylesheet" href="grid.css" media="screen">
<link rel="stylesheet" href="print.css" media="print">
<h1 style="font-size: 1em;">HTML</h1>
<p>paragrahs</p>
<!-- κΆμ₯ -->
<!DOCTYPE html>
<link rel="stylesheet" href="default.css">
<h1>My first CSS-only redesign</h1>
<p>paragrahs</p>
3.1.6 μν°ν° μ°Έμ‘°(Entity Rerference)
3.1.7 Optional Tags
3.1.8 type
μμ±
text/css
,text/javascript
λ κΈ°λ³Έκ°μΌλ‘ νμνμ§ μλ€.
<!-- κΆμ₯νμ§ μμ -->
<link rel="stylesheet" href="https://www.google.com/css/maia.css" type="text/css">
<script src="https://www.google.com/js/gweb/analytics/autotrack.js" type="text/javascript"></script>
<!-- κΆμ₯ -->
<link rel="stylesheet" href="https://www.google.com/css/maia.css">
<script src="https://www.google.com/js/gweb/analytics/autotrack.js"></script>
3.2 HTML νμ κ·μΉ
3.2.3 HTML λ°μ΄ν
- μμ±κ°μ μΈμ©ν λ ν°λ°μ΄νλ₯Ό μ¬μ©.
<!-- κΆμ₯νμ§ μμ -->
<a class='maia-button maia-button-secondary'>Sign in</a>
<!-- κΆμ₯ -->
<a class="maia-button maia-button-secondary">Sign in</a>
4 CSS
4.1 CSS μ€νμΌ κ·μΉ
4.1.1 CSS μ ν¨μ±
W3C CSS μ ν¨μ± κ²μ¬κΈ° ν΄μ νμ©ν΄ μ ν¨ν CSSλ₯Ό μ¬μ©. W3C CSS validator
4.1.2 id
λ° class
μ΄λ¦ μ§μ
- μλ―Έμλ λ€μ΄λ°μ΄κ±°λ ννλ§μ μν λ€μ΄λ°μ μ’μ§ μλ€.
(νμ μ μ§λ³΄μ ν λ
button-green
μ 컬λ¬λ₯Ό redλ‘ λ³κ²½νλ €λ©΄ μ΄λ¦κ³Ό λ§μ§ μμ μ’μ§ μλ€. (κ·Έλ λ€κ³ ν΄λμ€λͺ μbutton-red
λ‘ λͺ¨λ λ°κΎΈλ κ²λ μ ν©νμ§ μλ€.)κ·Έλ¬λ―λ‘ ννλ§μ μν λ€μ΄λ°μ μ§μνλ κ²μ΄ μ’λ€.) - κΈ°λ₯ λλ μΌλ°μ μΈ λ€μ΄λ°μ μ¬μ©νλ κ²μ΄ μ’λ€.
/* κΆμ₯νμ§ μμ : μλ―Έ μμ */
#yee-1901 {}
/* κΆμ₯νμ§ μμ : ννλ§μ μν λ€μ΄λ° */
.button-green {}
.clear {}
/* κΆμ₯ : νΉμ κ°λ₯ν λ€μ΄λ° */
#gallery {}
#login {}
.video {}
/* κΆμ₯ : μΌλ°μ μΈ λ€μ΄λ° */
.aux {} /* Auxiliary 보쑰μ, μΆκ°μ μ½μ */
.alt {} /* Alternative λ체, λμ μ½μ */
4.1.3 id
λ° class
μ΄λ¦ μ€νμΌ
- κ°λ₯νλ©΄ 짧μ§λ§ νμν λ§νΌ μ¬μ©
- μ΅λν κ°λ΅νκ² μ λ¬νλ©° μ΄ν΄νκΈ° μ½κ² λ€μ΄λ°μΌλ‘ λ©μΈμ§λ₯Ό μ λ¬ν μ μλλ‘ κ³ λ―Όνλ€.
/* κΆμ₯νμ§ μμ : λ무 κΈΈκ±°λ λ¬΄μ¨ μλ―ΈμΈμ§ μ μ μλ€ */
#navigation {}
.atr {}
/* κΆμ₯ : κ°λ₯νλ©΄ μΆμ½νμ¬ μ°λ, μΆμ½ν μ μλ κ²μ μ΅μ§λ‘ μΆμ½νμ§ μλλ€. */
#nav {}
.author {}
4.1.4 νμ μ νμ(Type Selector)
- κΌ νμν κ²½μ° μμ(νκ·Έ)μ ν¨κ»
id
,class
λ₯Ό μ§μ νμ¬ λ€μ΄λ°νμ§ μλλ€. - λΆνμν λΆλͺ¨, μ‘°μ μ νμμ μ¬μ©μ νΌνλ κ²μ΄ μ’λ€.
/* κΆμ₯νμ§ μμ */
ul#example {}
div.error {}
/* κΆμ₯ */
#example {}
.error {}
4.1.5 μμ± μ€μ¬μ°κΈ°
κ°λ₯νλ©΄ μμ±μ μ€μ¬μ΄λ€.(μ½λμ ν¨μ¨μ±κ³Ό μ΄ν΄μ μ μ©)
/* κΆμ₯νμ§ μμ */
.error {
border-top-style: none;
font-family: palatino, georgia, serif;
font-size: 100%;
line-height: 1.6;
padding-bottom: 2em;
padding-left: 1em;
padding-right: 1em;
padding-top: 0;
background-image: url('background-image.jpg');
background-repeat: no-repeat;
background-position: left top;
}
/* κΆμ₯ */
.error {
border-top: 0;
font: 100%/1.6 palatino, georgia, serif;
padding: 0 1em 2em;
background: url('background-image.jpg') no-repeat left top;
}
λ€μ΄λ² μ½λ© 컨벀μ μμλ fontμ κ΄λ ¨λ μμ±μ μΆμ½νμ¬ μ¬μ©νλ κ²μ μΆμ²νμ§ μλλ€κ³ νλλ° google style guideμμλ font μμ±λ μΆμ½μ¬μ©μ κΆμ₯νκ³ μλ€.
4.1.6 '0' λ¨μ
νμν κ²½μ°κ° μλλΌλ©΄ '0'κ°μ λΆμ§μ§ μλλ€.
flex : 0px; /* flex-basisμμ±μ 0λ€μλ λ¨μλ₯Ό κΌ μ¨μ€λ€ */
flex: 1 1 0px; /* λ¨μλ₯Ό νμμμΌλ IE11λλ¬Έμ λ£μ΄μ€μΌ νλ€ */
margin: 0;
padding: 0;
4.1.7 '0' μλ΅
-1 κ³Ό 1 μ¬μ΄μ 0μ μλ΅μ΄ κ°λ₯νλ€.
font-sizze: .8em; /* font-size: 0.8em; */
4.1.8 16μ§μ νκΈ°λ²
κ°λ₯νλ©΄ μΈμμ 16μ§μ νκΈ°λ²μ μ¬μ©νλ κ²μ΄ μ§§κ³ κ°κ²°νλ€.
/* κΆμ₯νμ§ μμ */
color : #eebbcc;
/* κΆμ₯ */
color: #ebc;
4.1.9 ν리ν½μ€(Prefixs)
- λκ·λͺ¨ νλ‘μ νΈμ λ€λ₯Έ νλ‘μ νΈ λλ μΈλΆ μ¬μ΄νΈμ ν¬ν¨λ μ½λμ κ²½μ° id λ° ν΄λμ€ μ΄λ¦μ λ€μμ€νμ΄μ€λ‘ μ¬μ©νλ€.
- λ€μμ€νμ΄μ€λ₯Ό μ¬μ©νλ©΄ μ΄λ¦ μΆ©λμ λ°©μ§νλ©° μ μ§κ΄λ¦¬κ° λ μ½λ€.
/* Adwords */
.adw-help {}
/* Maia */
#main-note {}
4.1.10 id
λ° class
μ΄λ¦ κ΅¬λΆ κΈ°νΈ
- id, class μ μ΄ν΄μ κ²μ κ°λ₯μ±μ λμ΄κΈ° μν΄ λ¨μ΄μ λ¨μ΄ μ¬μ΄μ νμ΄ν(-)μ΄ μλ λ€λ₯Έ λ¬Έμμ μ½μ΄μ λ¨μ΄λ₯Ό ν©μ±νμ§ μλλ€.
/* κΆμ₯νμ§ μμ : demoμ imageμ ꡬλΆμ΄ μλ€ */
.demoimage {}
/* κΆμ₯νμ§ μμ : μΈλμ€μ½μ΄κ° μλ νμ΄ν(-)μ μ¬μ© */
.error_code {}
#video-id {}
.ads-sample {}
νμ΄ν(-/μ€λ€μ΄ν¬ νκΈ°λ²)μ μ¬μ©νλ κ²μ κ΅¬κΈ μλΉμ€μ μ€νμΌκ°μ΄λμ΄μ§ μ λμ μΌλ‘ λ§μΆ°μΌ νλ λ΄μ©μ΄ μλλ€.
4.2 CSS μμ κ·μΉ
4.2.1 μ μΈ(μμ±) μμ
- μνλ²³ μμλ‘ μμ±μ μ μΈ.
- vendor-prefix μ μΈμ μνλ²³ μ μΈμ 무μνλ€.
- λ¨, μ λμ΄κ° λΆμ§ μλ μμ±μ κ°μ₯ λ§μ§λ§μ μ μΈ.
.sample {
background-color: #000;
border: 1px solid #eee;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
color: #222;
text-align: center;
}
λ€μ΄λ² μ½λ©μ»¨λ²€μ μ κ²½μ°, styleμ μ°μμλ μ€μλμ λ°λ₯Έ μ μΈμμλ₯Ό κ°μ§κ³ μλ€.
λ³ΈμΈνν λ§λ κ²μ μ°Ύμμ μ°λ κ²μ΄ μ’μ κ² κ°λ€(λ΄ μκ°)
μμ | μλ―Έ | λνλλ μμ±(κ·Έλ£Ή) | κ΄λ ¨ μμ± |
---|---|---|---|
1 | νμ | display | visibility |
2 | λμΉ¨ | overflow | - |
3 | νλ¦ | float | clear |
4 | μμΉ | position | top, right, left, bottom, z-index |
5 | ν¬κΈ° | width & height | - |
6 | κ°κ²© | margin & padding(κ·Έλ£Ή) | - |
7 | ν λ리 | border(κ·Έλ£Ή) | - |
8 | λ°°κ²½ | background(κ·Έλ£Ή) | - |
9 | ν°νΈ | font(κ·Έλ£Ή) | color, letter-spacing, text-align, text-decoration, text-indent,vertical-align, white-space λ± |
10 | κΈ°ν | - | μμ μΈκΈλμ§ μμ λλ¨Έμ§ μμ±λ€λ‘ ν°νΈμ κ΄λ ¨ μμ± μ΄νμ μ μΈνλ©°, κΈ°ν μμ± λ΄μ μ μΈ μμλ 무κ΄ν¨. |
* [μμ± μ μΈ μμ κΈ°μ€: 1~6 : λ μ΄μμ, 7~8: ν λ리/λ°°κ²½, 9: ν°νΈ, 10: κΈ°ν] |
4.2.2 λΈλ‘ λ΄ λ΄μ© λ€μ¬μ°κΈ°
- λͺ¨λ λΈλ‘ λ΄λΆμμ λ€μ¬μ°κΈ°λ₯Ό νλ€.
@media screen {
html {
background: #fff;
color: #444;
}
}
4.2.3 μ μΈ μ€μ§
- λ§μ§λ§ μμ±μλ μΈλ―Έμ½λ‘ (;)μ μ μΈν΄λ 무방νλ μΌκ΄μ± μ μ§μ νμ₯μ±μ μν΄ λͺ¨λ μμ±μ μΈ λλ€ μΈλ―Έμ½λ‘ μ λΆμΈλ€.
4.2.4 μμ±μ΄λ¦ λ€ μ¬λ°±
- μμ±κ³Ό κ° μ¬μ΄μ νμΉΈμ μ¬λ°±μ λλ€.
/* κΆμ₯νμ§ μμ : μ€νμ΄μ€κ° μμ */
#video{
font-weight:bold;
}
/* κΆμ₯νμ§ μμ */
#video
{
margin-top: 1em;
}
/* κΆμ₯ */
#viedeo {
font-weight: bold;
}
4.2.5 μ μΈ λΈλ‘ λΆλ¦¬
- μ νμμ μμ± μ μΈ λΈλ‘ μ¬μ΄μ 곡백μ μ¬μ©.
- μ νμκ° μ¬λΏμΌ κ²½μ° κ° μ νμ κ° μ€λ°κΏ νμ¬ κ΅¬λΆ.
/* κΆμ₯νμ§ μμ */
a:focus, a:active {
position: relative; top: 1px;
}
/* κΆμ₯ */
h1,
h2,
h3 {
font-weight: bold;
line-height: 1.2;
}
4.2.7 λ°μ΄ν μ¬μ©
- μ νμ μμ±κ°μ μ§μ ν λ
"ν° λ°μ΄ν"
λμ'μμ λ°μ΄ν'
λ₯Ό μ¬μ©νλ€. - background μμ±μ urlκ°μλ λ°μ΄νλ₯Ό μ¬μ©νμ§ μλλ€.
@charset
κ·μΉμ μ¬μ©ν λλ ν°λ°μ΄νλ₯Ό μ¬μ©νλ€.(μμλ°μ΄νλ νμ©λμ§ μμ)
/* κΆμ₯νμ§ μμ */
@import url("https://www.google.com/css/maia.css");
html {
font-family: "open sans", arial, sans-serif;
}
/* κΆμ₯ */
@import url('https://www.google.com/css/maia.css');
html {
font-family: 'open sans', arial, sans-serif;
}
4.3 CSS λ©ν(meta) κ·μΉ
4.3.1 μΉμ μ£Όμ
- μΉμ μ£Όμμ μμ±νμ¬ μΉμ μ κ·Έλ£Ήν νλ€.
- μΉμ κ° μ£Όμκ³Ό μ€ λ°κΏμΌλ‘ ꡬλΆνλ€.
/* Header */
#adw-header {}
/* Footer */
#adw-footer {}
/* Gallery */
.adw-gallery {}
μ΄λμ λλ λ°λΌ λ§μΆλ λ€μ΄λ°μ΄λ μμ±μμλ λ³ΈμΈμ κΈ°μ€μ λ§λ κ²μ μ°Ύμ μμ±νλ κ²μ΄ μ’μ κ² κ°λ€.π
Reference
https://google.github.io/styleguide/htmlcssguide.html#General_Style_Rules
'π©π»βπ»STUDY > Publishing' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μΉμ κ·Όμ±μ μ£Όμν΄μΌ ν λΆλΆ (0) | 2022.01.20 |
---|---|
NHN μ½λ©μ»¨λ²€μ pdf μλ£ (0) | 2021.09.09 |
μΉμ κ·Όμ±μ μν ν μ€νΈ μ¨κΉ μ²λ¦¬(blind text) (0) | 2021.04.29 |
μΉ νμ€μ±(Web Standards) (0) | 2020.09.17 |
μΉμ κ·Όμ±(Web Accessibility) (0) | 2020.09.17 |