src/pages/EventPage.js π‘
import React, { useState } from "react";
import styled from "styled-components";
import { events } from "../data/EventList";
const CardContainer = styled.div`
display: flex;
overflow-x: scroll;
width: 100%;
height: 200px;
cursor: grab;
background-color: #424242;
`;
const Card = styled.div`
height: 100%;
margin: 30px;
display: flex;
justify-content: center;
align-items: center;
font-size: 20px;
transition: transform 0.3s ease;
&:hover {
transform: scale(1.1);
cursor: pointer;
}
`;
const EventCardWrapper = styled.div``;
const EventCardImg = styled.img`
width: 400px;
height: 400px;
`;
const EventPage = () => {
const [isMousePressed, setIsMousePressed] = useState(false);
const [containerScrollLeft, setContainerScrollLeft] = useState(0);
const [startMouseX, setStartMouseX] = useState(0);
const handleMousePress = (e) => {
setIsMousePressed(true);
setStartMouseX(e.pageX - e.currentTarget.offsetLeft);
setContainerScrollLeft(e.currentTarget.scrollLeft);
console.log(e.currentTarget.scrollLeft);
};
const handleMouseMove = (e) => {
if (!isMousePressed) return;
const currentMouseX = e.pageX - e.currentTarget.offsetLeft;
e.currentTarget.scrollLeft =
containerScrollLeft - (currentMouseX - startMouseX);
};
const handleMouseRelease = () => setIsMousePressed(false);
return (
<CardContainer
style={{ height: "1000px" }}
onMouseDown={handleMousePress}
onMouseMove={handleMouseMove}
onMouseUp={handleMouseRelease}
onMouseLeave={handleMouseRelease}
>
{events?.map((event) => (
<Card key={event.id}>
<EventCardWrapper>
<EventCardImg src={event.image} alt={event.title} />
<h3
style={{
color: "rgb(255, 255, 255)",
fontWeight: "bolder",
textAlign: "center",
}}
>
{event.title}
</h3>
<p
style={{
color: "rgb(155, 155, 155)",
fontWeight: "bolder",
textAlign: "center",
}}
>
{event.subtitle}
</p>
</EventCardWrapper>
</Card>
))}
</CardContainer>
);
};
export default EventPage;
src/data/EventList.js π‘
import { eventImg } from "../images";
export const events = [
{
id: "1",
image: eventImg.eventImg1,
title: "2023 μ¬λ¦ μ λ¬ΌμΈνΈ",
subtitle:
"μΌλ¦¬λ²λ κΈ°κ°, μ΅λ 7% ν μΈλ κ°κ²©μΌλ‘ μ΄μ μ ν κ°μ¬μ λ§μμ μ νμΈμ!",
},
{
id: "2",
image: eventImg.eventImg2,
title: "νΈμ§ν λ°λ² ν νν° μ΄λ²€νΈ",
subtitle: "μ΅λ 15,000μ ν μΈλ°κ³ νΈμ§ν λ°λ² ν νν°λ₯Ό μ€λΉνμΈμ!",
},
{
id: "3",
image: eventImg.eventImg3,
title: "μΉκ΅¬ μ΄λ μ΄λ²€νΈ",
subtitle: "μ¦κ±°μ΄ μΌμμ λ³ν 'μ΄μ μ 'μ μμ€ν μ¬λμκ² μλ €μ£ΌμΈμ!",
},
{
id: "4",
image: eventImg.eventImg4,
title: "μ± μ€μΉ μ΄λ²€νΈ",
subtitle: "μ μ‘κ° μ± μ€μΉνκ³ μ΄μ μ ν μΌμμ λλ €λ³΄μΈμ!",
},
{
id: "5",
image: eventImg.eventImg5,
title: "μν 리뷰 νν",
subtitle: "λ§μ‘±νμ λ§μμ λ΄μ μν 리뷰λ₯Ό μμ±ν΄μ£ΌμΈμ.",
},
{
id: "6",
image: eventImg.eventImg6,
title: "μ μ νλ λ°°μ‘ νν",
subtitle: "ν λ² λ°°μ‘λΉλ‘ 4ν 무λ£λ°°μ‘",
},
{
id: "7",
image: eventImg.eventImg1,
title: "2023 μ¬λ¦ μ λ¬ΌμΈνΈ",
subtitle:
"μΌλ¦¬λ²λ κΈ°κ°, μ΅λ 7% ν μΈλ κ°κ²©μΌλ‘ μ΄μ μ ν κ°μ¬μ λ§μμ μ νμΈμ!",
},
{
id: "8",
image: eventImg.eventImg2,
title: "νΈμ§ν λ°λ² ν νν° μ΄λ²€νΈ",
subtitle: "μ΅λ 15,000μ ν μΈλ°κ³ νΈμ§ν λ°λ² ν νν°λ₯Ό μ€λΉνμΈμ!",
},
{
id: "9",
image: eventImg.eventImg3,
title: "μΉκ΅¬ μ΄λ μ΄λ²€νΈ",
subtitle: "μ¦κ±°μ΄ μΌμμ λ³ν 'μ΄μ μ 'μ μμ€ν μ¬λμκ² μλ €μ£ΌμΈμ!",
},
{
id: "10",
image: eventImg.eventImg4,
title: "μ± μ€μΉ μ΄λ²€νΈ",
subtitle: "μ μ‘κ° μ± μ€μΉνκ³ μ΄μ μ ν μΌμμ λλ €λ³΄μΈμ!",
},
{
id: "11",
image: eventImg.eventImg5,
title: "μν 리뷰 νν",
subtitle: "λ§μ‘±νμ λ§μμ λ΄μ μν 리뷰λ₯Ό μμ±ν΄μ£ΌμΈμ.",
},
{
id: "12",
image: eventImg.eventImg6,
title: "μ μ νλ λ°°μ‘ νν",
subtitle: "ν λ² λ°°μ‘λΉλ‘ 4ν 무λ£λ°°μ‘",
},
];
src/images/index.js π‘
import logo from "./logo.jpeg";
import backgroundImg from "./background.png";
import termsImg from "./terms.jpeg";
import porkImg from "./porkbelly-fresh-list.png";
import chickenImg from "./chickef-cut-list.png";
import porkcutletImg from "./porkcutlet-sirloin-list.png";
import eggImg from "./egg-fresh-list.png";
import milkImg from "./milk-fresh-list.png";
import hanuroundImg from "./baby-hanuround-bmix-list.png";
import carthegardenImg from "./carthegarden.jpeg";
import eventImg1 from "./eventImg1.png";
import eventImg2 from "./eventImg2.png";
import eventImg3 from "./eventImg3.png";
import eventImg4 from "./eventImg4.png";
import eventImg5 from "./eventImg5.png";
import eventImg6 from "./eventImg6.png";
const eventImg = {
eventImg1,
eventImg2,
eventImg3,
eventImg4,
eventImg5,
eventImg6,
};
export {
logo,
backgroundImg,
termsImg,
porkImg,
chickenImg,
porkcutletImg,
eggImg,
milkImg,
hanuroundImg,
carthegardenImg,
eventImg,
};
νμ¬ λͺ¨μ΅ π‘
hoverλλ©΄ μ½κ° 컀μ§λ€.
νκ³ π’
'μ΄μλ μ΄νλ μλλ€'λΌλ ννμ κ³Όλνκ°μ κ³Όμνκ°λ₯Ό λ§μΌλ €λ μλλ‘ μμ£Ό μ¬μ©νλ€. 'μ΄μ μ λ¨μ΄λ€'μ΄λΌλ μ± μμλ ν΄λΉ ννμ΄, μ€μ μ무κ²λ λ§νμ§ μλ κ²½μ°κ° λλΆλΆμ΄λΌ, λ©μ©‘ν λ¬Έμ₯μ μν¬μ μΌλ‘ 무μλ―Έν λ¨μ΄λ€μ λ§λΆμ΄λ λ―Όλ§μ€λ¬μ΄ λ§μ₯λμ΄λΌκ³ μμ νλ€.
μ°λ¦¬λ 'μ΄μλ μ΄νλ μλλ€'λΌλ ννμ μ¬μ©ν λ, κ³Όλνκ°λκΈ° μ¬μ΄ λμμ κ°μΉλ₯Ό νΉμ κΈ°μ€μ μ κ³ μ νλ μν μ μ§μ€νλ€. λ°λ©΄ κ³Όμνκ°λλ λμμ μΉνΈνλ μν μ λ±νμνλ κ²½ν₯μ΄ μλ€.
무μλ―Έν λ§μ₯λκΉμ§λ μλλΌκ³ μκ°νλ€. μ€μ€λ‘μ λν(νΉμ 무μμΈκ°μ λν) νκ°κ° μΌλ°ν΄μ§ λ κ³Όμνκ°λ₯Ό λ§μμ€μΌλ‘μ¨ λ©νμ μ μ μ μΌλ‘ μ μ§ν΄ μ€λ€. λ΄ μκ° κ·Έ μ΄μλ μ΄νλ μλλ€.