WEB
CONF
.ASIA
참관
후기발표
NTS
@이상진 / @양현선
" 환산시 약 27만원 "
" 5장 이상 30% 할인"
Day 01
CSS 그리드 레이아웃
상향식 성능 향상
뉴스의 데이터 시각화
컬러 시스템 인터렉션
이벤트 Loop
디자인 철학
10:45 - 11:30
11:30 - 12:15
13:30 - 14:15
14:15 - 15:00
15:45 - 16:30
16:30 - 17:15
Day 02
Animation 고르기
Web App을 해킹하는 방법
험난한 업무 프로세스 진행하기
CSS 커스텀 속성의 전략적 사용
웹폰트 최적화
웹으로 특이하고 이상한 것 만들기
Day 01
CSS 그리드 레이아웃
상향식 성능 향상
뉴스의 데이터 시각화
컬러 시스템 인터렉션
이벤트 Loop
디자인 철학
10:45 - 11:30
11:30 - 12:15
13:30 - 14:15
14:15 - 15:00
15:45 - 16:30
16:30 - 17:15
Day 02
Animation 고르기
Web App을 해킹하는 방법
험난한 업무 프로세스 진행하기
CSS 커스텀 속성의 전략적 사용
웹폰트 최적화
웹으로 특이하고 이상한 것 만들기
디자인 철학
Design
Frontend
Backend
All
Day 01
CSS 그리드 레이아웃
상향식 성능 향상
뉴스의 데이터 시각화
컬러 시스템 인터렉션
이벤트 Loop
디자인 철학
10:45 - 11:30
11:30 - 12:15
13:30 - 14:15
14:15 - 15:00
15:45 - 16:30
16:30 - 17:15
Day 02
Animation 고르기
Web App을 해킹하는 방법
험난한 업무 프로세스 진행하기
CSS 커스텀 속성의 전략적 사용
웹폰트 최적화
웹으로 특이하고 이상한 것 만들기
뉴스의 데이터 시각화
디자인 철학
Design
Frontend
Backend
All
Day 01
CSS 그리드 레이아웃
상향식 성능 향상
뉴스의 데이터 시각화
컬러 시스템 인터렉션
이벤트 Loop
디자인 철학
10:45 - 11:30
11:30 - 12:15
13:30 - 14:15
14:15 - 15:00
15:45 - 16:30
16:30 - 17:15
Day 02
Animation 고르기
Web App을 해킹하는 방법
험난한 업무 프로세스 진행하기
CSS 커스텀 속성의 전략적 사용
웹폰트 최적화
웹으로 특이하고 이상한 것 만들기
CSS 그리드 레이아웃
CSS 커스텀 속성의 전략적 사용
웹폰트 최적화
웹으로 특이하고 이상한 것 만들기
이벤트 Loop
Animation고르기
Design
Frontend
Backend
All
Day 01
CSS 그리드 레이아웃
상향식 성능 향상
뉴스의 데이터 시각화
컬러 시스템 인터렉션
이벤트 Loop
디자인 철학
10:45 - 11:30
11:30 - 12:15
13:30 - 14:15
14:15 - 15:00
15:45 - 16:30
16:30 - 17:15
Day 02
Animation 고르기
Web App을 해킹하는 방법
험난한 업무 프로세스 진행하기
CSS 커스텀 속성의 전략적 사용
웹폰트 최적화
웹으로 특이하고 이상한 것 만들기
상향식 성능 향상
Web App을 해킹하는 방법
Design
Frontend
Backend
All
Day 01
CSS 그리드 레이아웃
상향식 성능 향상
뉴스의 데이터 시각화
컬러 시스템 인터렉션
이벤트 Loop
디자인 철학
10:45 - 11:30
11:30 - 12:15
13:30 - 14:15
14:15 - 15:00
15:45 - 16:30
16:30 - 17:15
Day 02
Animation 고르기
Web App을 해킹하는 방법
험난한 업무 프로세스 진행하기
CSS 커스텀 속성의 전략적 사용
웹폰트 최적화
웹으로 특이하고 이상한 것 만들기
상향식 성능 향상
험난한 엄무 프로세스 진행하기
Design
Frontend
Backend
All
Day 01
CSS 그리드 레이아웃
상향식 성능 향상
뉴스의 데이터 시각화
컬러 시스템 인터렉션
이벤트 Loop
디자인 철학
10:45 - 11:30
11:30 - 12:15
13:30 - 14:15
14:15 - 15:00
15:45 - 16:30
16:30 - 17:15
Day 02
Animation 고르기
Web App을 해킹하는 방법
험난한 업무 프로세스 진행하기
CSS 커스텀 속성의 전략적 사용
웹폰트 최적화
웹으로 특이하고 이상한 것 만들기
상향식 성능 향상
넓은 스펙트럼
+
깊이 있는 세션
(그리고 영어...)
Day 01
CSS 그리드 레이아웃
상향식 성능 향상
뉴스의 데이터 시각화
컬러 시스템 인터렉션
이벤트 Loop
디자인 철학
10:45 - 11:30
11:30 - 12:15
13:30 - 14:15
14:15 - 15:00
15:45 - 16:30
16:30 - 17:15
Day 02
Animation 고르기
Web App을 해킹하는 방법
험난한 업무 프로세스 진행하기
CSS 커스텀 속성의 전략적 사용
웹폰트 최적화
웹으로 특이하고 이상한 것 만들기
Day 01
CSS 그리드 레이아웃
상향식 성능 향상
뉴스의 데이터 시각화
컬러 시스템 인터렉션
이벤트 Loop
디자인 철학
10:45 - 11:30
11:30 - 12:15
13:30 - 14:15
14:15 - 15:00
15:45 - 16:30
16:30 - 17:15
Day 02
Animation 고르기
Web App을 해킹하는 방법
험난한 업무 프로세스 진행하기
CSS 커스텀 속성의 전략적 사용
웹폰트 최적화
웹으로 특이하고 이상한 것 만들기
Day 01
CSS 그리드 레이아웃
상향식 성능 향상
뉴스의 데이터 시각화
컬러 시스템 인터렉션
이벤트 Loop
디자인 철학
10:45 - 11:30
11:30 - 12:15
13:30 - 14:15
14:15 - 15:00
15:45 - 16:30
16:30 - 17:15
Day 02
Animation 고르기
Web App을 해킹하는 방법
험난한 업무 프로세스 진행하기
CSS 커스텀 속성의 전략적 사용
웹폰트 최적화
웹으로 특이하고 이상한 것 만들기
- CSS 그리드 레이아웃
- Animation 고르기
- 웹폰트 최적화
@양현선
@이상진
&
" Web font "
- 문제 해결과 최적화 -
일반적으로 웹브라우저에 표시될 폰트는
"사용자의 컴퓨터(=로컬)" 에 설치된 폰트로 표시된다.
로컬폰트
# 웹폰트란?
일반적으로 웹브라우저에 표시될 폰트는
"사용자의 컴퓨터(=로컬)" 에 설치된 폰트로 표시된다.
윈도우 OS
Mac OS
로컬폰트
# 웹폰트란?
웹폰트는 로컬의 폰트 설치 상황과 관계없이, 특정 서버에 업로드된 폰트파일을
"다운로드" 한 후 화면에 표시하는 방법입니다.
웹폰트
# 웹폰트란?
서버 경로
css의 @font-face 속성을 이용
# 기본 사용법
파일 포맷
css의 @font-face 속성을 이용
# 기본 사용법
# 기본 사용법
css의 @font-face 속성을 이용
폰트 이름 설정
# 웹폰트 사용 사례
# 웹폰트 사용 사례
68%
전세계
웹사이트가
웹폰트를 사용
# 웹폰트 사용률
: 1조 8천만번
: 1조 번
: 3670억 번
폰트별 request 횟수 (google webfont)
# 웹폰트 사용률
# 웹폰트 문제점
# 웹폰트 문제점
# 웹폰트 문제점
# 웹폰트 문제점
# 웹폰트 문제점
# 웹폰트 문제점
웹폰트
Critical Rendering Path
# 웹폰트 문제점 Why?
Critical Rendering Path
# 웹폰트 문제점 Why?
Critical Rendering Path
# 웹폰트 문제점 Why?
Critical Rendering Path
# 웹폰트 문제점 Why?
Critical Rendering Path
# 웹폰트 문제점 Why?
Critical Rendering Path
# 웹폰트 문제점 Why?
Critical Rendering Path
# 웹폰트 문제점 Why?
Delay or Fail
Critical Rendering Path
# 웹폰트 문제점 Why?
Delay or Fail
Critical Rendering Path
# 웹폰트 문제점 Why?
Delay or Fail
Critical Rendering Path
# 웹폰트 문제점 Why?
# 웹폰트 문제점 Why?
Delay or Fail
Critical Rendering Path
브라우저별로
전략이 다르다
Text Blocking
FOIT & FOUT
# FOIT & FOUT 예제
웹폰트가 다운로드 될 때까지 텍스트를 랜더링 하지 않다가,
로딩이 된 이후에 텍스트를 보여주는 동작
" FOIT "
모던 브라우저
기다리는 제한시간 3s가 있다.
웹폰트가 로딩이 되지 않을때, 해당 텍스트 "rendering Block"
# 브라우저별 처리방식
IE계열 브라우저
웹폰트가 다운로드 될 때까지 unstyled 텍스트(fall back폰트)를
보여주고, 로드가 되면 웹폰트로 대처하는 방식
" FOUT "
글꼴의 자간, 높이에 따라 “레이아웃”이 변경 될 수 있다.
=> 레이아웃이 틀어져서 이상해보인다.
FOIT보다 괜찮은 방법일 수 있다 (폰트의 스타일보다, 내용이 더 중요)
# 브라우저별 처리방식
FOIT & FOUT
Flash
Of
Text
Flash
Of
Text
# 브라우저별 처리방식
Unstyled
Invisible
Request & Response 과정이 필수적이기 때문에
FOIT 혹은 FOUT를 피할 수 없다.
# FOIT & FOUT
문제점을 완화하는 방법
# 웹폰트 대책
minimize
FOIT / FOUT
minimize foit/fout
# 웹폰트 대책
minimize foit/fout
용량을 줄여 다운로드 속도를 향상 시키자
# 웹폰트 대책
minimize foit/fout
1. (가능하다면) woff2 포맷 사용 : 평균 30% 압축된 형식
용량을 줄여 다운로드 속도를 향상 시키자
# 웹폰트 대책
minimize foit/fout
1. (가능하다면) woff2 포맷 사용 : 평균 30% 압축된 형식
용량을 줄여 다운로드 속도를 향상 시키자
# 웹폰트 대책
minimize foit/fout
1. (가능하다면) woff2 포맷 사용 : 평균 30% 압축된 형식
용량을 줄여 다운로드 속도를 향상 시키자
# 웹폰트 대책
minimize foit/fout
1. (가능하다면) woff2 포맷 사용 : 평균 30% 압축된 형식
2. unicode-range 사용
용량을 줄여 다운로드 속도를 향상 시키자
# 웹폰트 대책
용량을 줄여 다운로드 속도를 향상 시키자
minimize foit/fout
1. (가능하다면) woff2 포맷 사용 : 평균 30% 압축된 형식
2. unicode-range 사용 : 사용할 문자의 범위를 지정
# 웹폰트 대책
minimize foit/fout
1. (가능하다면) woff2 포맷 사용 : 평균 30% 압축된 형식
2. unicode-range 사용 : 사용할 문자의 범위를 지정
용량을 줄여 다운로드 속도를 향상 시키자
# 웹폰트 대책
더 일찍 다운받자
minimize foit/fout
용량을 줄여 다운로드 속도를 향상 시키자
preload속성 사용
# 웹폰트 대책
preload속성 사용
<link>태그에 preload 옵션을 주면, 다른 리소스보다 빨리 받아올 수 있음
# 웹폰트 대책
preload속성 사용
<link>태그에 preload 옵션을 주면, 다른 리소스보다 빨리 받아올 수 있음
preload 사용
preload 미사용
# 웹폰트 대책
# 웹폰트 대책
FOIT
FOUT
보이지 않는 텍스트
예쁘지 않은 기본 폰트 텍스트
: invisible 텍스트는 UX관점에 나쁘다
→ FOIT 는 FOUT보다 나쁠수 있다.
# 웹폰트 대책
foit fout
# 웹폰트 대책
foit fout
Font-Loader 라이브러리 이용
# 웹폰트 대책
foit fout
Font-Loader 라이브러리 이용
FontFaceObserver
# 웹폰트 대책
FontFaceObserver
: 가볍고 빠른 font loader 라이브러리
# 웹폰트 대책
FontFaceObserver
: 가볍고 빠른 font loader 라이브러리
CSS
JS
# 웹폰트 대책
foit fout
CSS의 font-display 속성
Font-Loader 라이브러리
FontFaceObserver
# 웹폰트 대책
CSS의 font-display 속성
- Auto
- Block
- Swap
- Fallback
- Optional
# 웹폰트 대책
웹폰트 요청
3s
다운로드 완료
FOIT / FOUT
webfont
CSS의 font-display 속성 : auto
# 웹폰트 대책
웹폰트 요청
3s
다운로드 실패
fallback
CSS의 font-display 속성 : auto
FOIT / FOUT
# 웹폰트 대책
웹폰트 요청
3s
다운로드 실패
다운로드 완료
webfont
CSS의 font-display 속성 : auto
fallback
FOIT / FOUT
# 웹폰트 대책
웹폰트 요청
3s
다운로드 실패
다운로드 완료
webfont
fallback
FOIT
CSS의 font-display 속성 : block
3초간 block기간, 무한정 웹폰트 응답 대기 (=FOIT)
# 웹폰트 대책
웹폰트 요청
다운로드 완료
CSS의 font-display 속성 : swap
webfont
fallback
즉시 대체 폰트 랜더링(block기간 없음)
무한정 웹폰트 응답 대기 (=FOUT)
# 웹폰트 대책
웹폰트 요청
3s
fallback
다운로드 완료
webfont
100ms
CSS의 font-display 속성 : fallback
FOIT
아주 짧은 시간(100ms) block 후, 대체폰트 랜더링
swap기간(1~2s) 내 다운로드 완료시 렌더링 / 경과시 통신하지 않음
# 웹폰트 대책
웹폰트 요청
3s
다운로드 완료
100ms
아주 짧은 시간(100ms) block 후, 대체폰트 랜더링
swap기간 내 다운로드 완료시 렌더링 / 경과시 통신하지 않음
CSS의 font-display 속성 : fallback
fallback
webfont
FOIT
# 웹폰트 대책
웹폰트 요청
100ms
CSS의 font-display 속성 : optional
FOIT
fallback / webfont
아주 짧은 시간(100ms) block 후, 대체폰트 랜더링
사용자 네트워크 상태에 따라 브라우저가 다운받을지 말지 결정
# 웹폰트 대책
CSS의 font-display 속성 :
# 웹폰트 대책
CSS의 font-display 속성
😨...
# 웹폰트 대책
foit fout
CSS의 font-display 속성 이용
Font-Loader 라이브러리 이용
FontFaceObserver
# 웹폰트 대책
foit fout
CSS의 font-display 속성 이용
Font-Loader 라이브러리 이용
FontFaceObserver
Be Less Diff
# 웹폰트 대책
webfont 적용전
webfont 적용후
Be Less Diff
# 웹폰트 대책
Be Less Diff
CHOOSE YOUR
"aNIMATION"
# Web Animation
# Web Animation
# Web Animation
# Web Animation
- 이미지를 활용한 방법 : GIF이미지
GIF 이미지 포맷은?
png, bmp, jpg 등과 같은 이미지 포맷 중 하나
gif이미지를 여러개 이어 붙이는 Animated 기능
# Web Animation
- 이미지를 활용한 방법 : GIF이미지
시퀀스
# Web Animation
- 이미지를 활용한 방법 : GIF이미지
# Web Animation
- 이미지를 활용한 방법 : GIF이미지
장점
1. 디자인 시안 그대로 재현
# Web Animation
- 이미지를 활용한 방법 : GIF이미지
시안 : mp4
GIF
# Web Animation
- 이미지를 활용한 방법 : GIF이미지
장점
1. 디자인 시안 그대로 재현
2. 간편한 구현
# Web Animation
- 이미지를 활용한 방법 : GIF이미지
2. 간편한 구현
# Web Animation
- 이미지를 활용한 방법 : GIF이미지
장점
1. 디자인 시안 그대로 재현
2. 간편한 구현
3. 크로스 브라우징
# Web Animation
- 이미지를 활용한 방법 : GIF이미지
단점
1. 네트워크 요청 발생
# Web Animation
- 이미지를 활용한 방법 : GIF이미지
단점
1. 네트워크 요청 발생
2. 파일크기
# Web Animation
- 이미지를 활용한 방법 : GIF이미지
8초의 애니메이션
1s에 30장 x 8s = 240장 (30 프레임)
80kb X 240 = 19.2mb
compression
20kb X 240 = 4.8mb
# Web Animation
- 이미지를 활용한 방법 : GIF이미지
단점
1. 네트워크 요청 발생
2. 파일크기
3. 이미지 품질의 한계
# Web Animation
- 이미지를 활용한 방법 : GIF이미지
# Web Animation
- 이미지를 활용한 방법 : GIF이미지
# Web Animation
- 이미지를 활용한 방법 : GIF이미지
# Web Animation
- 이미지를 활용한 방법 : GIF이미지
# Web Animation
- 이미지를 활용한 방법 : GIF이미지
# Web Animation
- 이미지를 활용한 방법 : png 시퀀스
스프라이트 이미지
# Web Animation
- 이미지를 활용한 방법 : png 시퀀스
스프라이트 이미지
# Web Animation
- 이미지를 활용한 방법 : png 시퀀스
스프라이트 이미지
# Web Animation
- 이미지를 활용한 방법 : png 시퀀스
스프라이트 이미지
# Web Animation
- 이미지를 활용한 방법 : png 시퀀스
스프라이트 이미지
# Web Animation
- 이미지를 활용한 방법 : png 시퀀스
스프라이트 이미지
# Web Animation
- 이미지를 활용한 방법 : png 시퀀스
# Web Animation
- 이미지를 활용한 방법 : png 시퀀스
gif형식
png형식
# Web Animation
- CSS ANIMATION :
CSS로 DOM의 속성 상태를 시간 경과에 따라 정의
이를 순차적으로 표현하는 방식
# Web Animation
- CSS ANIMATION :
상태 선언
시작전 대기시간
# Web Animation
- CSS ANIMATION :
상태 선언
애니메이션 시간
# Web Animation
- CSS ANIMATION :
상태 선언
애니메이션 반복 횟수
# Web Animation
- CSS ANIMATION :
상태 선언
애니메이션 루프 방향
# Web Animation
- css animation : 예제
로딩 인디케이터
# Web Animation
- css animation : 예제
Looping 애니메이션
# Web Animation
- css animation : 예제
간단한 움직임의 모션
# Web Animation
- css animation : 예제
hover, focus 인터렉션 애니메이션
# Web Animation
- css animation :
장점
1. 네트워크 요청 불필요
# Web Animation
- css animation :
장점
1. 네트워크 요청 불필요
2. js없이 간단한 이벤트 처리 가능 (hover, focus)
# Web Animation
- css animation :
장점
1. 네트워크 요청 불필요
2. js없이 간단한 이벤트 처리 가능 (hover, focus)
# Web Animation
- css animation :
장점
1. 네트워크 요청 불필요
2. js없이 간단한 이벤트 처리 가능 (hover, focus)
3. GPU사용으로 js에 비해 performance가 좋음
# Web Animation
- css animation :
장점
1. 네트워크 요청 불필요
2. js없이 간단한 이벤트 처리 가능 (hover, focus)
3. GPU사용으로 js에 비해 performance가 좋음
4. @keyframe 재사용 가능
# Web Animation
- css animation :
# Web Animation
- css animation :
단점
1. 크로스 브라우징 (IE10부터 지원)
# Web Animation
- css animation :
단점
1. 크로스 브라우징 (IE10부터 지원)
# Web Animation
- css animation :
단점
1. 크로스 브라우징 (IE10부터 지원)
2. 이벤트 동작의 제한 (hover, focus)
# Web Animation
- css animation :
단점
1. 크로스 브라우징 (IE10부터 지원)
2. 이벤트 동작의 제한 (hover, focus)
3. @keyframe에 정해진 상태로만 변경가능
# Web Animation
- css animation :
시작 상태
끝 상태
}
중간 상태
# Web Animation
- css animation :
단점
1. 크로스 브라우징 (IE10부터 지원)
2. 이벤트 동작의 제한 (hover, focus)
3. @keyframe에 정해진 상태로만 변경가능
4. 복잡한 움직임의 경우, CSS로 표현 불가
# Web Animation
- css animation :
단점
1. 크로스 브라우징 (IE10부터 지원)
2. 이벤트 동작의 제한 (hover, focus)
3. @keyframe에 정해진 상태로만 변경가능
4. 복잡한 움직임의 경우, CSS로 표현 불가
5. 제한된 Timing function
# Web Animation
- css animation :
# Web Animation
- css animation :
단점
1. 크로스 브라우징 (IE10부터 지원)
2. 이벤트 동작의 제한 (hover, focus)
3. @keyframe에 정해진 상태로만 변경가능
4. 복잡한 움직임의 경우, 표현 불가
5. 제한된 Timing function
# Web Animation
- css animation :
CSS + JS =
애니메이션 중 70~80%
# Web Animation
- css animation + js : 사용법
# Web Animation
- css animation + js : 예제
# Web Animation
- js animation
용도
1. drag, 키보드 등 css만으로 인식할 수 없는 이벤트 인터렉션
2. 복잡하게 움직이는 인터렉션
3. 다이나믹한 transition 상태
# Web Animation
- js animation : 예제
# Web Animation
- js animation : 예제
# Web Animation
- js animation 라이브러리:
Vanilla JS
Animation Library
vs
# Web Animation
- js animation 라이브러리:
# Web Animation
- js animation 라이브러리:
# Web Animation
- js animation 라이브러리:
Vanilla JS
GreenSock
vs
# Web Animation
- js animation 라이브러리:
특징
1. 다양한 motion 메서드 제공
# Web Animation
- js animation 라이브러리:
# Web Animation
- js animation 라이브러리:
특징
1. 다양한 motion 메서드 제공
2. 다양한 easingFunction 제공
# Web Animation
- js animation 라이브러리:
특징
1. 다양한 motion 메서드 제공
2. 다양한 easingFunction 제공
3. 크로스 브라우징 / IE브라우저 대응
# Web Animation
- js animation 라이브러리:
특징
1. 다양한 motion 메서드 제공
2. 다양한 easingFunction 제공
3. 크로스 브라우징 / IE브라우저 대응
4. CSS나 jQuery animation보다 성능이 좋을 수 있음
라이브러리 자체적 성능 최적화
# Web Animation
- js animation 라이브러리:
특징
1. 다양한 motion 메서드 제공
2. 다양한 easingFunction 제공
3. 크로스 브라우징 / IE브라우저 대응
4. CSS나 jQuery animation보다 성능이 좋을 수 있음
setInterval() vs requestAnimationFrame()
https://davidwalsh.name/css-js-animation
# Web Animation
- js animation 라이브러리:
그렇다면....
CSS or Javascript ?
# Web Animation
- css vs js animation
CSS
# Web Animation
- css vs js animation
CSS
JS
# Web Animation
- css vs js animation
CSS
JS
# Web Animation
- css vs js animation
CSS
JS
애니메이션이 실행되는 동안에 사용자의 인터렉션에 따라
상태가 다이나믹하게 변경되어야 할 때
한 시퀀스에서 애니메이션이 3번 이상 변경될 때
CSS의 transform 속성에 부분적 애니메이션을 줘야 할 때
다양한 형태의 easing그래프가 필요할 때
# Web Animation
- svg
# Web Animation
- svg
# Web Animation
- svg
# Web Animation
- svg : lottie
디자인 시안.mov
COPY
IMITATE
- GIF 이미지
- PNG SpriteSheet
- CSS animation
- JS animation
용량/품질 문제
표현의 제한
# Web Animation
AfterEffect : 모션그래픽 제작 툴
- svg : lottie
# Web Animation
- svg : lottie
AfterEffect
data.json
bodymovin.js
index.html
index.js
346 KB
# Web Animation
- svg : lottie
# Web Animation
- svg : lottie
# Web Animation
- svg : lottie
# Web Animation
- svg : lottie
# Web Animation
- svg : lottie
단점
1. 네트워크 요청 발생
2. edge브라우저 : 투명 마스트 적용되지 않음
3. blur 적용 문제
4. glow effect 미지원
5. 3d카메라 적용 버그
6. repeater Effect 미지원 (추후 적용예정)
Webconf 2018
By Sang Jin Lee
Webconf 2018
- 1,000