HTML, CSS, JavaScript, ES6+, Sass, RWD 종합 레퍼런스
Source: 이듬(EUID) Front-End Master
HTML 기초
CSS 기초
JavaScript 기초
ES6+ 모던 자바스크립트
Sass 프리프로세서
반응형 웹 디자인 (RWD)
<!DOCTYPE html>
< html lang ="ko-KR ">
< head >
< meta charset ="UTF-8 ">
< title > 문서 제목</ title >
</ head >
< body >
<!-- 콘텐츠 -->
</ body >
</ html >
영역
역할
head
메타데이터, 타이틀, 스타일시트 연결
body
실제 화면에 표시되는 콘텐츠
용어
영문
설명
요소
Element
HTML의 기본 단위
여는 태그
Open tag
<태그>
닫는 태그
Close tag
</태그>
속성
Attribute
요소의 추가 정보
값
Value
속성에 할당되는 데이터
의미에 맞는 적절한 태그를 사용하여 문서의 구조를 명확하게 표현
태그
용도
<header>
머리글 영역
<nav>
내비게이션
<main>
주요 콘텐츠
<article>
독립적인 콘텐츠
<section>
구획
<aside>
사이드바
<footer>
바닥글 영역
< ul >
< li > 항목 1</ li >
< li > 항목 2</ li >
< li > 항목 3</ li >
</ ul >
< ol >
< li > 첫 번째</ li >
< li > 두 번째</ li >
< li > 세 번째</ li >
</ ol >
< dl >
< dt > 용어</ dt >
< dd > 정의 설명</ dd >
</ dl >
규칙:
<ul>, <ol> 내부에는 <li>만 사용 가능
<li> 내부에는 모든 요소 포함 가능
태그
용도
<h1> ~ <h6>
제목 (1이 가장 큼)
<p>
문단
<strong>
강조 (굵게)
<em>
강조 (기울임)
<br>
줄바꿈
<hr>
수평선
<!-- 링크 -->
< a href ="https://example.com " target ="_blank "> 링크 텍스트</ a >
<!-- 이미지 -->
< img src ="image.jpg " alt ="대체 텍스트 ">
<!-- 이미지 + 캡션 -->
< figure >
< img src ="image.jpg " alt ="설명 ">
< figcaption > 이미지 캡션</ figcaption >
</ figure >
선택자 {
속성1: 값1;
속성2: 값2;
}
< p style ="color: red; "> 텍스트</ p >
< head >
< style >
p { color : red; }
</ style >
</ head >
3) 외부 스타일 (External) ✅ 권장
< head >
< link rel ="stylesheet " href ="styles.css ">
</ head >
선택자
문법
예시
전체
*
* { margin: 0; }
태그
태그명
p { color: red; }
클래스
.클래스명
.box { width: 100px; }
아이디
#아이디명
#header { height: 50px; }
/* href 속성을 가진 a 태그 */
a [href ] { color : blue; }
/* type이 text인 input */
input [type = "text" ] { border : 1px solid; }
선택자
상태
:hover
마우스 오버
:active
마우스 클릭 중
:focus
키보드 포커스
:first-child
첫 번째 자식
:last-child
마지막 자식
:nth-child(n)
n번째 자식
/* 접근성을 고려한 스타일 */
a : hover ,
a : focus {
border-bottom : 1px solid # 000 ;
}
/* 요소 앞에 콘텐츠 추가 */
.item ::before {
content : "▶ " ;
}
/* 요소 뒤에 콘텐츠 추가 */
.item ::after {
content : " ◀" ;
}
/* 첫 번째 줄 */
p ::first-line { font-weight : bold; }
/* 첫 번째 글자 */
p ::first-letter { font-size : 2em ; }
부모 요소의 스타일이 자식에게 전달
color, font-family 등 텍스트 관련 속성은 상속됨
margin, padding, border 등은 상속되지 않음
1. !important (최우선)
2. 인라인 스타일
3. #id 선택자
4. .class 선택자
5. 태그 선택자
6. 상속된 스타일
// 변수 선언
var name ;
// 값 할당
name = "JavaScript" ;
// 선언과 할당 동시에
var course = "Front-End Master" ;
타입
예시
설명
String
"Hello", 'World'
문자열
Number
42, 3.14
숫자
Boolean
true, false
논리값
undefined
undefined
미정의
null
null
빈 값
Symbol
Symbol()
고유 식별자 (ES6)
타입
예시
Object
{ name: "Kim", age: 30 }
Array
[1, 2, 3, 4, 5]
Function
function() { }
소스 코드의 고정된 값을 대표하는 표현
var stringLiteral = '온라인 강의' ; // 문자 리터럴
var numberLiteral = 42 ; // 숫자 리터럴
var booleanLiteral = true ; // 불리언 리터럴
var arrayLiteral = [ 1 , 2 , 3 ] ; // 배열 리터럴
var objectLiteral = { a : 1 } ; // 객체 리터럴
연산자
설명
예시
+
더하기
5 + 3 → 8
-
빼기
5 - 3 → 2
*
곱하기
5 * 3 → 15
/
나누기
6 / 3 → 2
%
나머지
5 % 3 → 2
연산자
설명
==
동등 (타입 변환)
===
일치 (타입 포함) ✅ 권장
!=
부등
!==
불일치
>, <
크다, 작다
>=, <=
크거나 같다, 작거나 같다
연산자
설명
&&
AND (그리고)
||
OR (또는)
!
NOT (부정)
4.1 JavaScript vs ECMAScript
구분
설명
JavaScript
프로그래밍 언어 (브라우저에서 동작)
ECMAScript
JavaScript의 표준 사양 (ECMA-262)
TC39
ECMAScript 표준화 위원회
// var는 함수 스코프
if ( true ) {
var x = 10 ;
}
console . log ( x ) ; // 10 (접근 가능 - 문제!)
// let은 블록 스코프
if ( true ) {
let y = 10 ;
}
console . log ( y ) ; // ReferenceError (접근 불가)
let 특징:
블록 {} 내에서만 유효
선언 전 접근 시 ReferenceError
재선언 불가, 재할당 가능
const PI = 3.14159 ;
PI = 3.14 ; // TypeError: 재할당 불가
// 단, 객체의 속성은 변경 가능
const user = { name : "Kim" } ;
user . name = "Lee" ; // 가능
user = { } ; // TypeError: 재할당 불가
const 특징:
읽기 전용 참조 생성
재선언, 재할당 불가
객체 내부 값은 변경 가능
// 변경되는 값 → let
let count = 0 ;
count ++ ;
// 변경되지 않는 값 → const
const API_URL = 'https://api.example.com' ;
const config = { debug : true } ;
const name = "Kim" ;
const age = 30 ;
// 기존 방식
var message = "이름: " + name + ", 나이: " + age ;
// ES6 템플릿 리터럴
const message = `이름: ${ name } , 나이: ${ age } ` ;
// 여러 줄 문자열
const html = `
<div>
<h1>${ title } </h1>
<p>${ content } </p>
</div>
` ;
// 기존 함수
function add ( a , b ) {
return a + b ;
}
// 화살표 함수
const add = ( a , b ) => a + b ;
// 매개변수가 하나일 때
const double = x => x * 2 ;
// 본문이 여러 줄일 때
const greet = name => {
const message = `Hello, ${ name } !` ;
return message ;
} ;
const colors = [ 'red' , 'green' , 'blue' ] ;
// 기존 방식
var first = colors [ 0 ] ;
var second = colors [ 1 ] ;
// 구조 분해
const [ first , second , third ] = colors ;
const user = { name : 'Kim' , age : 30 , city : 'Seoul' } ;
// 기존 방식
var name = user . name ;
var age = user . age ;
// 구조 분해
const { name, age, city } = user ;
// 새 변수명 지정
const { name : userName , age : userAge } = user ;
// 배열 펼치기
const arr1 = [ 1 , 2 , 3 ] ;
const arr2 = [ ...arr1 , 4 , 5 ] ; // [1, 2, 3, 4, 5]
// 객체 펼치기
const obj1 = { a : 1 , b : 2 } ;
const obj2 = { ...obj1 , c : 3 } ; // { a: 1, b: 2, c: 3 }
// 함수 인자로 사용
const numbers = [ 1 , 2 , 3 ] ;
Math . max ( ...numbers ) ; // 3
CSS 전처리기(Preprocessor)로, CSS를 더 효율적으로 작성할 수 있게 해주는 도구
구분
특징
Sass
들여쓰기 기반, 중괄호/세미콜론 없음
SCSS
CSS와 유사한 문법, 중괄호/세미콜론 사용 ✅ 권장
// 변수 정의
$primary-color : #3498db ;
$font-size : 16px ;
$spacing : 20px ;
// 사용
.button {
background-color : $primary-color ;
font-size : $font-size ;
padding : $spacing ;
}
.nav {
background : #333 ;
ul {
list-style : none ;
li {
display : inline-block ;
a {
color : white ;
& :hover {
color : yellow ;
}
}
}
}
}
// 정의
@mixin flex-center {
display : flex ;
justify-content : center ;
align-items : center ;
}
@mixin button ($bg-color ) {
background : $bg-color ;
padding : 10px 20px ;
border : none ;
border-radius : 4px ;
}
// 사용
.container {
@include flex-center ;
}
.btn-primary {
@include button (#3498db );
}
%button-base {
padding : 10px 20px ;
border : none ;
border-radius : 4px ;
}
.btn-primary {
@extend %button-base ;
background : blue ;
}
.btn-secondary {
@extend %button-base ;
background : gray ;
}
Responsive Web Design: 다양한 기기와 화면 크기에 적응하는 웹 설계 방식
.container {
width : 100% ;
max-width : 1200px ;
}
.column {
width : 33.33% ; /* 비율 기반 */
}
2) 유연한 이미지 (Fluid Images)
img {
max-width : 100% ;
height : auto;
}
3) 미디어 쿼리 (Media Queries)
/* 모바일 (기본) */
.container {
width : 100% ;
}
/* 태블릿 */
@media (min-width : 768px ) {
.container {
width : 750px ;
}
}
/* 데스크탑 */
@media (min-width : 1024px ) {
.container {
width : 960px ;
}
}
/* 대형 화면 */
@media (min-width : 1200px ) {
.container {
width : 1140px ;
}
}
기기
브레이크포인트
모바일
< 768px
태블릿
768px ~ 1023px
데스크탑
1024px ~ 1199px
대형 화면
≥ 1200px
< meta name ="viewport " content ="width=device-width, initial-scale=1.0 ">
속성
설명
width=device-width
기기 너비에 맞춤
initial-scale=1.0
초기 확대 비율
user-scalable=no
사용자 확대/축소 비활성화
<!DOCTYPE html>
< html lang ="ko ">
< head >
< meta charset ="UTF-8 ">
< meta name ="viewport " content ="width=device-width, initial-scale=1.0 ">
< title > 제목</ title >
< link rel ="stylesheet " href ="styles.css ">
</ head >
< body >
< header > </ header >
< main > </ main >
< footer > </ footer >
< script src ="script.js "> </ script >
</ body >
</ html >
┌─────────────────────────────┐
│ margin │
│ ┌──────────────────────┐ │
│ │ border │ │
│ │ ┌───────────────┐ │ │
│ │ │ padding │ │ │
│ │ │ ┌─────────┐ │ │ │
│ │ │ │ content │ │ │ │
│ │ │ └─────────┘ │ │ │
│ │ └───────────────┘ │ │
│ └──────────────────────┘ │
└─────────────────────────────┘
기능
ES5
ES6+
변수
var
let, const
문자열
'Hello ' + name
`Hello ${name}`
함수
function(x) { return x; }
x => x
객체
{ name: name }
{ name }
Source: 이듬(EUID) Front-End Master
📚 너드보드 기술블로그 더보기 →
🚀 너드보드 7일 무료체험 해보기 →
🔥 7일 한정 특가: 99,000원 → 29,000원