✊ 필오의 개발일지
Back to Posts
2021년 1월 24일

피츠의 법칙과 Touch Target

피츠의 법칙과 Touch Target

[UX/UI의 10가지 심리학 법칙] 책을 읽으며 법칙별로 내용 요약 + 개인적으로 찾았던 레퍼런스 + 그밖에 자료들을 모아서 작성한 글입니다.

사용하기 위해 움직이는(소비하는) 시간을 줄인다. → 접근성

피츠의 법칙

기원

출처: wikipidia
출처: wikipidia

피츠의 법칙과 Accessibility


  1. 영향력있는 단체에서 잡은 터치 사이즈 권장 규격을 확인하고,(머테리얼 디자인 기준)
    • 터치 대상의 크기
    • 요소 사이의 간격
  2. 적용한 사례를 살펴보자.

Touch Target

터치 타겟의 개념에 3가지가 나오는데, 크기, 다른 요소간의 간격, 유사한 흐름에 배치

  1. 터치 대상의 크기는 사용자가 정확하게 선택할 수 있을 정도로 충분히 커야 한다.
  2. 터치 대상 사이에 충분한 거리를 확보해야 한다.
  3. 터치 대상은 인터페이스상에서 쉽게 도달할 수 있는 영역에 배치해야 한다.

터치 대상의 최소 권장 규격

디자인 시스템에 적용하긔

대상이 다를 경우

.container a { padding: 0.2em; } @media (pointer: coarse) { .container a { padding: 0.8em; } }

Material design - Touch Target

기본 버튼

<button class="mdc-button"> <div class="mdc-button__ripple"></div> <span class="mdc-button__label">My Inaccessible Button</span> </button>

touch-target로 감싸기

<div class="mdc-touch-target-wrapper"> <button class="mdc-button mdc-button--touch"> <div class="mdc-button__ripple"></div> <span class="mdc-button__label">My Accessible Button</span> <div class="mdc-button__touch"></div> </button> </div>
// node_modules/@material/touch-target/_touch-target.scss @use '@material/base/mixins' as base-mixins; @use '@material/feature-targeting/feature-targeting'; $height: 48px !default; 👈👈👈 $width: $height !default; /// Styles applied to the component's touch target wrapper element. @mixin wrapper($query: feature-targeting.all()) { $feat-structure: feature-targeting.create-target($query, structure); .mdc-touch-target-wrapper { @include feature-targeting.targets($feat-structure) { @include base-mixins.emit-once('mdc-touch-target/wrapper') { display: inline; } } } } @mixin touch-target($set-width: false, $query: feature-targeting.all()) { $feat-structure: feature-targeting.create-target($query, structure); @include feature-targeting.targets($feat-structure) { position: absolute; top: 50%; right: 0; height: $height; } @if $set-width { @include feature-targeting.targets($feat-structure) { /* @noflip */ left: 50%; width: $width; transform: translate(-50%, -50%); } } @else { @include feature-targeting.targets($feat-structure) { left: 0; transform: translateY(-50%); } } } @mixin margin( $component-height, $component-width: null, $touch-target-height: $height, $touch-target-width: $width, $query: feature-targeting.all() ) { $feat-structure: feature-targeting.create-target($query, structure); $vertical-margin-value: ($touch-target-height - $component-height) / 2; @include feature-targeting.targets($feat-structure) { margin-top: $vertical-margin-value; margin-bottom: $vertical-margin-value; } @if $component-width { $horizontal-margin-value: ($touch-target-width - $component-width) / 2; @include feature-targeting.targets($feat-structure) { margin-right: $horizontal-margin-value; margin-left: $horizontal-margin-value; } } }

Material design - Space methods

Layout


스마트폰 form factor가 다양하다.


위 내용은 uxmatters의 글을 읽어보는 것이 더 재밌다. 해당 포스팅에서는 자세히 다루진 않겠다.

적용한 컴포넌트 사례

Touch Target

  1. (Material design) Radio
Material design의 Radio - 라디오 버튼은 48px보다 작지만, touch영역은 48px을 유지
Material design의 Radio - 라디오 버튼은 48px보다 작지만, touch영역은 48px을 유지
  1. (Material design) Slider
Material design의 Slider - 슬라이더의 pointer부분의 높이값을 48px을 유지
Material design의 Slider - 슬라이더의 pointer부분의 높이값을 48px을 유지
  1. (Material design) Switch
Material design의 Switch
Material design의 Switch
  1. (Facebook) Button
Facebook의 Button - 버튼의 높이 영역을 50px로 유지
Facebook의 Button - 버튼의 높이 영역을 50px로 유지
  1. (Facebook) Button - icon
Facebook의 Button - 버튼의 터치영역을 44px로 유지
Facebook의 Button - 버튼의 터치영역을 44px로 유지
  1. (Airbnb) Input
Airbnb의 Button - input의 터치영역을 44px로 유지
Airbnb의 Button - input의 터치영역을 44px로 유지
  1. (토스) Button - fullfilled
Toss의 Button - 버튼의 터치영역을 58px로 유지 (wow)
Toss의 Button - 버튼의 터치영역을 58px로 유지 (wow)

Space

  1. (Material design) Dialog
Material design의 Button 컴포넌트들 여백
Material design의 Button 컴포넌트들 여백
  1. (Material design) Chips
Material design의 Chips 컴포넌트들 여백
Material design의 Chips 컴포넌트들 여백

참고자료

  1. Accessible tap targets 
  2. 미디어 쿼리 초보자 안내서 
  3. Material - Layout and typography 
  4. Material - web - touch target 
  5. Material - Spaceing methods 
  6. Material Web Components Catalog 
  7. Google - 접근성을 고려한 개발 
  8. Google Web Fundamentals - Accessibility 
  9. toss 
  10. Design for Fingers, Touch, and People, Part 1 
  11. Design for Fingers, Touch, and People, Part 2 
  12. Design for Fingers, Touch, and People, Part 3 
  13. [피츠의 법칙] Fitts’ Law & Paul M. Fitts 
Previous웹 버저닝과 배포내역관리 (feat. standard-version)
Next프론트엔드 개발자에게 UX는? 연기에 몰입해서 나오는 배우들의 애드립

Related

© 2025 Felix