HTML
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>추천/비추천 버튼</title> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <link rel="stylesheet" href="style.css"> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <style> /* CSS goes here */ </style> </head> <body> <div class="vote-container"> <button class="btn upvote" id="upvote-btn"> <span class="material-icons">thumb_up</span> 추천 <span id="upvote-count">0</span> </button> <button class="btn downvote" id="downvote-btn"> <span class="material-icons">thumb_down</span> 비추천 <span id="downvote-count">0</span> </button> </div> <script> /* jQuery goes here */ </script> </body> </html>
CSS
body { font-family: Arial, sans-serif; background-color: #f4f4f4; display: flex; justify-content: center; align-items: center; height: 100vh; } .vote-container { display: flex; gap: 20px; } .vote-container .btn { display: flex; align-items: center; gap: 10px; background-color: #e0e0e0; border: none; border-radius: 30px; padding: 10px 20px; cursor: pointer; font-size: 18px; color: #333; transition: background-color 0.3s ease; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } .vote-container .btn span.material-icons { font-size: 24px; } .vote-container .btn:hover { background-color: #d4d4d4; } .vote-container .btn.active { background-color: #4caf50; color: #fff; } .vote-container .btn.downvote.active { background-color: #f44336; } #upvote-count, #downvote-count { font-weight: bold; }
jQuery (JavaScript)
$(document).ready(function() { let upvoteCount = 0; let downvoteCount = 0; // 추천 버튼 클릭 이벤트 $('#upvote-btn').click(function() { if (!$(this).hasClass('active')) { upvoteCount++; $('#upvote-count').text(upvoteCount); $(this).addClass('active'); $('#downvote-btn').removeClass('active'); } }); // 비추천 버튼 클릭 이벤트 $('#downvote-btn').click(function() { if (!$(this).hasClass('active')) { downvoteCount++; $('#downvote-count').text(downvoteCount); $(this).addClass('active'); $('#upvote-btn').removeClass('active'); } }); });
설명:
HTML 구조:
- 두 개의 버튼을 각각 추천(thumb_up)과 비추천(thumb_down)으로 설정했습니다.
- span 태그를 사용해 아이콘과 카운트가 함께 표시됩니다.
CSS 디자인:
- btn 클래스는 둥근 모서리와 그림자를 적용해 버튼을 입체적으로 보이게 했습니다.
- 버튼이 활성화(active) 상태일 때는 추천(초록색) 또는 비추천(빨간색)으로 배경색이 바뀝니다.
- 마우스를 올렸을 때 색상이 살짝 변하도록 :hover 효과를 추가했습니다.
jQuery 기능:
- 각 버튼을 클릭하면 active 클래스가 추가되어 버튼 색상이 변경됩니다.
- 추천 또는 비추천 중 하나의 버튼만 활성화되도록 설정했습니다.
- 클릭할 때마다 카운트가 증가하며, 버튼 위의 숫자가 갱신됩니다.
댓글 ( 0)
댓글 남기기