리액트/라이브러리
[Slick-slider] React slick 세팅/간격주기/드래그 중 클릭막기 - 간격주기 / Hover효과 영역[2]
임고미
2022. 4. 28. 18:40
728x90
300x250
React에서 많이 사용하는 Carousel은 여러가지가 있겠지만, 그 중 직관적이고 많이사용하는 slick slider을 이용해 Carousel을 뽀개..보겠습니다!
사용한 스택 : React / TypeScript / emotion
emotion은 styled-component와 비슷하니 문법만 잘 수정하면됩니다
styled-component를 사용할경우 하나 확인해야할 부분은 반응형 적용부분입니다!
목차
1. 슬라이드 세팅
2. 간격주기 / hover 효과 영역
3. 드래그중 클릭 막기
간격주기
1. css custom
간격을 주기위해선 slick slide의 css를 수정해줭하는 수밖에 없습니다.
[기본]
//오른쪽으로 20px만큼 간격주기
.slick-list {
marign-right: -20px;
}
.slick-slide {
padding-right: 20px;
}
왠지 모르겠지만,, 저는 margin으로 주니까 layout이 깨져서 padding으로 조절해줬습니다.
[hover 효과]
slick slide에는 overflow가 걸려 있어서 각 slide에 hover효과를 줄 시 영역을 넘어가는 효과는 보이지 않게됩니다.
🤔 < overflow를 visible로 바꾸면 되는거 아닌가? |
라는 생각이 들 수 있는데 맞습니다.
저렇게 적용해주면 바로 해결됩니다,, 만! 디자인에서 보여줘야하는 슬라이드 갯수를 제한하고 있을시에 overflow를 visible로 바꿔버리면
갯수 제한이 의미 없어지게 됩니다.
그럼 어떻게 하면 좋을까요 ?
slide를 감싸고 있는 list에 padding을 줘서 hover효과가 보일 수 있는 영역을 세팅해줍니다.
.slick-list {
marign-right: -20px;
//이팩트 크기만큼의 패딩 세팅
padding: `${props=> props.hoverEffectSize}`
//이팩트 크기만큼 영역이 움직였을테니 margin을 줘서 제자리로 옴겨준다
marginLeft: `${props=> props.hoverEffectSize ? -props.hoverEffectSize : 0}`,
marginTop: `${props=> props.hoverEffectSize ? -props.hoverEffectSize : 0}`,
}
.slick-slide {
padding-right: 20px;
}
728x90
300x250