보일러 플레이트 : 변경 없이 다시 사용할 수 있는 프로그램(코드)
HTML5 보일러 플레이트
- HTML5 의 새로운 요소(
<header>
,<section>
등) 사용에 도움 - 안정적인 하위호환성 제공
- Polyfill(폴리필)
- 점진적인 기능 향상을 염두(새로운 코드 삽입을 위한 최적의 구조)
- 최적화 버전 유지
웹브라우저에서 설치되어 있지 않은(동작하지 못하는) 기능을 제공하는 행위나 기술
Modernizr 에서 제공하는 폴리필 목록
Polyfill 예시
- html5shiv: HTML5 의 Sectioning Elements(
<header>
,<footer>
,<section>
등) 를 지원하지 않는 브라우저를 위한 라이브러리 - respond: CSS
@media
를 IE6 ~ IE8 버전에서 사용 가능하게 만들어주는 라이브러리 - selectivizr: CSS
border-radius
와box-shadow
,liner-gradient
를 IE6 ~ IE9 버전에서 지원하기 위한 라이브러리
문자가 인코딩되는 방식을 설정
<meta charset="UTF-8"/>
UTF-8
: 초성, 중성, 종성으로 구분하여 문자를 작성(권장)
EUC-KR
: 하나의 완성된 글자를 인식
웹페이지에 대한 간단한 설명을 입력
<meta name="description" content="페이지 설명"/>
name
: 메타 데이터의 이름(종류)를 지정하는 속성
content
: name
, http-equiv
속성의 값을 입력하는 속성
Internet Explorer 브라우저에서 렌더링(Rendering)되는 방식을 설정(호환성보기, 쿼크모드 설정)
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
http-equiv
(equivalent)
: HTML 문서를 읽기 전에 브라우저에게 전달한 정보의 종류를 입력하는 속성
IE=5
IE=7
IE=EmulateIE7
IE=8
IE=EmulateIE8
IE=edge
(권장)
: IE8 이상 버전에서 항상 최신 표준 모드로 렌더링
마이크로소프트는 실험적인 프로젝트가 아니면
IE=edge
모드를 권장함.
웹페이지가 Display(화면)에 표현되는 방식(Viewport)을 설정
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, maximum-scale=1, minimum-scale=1"/>
width=device-width
: Display 의 width
값을 각 디바이스(장치, device)의 width
값과 동일하게 적용
width=480,
width=device-width,
height=device-height,
etc...
initial-scale=1
: Display 의 초기 화면 배율(확대의 정도) 설정
user-scalable=no
: 사용자가 디바이스 화면을 '확대/축소'할 수 있는지 설정
확대: yes,
축소: no
maximum-scale=1
: 사용자가 디바이스를 '확대'할 수 있는 최대치의 값(최대 10배)
minimum-scale=1
: 사용자가 디바이스를 '축소'할 수 있는 최대치의 값(최대 10배)
웹페이지가 소셜 미디어(페이스북 등)로 공유될 때 우선적으로 활용되는 정보
<meta property="og:type" content="website"/>
<meta property="og:title" content="웹페이지의 제목"/>
<meta property="og:description" content="웹페이지의 간단한 설명"/>
<meta property="og:image" content="웹페이지의 대표 이미지 URL"/>
<meta property="og:url" content="웹페이지 URL"/>
웹페이지가 소셜 미디어(트위터)로 공유될 때 우선적으로 활용되는 정보
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="웹페이지의 제목"/>
<meta name="twitter:description" content="웹페이지의 간단한 설명"/>
<meta name="twitter:image" content="웹페이지의 대표 이미지 URL"/>
<meta name="twitter:url" content="웹페이지 URL"/>
웹페이지를 나타내는 아이콘, 웹페이지의 로고를 설정
IE6 ~ IE10 버전은 'public' 루트에 favicon.ico
파일을 위치하면 자동으로 로딩하기 때문에 <link>
를 작성할 필요가 없음.
IE11 버전은 .png
사용.
<link rel="icon" href="favicon.png"/>
<link rel="apple-touch-icon-precomposed" href="favicon.png"/>
<!--<link rel="shortcut icon" href="favicon.ico" />-->
favicon.png
: 192 x 192 (px)
favicon.png
, touchicon.png
: 158 x 158 (px)
favicon.ico
: 16 x 16, 32 x 32 (px)
크롬 앱(Android), 네이버 앱(Android), 크롬 브라우저(windows) 화면
rel="apple-touch-icon-precomposed"
: iOS 2.0 / Android 2.1 이상 Touch Icon (192x192 / 158x158)
IE10 미만(IE9 이하) 버전에서만 동작하는 조건문(if)
IE 각 버전에 맞는 기능이나 파일, 디자인 등의 별도 삽입을 위해 사용.
<!--[if lt ie 9]>
<script src="js/lib/respond.min.js"></script>
<![endif]-->
기호 | 뜻 | 예시 | 예시 해석 |
---|---|---|---|
! |
부정 (not) |
<!--[if !IE]><![endif]--> |
IE브라우저가 아닐 때 |
lt |
작다, 미만 (less than) |
<!--[if lt IE 9]><![endif]--> |
IE9 미만 |
lte |
작거나 같다, 이하 (less than equal) |
<!--[if lte IE 8]><![endif]--> |
IE8 이하 |
gt |
크다, 초과 (greater than) |
<!--[if gt IE 6]><![endif]--> |
IE6 초과 |
gte |
크거나 같다, 이상 (greater than equal) |
<!--[if gte IE 7]><![endif]--> |
IE7 이상 |
& |
그리고 (and) |
<!--[if (gt IE 6) & (lte IE 9)]><![endif]--> |
IE6 초과 ~ IE9 이하 |
| |
또는 (or) |
<!--[if (IE 7) | (IE 9)]><![endif]--> <!--[if IE 7 | IE 9]><![endif]--> |
IE7 또는 IE9 |
JavaScript를 '엄격 모드'로 사용
'use strict';
'Strict Mode'는 ECMAScript 5 버전에 있는 새로운 기능으로써, 당신의 프로그램 또는 함수를 엄격한 운용 콘텍스트 안에서 실행시킬 수 있게끔 합니다. 이 엄격한 콘텍스트는 몇가지 액션들을 실행할 수 없도록 하며, 좀 더 많은 예외를 발생시킵니다.
- 일반적인 코딩 실수에서 예외 처리
- 안전하지 않은 액션에 대한 예외 처리 (ex: 전역 객체로 접근)
- 혼란스럽거나 제대로 고려되지 않는 기능들을 비활성화
https://github.com/scottjehl/Respond
CSS @media 를 IE6 ~ IE8 버전에서 사용 가능하게 만들어주는 JavaScript Library.
조건부 주석(Conditional Comments)과 함께 사용
<!--[if lt ie 9]>
<script src="js/plugins/respond.min.js"></script>
<![endif]-->
HTML5 와 CSS3 에 정의된 요소(HTML Elements), 속성(CSS Property)들에 대한 지원 여부를 점검하는 JavaScript Library.
<script src="js/libs/modernizr-2.8.3.min.js"></script>
Modernizr
3.0 이후 버전에서는 'NPM'의 노드 모듈로 빌드 시스템을 제공합니다.
linear-gradient
를 사용할 수 없을 경우 다른 속성과 값으로 해결할 수 있습니다.
header {
background: linear-gradient(to right, red, orange);
}
.no-cssgradients header {
background: url("/images/bg-gradient.jpg");
}
현재 브라우저에서 특정 기능이 동작하는지 확인할 수 있습니다.
특정 기능이 동작하지 않을 경우 동작하는 추가 스크립트를 작성할 수 있습니다.
// SVG 사용이 가능한지 확인
if (Modernizr.svg) console.log('svg: Available');
// `input`요소의 `placeholder`속성 사용이 가능한지 확인
if (!Modernizr.input.placeholder) {
var script = document.createElement('script');
script.src = 'https://cdnjs.cloudflare.com/ajax/libs/placeholders/4.0.1/placeholders.min.js';
document.head.appendChild(script);
}
// CSS `@media`처럼 사용
var minWidth1000 = Modernizr.mq('(min-width: 1000px)');
if (minWidth1000) {
console.log('min-width: 1000px');
}
https://github.com/LeaVerou/prefixfree
-ms-
, -webkit-
등의 공급 업체 접두사(Vendor Prefix)를 사용하지 않아도 크로스브라우징이 가능한 JavaScript Plugin.
접두어 | 공급업체 |
---|---|
-webkit- | 크롬, 사파리, 오페라의 최신 버전 |
-mos- | 파이어폭스 |
-o- | 오페라의 이전 버전 |
-ms- | 인터넷 익스플로러 |
<script src="js/plugins/prefixfree.min.js"></script>
HTML 과 JavaScript 사이의 상호 작용을 강조한 경량화된 JavaScript Library.
jQuery 의 장점
- 쉬운 DOM 선택(CSS 선택자 활용)
- 편리한 Event 활용
- 특수효과 및 애니메이션
- Ajax
- 확장성 등...
ver 1.12.4
<script src="js/libs/jquery.min.js"></script>
https://github.com/gdsmith/jquery.easing
http://gsgd.co.uk/sandbox/jquery/easing/
jQuery 에서 Easing functions(equation, 애니메이션 진행 그래프) 사용할 수 있는 jQuery Plugin.
<script src="js/libs/jquery.easing.min.js"></script>
'선택자'와 {
사이에 한 번 띄어쓰기.
'속성'의 :
뒤에 한 번 띄어쓰기.
/* 권장하지 않음 */
.selector{
width:100px;
position:relative;
color:red;
}
.selector
{
width: 100px;
position: relative;
color: red;
}
/* 추천 */
.selector {
width: 100px;
position: relative;
color: red;
}
여러 개별속성을 작성하지 않고 단축속성을 사용한 단순한 형태로 작성.
/* 권장하지 않음 */
.selector {
font-family: dotum, georgia, serif;
font-size: 20px;
line-height: 1.6;
padding-bottom: 20px;
padding-left: 10px;
padding-right: 10px;
padding-top: 0;
}
/* 추천 */
.selector {
font: 20px/1.6 dotum, georgia, serif;
padding: 0 10px 20px 10px;
}
'0' 값에는 px
, %
, em
등의 단위를 사용하지 않음.
/* 권장하지 않음 */
.selector {
margin-right: 0px;
text-indent: 0%;
letter-spacing: 0em;
}
/* 추천 */
.selector {
margin-right: 0;
text-indent: 0;
letter-spacing: 0;
}
여러 '선택자'를 입력할 경우 줄바꿈을 하여 가독성을 확보.
/* 권장하지 않음 */
.selector1, .selector2, .selector3 {
position: absolute;
}
/* 추천 */
.selector1,
.selector2,
.selector3 {
position: absolute;
}
각 섹션에는 쉽게 알아볼 수 있도록 주석 처리
/* HEADER */
header {
}
/* VISUAL */
.visual {
}
/* FOOTER */
footer {
}