๐ Carousel
ํ์ ๋ชฉ๋ง๋ฅผ ๋ปํ๊ณ ์น์์๋ ์ฌ๋ผ์ด๋ ํํ๋ก ์ํํ๋ฉฐ ์ด๋ฏธ์ง, ์์ ๋ฑ์ ์ฝํ ์ธ ๋ฅผ ๋ ธ์ถํ๋ UI
์ค์ ๋ง์ผ์ปฌ๋ฆฌ์ ์ฌ์ฉ๋ Carousel
(1,2,3,4) -> (5,6,7,8)๊ณผ ๊ฐ์ด 4๊ฐ์ฉ ๋์ด๊ฐ
๋งจ ์ฒ์ (1,2,3,4)์ด ๋ณด์ฌ์ง ๋๋ ์ด์ ์ผ๋ก ๋์ด๊ฐ๋ ํ์ดํ๊ฐ ์์
๊ฐ์ฅ ๋ง์ง๋ง 4๊ฐ๊ฐ ๋ณด์ผ ๋๋ ๋ค์์ผ๋ก ๋์ด๊ฐ๋ ํ์ดํ๊ฐ ์์
Point
โ React Slick ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ
โ ์ปดํฌ๋ํธ ํ์ผ๋ก ์์ฑํด ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๋๋ก ์์ฑ
์ํ ์ฝ๋ ๋ณต๋ถํ๊ณ ์ฐธ๊ณ ๋งํฌ์ ๋ณด๋ฉฐ ๊ธฐ๋ณธ ์คํ์ผ๋ง์ ์ ์ฉํ ๊ฒฐ๊ณผ ์ฌ๋ฌ๊ฐ์ง ์ปค์คํ
๋ง์ด์ง ํ์ํจ
๊ธฐ๋ณธ ์คํ์ผ๋ง : dot๊ณผ drag ํตํด ์นด๋ ์์ง์ ์ ์ด & ํ์ฅ ๋์ค๊ณ ํ์ฅ ๋์ด๊ฐ
const settings = {
dots: false, //์ฌ๋ผ์ด๋ ๋ฐ์ ์ ๋ณด์ด๊ฒ
infinite: false, // ๋ฌดํ์ผ๋ก ๋ฐ๋ณต
speed: 500, // ๋๊ธฐ๋ ์๋
slidesToShow: 4, // ์คํฌ๋ฆฐ์ ๋ณด์ฌ์ง๋ ์ฌ๋ผ์ด๋ ๊ฐ์
slidesToScroll: 4, // n์ฅ์ฉ ๋ค๋ก ๋์ด๊ฐ๊ฒ ํจ
};
์ธํ ์ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํ์ฌ dots์ ์์ ๊ณ 4์ฅ ๋ณด์ด๊ณ 4์ฅ ๋์ด๊ฐ๊ฒ ์ค์ ํจ
๋ฌธ์ ๋...๐ํ์ดํ๊ฐ ๋ณด์ด์ง ์์๋ฐ๐
์ฝ์์ฐฝ์ ์ด๊ณ html์ ์ด์ฌํ ๋ค์ง ๊ฒฐ๊ณผ CSS๊ฐ ๋ฌธ์ ๋ผ๋ ๊ฒ์ ๊นจ๋ฌ์
Common SCSS์ CenterContainer ์ถ๊ฐ
Carousel ์์๋ฅผ header์ footer ์ฒ๋ผ ํ๋ฉด ๊ฐ์ด๋ฐ ๋ง์ถ๋ ค๊ณ ๋ณด๋ ๋งค๋ฒ ๋๋น๋ ๋ฑ๋ฑ์ ์์ฑํ๋ฉฐ ๋ฐ๋ณต๋๋ ๋ถ๋ถ์ด ์์ด mixin ํจ์๋ก ์์ ๋ฐ๋ก ์์ฑํด์ header, footer, Carousel์ ์ ์ฉํ๋ค.
@mixin CenterContainer {
display: flex;
width: 1050px;
flex-direction: column;
margin: 0 auto;
}
Carousel Arrow ๊ฐ๊ฒฉ ์ฌ์ค์
์ค์์ ์ค๋๋ก ํ๋ ์์ฃผ ์ฅ๋ฅ๋งํ ํ์ดํ๊ฐ ๋ณด์๋ค!!! ๋ฌธ์ ๋ ์ผ์ชฝ ํ์ดํ๊ฐ 1 ๋ค์ ๊ฐ๋ ค์ ธ ํด๋ฆญ์ด ๋์ง ์์๋ค. ๋ค์ ์ฝ์์ฐฝ์ ์ด๊ณ ์์ ์ ํํด๋ณด๋ margin์ด ์กํ์์๋ค. slick-theme.css
๋ก ๊ฐ์ margin์ ์ญ์ ํด์ฃผ๊ธฐ๋ก ํจ.
.slick-prev,
.slick-next {
margin: 0 100px; //์ญ์ ๋ ์ญ๊ณ
font-size: 0;
line-height: 0;
์ผ๋จ ๊ฐ๋ ค์ง์ง ์๊ฒ ํ์ดํ ๋ฐฐ์น, ํด๋ฆญ ์ ๋์ด๊ฐ๊ธฐ๋ ์ ์์ ์ผ๋ก ์คํ๋จ
๋ดค๋๋ content์ ๋
๋ค ->์ <-๊ฐ ์์๊ณ ๋งํฌ๋ก ๋ฐ๊ฟจ์
Carousel Arrow ์์ ํ์ดํ๋ก ๋ฐ๊ฟ์ฃผ๊ธฐ
์ ์ฝ๋ฑ์ง ๊ฐ์ ํ์ดํ ๋ง๊ณ ์์~~ ๋ง์ผ์ปฌ๋ฆฌ ์์ ์ ํ์ดํ๋ฅผ ๋ฃ๊ธฐ๋ก ํด์ CSS๋ก ๋ฌ๋ ค๊ฐ
.slick-prev {
left: -25px;
}
[dir="rtl"] .slick-prev {
right: -25px;
left: auto;
}
.slick-prev:before {
content: url("https://s3.ap-northeast-2.amazonaws.com/res.kurly.com/kurly/ico/2021/arrow_list_left_over_60_60.svg");
}
[dir="rtl"] .slick-prev:before {
content: url(https://s3.ap-northeast-2.amazonaws.com/res.kurly.com/kurly/ico/2021/arrow_list_right_60_60.svg);
}
.slick-next {
right: -25px;
}
[dir="rtl"] .slick-next {
right: auto;
left: -25px;
}
.slick-next:before {
content: url(https://s3.ap-northeast-2.amazonaws.com/res.kurly.com/kurly/ico/2021/arrow_list_right_60_60.svg);
}
[dir="rtl"] .slick-next:before {
content: url("https://s3.ap-northeast-2.amazonaws.com/res.kurly.com/kurly/ico/2021/arrow_list_left_over_60_60.svg");
}
๋ญ ์ผ๋จ ์๋ค๋ก ์ ์์ ์ผ๋ก ๋์ด๊ฐ
๋ ๋๊ธธ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ ํ์ดํ๊ฐ ํ์์ด๊ณ ๋ ๋๊ธธ ๊ฒ์ด ์๋ ๊ฒฝ์ฐ ๋ณด๋ผ์์ด ๋จ
ํ์ดํ ๋ฐฐ์น๊ฐ ์ด์ง ๋ง์ ์ ๋๋๋ฐ.. ์ผ๋จ ์ด๋ฏธ์ง ํ์ผ์ ๋ฃ๊ณ ์๊ฐํด๋ณด๊ธฐ๋ก ํจ
API๋ก data ๋ฐ์์ ๋ ๋๋งํ๊ธฐ
ํญ์ ์์ js๋ก ์ง์ UI/UX๋ฅผ ์ง๋ค๊ฐ ์ด๋ฒ์ ์ฒ์์ผ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ ๊ทธ๋ฐ๊ฐ ์คํํ์ ๋ ์๊ธฐ๋ html ๊ตฌ์กฐ๋ฅผ ์ดํดํ๊ณ ๊ทธ์ ๋ง์ถฐ CSS๋ฅผ ์์ ํ๋ ์์ ์ด ์๊ฐ๋ณด๋ค ์ค๋๊ฑธ๋ ธ๋ค.
display
์ relative
, absolute
์ดํด๊ฐ ์์ง ๋ชจ์๋ผ์ ์ฅ๋ฐ๊ตฌ๋ ์์ด์ฝ๊ณผ ์ข์ฐ ์ฌ๋ผ์ด๋ ํ์ดํ ๋ฐฐ์น๊ฐ ์ค๋๊ฑธ๋ฆผ<div>
ํ๊ทธ์ ๊ฑธ๋ฆฌ๋ ์์ CSS๋ฅผ ํ์
ํ์ง ๋ชปํด ์ฌ๋ผ์ด๋ ๋ด ์ด๋ฏธ์ง&ํ
์คํธ ํฌ๊ธฐ ์กฐ์ ์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆผprops๋ก ํ์ํ ์ ๋ณด ๋ณด์ฌ์ฃผ๊ณ CSS ์์
๋ง์ผ์ปฌ๋ฆฌ์๋ ์์ดํ
๋ช
, ํ์ค๊ฐ๊ฒฉ, ํ ์ธ๋ฅ , ํ ์ธ ๊ฐ๊ฒฉ์ ๋ค์๊ณผ ๊ฐ์ ์คํ์ผ๋ก ๋ณด์ฌ์ค
๋น์ทํ๊ฒ CSS ์์
์ ํ๊ณ ํด๋น ์ฑ
์์ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ฆฌ๋ฉด ๊ทธ๊ฒ๋ง ์ด์ง ์ปค์ง๊ฒ transition์ ์ฃผ์๋ค.
.Item_img {
height: 280px;
width: 100%;
transition: all 0.3s ease-in-out 0s;
&:hover {
transform: scale(1.05);
cursor: pointer;
}
}