머티리얼 디자인

Material design

종이가 층층이 쌓인 것처럼 그림자(elevation)로 위계를 표현하는 Google의 디자인 시스템. 2014년 발표.

다른 이름: Material YouGoogle Material
···
html
<div class="stage">
  <div class="card">
    <span class="eyebrow">ELEVATION</span>
    <h1>Card title</h1>
    <p>Elevated surfaces use shadow to show hierarchy.</p>
  </div>
  <button class="fab" id="fab"><span class="ripple" id="ripple"></span>+</button>
</div>
css
body{background:#f3edf7}
.stage{position:relative;width:min(90%,320px)}
.card{background:#fffbfe;border-radius:16px;padding:22px;box-shadow:0 3px 6px rgba(0,0,0,.08),0 1px 3px rgba(0,0,0,.14);
  font-family:-apple-system,"Segoe UI",Roboto,sans-serif}
.eyebrow{font-size:10px;letter-spacing:.1em;color:#6750a4;font-weight:700}
h1{margin:6px 0 6px;font-size:18px;color:#1c1b1f}
p{margin:0;font-size:13px;color:#49454f;line-height:1.5}
.fab{position:absolute;right:-8px;bottom:-16px;width:52px;height:52px;border-radius:16px;border:0;
  background:#6750a4;color:#fff;font-size:22px;display:grid;place-items:center;cursor:pointer;overflow:hidden;
  box-shadow:0 4px 8px rgba(0,0,0,.16),0 2px 4px rgba(0,0,0,.12);transition:box-shadow .25s}
.fab.raise{box-shadow:0 8px 16px rgba(0,0,0,.22),0 4px 8px rgba(0,0,0,.16)}
.ripple{position:absolute;width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.7);
  left:50%;top:50%;transform:translate(-50%,-50%) scale(0);opacity:0}
.ripple.go{animation:rip .6s ease-out}
@keyframes rip{
  0%{transform:translate(-50%,-50%) scale(0);opacity:.7}
  100%{transform:translate(-50%,-50%) scale(9);opacity:0}
}
js
const fab = document.getElementById('fab');
const ripple = document.getElementById('ripple');
setInterval(() => {
  fab.classList.add('raise');
  ripple.classList.remove('go');
  void ripple.offsetWidth;
  ripple.classList.add('go');
  setTimeout(() => fab.classList.remove('raise'), 500);
}, 1800);

플랫 디자인이 그림자를 완전히 없앴다면, 머티리얼 디자인은 "종이는 실제로 두께가 있고 층층이 쌓일 수 있다"는 은유를 남기되 나머지는 플랫하게 정리했습니다. 그래서 각 층의 높이(elevation)를 그림자의 크기와 퍼짐으로 표현하는 게 핵심 규칙입니다 — 높이 1dp는 옅은 그림자, 8dp는 더 크고 퍼진 그림자.

터치한 지점에서 원형으로 번지는 리플(ripple) 효과, 화면이 바뀔 때 요소가 자연스럽게 이어지는 모션(shared element transition), FAB(플로팅 액션 버튼)도 머티리얼의 시그니처입니다. 2021년 "Material You"로 업데이트되며 사용자 배경화면 색에서 팔레트를 뽑아내는 동적 컬러가 추가됐습니다.

Android 앱과 Google 자체 서비스의 기본값이자, 세부 규칙(간격, 타이포 스케일, 컴포넌트 상태)이 매우 상세히 문서화돼 있어 팀 전체가 합을 맞추기 좋은 시스템입니다.

언제 쓰나

Android 앱, 관리자 대시보드처럼 컴포넌트가 많고 팀 규모가 큰 프로젝트에 좋습니다. iOS 전용 앱이라면 Apple HIG를 따르는 게 사용자 기대에 더 맞습니다.