flex-shrink는 플렉스 컨테이너의 공간이 부족할 때 각 플렉스 아이템이 얼마나 줄어들 수 있는지를 결정하는 CSS 속성입니다. 이 속성에 애니메이션을 적용하면 요소가 축소되는 과정을 부드럽고 동적으로 표현할 수 있습니다.
다음 예제 코드를 실행하면 CSS만으로 flex-shrink 속성에 애니메이션을 구현하는 방법을 확인할 수 있습니다.
예제
<!DOCTYPE html>
<html>
<head>
<style>
.mycontainer {
display: flex;
background-color: orange;
}
.mycontainer > div {
background-color: white;
text-align: center;
line-height: 150px;
font-size: 30px;
width: 100px;
margin: 5px;
}
div {
animation: myanim 4s infinite;
}
@-webkit-keyframes myanim {
70% {
flex-shrink: 1;
}
}
</style>
</head>
<body>
<h1>Quiz</h1>
<div class = "mycontainer">
<div>Q1</div>
<div>Q2</div>
<div>Q3</div>
<div style = "flex-shrink: 0">Q4</div>
<div>Q5</div>
<div>Q6</div>
<div>Q7</div>
<div>Q8</div>
<div>Q9</div>
</div>
</body>
</html>코드 설명
- @keyframes myanim: 4초 동안 무한 반복되는 애니메이션을 정의하며, 진행률 70% 지점에서
flex-shrink: 1값이 적용됩니다. - .mycontainer:
display: flex로 설정된 플렉스 컨테이너로, 주황색 배경 위에 흰색 아이템들이 가로로 배치됩니다. - Q4 항목: 인라인 스타일로
flex-shrink: 0이 지정되어 있어 애니메이션이 실행되는 동안에도 크기가 줄어들지 않습니다.
이처럼 @keyframes와 함께 flex-shrink 값을 조절하면, 브라우저 창 크기나 콘텐츠 양에 따라 플렉스 아이템이 자연스럽게 축소되는 인터랙티브한 레이아웃을 손쉽게 만들 수 있습니다.