자바스크립트를 활용해서 해당 필요한 날짜들을 추가해주는 로직을 만들었다.
날짜 클릭시 class를 추가하고 다른 날짜를 클릭하면 나머지 active 클래스가 제거되는 방식으로 만들었다.
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="css/reset.css">
<link rel="stylesheet" href="css/reserve.css">
<link rel="stylesheet" href="css/header.css">
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<link rel='stylesheet' href='//cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/css/toastr.min.css' />
<script src='//cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/js/toastr.min.js'></script>
<link rel="stylesheet" href="fonts/material-design-iconic-font/css/material-design-iconic-font.min.css">
<style>
* {
font-size: 11px;
}
body {
background-color: #FDFCF0;
}
/* header */
.header-nav-wrapper {
background: url(../images/bg_header.gif) repeat-x 0 0;
background-position: center;
background-size: contain;
height: 120px;
padding-top: 4px;
}
.header-nav-container {
position: fixed;
}
.header {
display: flex;
justify-content: space-between;
padding-left: 40px;
padding-right: 150px;
}
.header-inner {
display: flex;
}
.header-inner>div {
border-right: 1px solid #DDDDDD;
margin-left: 8px;
padding-right: 4px;
}
/* //header */
/* nav */
.nav-line {
background-color: red;
border-radius: 50px;
height: 5px;
/* background-image: linear-gradient(to right, white 33%, rgba(255, 255, 255, 0) 0%);
background-position: bottom;
background-size: 15px 1px;
background-repeat: repeat-x; */
}
.nav-wrapper {
/* background: url(../images/bg_header.gif) repeat-x 0 0; */
/* width: 100%;*/
height: 94px;
display: flex;
align-items: center;
justify-content: space-between;
}
.nav-content {
padding-top: 15px;
}
.movieLogo-wrapper {
text-align: center;
}
.cgvLogo {
width: 120px;
margin-left: 150px;
/* margin-right: -40px; */
}
.cgvMovie {
width: auto;
height: 28px;
}
.nav-inner {
display: flex;
/* margin-left: -250px; */
margin-left: 150px;
margin-right: auto;
align-items: center;
padding-bottom: 15px;
}
.nav-inner>div>button {
padding-top: 5px;
font-size: 14px;
font-weight: bold;
margin-left: 15px;
}
.search-wrapper {
margin-left: 70px;
height: 20px;
}
.search-wrapper>input {
width: 100px;
height: 20px;
}
.searchButton {
margin: 0 !important;
padding: 2px !important;
background-color: red;
color: white;
width: 30px;
height: 100%;
font-size: 10px !important;
}
/* content */
.reserve-container {
margin-top: 20px;
display: flex;
justify-content: center;
height: 800px;
/* border: 1px solid #dddddd; */
}
.reserve-container>div {
border: 1px solid #dddddd;
}
.reserve-title {
border-bottom: 1px solid #dddddd;
background-color: #444444;
text-align: center;
color: #dddddd;
padding: 5px;
font-size: 13px;
font-weight: bold;
}
.movie-part {
width: 284px;
}
.theater-part {
width: 264px;
}
.day-part {
width: 91px;
}
.time-part {
width: 384px;
}
.sort-wrapper {
margin: 10px 6px 6px 10px;
/* padding: 3px; */
display: flex;
border-bottom: 1px solid #dddddd;
font-size: 12px;
}
.sort-wrapper>div {
padding: 3px;
}
.sort-wrapper>div:hover {
border-bottom: 1px solid #111111;
}
.sort-selected {
font-weight: bold;
border-bottom: 1px solid #111111;
}
.sort-korean {
margin-left: 6px;
}
.reserve-date {
padding-top: 5px;
display: flex;
flex-direction: column;
align-items: center;
height: 770px;
overflow: scroll;
overflow-x: hidden;
}
.movie-date-wrapper {
display: flex;
justify-content: center;
align-items: center;
padding: 5px 2px;
}
.movie-week-of-day {
margin-left: 5px;
font-size: 10px;
width: 12px;
height: 22px;
line-height: 22px;
}
.movie-day {
text-align: center;
width: 34px;
height: 22px;
font-size: 17px;
font-weight: bold;
}
.saturday {
color: #31597E;
font-weight: bold;
}
.sunday {
color: #AF2D2D;
font-weight: bold;
}
.movie-date-wrapper-active {
background-color: #333333;
}
.movie-date-wrapper-active>* {
color: white;
}
</style>
</head>
<body>
<div class="reserve-container">
<div class="movie-part">
<div class="reserve-title">영화</div>
<div class="sort-wrapper">
<div class="sort-rate sort-selected">예매율순</div>
<div class="sort-korean">가나다순</div>
</div>
<div class="movie-list">영화 목록 가져오기 </div>
</div>
<div class="theater-part">
<div class="reserve-title">극장</div>
<div></div>
</div>
<div class="day-part">
<div class="reserve-title">날짜</div>
<div class="reserve-date"></div>
</div>
<div class="time-part">
<div class="reserve-title">시간</div>
</div>
</div>
<script>
const date = new Date();
// console.log(date.getFullYear());
const lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);
const reserveDate = document.querySelector(".reserve-date");
const weekOfDay = ["일", "월", "화", "수", "목", "금", "토"]
const year = date.getFullYear();
const month = date.getMonth();
for (i = date.getDate(); i <= lastDay.getDate(); i++) {
const button = document.createElement("button");
const spanWeekOfDay = document.createElement("span");
const spanDay = document.createElement("span");
//class넣기
button.classList = "movie-date-wrapper"
spanWeekOfDay.classList = "movie-week-of-day";
spanDay.classList = "movie-day";
//weekOfDay[new Date(2020-03-날짜)]
const dayOfWeek = weekOfDay[new Date(year + "-" + month + "-" + i).getDay()];
//요일 넣기
if (dayOfWeek === "토") {
spanWeekOfDay.classList.add("saturday");
spanDay.classList.add("saturday");
} else if (dayOfWeek === "일") {
spanWeekOfDay.classList.add("sunday");
spanDay.classList.add("sunday");
}
spanWeekOfDay.innerHTML = dayOfWeek;
button.append(spanWeekOfDay);
//날짜 넣기
spanDay.innerHTML = i;
button.append(spanDay);
//button.append(i);
reserveDate.append(button);
dayClickEvent(button);
}
function dayClickEvent(button) {
button.addEventListener("click", function() {
const movieDateWrapperActive = document.querySelectorAll(".movie-date-wrapper-active");
movieDateWrapperActive.forEach((list) => {
list.classList.remove("movie-date-wrapper-active");
})
button.classList.add("movie-date-wrapper-active");
})
}
</script>
</body>
</html>
'JavaScript > javascript 활용하기' 카테고리의 다른 글
CSS - 스크롤 이벤트 (0) | 2020.12.06 |
---|---|
CSS - 움직이는 문 만들기 (0) | 2020.12.03 |
이벤트 위임 처리하기 (0) | 2020.11.29 |
javascript를 활용한 tic tac toe 만들어보기 (0) | 2020.07.08 |
자바스크립트 2중 for문을 활용한 좌석 만들기 (4) | 2020.03.03 |