| | <!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> |