UI 프로젝트발행일 2022. 7. 27.원본 https://blog.naver.com/jword_/222831688573 ↗

webkit mask 이미지를 활용한 역동적인 인터렉션 구현하기

webkit mask 이미지를 활용한 역동적인 인터렉션 구현하기 — #webkit #maskimage **글읽기 전에 잠깐!** **정보처리기사 필기 준비중이라면?** >> 정보처리기사 ...

#MASK#Naver Blog

#webkit #maskimage

​

**\\글읽기 전에 잠깐!\*\***

**\*\***정보처리기사 필기** 준비중이라면?\*\***

> 정보처리기사 총정리 바로가기

디자인 소개 및 학습목표

#

디자인소개

MASK이미지를 활용하여 역동적인 인터렉션을 구현한다

​

학습목표

  1. webkit을 간략하게 이해한다.
  2. css webkit속성을 익힌다.
  3. css mask 애니메이션을 익힌다.

​

webkit이란?

애플에서 개발하고 있는 웹 컨텐츠 엔진, 웹 렌더링 엔진이다. 거창한 설명보단 그냥 간단하게 기억할 것만 기억하자.

​

웹킷은 구글의 크롬, 마이크로소프트 엣지, 네이버 웨일 브라우저에서 사용가능한 엔진이다. css가 호환된다라는 느낌으로 받아들이고 넘어가겠다.

MASK이미지 살펴보기

이미지

일렬로 수많은 이미지가 나열되어 있는 시퀀스 이미지이다. 투명색으로 갈수록 아래있는 이미지가 보인다.

​

**\*원리**

html에서 두개의 패널이 겹쳐있을 때, 위 패널에 mask를 작동시키면 아래 패널로 넘어가면서 mask가 작동한다.

실무로 공부하자!

간단한 예제를 만들어 보면 훨씬 이해하기 쉬울 것이다. 천천히 따라해보자.

HTML

두개의 패널을 겹치도록 배치할 것이다. section>article.upper + article.lower

<section> <article class="lower">LOWER</article> <article class="upper">UPPER </article>​ </section>lower / upper 배치 .upper을 아래에 코드해야 위로 배치가 된다.

CSS

기본적인틀

section{ width: 100%; height: 100vh;​ article{ width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; position: absolute; top: 0px; bottom: 0px; font: 45px/1 "arial" ; color: #fff;​ &.upper{ background: lightcoral; } ​ &.lower{ background: lightgreen; }​}​article 자식 요소를 정가운데 배치css에서 자식요소를 정가운데 배치하는 방법은 여러가지가 있는데 그 중 가장 빠른 방법은 display:flex;인것 같다.disply:flex;를 사용하면 justify-content와 align-items를 사용할 수 있기 떄문에 매우 빠르게 자식요소를 정가운데 배치할 수 있다..upper의 배경은 lightcoral , .lower의 배경은 lightgreen으로 설정한다..upper이 화면위에 나타나면 OK

​

이미지

이미지

-webkit속성

​ &.upper{ background: lightcoral; -webkit-mask: url(../src/mask1.png); -webkit-mask-size: 2300% 100%; -webkit-mask-position: 0% 0%; }-webkit속성-webkit-mask: url ; // 마스크 이미지를 불러오는 속성이다.-webkit-mask-size: 2300% 100% ; //mask이미지는 총 23개가 존재한다. 한 이미지당 넓이 100% 높이 100%로 감안하면 23\*100%=2300%로 주면된다. 높이는 고정이다.-webkit-mask-position: 0% 0%; //처음 마스크 포지션을 0으로준다 -> 나중에 인터렉션을 활용하여 포지션을 변경할 것

mask 애니메이션

*​**@keyframes* mask-play{ 0%{ -webkit-mask-position: 0% 0% ;} 100% { -webkit-mask-position: 100% 0% ;}}mask animation@keyframes를 활용하여 애니메이션을 만든다.-webkit-mask-position을 0% -> 100%로 만들어준다.

section에 class ="on"붙을 때

css 애니메이션 지정

section{ &.on{ .upper{ animation: mask-play 1.4s steps(22) forwards; } } }section태그에 .on이 붙을때 css 애니메이션section에 .on이 붙을 경우 animation이 실행되도록 한다.animation속성 값:mask-play(이름), 1.4s(동작시간), steps(22)(22개이미지를 끊어서 실행), forwards(앞으로 이동)

이미지

아직 동작을 실행시키지 않았기 때문에 현재화면은 UPPER화면이 나타난다.

JS

클릭이벤트 만들기

​const section = document.querySelector('section');const upper = document.querySelector('.upper');​upper.addEventListener('click', e=>{ section.classList.add('on');})​upper클릭시 section에 class= "on"​upper태그 클릭시 section태그에 .on이 붙도록 지정해준다.css section&.on 속성이 작동하면서 마스크가 작동할 것이다.

#

클릭시 마스크 애니메이션이 작동하는 것을 볼 수 있다.

​

복습

mask이미지는 여러가지가 있다. 각 요소마다 다르게 적용해야 할 부분이 있는데 이것만 기억하면 mask를 잘 다룰수 있을거라 생각한다.

#

다르게 적용해야할 것

  • -webkit-mask-size: 이미지 갯수**\*100 100%**
  • animation: mask-play steps(이미지갯수-1)

나머지는 동일하게 적용해주면 된다.

복습할 것

  • css -webkit 속성
  • animation 설정

​

​

MASK 구현시리즈 보러가기

  1. 시맨틱 태그로 MASK UI구조잡기 (1)

​

  1. head영역 제작하기(2)

​

  1. [html 자동완성으로 video 태그 넣기 \[배경 자동재생/object-fit\]](https://m.blog.naver.com/PostView.naver?blogId=jword_&logNo=222834776677&navType=by)

​

  1. ::before모션 추가하기, inline-block여백 없애기

​

  1. 인터렉티브 웹 구현하기 ease-in-out ::after 글자모션 (5)

​

  1. keyframes로 -webkit-mask image 애니메이션구현(END)

​

다른 시리즈 보러가기

SVG UI

[\[UIUX\] css hover을 활용하여 웹에서 SVG 모션처리하는 방법](https://m.blog.naver.com/PostView.naver?blogId=jword_&logNo=222819538127&navType=by)

​

Music Player

[\[웹디자인공부\] 음악 재생 사이트 디자인 및 코드짜기 (1)](https://m.blog.naver.com/PostView.naver?blogId=jword_&logNo=222784639195&navType=by)

​

Node js

JavaScript로 Html변경하여 SPA이해하기

​

vue js

Vue js 설치해보기

​

​