영화 검색과 모달창 구현 및 북마크 버튼 토글하기

영화 검색 기능은 사용자에게 다양한 영화 정보를 제공하고, 쉽게 영화를 찾을 수 있도록 돕는 중요한 요소입니다. 이 기능을 구현하기 위해서는 API를 활용하여 영화 데이터를 가져오고, 사용자 인터페이스(UI)를 설계하여 사용자가 편리하게 검색할 수 있도록 해야 합니다.

이번 섹션에서는 영화 검색 기능을 어떻게 구현하는지 자세히 살펴보겠습니다.

썸네일

영화 API 선택

영화 검색 기능을 구현하기 위해 가장 먼저 할 일은 적절한 영화 API를 선택하는 것입니다. 여러 영화 데이터 제공 API 중에서 가장 많이 사용되는 것은 OMDb API, The Movie Database (TMDb) API, Open Movie Database 등이 있습니다.

이들 API는 영화 정보, 포스터, 평점, 개봉일 등 다양한 정보를 제공합니다.

API 이름 제공 데이터 종류 무료 사용 여부 문서 링크
OMDb API 영화 정보, 포스터, 평점 등 OMDb API Documentation
The Movie Database (TMDb) 영화, TV 프로그램, 배우 정보 TMDb API Documentation
Open Movie Database 영화 정보, 포스터 등 Open Movie Database

각 API의 장단점을 비교하여 프로젝트에 가장 적합한 API를 선택하는 것이 필요합니다. 예를 들어, TMDb API는 다양한 영화 정보를 제공하며, 사용자 맞춤형 추천 기능도 있어 좋습니다.

반면 OMDb API는 간단하게 사용할 수 있는 장점이 있습니다.

API 연동 및 데이터 가져오기

API 선택 후, 해당 API를 통해 영화 데이터를 가져오는 방법을 구현해야 합니다. JavaScript의 fetch 메서드를 활용하여 API와 통신할 수 있습니다.

아래는 OMDb API를 사용하여 영화 정보를 가져오는 간단한 예제입니다.

javascript
const apiKey = 'YOUR_API_KEY';
const searchMovie = (title) => {
fetch(`https://www.omdbapi.com/?apikey=${apiKey}&t=${title}`)
.then(response => {
if (!response.ok) {
throw new Error('네트워크 응답이 좋지 않습니다.');
}
return response.json();
})
.then(data => {
console.log(data);
// 데이터 처리 로직 추가
})
.catch(error => console.error('문제가 발생했습니다.', error));
};

위의 코드는 사용자가 입력한 영화 제목을 기반으로 API에 요청을 보내고, 응답으로 받은 영화 정보를 콘솔에 출력하는 예제입니다. 실제로는 이 데이터를 UI에 표시하는 로직이 필요합니다.

다른 내용도 보러가기 #1

사용자 인터페이스 설계

영화 검색 기능을 구현하기 위해서는 사용자 인터페이스(UI)가 매우 중요합니다. 사용자가 쉽게 검색할 수 있도록 검색창, 검색 버튼, 결과 표시 영역 등을 설계해야 합니다.

HTML과 CSS를 활용하여 다음과 같은 UI를 만들 수 있습니다.

“`html


“`

위의 HTML 코드는 영화 제목을 입력할 수 있는 텍스트 박스와 검색 버튼을 포함하고 있습니다. 검색 버튼을 클릭하면 사용자가 입력한 제목을 기반으로 API에 요청을 보내고, 결과를 표시할 수 있습니다.

CSS를 사용하여 UI의 스타일을 개선할 수 있습니다. 예를 들어, 버튼의 색상, 폰트, 여백 등을 설정하여 사용자가 보다 쾌적한 환경에서 검색할 수 있도록 합니다.

결과 표시 및 오류 처리

영화 검색 후 결과를 표시하는 것은 사용자 경험에 큰 영향을 줍니다. 응답 받은 데이터에서 필요한 정보를 추출하여 화면에 표시해야 합니다.

예를 들어, 영화 제목, 개봉일, 줄거리 등을 화면에 출력할 수 있습니다. 또한, API 요청 중 오류가 발생할 경우 사용자에게 적절한 오류 메시지를 제공해야 합니다.

예를 들어, “영화를 찾을 수 없습니다. “와 같은 메시지를 표시하여 사용자가 다음 조치를 취할 수 있도록 유도합니다.

영화 제목 개봉일 평점
어벤져스: 엔드게임 2019-04-26 8.4
기생충 2019-05-30 8.6
인터스텔라 2014-11-07 8.6

위 표는 영화 검색 결과를 표시하는 예시입니다. 사용자가 검색한 영화의 제목, 개봉일, 평점을 보여줄 수 있도록 합니다.

이러한 정보를 기반으로 사용자가 영화에 대한 결정을 내리는 데 도움을 줄 수 있습니다. 모달창은 사용자에게 추가 정보를 제공하거나 확인을 요청할 때 유용한 UI 요소입니다.

영화 검색 기능에 모달창을 추가하여 영화의 자세한 정보를 표시할 수 있습니다. 이번 섹션에서는 모달창을 구현하는 방법에 대해 알아보겠습니다.

모달창의 필요성

모달창은 사용자가 현재 작업을 중단하지 않고도 추가 정보를 확인할 수 있도록 해줍니다. 영화 검색 기능에서는 사용자가 특정 영화를 클릭했을 때 해당 영화의 포스터, 상세 설명, 출연 배우 등의 정보를 보여줄 수 있습니다.

이를 통해 사용자 경험을 향상시키고, 사용자가 원하는 정보를 더 쉽게 찾을 수 있도록 도와줍니다.

HTML 및 CSS로 모달창 만들기

모달창을 만들기 위해서는 HTML과 CSS를 사용하여 기본 구조와 스타일을 정의해야 합니다. 아래는 모달창의 기본 구조를 나타내는 HTML 코드입니다.

“`html

“`

모달창의 구조는 크게 두 부분으로 나뉘며, 하나는 모달 자체를 감싸는 요소이고, 다른 하나는 모달 내용을 담는 요소입니다. 모달을 닫기 위한 버튼도 포함되어 있습니다.

CSS를 사용하여 모달창의 스타일을 설정할 수 있습니다. 모달창은 화면의 중앙에 위치하고, 배경은 반투명하게 설정하여 사용자가 현재 페이지의 내용을 인식할 수 있도록 합니다.

“`css
.modal {
display: none; / 기본적으로 숨김 /
position: fixed;
z-index: 1;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgb(0,0,0);
background-color: rgba(0,0,0,0.4);
}

.modal-content {
background-color: #fefefe;
margin: 15% auto;
padding: 20px;
border: 1px solid #888;
width: 80%;
}
“`

JavaScript로 모달창 제어하기

모달창을 구현한 후에는 JavaScript를 사용하여 모달창의 표시 및 숨김 기능을 제어해야 합니다. 사용자가 영화 검색 결과를 클릭할 때 모달창이 나타나고, 닫기 버튼을 클릭하면 모달창이 사라지도록 설정합니다.

“`javascript
const modal = document.getElementById(“modal”);
const modalTitle = document.getElementById(“modal-title”);
const modalPoster = document.getElementById(“modal-poster”);
const modalDescription = document.getElementById(“modal-description”);
const closeModal = document.getElementsByClassName(“close”)[0];

const showModal = (movie) => {
modalTitle.innerText = movie.Title;
modalPoster.src = movie.Poster;
modalDescription.innerText = movie.Plot;
modal.style.display = “block”;
};

closeModal.onclick = () => {
modal.style.display = “none”;
};

window.onclick = (event) => {
if (event.target === modal) {
modal.style.display = “none”;
}
};
“`

위의 코드에서 showModal 함수는 사용자가 클릭한 영화의 정보를 모달창에 설정하고, 모달창을 표시합니다. 닫기 버튼이나 모달 바깥쪽을 클릭하면 모달창이 사라지도록 이벤트 리스너를 설정합니다.

이를 통해 사용자는 편리하게 정보를 확인하고, 다시 검색 결과로 돌아갈 수 있습니다.

모달창 내 추가 정보 표시

모달창에는 영화의 포스터 외에도 출연 배우, 감독, 장르 등의 추가 정보를 표시할 수 있습니다. API 응답에서 해당 정보를 추출하여 모달창에 추가하면 사용자에게 보다 풍부한 정보를 제공할 수 있습니다.

예를 들어, 다음과 같이 출연 배우 목록을 추가할 수 있습니다.

“`javascript
const modalCast = document.getElementById(“modal-cast”);

// 영화 정보를 가져올 때 출연 배우 정보 추가
const showModal = (movie) => {
modalTitle.innerText = movie.Title;
modalPoster.src = movie.Poster;
modalDescription.innerText = movie.Plot;
modalCast.innerText = 출연: ${movie.Actors};
modal.style.display = “block”;
};
“`

이렇게 구현된 모달창은 사용자가 영화에 대한 자세한 정보를 실시간으로 확인할 수 있게 하여, 영화 검색 경험을 한층 더 향상시킵니다. 영화 검색 기능에 북마크 버튼을 추가하면 사용자가 마음에 드는 영화를 쉽게 저장할 수 있게 됩니다.

북마크 버튼은 사용자가 클릭할 때마다 토글되어, 영화가 북마크에 추가되거나 제거되는 기능을 제공합니다. 이번 섹션에서는 북마크 버튼을 구현하는 방법에 대해 알아보겠습니다.

북마크 기능의 필요성

사용자들이 마음에 드는 영화를 쉽게 저장할 수 있게 해주는 북마크 기능은 사용자 경험을 크게 향상시킵니다. 이 기능을 통해 사용자는 나중에 다시 쉽게 찾을 수 있으며, 영화를 저장하는 즐거움도 느낄 수 있습니다.

또한, 북마크한 영화 목록을 기반으로 사용자 맞춤형 추천 기능을 추가할 수 있는 기초 자료가 될 수 있습니다.

북마크 버튼 디자인

북마크 버튼은 사용자가 쉽게 인식할 수 있도록 디자인해야 합니다. 일반적으로 별 모양의 아이콘을 사용하여 북마크 상태를 나타냅니다.

사용자가 버튼을 클릭할 때마다 상태가 변경되도록 구현할 수 있습니다.

html
<button id="bookmark-button" class="bookmark-button">
<span id="bookmark-icon">⭐</span> 북마크
</button>

위의 HTML 코드는 북마크 버튼을 생성하는 예제입니다. 아이콘은 JavaScript를 통해 동적으로 변경될 것입니다.

JavaScript로 북마크 기능 구현

북마크 버튼을 클릭할 때마다 토글하는 기능을 구현하기 위해서는 JavaScript를 사용할 수 있습니다. 버튼 클릭 시 현재 상태를 확인하고, 상태에 따라 아이콘을 변경하고, 북마크 리스트에 추가하거나 제거하는 로직을 작성해야 합니다.

“`javascript
let isBookmarked = false;

const bookmarkButton = document.getElementById(“bookmark-button”);
const bookmarkIcon = document.getElementById(“bookmark-icon”);

bookmarkButton.onclick = () => {
isBookmarked = !isBookmarked;
bookmarkIcon.innerText = isBookmarked ? ‘⭐️’ : ‘⭐’;
if (isBookmarked) {
// 북마크 추가 로직
console.log(‘영화가 북마크에 추가되었습니다.’);
} else {
// 북마크 제거 로직
console.log(‘영화가 북마크에서 제거되었습니다.’);
}
};
“`

위의 코드는 북마크 버튼을 클릭할 때마다 isBookmarked 변수를 토글하여 현재 북마크 상태를 저장합니다. 아이콘도 이에 따라 변경되고, 북마크 추가 또는 제거에 대한 로직이 실행됩니다.

북마크 목록 관리

북마크 기능을 보다 유용하게 만들기 위해서는 북마크한 영화 목록을 관리할 수 있는 기능이 필요합니다. 사용자가 북마크한 영화 정보를 배열에 저장하고, 이를 로컬 스토리지에 저장하여 페이지를 새로 고침해도 유지할 수 있도록 합니다.

“`javascript
let bookmarkedMovies = [];

const updateBookmarkList = (movie) => {
if (isBookmarked) {
bookmarkedMovies.push(movie);
localStorage.setItem(‘bookmarkedMovies’, JSON.stringify(bookmarkedMovies));
} else {
bookmarkedMovies = bookmarkedMovies.filter(m => m.Title !== movie.Title);
localStorage.setItem(‘bookmarkedMovies’, JSON.stringify(bookmarkedMovies));
}
};
“`

이렇게 구현된 북마크 목록 기능은 사용자가 북마크한 영화 정보를 저장하고, 다음에 페이지를 열 때도 쉽게 접근할 수 있게 해줍니다. 사용자가 북마크한 영화 목록을 화면에 표시하여, 한눈에 확인할 수 있도록 하면 더욱 좋습니다.

영화 제목 개봉일 북마크 상태
어벤져스: 엔드게임 2019-04-26
기생충 2019-05-30
인터스텔라 2014-11-07

위 표는 북마크 기능이 적용된 영화 목록의 예시입니다. 사용자가 북마크한 영화는 체크 표시로 나타나며, 이를 통해 사용자는 자신이 어떤 영화를 북마크했는지 쉽게 확인할 수 있습니다.

최종 정리

이번 섹션에서는 영화 검색 기능, 모달창, 북마크 버튼의 구현 방법에 대해 살펴보았습니다. 각 기능은 사용자에게 보다 나은 경험을 제공하기 위해 긴밀하게 연결되어 있으며, 사용자 인터페이스(UI)와 사용자 경험(UX)을 고려하여 설계해야 합니다.

이러한 기능을 통해 사용자는 더욱 편리하게 영화를 검색하고, 원하는 정보를 손쉽게 확인할 수 있습니다.

관련 영상

같이 보면 좋은 글