기록

잘 알려지지 않은 유용한 CSS 속성들

해은 2020. 6. 14. 21:07

출처: ahnheejong.name/articles/less-famous-css-properties/

 

잘 알려지지 않은 유용한 CSS 속성들

pointer-events, object-fit, will-change 등 상대적으로 덜 알려졌지만 알아두면 언젠가 유용하게 써먹을 CSS 속성을 소개합니다.

ahnheejong.name

정리하면서 공부하려고 쓰는 글!

 

pointer-events: 클릭 이벤트 허용 여부

auto 인 경우 리스너 호출 가능

none 인 경우 이벤트 타겟이 될 수 없음

*부모가 none 속성을 갖고 있어도 자식 중 auto 를 가진 엘리먼트가 있다면, 해당 자식 엘리먼트에 트리거 된 이벤트가 버블링 또는 캡쳐링 되는 과정에서 부모 엘리먼트의 이벤트 리스너가 호출될 수 있다.

<ul>
  <li><a href="https://developer.mozilla.org">MDN</a></li>
  <li><a href="http://example.com" style="pointer-events: none;">example.com</a></li>
</ul>

가능한 속성 값

pointer-events: auto;
pointer-events: none;

 

touch-action: 브라우저에게 맡길 터치 액션 지정

터치 이벤트 처리는 브라우저가 담당하는 영역인데, touch-action 속성을 이용해서 브라우저가 처리할 터치 액션의 목록을 지정할 수 있다. 표준으로는 스크롤, 확대/축소 브라우저에 따라 더블탭으로 확대 등이 있다.

touch-action: auto; /* 기본 값 */
touch-action: none; /* 브라우저가 모든 터치 이벤트를 무시하도록 설정 */

touch-action: pan-x; /* 특정 축으로의 터치를 사용한 스크롤 허용 */
touch-action: pan-y;

touch-action: pan-left; /* 특정 방향으로의 터치를 사용한 스크롤 허용 */
touch-action: pan-right;
touch-action: pan-up;
touch-action: pan-down;

touch-action: pinch-zoom; /* 핀치 줌(여러 손가락을 사용한 확대/축소) 허용 */

touch-action: manipulation; /* 터치를 사용한 스크롤, 핀치 줌만 허용하고 그 외 비표준 동작 (더블 탭으로 확대 등) 불허용 */

touch-action: pan-y pinch-zoom; /* 동시에 여러 값 지정 가능 */

 

object-fit: 대체되는 엘리먼트의 내용물과 컨테이너 사이 관계 지정

img, video 등과 같이, 내용물이 HTML 문서의 바깥에 존재하는 엘리먼트를 대체되는 엘리먼트라 부른다. 이 때, 외부에 존재하는 내용물의 크기가 컨테이너와 차이날 때, 화면에는 어떻게 나타나야 할지 지정할 필요가 생긴다.

object-fit: fill

내용물의 비율을 무시하고 컨테이너의 크기에 맞춤

<div>
  <img style="width: 150px; height: 100px; border: 1px solid #000; object-fit: fill;" src="https://mdn.mozillademos.org/files/6457/mdn_logo_only_color.png" alt="MDN Logo"  />
  <img style="width: 100px; height: 150px; border: 1px solid #000; margin-top: 10px; object-fit: fill;" src="https://mdn.mozillademos.org/files/6457/mdn_logo_only_color.png" alt="MDN Logo"  />
</div>

object-fit: contain

내용물의 비율을 유지하는 채로, 내용물이 컨테이너에 포함되는 최대 크기가 되도록 함

object-fit: cover

내용물의 비율을 유지하는 채로, 내용물이 컨테이너를 전체를 덮는 최소 크기가 되도록 함

object-fit: none

내용물이 전혀 리사이징 되지 않음

 

object-fit: scale-down

none과 contain 중 내용물의 크기가 더 적은 쪽과 동일하게 동작

 

will-change: 값이 변경될 속성에 대한 힌트

브라우저에게 어떤 속성이 높은 확률로 변할 것인지 힌트를 줘서 앞으로 일어날 변화에 대비해 더 매끄러운 트랜지션을 구사할 수 있다.

will-change: auto; /* 기본값 */
will-change: scroll-position; /* 엘리먼트의 스크롤 위치가 바뀔 것 */
will-change: contents; /* 엘리먼트의 컨텐츠 중 일부가 바뀔 것 */

/* 혹은 특정 CSS 속성을 명시할 수 있다. */
/* transform, opacity, top, left, right, bottom 정도가 자주 사용된다. */
will-change: transform;
will-change: left, top; /* 여러 속성을 동시에 명시할 수도 있다. */

'기록' 카테고리의 다른 글

Git  (0) 2020.06.19
모바일에서 div 클릭시 회색 배경 제거  (0) 2020.06.18
[Vue] filter  (0) 2020.06.08
Navigating to current location ("/") is not allowed  (0) 2020.06.01
[Vue] click  (0) 2020.05.26