| <!DOCTYPE html> |
| <html lang="ko"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>Harmony Audiobooks - ์ํผ์ ์ํ ์๋ฆฌ</title> |
| <script src="https://cdn.tailwindcss.com"></script> |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> |
| <script> |
| tailwind.config = { |
| theme: { |
| extend: { |
| colors: { |
| primary: '#5E35B1', |
| secondary: '#FFAB00', |
| dark: '#1A237E', |
| light: '#E8EAF6', |
| }, |
| fontFamily: { |
| sans: ['"Noto Sans KR"', 'sans-serif'], |
| serif: ['"Noto Serif KR"', 'serif'], |
| }, |
| } |
| } |
| } |
| </script> |
| <style> |
| @import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700&family=Noto+Serif+KR:wght@300;400;500;600;700&display=swap'); |
| |
| body { |
| background: linear-gradient(135deg, #E8EAF6 0%, #F3E5F5 100%); |
| } |
| |
| .hero-pattern { |
| background: linear-gradient(135deg, rgba(94,53,177,0.8) 0%, rgba(26,35,126,0.9) 100%), |
| radial-gradient(circle, rgba(255,255,255,0.1) 1px, transparent 1px); |
| background-size: 20px 20px; |
| } |
| |
| .book-card { |
| transition: all 0.3s ease; |
| transform-style: preserve-3d; |
| perspective: 1000px; |
| box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.2); |
| } |
| |
| .book-card:hover { |
| transform: translateY(-8px) rotateY(10deg) scale(1.03); |
| box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); |
| } |
| |
| .audio-player { |
| background: linear-gradient(135deg, #5E35B1 0%, #1A237E 100%); |
| } |
| |
| |
| input[type="range"] { |
| -webkit-appearance: none; |
| background: transparent; |
| } |
| |
| input[type="range"]::-webkit-slider-thumb { |
| -webkit-appearance: none; |
| width: 16px; |
| height: 16px; |
| border-radius: 50%; |
| background: #FFAB00; |
| cursor: pointer; |
| transform: translateY(-6px); |
| box-shadow: 0 0 5px rgba(255, 171, 0, 0.8); |
| transition: all 0.2s ease; |
| } |
| |
| input[type="range"]::-webkit-slider-thumb:hover { |
| transform: translateY(-6px) scale(1.2); |
| box-shadow: 0 0 8px rgba(255, 221, 0, 0.9); |
| } |
| |
| @keyframes float { |
| 0%, 100% { transform: translateY(0); } |
| 50% { transform: translateY(-10px); } |
| } |
| |
| .floating { |
| animation: float 4s ease-in-out infinite; |
| } |
| </style> |
| </head> |
| <body class="font-sans bg-gray-50"> |
| |
| <nav class="bg-gradient-to-r from-primary to-dark shadow-lg"> |
| <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> |
| <div class="flex justify-between h-16"> |
| <div class="flex items-center"> |
| <a href="#" class="flex-shrink-0 flex items-center"> |
| <i class="fas fa-headphones text-primary text-2xl mr-2"></i> |
| <span class="text-xl font-bold text-primary">Harmony</span> |
| </a> |
| <div class="hidden sm:ml-6 sm:flex sm:space-x-8"> |
| <a href="#" class="border-primary text-gray-900 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">ํ</a> |
| <a href="#" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">์นดํ
๊ณ ๋ฆฌ</a> |
| <a href="#" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">๋ฒ ์คํธ์
๋ฌ</a> |
| <a href="#" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">์ ๊ฐ</a> |
| </div> |
| </div> |
| <div class="hidden sm:ml-6 sm:flex sm:items-center"> |
| <div class="relative max-w-xs mx-auto"> |
| <div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none"> |
| <i class="fas fa-search text-gray-400"></i> |
| </div> |
| <input type="text" class="block w-full pl-10 pr-3 py-2 border border-gray-300 rounded-md leading-5 bg-white placeholder-gray-500 focus:outline-none focus:placeholder-gray-400 focus:ring-1 focus:ring-primary focus:border-primary sm:text-sm" placeholder="์ค๋์ค๋ถ ๊ฒ์"> |
| </div> |
| <button class="ml-4 bg-primary hover:bg-dark text-white px-4 py-2 rounded-md text-sm font-medium transition duration-150 ease-in-out">๋ก๊ทธ์ธ</button> |
| <button class="ml-2 bg-secondary hover:bg-opacity-80 text-white px-4 py-2 rounded-md text-sm font-medium transition duration-150 ease-in-out">๋ฌด๋ฃ์ฒดํ</button> |
| </div> |
| <div class="-mr-2 flex items-center sm:hidden"> |
| <button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-primary"> |
| <i class="fas fa-bars"></i> |
| </button> |
| </div> |
| </div> |
| </div> |
| </nav> |
|
|
| |
| <div class="py-16 bg-light"> |
| <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> |
| <div class="text-center"> |
| <h2 class="text-3xl font-extrabold text-gray-900 sm:text-4xl">์ฌ๋ฌ๋ถ์ ์ด์ผ๊ธฐ๋ฅผ ๋ค๋ ค์ฃผ์ธ์</h2> |
| <p class="mt-4 text-xl text-gray-600">๋๋์ ์ ์ ์ผ๋ก ํ๋ถ๋ฏผ ๋ถ๋ค์ ์ง์ํ ๊ฒฝํ์ ์ค๋์ค๋ถ์ผ๋ก ์ ์ํฉ๋๋ค</p> |
| </div> |
| |
| <div class="mt-12 bg-white rounded-xl shadow-md overflow-hidden"> |
| <div class="p-8"> |
| <form action="#" method="POST"> |
| <div class="grid grid-cols-1 gap-6 sm:grid-cols-2"> |
| <div> |
| <label for="name" class="block text-sm font-medium text-gray-700">์ด๋ฆ</label> |
| <input type="text" name="name" id="name" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-primary focus:border-primary"> |
| </div> |
| |
| <div> |
| <label for="category" class="block text-sm font-medium text-gray-700">์นดํ
๊ณ ๋ฆฌ</label> |
| <select id="category" name="category" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-primary focus:border-primary"> |
| <option>ํ๋ถ๋ฏผ ์๊ธฐ</option> |
| <option>๊ณ ํฅ ํธ์ง</option> |
| <option>์์ ์</option> |
| <option>์์ ๊ธ</option> |
| <option>๊ธฐํ ๊ฒฝํ ๊ณต์ </option> |
| </select> |
| </div> |
| |
| <div class="sm:col-span-2"> |
| <label for="title" class="block text-sm font-medium text-gray-700">์ ๋ชฉ</label> |
| <input type="text" name="title" id="title" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-primary focus:border-primary"> |
| </div> |
| |
| <div class="sm:col-span-2"> |
| <label for="content" class="block text-sm font-medium text-gray-700">๋ด์ฉ</label> |
| <textarea id="content" name="content" rows="4" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-primary focus:border-primary"></textarea> |
| </div> |
| |
| <div class="sm:col-span-2"> |
| <div class="flex items-start"> |
| <div class="flex-shrink-0"> |
| <input id="privacy" name="privacy" type="checkbox" class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded"> |
| </div> |
| <div class="ml-3"> |
| <label for="privacy" class="text-sm text-gray-700">๊ฐ์ธ์ ๋ณด ์์ง ๋ฐ ์ด์ฉ์ ๋์ํฉ๋๋ค</label> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| <div class="mt-8 flex justify-end"> |
| <button type="submit" class="ml-3 inline-flex justify-center py-2 px-6 border border-transparent shadow-lg text-sm font-medium rounded-md text-white bg-gradient-to-r from-primary to-purple-600 hover:from-purple-600 hover:to-dark transform hover:-translate-y-1 transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary"> |
| ์ฌ์ฐ ๋ณด๋ด๊ธฐ |
| </button> |
| </div> |
| </form> |
| </div> |
| </div> |
| </div> |
| </div> |
|
|
| |
| <div class="hero-pattern relative overflow-hidden"> |
| <div class="max-w-7xl mx-auto"> |
| <div class="relative z-10 pb-8 bg-white sm:pb-16 md:pb-20 lg:max-w-2xl lg:w-full lg:pb-28 xl:pb-32"> |
| <main class="mt-10 mx-auto max-w-7xl px-4 sm:mt-12 sm:px-6 md:mt-16 lg:mt-20 lg:px-8 xl:mt-28"> |
| <div class="sm:text-center lg:text-left"> |
| <h1 class="text-4xl tracking-tight font-extrabold text-gray-900 sm:text-5xl md:text-6xl"> |
| <span class="block text-primary">์ง์ํ ์ด์ผ๊ธฐ๊ฐ ์ ํ๋</span> |
| <span class="block text-dark">ํน๋ณํ ์ค๋์ค๋ถ ๊ฒฝํ</span> |
| </h1> |
| <p class="mt-3 text-base text-gray-500 sm:mt-5 sm:text-lg sm:max-w-xl sm:mx-auto md:mt-5 md:text-xl lg:mx-0"> |
| ํ๋ถ๋ฏผ์ ๊ฒฝํ, ๋ง์์ ๋ด์ ํธ์ง, ๊ฐ๋์ ์ธ ์, ์์๊ธ ๋ฑ ์ง์ํ ์ด์ผ๊ธฐ๋ค์ด ์์ฑ์ผ๋ก ์ด์๋ฉ๋๋ค. |
| </p> |
| <div class="mt-5 sm:mt-8 sm:flex sm:justify-center lg:justify-start"> |
| <div class="rounded-md shadow"> |
| <a href="#" class="w-full flex items-center justify-center px-8 py-3 border border-transparent text-base font-medium rounded-md text-white bg-primary hover:bg-dark md:py-4 md:text-lg md:px-10"> |
| ์ง๊ธ ์์ํ๊ธฐ |
| </a> |
| </div> |
| <div class="mt-3 sm:mt-0 sm:ml-3"> |
| <a href="#" class="w-full flex items-center justify-center px-8 py-3 border border-transparent text-base font-medium rounded-md text-primary bg-white border-primary hover:bg-light md:py-4 md:text-lg md:px-10"> |
| ์ํ ๋ฃ๊ธฐ |
| </a> |
| </div> |
| </div> |
| </div> |
| </main> |
| </div> |
| </div> |
| <div class="lg:absolute lg:inset-y-0 lg:right-0 lg:w-1/2 hidden lg:block"> |
| <img class="h-56 w-full object-cover sm:h-72 md:h-96 lg:w-full lg:h-full floating" src="https://images.unsplash.com/photo-1589998059171-988d887df646?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1000&q=80" alt="Woman listening to audiobook"> |
| </div> |
| </div> |
|
|
| |
| <div class="py-12 bg-light"> |
| <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> |
| <div class="lg:text-center"> |
| <h2 class="text-base text-primary font-semibold tracking-wide uppercase">์นดํ
๊ณ ๋ฆฌ ํ์</h2> |
| <p class="mt-2 text-3xl leading-8 font-extrabold tracking-tight text-gray-900 sm:text-4xl">๋น์ ์ ์ทจํฅ์ ๋ง๋ ์ค๋์ค๋ถ์ ์ฐพ์๋ณด์ธ์</p> |
| </div> |
|
|
| <div class="mt-10 grid grid-cols-2 gap-6 md:grid-cols-4 lg:grid-cols-6"> |
| <a href="#" class="group"> |
| <div class="aspect-w-1 aspect-h-1 w-full overflow-hidden rounded-lg bg-gradient-to-br from-white to-gray-100 shadow-lg transition-all duration-300 transform group-hover:-translate-y-2 group-hover:shadow-xl"> |
| <div class="flex items-center justify-center h-full p-4"> |
| <div class="text-center"> |
| <i class="fas fa-hand-holding-heart text-3xl text-primary mb-2"></i> |
| <h3 class="text-sm font-medium text-gray-900">ํ๋ถ๋ฏผ ์๊ธฐ</h3> |
| </div> |
| </div> |
| </div> |
| </a> |
| |
| <a href="#" class="group"> |
| <div class="aspect-w-1 aspect-h-1 w-full overflow-hidden rounded-lg bg-white shadow-md transition duration-300 group-hover:shadow-xl"> |
| <div class="flex items-center justify-center h-full p-4"> |
| <div class="text-center"> |
| <i class="fas fa-envelope text-3xl text-primary mb-2"></i> |
| <h3 class="text-sm font-medium text-gray-900">๊ณ ํฅ ํธ์ง</h3> |
| </div> |
| </div> |
| </div> |
| </a> |
| |
| <a href="#" class="group"> |
| <div class="aspect-w-1 aspect-h-1 w-full overflow-hidden rounded-lg bg-white shadow-md transition duration-300 group-hover:shadow-xl"> |
| <div class="flex items-center justify-center h-full p-4"> |
| <div class="text-center"> |
| <i class="fas fa-pen-nib text-3xl text-primary mb-2"></i> |
| <h3 class="text-sm font-medium text-gray-900">์์ ๊ธ</h3> |
| </div> |
| </div> |
| </div> |
| </a> |
| |
| <a href="#" class="group"> |
| <div class="aspect-w-1 aspect-h-1 w-full overflow-hidden rounded-lg bg-white shadow-md transition duration-300 group-hover:shadow-xl"> |
| <div class="flex items-center justify-center h-full p-4"> |
| <div class="text-center"> |
| <i class="fas fa-brain text-3xl text-primary mb-2"></i> |
| <h3 class="text-sm font-medium text-gray-900">์๊ธฐ๊ณ๋ฐ</h3> |
| </div> |
| </div> |
| </div> |
| </a> |
| |
| <a href="#" class="group"> |
| <div class="aspect-w-1 aspect-h-1 w-full overflow-hidden rounded-lg bg-white shadow-md transition duration-300 group-hover:shadow-xl"> |
| <div class="flex items-center justify-center h-full p-4"> |
| <div class="text-center"> |
| <i class="fas fa-chart-line text-3xl text-primary mb-2"></i> |
| <h3 class="text-sm font-medium text-gray-900">๊ฒฝ์ /๊ฒฝ์</h3> |
| </div> |
| </div> |
| </div> |
| </a> |
| |
| <a href="#" class="group"> |
| <div class="aspect-w-1 aspect-h-1 w-full overflow-hidden rounded-lg bg-white shadow-md transition duration-300 group-hover:shadow-xl"> |
| <div class="flex items-center justify-center h-full p-4"> |
| <div class="text-center"> |
| <i class="fas fa-child text-3xl text-primary mb-2"></i> |
| <h3 class="text-sm font-medium text-gray-900">์ด๋ฆฐ์ด</h3> |
| </div> |
| </div> |
| </div> |
| </a> |
| |
| <a href="#" class="group"> |
| <div class="aspect-w-1 aspect-h-1 w-full overflow-hidden rounded-lg bg-white shadow-md transition duration-300 group-hover:shadow-xl"> |
| <div class="flex items-center justify-center h-full p-4"> |
| <div class="text-center"> |
| <i class="fas fa-seedling text-3xl text-primary mb-2"></i> |
| <h3 class="text-sm font-medium text-gray-900">์์ธ์ด</h3> |
| </div> |
| </div> |
| </div> |
| </a> |
| |
| <a href="#" class="group"> |
| <div class="aspect-w-1 aspect-h-1 w-full overflow-hidden rounded-lg bg-white shadow-md transition duration-300 group-hover:shadow-xl"> |
| <div class="flex items-center justify-center h-full p-4"> |
| <div class="text-center"> |
| <i class="fas fa-history text-3xl text-primary mb-2"></i> |
| <h3 class="text-sm font-medium text-gray-900">์ญ์ฌ/๋ฌธํ</h3> |
| </div> |
| </div> |
| </div> |
| </a> |
| </div> |
| </div> |
| </div> |
|
|
| |
| <div class="py-16 bg-gradient-to-r from-purple-700 via-primary to-indigo-900 text-white transform -skew-y-1"> |
| <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> |
| <div class="text-center"> |
| <h2 class="text-3xl font-extrabold sm:text-4xl">๋ง์์ผ๋ก ์ ํ๋ ํน๋ณํ ์ด์ผ๊ธฐ</h2> |
| <p class="mt-4 text-xl">ํ๋ถ๋ฏผ์ ๊ฒฝํ, ํธ์ง, ์, ์์๊ธ ๋ฑ ์ง์ํ ์ด์ผ๊ธฐ๋ค์ ์์ฑ์ผ๋ก ๋ง๋๋ณด์ธ์</p> |
| </div> |
| <div class="mt-12 grid grid-cols-1 gap-8 md:grid-cols-2"> |
| <div class="bg-white bg-opacity-10 backdrop-blur-sm rounded-xl p-8 border border-white border-opacity-20"> |
| <div class="flex items-center"> |
| <div class="flex-shrink-0 h-16 w-16 bg-white bg-opacity-20 rounded-full flex items-center justify-center"> |
| <i class="fas fa-book-reader text-2xl text-white"></i> |
| </div> |
| <div class="ml-6"> |
| <h3 class="text-xl font-bold">ํ๋ถ๋ฏผ์ ์์ํ ๊ฒฝํ</h3> |
| <p class="mt-2 text-white text-opacity-80">์ง์ ๊ฒช์ ์ด์ผ๊ธฐ๋ฅผ ์์ํ ๋ชฉ์๋ฆฌ๋ก ์ ํฉ๋๋ค</p> |
| </div> |
| </div> |
| </div> |
| <div class="bg-white bg-opacity-10 backdrop-blur-sm rounded-xl p-8 border border-white border-opacity-20"> |
| <div class="flex items-center"> |
| <div class="flex-shrink-0 h-16 w-16 bg-white bg-opacity-20 rounded-full flex items-center justify-center"> |
| <i class="fas fa-envelope-open-text text-2xl text-white"></i> |
| </div> |
| <div class="ml-6"> |
| <h3 class="text-xl font-bold">๋ง์์ ๋ด์ ํธ์ง</h3> |
| <p class="mt-2 text-white text-opacity-80">๋ฐ์ก๋์ง ๋ชปํ ํธ์ง๋ค์ด ๋ชฉ์๋ฆฌ๋ก ์ ํด์ง๋๋ค</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
|
|
| |
| <div class="py-12 bg-white"> |
| <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> |
| <div class="flex items-center justify-between"> |
| <div> |
| <h2 class="text-2xl font-bold text-gray-900">์ ๊ฐ ์ค๋์ค๋ถ</h2> |
| <p class="mt-1 text-sm text-gray-500">์ต๊ทผ ์ถ์๋ ์ค๋์ค๋ถ์ ๋ง๋๋ณด์ธ์</p> |
| </div> |
| <a href="#" class="hidden sm:block text-sm font-medium text-primary hover:text-dark">๋ชจ๋ ๋ณด๊ธฐ <span>→</span></a> |
| </div> |
|
|
| <div class="mt-6 grid grid-cols-1 gap-x-4 gap-y-10 sm:grid-cols-2 lg:grid-cols-4 xl:gap-x-8"> |
| |
| <div class="book-card group relative"> |
| <div class="w-full min-h-80 bg-white aspect-w-1 aspect-h-1 rounded-md overflow-hidden group-hover:opacity-90 lg:h-80 lg:aspect-none"> |
| <div class="relative h-full"> |
| <div class="absolute inset-0 bg-gradient-to-b from-transparent to-black opacity-50 rounded-md"></div> |
| <img src="https://image.yes24.com/goods/114954082/XL" alt="Book cover" class="w-full h-full object-cover object-center"> |
| <button class="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 bg-primary bg-opacity-80 hover:bg-opacity-100 text-white rounded-full p-3"> |
| <i class="fas fa-play text-lg"></i> |
| </button> |
| <div class="absolute bottom-3 left-3 right-3"> |
| <h3 class="text-white font-bold truncate">์ฐ๋ฆฌ๊ฐ ๋น์ ์๋๋ก ๊ฐ ์ ์๋ค๋ฉด</h3> |
| <p class="text-xs text-gray-200">๊น์ด์ฝ | ๋ผ์๋ถ์ค</p> |
| <div class="flex justify-between items-center mt-2"> |
| <span class="text-xs text-white bg-primary px-2 py-1 rounded">5์๊ฐ 42๋ถ</span> |
| <span class="text-sm font-bold text-white">โฉ12,000</span> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="book-card group relative"> |
| <div class="w-full min-h-80 bg-white aspect-w-1 aspect-h-1 rounded-md overflow-hidden group-hover:opacity-90 lg:h-80 lg:aspect-none"> |
| <div class="relative h-full"> |
| <div class="absolute inset-0 bg-gradient-to-b from-transparent to-black opacity-50 rounded-md"></div> |
| <img src="https://image.yes24.com/goods/116611682/XL" alt="Book cover" class="w-full h-full object-cover object-center"> |
| <button class="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 bg-primary bg-opacity-80 hover:bg-opacity-100 text-white rounded-full p-3"> |
| <i class="fas fa-play text-lg"></i> |
| </button> |
| <div class="absolute bottom-3 left-3 right-3"> |
| <h3 class="text-white font-bold truncate">๋ถํธํ ํธ์์ </h3> |
| <p class="text-xs text-gray-200">๊นํธ์ฐ | ๋๋ฌด์์์</p> |
| <div class="flex justify-between items-center mt-2"> |
| <span class="text-xs text-white bg-primary px-2 py-1 rounded">6์๊ฐ 15๋ถ</span> |
| <span class="text-sm font-bold text-white">โฉ13,500</span> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="book-card group relative"> |
| <div class="w-full min-h-80 bg-white aspect-w-1 aspect-h-1 rounded-md overflow-hidden group-hover:opacity-90 lg:h-80 lg:aspect-none"> |
| <div class="relative h-full"> |
| <div class="absolute inset-0 bg-gradient-to-b from-transparent to-black opacity-50 rounded-md"></div> |
| <img src="https://image.yes24.com/goods/122611359/XL" alt="Book cover" class="w-full h-full object-cover object-center"> |
| <button class="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 bg-primary bg-opacity-80 hover:bg-opacity-100 text-white rounded-full p-3"> |
| <i class="fas fa-play text-lg"></i> |
| </button> |
| <div class="absolute bottom-3 left-3 right-3"> |
| <h3 class="text-white font-bold truncate">์์ฃผ ํฌ๋ฏธํ ๋น์ผ๋ก๋</h3> |
| <p class="text-xs text-gray-200">๋ฐฑ๋ฏผ์ | ๋ฌธํ๋๋ค</p> |
| <div class="flex justify-between items-center mt-2"> |
| <span class="text-xs text-white bg-primary px-2 py-1 rounded">4์๊ฐ 28๋ถ</span> |
| <span class="text-sm font-bold text-white">โฉ10,800</span> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="book-card group relative"> |
| <div class="w-full min-h-80 bg-white aspect-w-1 aspect-h-1 rounded-md overflow-hidden group-hover:opacity-90 lg:h-80 lg:aspect-none"> |
| <div class="relative h-full"> |
| <div class="absolute inset-0 bg-gradient-to-b from-transparent to-black opacity-50 rounded-md"></div> |
| <img src="https://image.yes24.com/goods/117533273/XL" alt="Book cover" class="w-full h-full object-cover object-center"> |
| <button class="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 bg-primary bg-opacity-80 hover:bg-opacity-100 text-white rounded-full p-3"> |
| <i class="fas fa-play text-lg"></i> |
| </button> |
| <div class="absolute bottom-3 left-3 right-3"> |
| <h3 class="text-white font-bold truncate">๋ ๋์จ ๋
์ ๋งํ๋ค</h3> |
| <p class="text-xs text-gray-200">๊น์ํฌ (ํ๋ถ๋ฏผ) | ํต์ผ๋ฏธ๋์ด</p> |
| <div class="flex justify-between items-center mt-2"> |
| <span class="text-xs text-white bg-primary px-2 py-1 rounded">4์๊ฐ 15๋ถ</span> |
| <span class="text-sm font-bold text-white">๋ฌด๋ฃ</span> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="book-card group relative"> |
| <div class="w-full min-h-80 bg-white aspect-w-1 aspect-h-1 rounded-md overflow-hidden group-hover:opacity-90 lg:h-80 lg:aspect-none"> |
| <div class="relative h-full"> |
| <div class="absolute inset-0 bg-gradient-to-b from-transparent to-black opacity-50 rounded-md"></div> |
| <img src="https://image.yes24.com/goods/112163395/XL" alt="Book cover" class="w-full h-full object-cover object-center"> |
| <button class="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 bg-primary bg-opacity-80 hover:bg-opacity-100 text-white rounded-full p-3"> |
| <i class="fas fa-play text-lg"></i> |
| </button> |
| <div class="absolute bottom-3 left-3 right-3"> |
| <h3 class="text-white font-bold truncate">๋ฌ๋ฌ๊ตฌํธ ๊ฟ ๋ฐฑํ์ </h3> |
| <p class="text-xs text-gray-200">์ด๋ฏธ์ | ํฉํ ๋ฆฌ๋์ธ</p> |
| <div class="flex justify-between items-center mt-2"> |
| <span class="text-xs text-white bg-primary px-2 py-1 rounded">7์๊ฐ 12๋ถ</span> |
| <span class="text-sm font-bold text-white">โฉ14,900</span> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| <div class="mt-8 sm:hidden"> |
| <a href="#" class="text-sm font-medium text-primary hover:text-dark">๋ ๋ง์ ์ ๊ฐ ๋ณด๊ธฐ <span>→</span></a> |
| </div> |
| </div> |
| </div> |
|
|
| |
| <div class="py-16 bg-gradient-to-r from-primary to-dark"> |
| <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> |
| <div class="lg:text-center mb-12"> |
| <h2 class="text-base text-yellow-200 font-semibold tracking-wide uppercase">์ฌ์ฉ์ ํ๊ธฐ</h2> |
| <p class="mt-2 text-3xl leading-8 font-extrabold tracking-tight text-white sm:text-4xl">Harmony์ ํจ๊ปํ ์ฌ๋๋ค์ ์ด์ผ๊ธฐ</p> |
| </div> |
| |
| <div class="grid grid-cols-1 gap-8 md:grid-cols-3"> |
| <div class="bg-white p-6 rounded-lg shadow-lg"> |
| <div class="flex items-center mb-4"> |
| <div class="w-12 h-12 rounded-full bg-gray-200 overflow-hidden"> |
| <img src="https://randomuser.me/api/portraits/women/44.jpg" alt="ํ๋กํ ์ด๋ฏธ์ง" class="w-full h-full object-cover"> |
| </div> |
| <div class="ml-4"> |
| <h4 class="font-bold text-gray-900">๊น์ง์</h4> |
| <div class="flex items-center mt-1"> |
| <div class="flex text-yellow-400"> |
| <i class="fas fa-star"></i> |
| <i class="fas fa-star"></i> |
| <i class="fas fa-star"></i> |
| <i class="fas fa-star"></i> |
| <i class="fas fa-star"></i> |
| </div> |
| </div> |
| </div> |
| </div> |
| <p class="text-gray-600"> |
| "์ถํด๊ทผ ์๊ฐ์ด ์ด์ ๋ ๊ธฐ๋ค๋ ค์ ธ์. ์ฑ์ฐ๋ค์ ๋ชฉ์๋ฆฌ๊ฐ ๋๋ฌด ๋ฐ๋ปํ๊ณ ์์ํด์ ์ฑ
์์ผ๋ก ์์ฐ์ค๋ฝ๊ฒ ๋น ์ ธ๋ค๊ฒ ํด์. ์์ด๋ค ๋ํ๋ ํจ๊ป ๋ฃ๊ณ ์์ด์!" |
| </p> |
| </div> |
| |
| <div class="bg-white p-6 rounded-lg shadow-lg"> |
| <div class="flex items-center mb-4"> |
| <div class="w-12 h-12 rounded-full bg-gray-200 overflow-hidden"> |
| <img src="https://randomuser.me/api/portraits/men/32.jpg" alt="ํ๋กํ ์ด๋ฏธ์ง" class="w-full h-full object-cover"> |
| </div> |
| <div class="ml-4"> |
| <h4 class="font-bold text-gray-900">๋ฐ๋ฏผ์ค</h4> |
| <div class="flex items-center mt-1"> |
| <div class="flex text-yellow-400"> |
| <i class="fas fa-star"></i> |
| <i class="fas fa-star"></i> |
| <i class="fas fa-star"></i> |
| <i class="fas fa-star"></i> |
| <i class="fas fa-star-half-alt"></i> |
| </div> |
| </div> |
| </div> |
| </div> |
| <p class="text-gray-600"> |
| "ํ์ฌ์์๋, ์ด๋ํ ๋๋ ํญ์ Harmony์ ํจ๊ปํด์. ์ต๊ณ ์ ์ฑ์ฐ๋ค์ด ๋ญ๋
ํ๋ ์ค๋์ค๋ถ ๋๋ถ์ ๋
์ ์ต๊ด์ ๊ธฐ๋ฅผ ์ ์์์ด์. ์ ๋ง ์ถ์ฒํฉ๋๋ค!" |
| </p> |
| </div> |
| |
| <div class="bg-white p-6 rounded-lg shadow-lg"> |
| <div class="flex items-center mb-4"> |
| <div class="w-12 h-12 rounded-full bg-gray-200 overflow-hidden"> |
| <img src="https://randomuser.me/api/portraits/women/68.jpg" alt="ํ๋กํ ์ด๋ฏธ์ง" class="w-full h-full object-cover"> |
| </div> |
| <div class="ml-4"> |
| <h4 class="font-bold text-gray-900">์ด๋์ฐ</h4> |
| <div class="flex items-center mt-1"> |
| <div class="flex text-yellow-400"> |
| <i class="fas fa-star"></i> |
| <i class="fas fa-star"></i> |
| <i class="fas fa-star"></i> |
| <i class="fas fa-star"></i> |
| <i class="fas fa-star"></i> |
| </div> |
| </div> |
| </div> |
| </div> |
| <p class="text-gray-600"> |
| "์๊ตฌ๊ฑด๊ฐ์ด ๋๋น ์ ธ์ ์ฑ
์ ๋ชป ์ฝ๊ฒ ๋์์ ๋ ์ ๋ง ์ ๋งํ์ด์. ๊ทธ๋ฐ๋ฐ Harmony๋ฅผ ์๊ฒ ๋๊ณ ์ถ์ด ๋ฐ๋์์ด์. ์ด์ ๋ ๋์ ๊ฐ๊ณ ํธ์ํ๊ฒ ์ฑ
์ ์ฆ๊ธธ ์ ์๊ฒ ๋์์ฃ !" |
| </p> |
| </div> |
| </div> |
| </div> |
| </div> |
|
|
| |
| <div class="py-16 bg-white"> |
| <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> |
| <div class="text-center"> |
| <h2 class="text-3xl font-extrabold text-gray-900 sm:text-4xl">๋์๊ฒ ๋ฑ ๋ง๋ ๊ตฌ๋
ํ๋ ์ ํ</h2> |
| <p class="mt-4 text-xl text-gray-600">30์ผ ๋ฌด๋ฃ ์ฒดํ ๊ธฐ๊ฐ ์ ๊ณต. ์ธ์ ๋ ์ง ์ทจ์ ๊ฐ๋ฅํฉ๋๋ค.</p> |
| </div> |
| |
| <div class="mt-16 space-y-16 lg:space-y-0 lg:grid lg:grid-cols-3 lg:gap-x-5"> |
| |
| <div class="bg-white border border-gray-200 rounded-lg shadow-sm divide-y divide-gray-200"> |
| <div class="p-6"> |
| <h2 class="text-lg leading-6 font-medium text-gray-900">๋ฒ ์ด์ง</h2> |
| <p class="mt-2 text-sm text-gray-500">๊ฐ๋ณ๊ฒ ์์ํ๋ ๋ถ์๊ฒ ์ถ์ฒ</p> |
| <p class="mt-8"> |
| <span class="text-4xl font-extrabold text-gray-900">โฉ7,900</span> |
| <span class="text-base font-medium text-gray-500">/์</span> |
| </p> |
| <button class="mt-8 block w-full py-3 px-6 border border-gray-800 rounded-md text-center font-medium text-gray-800 hover:bg-gray-50"> |
| ์์ํ๊ธฐ |
| </button> |
| </div> |
| <div class="pt-6 pb-8 px-6"> |
| <h3 class="text-xs font-medium text-gray-900 tracking-wide uppercase">ํฌํจ ๋ด์ฉ</h3> |
| <ul class="mt-6 space-y-4"> |
| <li class="flex items-start"> |
| <div class="flex-shrink-0 h-5 w-5 text-primary"> |
| <i class="fas fa-check"></i> |
| </div> |
| <p class="ml-3 text-sm text-gray-500">์ 1๊ถ ์ค๋์ค๋ถ</p> |
| </li> |
| <li class="flex items-start"> |
| <div class="flex-shrink-0 h-5 w-5 text-primary"> |
| <i class="fas fa-check"></i> |
| </div> |
| <p class="ml-3 text-sm text-gray-500">๋ฌด์ ํ ๋ฃ๊ธฐ</p> |
| </li> |
| <li class="flex items-start"> |
| <div class="flex-shrink-0 h-5 w-5 text-gray-400"> |
| <i class="fas fa-times"></i> |
| </div> |
| <p class="ml-3 text-sm text-gray-500">์คํ๋ผ์ธ ๋ฃ๊ธฐ</p> |
| </li> |
| <li class="flex items-start"> |
| <div class="flex-shrink-0 h-5 w-5 text-gray-400"> |
| <i class="fas fa-times"></i> |
| </div> |
| <p class="ml-3 text-sm text-gray-500">๋ฌด์ ํ ์ฑ
๊ฐํผ</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| |
| |
| <div class="bg-white border-2 border-primary rounded-lg shadow-xl divide-y divide-gray-200"> |
| <div class="p-6"> |
| <div class="flex justify-between"> |
| <h2 class="text-lg leading-6 font-medium text-gray-900">ํ๋ฆฌ๋ฏธ์</h2> |
| <p class="bg-primary text-white text-xs font-bold px-2 py-1 rounded">BEST VALUE</p> |
| </div> |
| <p class="mt-2 text-sm text-gray-500">์ด์ ์ ์ธ ๋
์๊ฐ์๊ฒ ์ถ์ฒ</p> |
| <p class="mt-8"> |
| <span class="text-4xl font-extrabold text-gray-900">โฉ12,900</span> |
| <span class="text-base font-medium text-gray-500">/์</span> |
| </p> |
| <button class="mt-8 block w-full py-3 px-6 bg-primary border border-transparent rounded-md text-center font-medium text-white hover:bg-dark"> |
| ์์ํ๊ธฐ |
| </button> |
| </div> |
| <div class="pt-6 pb-8 px-6"> |
| <h3 class="text-xs font-medium text-gray-900 tracking-wide uppercase">ํฌํจ ๋ด์ฉ</h3> |
| <ul class="mt-6 space-y-4"> |
| <li class="flex items-start"> |
| <div class="flex-shrink-0 h-5 w-5 text-primary"> |
| <i class="fas fa-check"></i> |
| </div> |
| <p class="ml-3 text-sm text-gray-500">์ 3๊ถ ์ค๋์ค๋ถ</p> |
| </li> |
| <li class="flex items-start"> |
| <div class="flex-shrink-0 h-5 w-5 text-primary"> |
| <i class="fas fa-check"></i> |
| </div> |
| <p class="ml-3 text-sm text-gray-500">๋ฌด์ ํ ๋ฃ๊ธฐ</p> |
| </li> |
| <li class="flex items-start"> |
| <div class="flex-shrink-0 h-5 w-5 text-primary"> |
| <i class="fas fa-check"></i> |
| </div> |
| <p class="ml-3 text-sm text-gray-500">์คํ๋ผ์ธ ๋ฃ๊ธฐ</p> |
| </li> |
| <li class="flex items-start"> |
| <div class="flex-shrink-0 h-5 w-5 text-primary"> |
| <i class="fas fa-check"></i> |
| </div> |
| <p class="ml-3 text-sm text-gray-500">๋ฌด์ ํ ์ฑ
๊ฐํผ</p> |
| </li> |
| <li class="flex items-start"> |
| <div class="flex-shrink-0 h-5 w-5 text-primary"> |
| <i class="fas fa-check"></i> |
| </div> |
| <p class="ml-3 text-sm text-gray-500">๋ฉค๋ฒ ์ ์ฉ ํ ์ธ ํํ</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| |
| |
| <div class="bg-white border border-gray-200 rounded-lg shadow-sm divide-y divide-gray-200"> |
| <div class="p-6"> |
| <h2 class="text-lg leading-6 font-medium text-gray-900">๋ฌด์ ํ</h2> |
| <p class="mt-2 text-sm text-gray-500">์ง์ ํ ์ค๋์ค๋ถ ์ ํธ๊ฐ๋ฅผ ์ํ</p> |
| <p class="mt-8"> |
| <span class="text-4xl font-extrabold text-gray-900">โฉ16,900</span> |
| <span class="text-base font-medium text-gray-500">/์</span> |
| </p> |
| <button class="mt-8 block w-full py-3 px-6 border border-gray-800 rounded-md text-center font-medium text-gray-800 hover:bg-gray-50"> |
| ์์ํ๊ธฐ |
| </button> |
| </div> |
| <div class="pt-6 pb-8 px-6"> |
| <h3 class="text-xs font-medium text-gray-900 tracking-wide uppercase">ํฌํจ ๋ด์ฉ</h3> |
| <ul class="mt-6 space-y-4"> |
| <li class="flex items-start"> |
| <div class="flex-shrink-0 h-5 w-5 text-primary"> |
| <i class="fas fa-check"></i> |
| </div> |
| <p class="ml-3 text-sm text-gray-500">์ ๋ฌด์ ํ ์ค๋์ค๋ถ</p> |
| </li> |
| <li class="flex items-start"> |
| <div class="flex-shrink-0 h-5 w-5 text-primary"> |
| <i class="fas fa-check"></i> |
| </div> |
| <p class="ml-3 text-sm text-gray-500">ํ๋ฆฌ๋ฏธ์ ์ปจํ
์ธ ํฌํจ</p> |
| </li> |
| <li class="flex items-start"> |
| <div class="flex-shrink-0 h-5 w-5 text-primary"> |
| <i class="fas fa-check"></i> |
| </div> |
| <p class="ml-3 text-sm text-gray-500">์คํ๋ผ์ธ ๋ฃ๊ธฐ</p> |
| </li> |
| <li class="flex items-start"> |
| <div class="flex-shrink-0 h-5 w-5 text-primary"> |
| <i class="fas fa-check"></i> |
| </div> |
| <p class="ml-3 text-sm text-gray-500">๋ฌด์ ํ ์ฑ
๊ฐํผ</p> |
| </li> |
| <li class="flex items-start"> |
| <div class="flex-shrink-0 h-5 w-5 text-primary"> |
| <i class="fas fa-check"></i> |
| </div> |
| <p class="ml-3 text-sm text-gray-500">๋ฉค๋ฒ ์ ์ฉ ํ ์ธ ํํ</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
|
|
| |
| <footer class="bg-gradient-to-br from-dark to-gray-900 text-white"> |
| <div class="max-w-7xl mx-auto py-12 px-4 sm:px-6 lg:px-8"> |
| <div class="grid grid-cols-2 md:grid-cols-4 gap-8"> |
| <div> |
| <h3 class="text-sm font-semibold text-light tracking-wider uppercase">ํ์ฌ</h3> |
| <ul class="mt-4 space-y-2"> |
| <li><a href="#" class="text-base text-gray-300 hover:text-white">About</a></li> |
| <li><a href="#" class="text-base text-gray-300 hover:text-white">Blog</a></li> |
| <li><a href="#" class="text-base text-gray-300 hover:text-white">Careers</a></li> |
| <li><a href="#" class="text-base text-gray-300 hover:text-white">Partners</a></li> |
| </ul> |
| </div> |
| |
| <div> |
| <h3 class="text-sm font-semibold text-light tracking-wider uppercase">์๋น์ค</h3> |
| <ul class="mt-4 space-y-2"> |
| <li><a href="#" class="text-base text-gray-300 hover:text-white">์ค๋์ค๋ถ</a></li> |
| <li><a href="#" class="text-base text-gray-300 hover:text-white">ํ์บ์คํธ</a></li> |
| <li><a href="#" class="text-base text-gray-300 hover:text-white">๋ฌด๋ฃ ์ฒดํ</a></li> |
| <li><a href="#" class="text-base text-gray-300 hover:text-white">๊ธฐ์
์๋น์ค</a></li> |
| </ul> |
| </div> |
| |
| <div> |
| <h3 class="text-sm font-semibold text-light tracking-wider uppercase">๋ฒ๋ฅ </h3> |
| <ul class="mt-4 space-y-2"> |
| <li><a href="#" class="text-base text-gray-300 hover:text-white">๊ฐ์ธ์ ๋ณด ๋ณดํธ</a></li> |
| <li><a href="#" class="text-base text-gray-300 hover:text-white">์ด์ฉ์ฝ๊ด</a></li> |
| <li><a href="#" class="text-base text-gray-300 hover:text-white">์ ์๊ถ</a></li> |
| <li><a href="#" class="text-base text-gray-300 hover:text-white">์ฟ ํค ์ค์ </a></li> |
| </ul> |
| </div> |
| |
| <div> |
| <h3 class="text-sm font-semibold text-light tracking-wider uppercase">๋ฌธ์ํ๊ธฐ</h3> |
| <ul class="mt-4 space-y-2"> |
| <li><a href="#" class="text-base text-gray-300 hover:text-white">๊ณ ๊ฐ์ผํฐ</a></li> |
| <li><a href="#" class="text-base text-gray-300 hover:text-white">์ ํด ๋ฌธ์</a></li> |
| <li><a href="#" class="text-base text-gray-300 hover:text-white">์ถํ์ฌ ๋ฌธ์</a></li> |
| </ul> |
| |
| <div class="mt-6 flex space-x-6"> |
| <a href="#" class="text-gray-400 hover:text-white"> |
| <i class="fab fa-facebook-f text-lg"></i> |
| </a> |
| <a href="#" class="text-gray-400 hover:text-white"> |
| <i class="fab fa-instagram text-lg"></i> |
| </a> |
| <a href="#" class="text-gray-400 hover:text-white"> |
| <i class="fab fa-youtube text-lg"></i> |
| </a> |
| <a href="#" class="text-gray-400 hover:text-white"> |
| <i class="fab fa-twitter text-lg"></i> |
| </a> |
| </div> |
| </div> |
| </div> |
| |
| <div class="mt-12 pt-8 border-t border-gray-700"> |
| <div class="flex flex-col md:flex-row justify-between items-center"> |
| <div class="flex items-center"> |
| <i class="fas fa-headphones text-secondary text-2xl mr-2"></i> |
| <span class="text-xl font-bold">Harmony</span> |
| </div> |
| <p class="mt-4 md:mt-0 text-base text-gray-400"> |
| © 2023 Harmony Audiobooks. All rights reserved. |
| </p> |
| </div> |
| </div> |
| </div> |
| </footer> |
|
|
| |
| <div class="fixed bottom-0 left-0 right-0 bg-gradient-to-r from-purple-700 to-primary shadow-2xl z-50 border-t border-white border-opacity-20"> |
| <div class="max-w-7xl mx-auto px-4 py-3"> |
| <div class="flex items-center"> |
| |
| <div class="flex-shrink-0 h-16 w-16 rounded-lg overflow-hidden shadow-lg relative group"> |
| <img src="https://image.yes24.com/goods/112163395/XL" alt="Current book cover" class="h-full w-full object-cover" id="currentBookCover"> |
| <button class="absolute inset-0 bg-black bg-opacity-40 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity duration-200"> |
| <i class="fas fa-expand text-white text-lg"></i> |
| </button> |
| </div> |
| |
| |
| <div class="ml-4 flex-1 min-w-0"> |
| <div class="flex items-center justify-between"> |
| <div class="truncate"> |
| <h3 class="text-sm font-medium text-white truncate" id="currentTrackTitle">๋ฌ๋ฌ๊ตฌํธ ๊ฟ ๋ฐฑํ์ 1์ฅ - ๊ฟ ๋ฐฑํ์ ์ ์ค์ ๊ฒ์ ํ์ํฉ๋๋ค</h3> |
| <p class="text-xs text-gray-200 truncate" id="currentBookInfo">์ด๋ฏธ์ | 7์๊ฐ 12๋ถ | ์ฑํฐ 3/12</p> |
| </div> |
| <div class="flex items-center ml-2"> |
| <span class="text-xs text-gray-300" id="currentTime">1:24:35</span> |
| <span class="mx-1 text-xs text-gray-400">/</span> |
| <span class="text-xs text-gray-300" id="duration">7:12:08</span> |
| </div> |
| </div> |
| |
| |
| <div class="mt-1 flex items-center"> |
| |
| <div class="flex items-center space-x-3"> |
| <button class="text-gray-300 hover:text-white transition-colors" title="์ด์ ์ฑํฐ" id="prevChapter"> |
| <i class="fas fa-step-backward text-lg"></i> |
| </button> |
| <button class="p-2 text-white bg-gradient-to-br from-secondary to-yellow-500 rounded-full shadow-lg hover:shadow-xl transform hover:scale-105 transition-all duration-200" title="์ฌ์/์ผ์์ ์ง" id="playPauseBtn"> |
| <i class="fas fa-pause text-base" id="playPauseIcon"></i> |
| </button> |
| <button class="text-gray-300 hover:text-white transition-colors" title="๋ค์ ์ฑํฐ" id="nextChapter"> |
| <i class="fas fa-step-forward text-lg"></i> |
| </button> |
| </div> |
| |
| |
| <div class="ml-4 flex-1 relative"> |
| <div class="h-1 bg-gray-700 bg-opacity-60 rounded-full overflow-hidden"> |
| <div class="h-full bg-secondary rounded-full" id="progressBar" style="width: 35%"></div> |
| </div> |
| <input type="range" min="0" max="100" value="35" id="progressSlider" |
| class="absolute inset-0 w-full h-full opacity-0 cursor-pointer"> |
| </div> |
| |
| |
| <div class="ml-4 flex items-center space-x-4"> |
| <div class="relative group" id="playbackSpeedContainer"> |
| <button class="text-gray-300 hover:text-white" title="์๋ ์กฐ์ " id="playbackSpeedBtn"> |
| <i class="fas fa-tachometer-alt text-base"></i> |
| </button> |
| <div class="hidden group-hover:block absolute bottom-full left-1/2 transform -translate-x-1/2 mb-2 w-32 bg-gray-800 text-white text-sm rounded py-1 px-2 shadow-lg"> |
| <div class="flex space-x-2"> |
| <button class="speed-option" data-speed="0.5">0.5x</button> |
| <button class="speed-option" data-speed="0.75">0.75x</button> |
| <button class="speed-option active" data-speed="1.0">1.0x</button> |
| <button class="speed-option" data-speed="1.25">1.25x</button> |
| <button class="speed-option" data-speed="1.5">1.5x</button> |
| </div> |
| </div> |
| </div> |
| <div class="relative group" id="volumeControlContainer"> |
| <button class="text-gray-300 hover:text-white" title="๋ณผ๋ฅจ ์กฐ์ " id="volumeBtn"> |
| <i class="fas fa-volume-up text-base"></i> |
| </button> |
| <div class="hidden group-hover:block absolute bottom-full left-1/2 transform -translate-x-1/2 mb-2 w-24 bg-gray-800 rounded py-2 px-3 shadow-lg"> |
| <input type="range" min="0" max="100" value="70" id="volumeSlider" |
| class="w-full h-1 bg-gray-600 rounded-lg appearance-none cursor-pointer"> |
| </div> |
| </div> |
| <button class="text-gray-300 hover:text-white" title="๋ถ๋งํฌ" id="bookmarkBtn"> |
| <i class="fas fa-bookmark text-base"></i> |
| </button> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
|
|
| <script> |
| document.addEventListener('DOMContentLoaded', function() { |
| |
| const audioPlayer = { |
| isPlaying: false, |
| currentTime: 0, |
| duration: 0, |
| playbackRate: 1.0, |
| volume: 0.7, |
| currentChapter: 3, |
| totalChapters: 12 |
| }; |
| |
| |
| const playPauseBtn = document.getElementById('playPauseBtn'); |
| const playPauseIcon = document.getElementById('playPauseIcon'); |
| const progressBar = document.getElementById('progressBar'); |
| const progressSlider = document.getElementById('progressSlider'); |
| const currentTimeEl = document.getElementById('currentTime'); |
| const durationEl = document.getElementById('duration'); |
| const volumeSlider = document.getElementById('volumeSlider'); |
| const volumeBtn = document.getElementById('volumeBtn'); |
| const playbackSpeedBtn = document.getElementById('playbackSpeedBtn'); |
| const speedOptions = document.querySelectorAll('.speed-option'); |
| const prevChapterBtn = document.getElementById('prevChapter'); |
| const nextChapterBtn = document.getElementById('nextChapter'); |
| const bookmarkBtn = document.getElementById('bookmarkBtn'); |
| const currentTrackTitle = document.getElementById('currentTrackTitle'); |
| const currentBookInfo = document.getElementById('currentBookInfo'); |
| const currentBookCover = document.getElementById('currentBookCover'); |
| |
| |
| function initPlayer() { |
| updateTimeDisplay(); |
| updateVolumeIcon(); |
| } |
| |
| |
| playPauseBtn.addEventListener('click', function() { |
| audioPlayer.isPlaying = !audioPlayer.isPlaying; |
| if (audioPlayer.isPlaying) { |
| playPauseIcon.classList.remove('fa-play'); |
| playPauseIcon.classList.add('fa-pause'); |
| |
| } else { |
| playPauseIcon.classList.remove('fa-pause'); |
| playPauseIcon.classList.add('fa-play'); |
| |
| } |
| }); |
| |
| |
| progressSlider.addEventListener('input', function() { |
| const percent = this.value; |
| progressBar.style.width = `${percent}%`; |
| |
| audioPlayer.currentTime = (percent / 100) * audioPlayer.duration; |
| updateTimeDisplay(); |
| }); |
| |
| |
| volumeSlider.addEventListener('input', function() { |
| audioPlayer.volume = this.value / 100; |
| updateVolumeIcon(); |
| |
| }); |
| |
| function updateVolumeIcon() { |
| const volIcon = volumeBtn.querySelector('i'); |
| if (audioPlayer.volume === 0) { |
| volIcon.classList.remove('fa-volume-up', 'fa-volume-down'); |
| volIcon.classList.add('fa-volume-mute'); |
| } else if (audioPlayer.volume < 0.5) { |
| volIcon.classList.remove('fa-volume-up', 'fa-volume-mute'); |
| volIcon.classList.add('fa-volume-down'); |
| } else { |
| volIcon.classList.remove('fa-volume-down', 'fa-volume-mute'); |
| volIcon.classList.add('fa-volume-up'); |
| } |
| } |
| |
| |
| speedOptions.forEach(option => { |
| option.addEventListener('click', function() { |
| const speed = parseFloat(this.dataset.speed); |
| audioPlayer.playbackRate = speed; |
| |
| |
| speedOptions.forEach(opt => opt.classList.remove('active')); |
| this.classList.add('active'); |
| |
| |
| }); |
| }); |
| |
| |
| prevChapterBtn.addEventListener('click', function() { |
| if (audioPlayer.currentChapter > 1) { |
| audioPlayer.currentChapter--; |
| updateBookInfo(); |
| resetProgress(); |
| } |
| }); |
| |
| nextChapterBtn.addEventListener('click', function() { |
| if (audioPlayer.currentChapter < audioPlayer.totalChapters) { |
| audioPlayer.currentChapter++; |
| updateBookInfo(); |
| resetProgress(); |
| } |
| }); |
| |
| |
| bookmarkBtn.addEventListener('click', function() { |
| alert(`ํ์ฌ ${formatTime(audioPlayer.currentTime)}์ ๋ถ๋งํฌ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.`); |
| }); |
| |
| |
| function updateTimeDisplay() { |
| currentTimeEl.textContent = formatTime(audioPlayer.currentTime); |
| durationEl.textContent = formatTime(audioPlayer.duration); |
| } |
| |
| |
| function updateBookInfo() { |
| currentBookInfo.textContent = `์ด๋ฏธ์ | 7์๊ฐ 12๋ถ | ์ฑํฐ ${audioPlayer.currentChapter}/${audioPlayer.totalChapters}`; |
| } |
| |
| |
| function resetProgress() { |
| audioPlayer.currentTime = 0; |
| progressBar.style.width = '0%'; |
| progressSlider.value = 0; |
| updateTimeDisplay(); |
| } |
| |
| |
| function formatTime(seconds) { |
| const hrs = Math.floor(seconds / 3600); |
| const mins = Math.floor((seconds % 3600) / 60); |
| const secs = Math.floor(seconds % 60); |
| return `${hrs}:${mins < 10 ? '0' : ''}${mins}:${secs < 10 ? '0' : ''}${secs}`; |
| } |
| |
| |
| function simulatePlayback() { |
| if (audioPlayer.isPlaying) { |
| |
| audioPlayer.currentTime += 0.5; |
| |
| |
| const percent = (audioPlayer.currentTime / audioPlayer.duration) * 100; |
| progressBar.style.width = `${percent}%`; |
| progressSlider.value = percent; |
| updateTimeDisplay(); |
| |
| |
| if (percent >= 100 && audioPlayer.currentChapter < audioPlayer.totalChapters) { |
| audioPlayer.currentChapter++; |
| updateBookInfo(); |
| audioPlayer.currentTime = 0; |
| } |
| } |
| } |
| |
| |
| audioPlayer.currentTime = 5065; |
| audioPlayer.duration = 25920; |
| initPlayer(); |
| |
| |
| setInterval(simulatePlayback, 500); |
| |
| |
| document.querySelectorAll('.book-card button').forEach(button => { |
| button.addEventListener('click', function(e) { |
| e.preventDefault(); |
| const bookCard = this.closest('.book-card'); |
| const title = bookCard.querySelector('h3').textContent; |
| const author = bookCard.querySelector('p').textContent; |
| const cover = bookCard.querySelector('img').src; |
| |
| |
| currentTrackTitle.textContent = title; |
| currentBookInfo.textContent = `${author} | 7์๊ฐ 12๋ถ | ์ฑํฐ 1/12`; |
| currentBookCover.src = cover; |
| |
| |
| audioPlayer.currentChapter = 1; |
| audioPlayer.isPlaying = true; |
| playPauseIcon.classList.remove('fa-play'); |
| playPauseIcon.classList.add('fa-pause'); |
| resetProgress(); |
| |
| alert(`${title} ์ค๋์ค๋ถ ์ฌ์์ ์์ํฉ๋๋ค!`); |
| }); |
| }); |
| }); |
| </script> |
| <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - ๐งฌ <a href="https://enzostvs-deepsite.hf.space?remix=nkjoy/audio" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> |
| </html> |