| <!DOCTYPE html> |
| <html lang="zh-TW"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>文章列表頁面</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: '#3b82f6', |
| secondary: '#1e40af', |
| accent: '#f97316', |
| dark: '#1e293b', |
| light: '#f8fafc' |
| } |
| } |
| } |
| } |
| </script> |
| <style> |
| @import url('https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@300;400;500;700&display=swap'); |
| |
| body { |
| font-family: 'Noto Sans TC', sans-serif; |
| background-color: #f1f5f9; |
| } |
| |
| .article-card { |
| transition: all 0.3s ease; |
| box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05); |
| } |
| |
| .article-card:hover { |
| transform: translateY(-5px); |
| box-shadow: 0 10px 15px rgba(0, 0, 0, 0.1); |
| } |
| |
| .hot-badge { |
| background: linear-gradient(45deg, #f97316, #ea580c); |
| } |
| |
| .popular-badge { |
| background: linear-gradient(45deg, #3b82f6, #1d4ed8); |
| } |
| |
| .recent-badge { |
| background: linear-gradient(45deg, #10b981, #059669); |
| } |
| |
| .pagination-btn { |
| transition: all 0.2s ease; |
| } |
| |
| .pagination-btn:hover { |
| background-color: #e2e8f0; |
| } |
| |
| .pagination-btn.active { |
| background-color: #3b82f6; |
| color: white; |
| } |
| |
| .sort-btn.active { |
| background-color: #dbeafe; |
| color: #3b82f6; |
| border-color: #3b82f6; |
| } |
| |
| .sticky-top { |
| position: sticky; |
| top: 20px; |
| } |
| </style> |
| </head> |
| <body class="min-h-screen"> |
| |
| <header class="relative bg-gradient-to-r from-blue-900 via-purple-900 to-indigo-900 text-white shadow-lg overflow-hidden"> |
| |
| <div class="absolute top-0 left-0 w-full h-full opacity-10"> |
| <div class="absolute top-10 right-10 w-64 h-64 bg-purple-500 rounded-full mix-blend-soft-light filter blur-3xl"></div> |
| <div class="absolute bottom-10 left-10 w-96 h-96 bg-indigo-500 rounded-full mix-blend-soft-light filter blur-3xl"></div> |
| </div> |
| |
| <div class="container mx-auto px-4 py-4 relative z-10"> |
| <div class="flex flex-col lg:flex-row justify-between items-center gap-4"> |
| <div class="flex items-center w-full lg:w-auto"> |
| <i class="fas fa-newspaper text-primary text-3xl mr-3"></i> |
| <h1 class="text-2xl lg:text-3xl font-bold bg-clip-text text-transparent bg-gradient-to-r from-primary to-accent">hoansu</h1> |
| <span class="mx-3 text-gray-300 opacity-50">|</span> |
| <h2 class="text-xl lg:text-2xl font-semibold text-gray-100">文章列表</h2> |
| </div> |
| <div class="flex items-center w-full lg:w-auto space-x-3"> |
| <button id="postArticleBtn" class="bg-gradient-to-r from-primary to-accent hover:from-secondary hover:to-purple-600 text-white px-4 py-2.5 rounded-lg transition-all duration-300 shadow-lg transform hover:scale-105 flex items-center text-sm lg:text-base"> |
| <i class="fas fa-plus mr-2"></i> 發表文章 |
| </button> |
| <div class="relative flex-1 max-w-xs lg:max-w-md"> |
| <input type="text" placeholder="搜尋文章..." class="w-full bg-white bg-opacity-10 backdrop-blur-sm border border-white border-opacity-20 rounded-lg px-4 py-2.5 focus:outline-none focus:ring-2 focus:ring-accent focus:border-transparent text-white placeholder-gray-300 text-sm lg:text-base"> |
| <i class="fas fa-search absolute right-3 top-3 text-gray-300 text-sm"></i> |
| </div> |
| <button id="authBtn" class="bg-white bg-opacity-20 hover:bg-opacity-30 text-white px-4 py-2.5 rounded-lg transition-all duration-300 flex items-center text-sm lg:text-base"> |
| <i class="fas fa-user mr-2"></i> 登入 |
| </button> |
| </div> |
| </div> |
| </div> |
| </header> |
|
|
| |
| <div id="loginModal" class="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 hidden"> |
| <div class="bg-white rounded-xl p-8 w-full max-w-md"> |
| <div class="flex justify-between items-center mb-6"> |
| <h3 class="text-2xl font-bold text-gray-800">會員登入</h3> |
| <button id="closeLoginModal" class="text-gray-500 hover:text-gray-700"> |
| <i class="fas fa-times"></i> |
| </button> |
| </div> |
| <form id="loginForm"> |
| <div class="mb-4"> |
| <label class="block text-gray-700 mb-2" for="username">帳號</label> |
| <input type="text" id="username" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary" placeholder="請輸入帳號" required> |
| </div> |
| <div class="mb-6"> |
| <label class="block text-gray-700 mb-2" for="password">密碼</label> |
| <input type="password" id="password" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary" placeholder="請輸入密碼" required> |
| </div> |
| <div class="flex justify-between items-center"> |
| <button type="button" class="text-gray-600 hover:text-gray-800">忘記密碼?</button> |
| <button type="submit" class="bg-gradient-to-r from-primary to-accent hover:from-secondary hover:to-purple-600 text-white px-6 py-2.5 rounded-lg transition-all duration-300"> |
| 登入 |
| </button> |
| </div> |
| </form> |
| <div class="mt-6 text-center"> |
| <p class="text-gray-600">還沒有帳號? <a href="#" class="text-primary hover:underline">立即註冊</a></p> |
| </div> |
| </div> |
| </div> |
|
|
| <main class="container mx-auto px-4 py-8"> |
| <div class="flex flex-col lg:flex-row gap-8"> |
| |
| <div class="w-full lg:w-3/4"> |
| |
| <section class="mb-10"> |
| <div class="flex items-center mb-6"> |
| <i class="fas fa-fire text-accent mr-2"></i> |
| <h2 class="text-2xl font-bold text-gray-800">熱門文章</h2> |
| <div class="ml-2 bg-red-100 text-red-800 text-xs font-semibold px-2.5 py-0.5 rounded"> |
| 置頂 |
| </div> |
| </div> |
| |
| <div class="grid grid-cols-1 md:grid-cols-3 gap-6"> |
| |
| <div class="article-card bg-white rounded-xl overflow-hidden border border-gray-200"> |
| <div class="relative"> |
| <img src="https://images.unsplash.com/photo-1499750310107-5fef28a66643?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=600&q=80" alt="熱門文章" class="w-full h-48 object-cover"> |
| <div class="absolute top-4 right-4 bg-red-500 text-white text-xs font-bold px-2 py-1 rounded"> |
| 熱門 |
| </div> |
| </div> |
| <div class="p-5"> |
| <div class="flex items-center mb-2"> |
| <span class="popular-badge text-white text-xs font-bold px-2 py-1 rounded mr-2">人氣 98%</span> |
| <span class="text-gray-500 text-sm">2023-10-15</span> |
| </div> |
| <h3 class="text-xl font-bold text-gray-800 mb-2">如何提升產品設計的用戶體驗</h3> |
| <p class="text-gray-600 mb-4">在競爭激烈的市場中,優秀的用戶體驗是產品成功的關鍵因素。本文將探討...</p> |
| <div class="flex justify-between items-center"> |
| <div class="flex items-center"> |
| <img src="https://randomuser.me/api/portraits/women/44.jpg" alt="作者" class="w-8 h-8 rounded-full mr-2"> |
| <span class="text-gray-700">張美華</span> |
| </div> |
| <div class="flex space-x-2"> |
| <span class="text-gray-500"><i class="far fa-eye mr-1"></i> 1.2k</span> |
| <span class="text-gray-500"><i class="far fa-comment mr-1"></i> 42</span> |
| <span class="text-gray-500"><i class="far fa-heart mr-1"></i> 87</span> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="article-card bg-white rounded-xl overflow-hidden border border-gray-200"> |
| <div class="relative"> |
| <img src="https://images.unsplash.com/photo-1551288049-bebda4e38f71?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=600&q=80" alt="熱門文章" class="w-full h-48 object-cover"> |
| <div class="absolute top-4 right-4 bg-red-500 text-white text-xs font-bold px-2 py-1 rounded"> |
| 熱門 |
| </div> |
| </div> |
| <div class="p-5"> |
| <div class="flex items-center mb-2"> |
| <span class="popular-badge text-white text-xs font-bold px-2 py-1 rounded mr-2">人氣 95%</span> |
| <span class="text-gray-500 text-sm">2023-10-12</span> |
| </div> |
| <h3 class="text-xl font-bold text-gray-800 mb-2">2024年科技趨勢預測</h3> |
| <p class="text-gray-600 mb-4">隨著技術的快速發展,了解未來趨勢對於企業和個人都至關重要。本文將...</p> |
| <div class="flex justify-between items-center"> |
| <div class="flex items-center"> |
| <img src="https://randomuser.me/api/portraits/men/32.jpg" alt="作者" class="w-8 h-8 rounded-full mr-2"> |
| <span class="text-gray-700">李志明</span> |
| </div> |
| <div class="flex space-x-2"> |
| <span class="text-gray-500"><i class="far fa-eye mr-1"></i> 2.1k</span> |
| <span class="text-gray-500"><i class="far fa-comment mr-1"></i> 68</span> |
| <span class="text-gray-500"><i class="far fa-heart mr-1"></i> 124</span> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="article-card bg-white rounded-xl overflow-hidden border border-gray-200"> |
| <div class="relative"> |
| <img src="https://images.unsplash.com/photo-1460925895917-afdab827c52f?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=600&q=80" alt="熱門文章" class="w-full h-48 object-cover"> |
| <div class="absolute top-4 right-4 bg-red-500 text-white text-xs font-bold px-2 py-1 rounded"> |
| 熱門 |
| </div> |
| </div> |
| <div class="p-5"> |
| <div class="flex items-center mb-2"> |
| <span class="popular-badge text-white text-xs font-bold px-2 py-1 rounded mr-2">人氣 92%</span> |
| <span class="text-gray-500 text-sm">2023-10-10</span> |
| </div> |
| <h3 class="text-xl font-bold text-gray-800 mb-2">數據分析在商業決策中的應用</h3> |
| <p class="text-gray-600 mb-4">數據驅動決策已成為現代企業的核心競爭力。本文將分享如何有效利用...</p> |
| <div class="flex justify-between items-center"> |
| <div class="flex items-center"> |
| <img src="https://randomuser.me/api/portraits/women/68.jpg" alt="作者" class="w-8 h-8 rounded-full mr-2"> |
| <span class="text-gray-700">王雅婷</span> |
| </div> |
| <div class="flex space-x-2"> |
| <span class="text-gray-500"><i class="far fa-eye mr-1"></i> 1.8k</span> |
| <span class="text-gray-500"><i class="far fa-comment mr-1"></i> 53</span> |
| <span class="text-gray-500"><i class="far fa-heart mr-1"></i> 96</span> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </section> |
| |
| |
| <div class="flex flex-col sm:flex-row justify-between items-start sm:items-center mb-6 p-4 bg-white rounded-lg shadow-sm"> |
| <div class="flex flex-wrap items-center mb-2 sm:mb-0"> |
| <h3 class="text-xl font-bold text-gray-800 mr-4">所有文章</h3> |
| <div id="activeFilters" class="flex flex-wrap gap-2"> |
| |
| </div> |
| </div> |
| <div class="flex space-x-2"> |
| <button id="sortRecent" class="sort-btn active px-4 py-2 rounded-lg border border-gray-300 text-gray-700 flex items-center"> |
| <i class="fas fa-clock mr-2"></i> 最新時間 |
| </button> |
| <button id="sortPopular" class="sort-btn px-4 py-2 rounded-lg border border-gray-300 text-gray-700 flex items-center"> |
| <i class="fas fa-fire mr-2"></i> 人氣熱度 |
| </button> |
| </div> |
| </div> |
| |
| |
| <div id="articleList" class="space-y-6 mb-10"> |
| |
| </div> |
| |
| |
| <div class="flex justify-center mt-10"> |
| <nav class="flex items-center space-x-1"> |
| <button class="pagination-btn w-10 h-10 rounded-full flex items-center justify-center"> |
| <i class="fas fa-chevron-left"></i> |
| </button> |
| <button class="pagination-btn w-10 h-10 rounded-full flex items-center justify-center active">1</button> |
| <button class="pagination-btn w-10 h-10 rounded-full flex items-center justify-center">2</button> |
| <button class="pagination-btn w-10 h-10 rounded-full flex items-center justify-center">3</button> |
| <button class="pagination-btn w-10 h-10 rounded-full flex items-center justify-center">4</button> |
| <button class="pagination-btn w-10 h-10 rounded-full flex items-center justify-center">5</button> |
| <button class="pagination-btn w-10 h-10 rounded-full flex items-center justify-center"> |
| <i class="fas fa-chevron-right"></i> |
| </button> |
| </nav> |
| </div> |
| </div> |
| |
| |
| <div class="w-full lg:w-1/4"> |
| <div class="sticky-top"> |
| |
| <div class="bg-white rounded-xl shadow-sm p-6 mb-6"> |
| <h3 class="text-lg font-bold text-gray-800 mb-4">文章分類</h3> |
| <ul class="space-y-2" id="categoryList"> |
| <li class="flex justify-between items-center py-2 border-b border-gray-100"> |
| <a href="#" class="text-gray-700 hover:text-primary flex items-center category-link" data-category="科技趨勢"> |
| <i class="fas fa-laptop-code mr-2 text-primary"></i> 科技趨勢 |
| </a> |
| <span class="bg-gray-100 text-gray-600 text-xs font-medium px-2 py-0.5 rounded-full">24</span> |
| </li> |
| <li class="flex justify-between items-center py-2 border-b border-gray-100"> |
| <a href="#" class="text-gray-700 hover:text-primary flex items-center category-link" data-category="設計"> |
| <i class="fas fa-paint-brush mr-2 text-primary"></i> 設計 |
| </a> |
| <span class="bg-gray-100 text-gray-600 text-xs font-medium px-2 py-0.5 rounded-full">18</span> |
| </li> |
| <li class="flex justify-between items-center py-2 border-b border-gray-100"> |
| <a href="#" class="text-gray-700 hover:text-primary flex items-center category-link" data-category="商業"> |
| <i class="fas fa-chart-line mr-2 text-primary"></i> 商業 |
| </a> |
| <span class="bg-gray-100 text-gray-600 text-xs font-medium px-2 py-0.5 rounded-full">32</span> |
| </li> |
| <li class="flex justify-between items-center py-2 border-b border-gray-100"> |
| <a href="#" class="text-gray-700 hover:text-primary flex items-center category-link" data-category="生活"> |
| <i class="fas fa-heartbeat mr-2 text-primary"></i> 生活 |
| </a> |
| <span class="bg-gray-100 text-gray-600 text-xs font-medium px-2 py-0.5 rounded-full">41</span> |
| </li> |
| <li class="flex justify-between items-center py-2"> |
| <a href="#" class="text-gray-700 hover:text-primary flex items-center category-link" data-category="教育"> |
| <i class="fas fa-graduation-cap mr-2 text-primary"></i> 教育 |
| </a> |
| <span class="bg-gray-100 text-gray-600 text-xs font-medium px-2 py-0.5 rounded-full">15</span> |
| </li> |
| </ul> |
| </div> |
| |
| |
| <div class="bg-white rounded-xl shadow-sm p-6 mb-6"> |
| <h3 class="text-lg font-bold text-gray-800 mb-4">熱門標籤</h3> |
| <div class="flex flex-wrap gap-2"> |
| <span class="bg-blue-100 text-blue-800 text-xs font-medium px-2.5 py-0.5 rounded">人工智慧</span> |
| <span class="bg-green-100 text-green-800 text-xs font-medium px-2.5 py-0.5 rounded">用戶體驗</span> |
| <span class="bg-purple-100 text-purple-800 text-xs font-medium px-2.5 py-0.5 rounded">區塊鏈</span> |
| <span class="bg-yellow-100 text-yellow-800 text-xs font-medium px-2.5 py-0.5 rounded">數據分析</span> |
| <span class="bg-red-100 text-red-800 text-xs font-medium px-2.5 py-0.5 rounded">雲端計算</span> |
| <span class="bg-indigo-100 text-indigo-800 text-xs font-medium px-2.5 py-0.5 rounded">數位轉型</span> |
| <span class="bg-pink-100 text-pink-800 text-xs font-medium px-2.5 py-0.5 rounded">創業</span> |
| <span class="bg-teal-100 text-teal-800 text-xs font-medium px-2.5 py-0.5 rounded">行銷策略</span> |
| </div> |
| </div> |
| |
| </div> |
| </div> |
| </div> |
| </main> |
|
|
| |
| <footer class="relative bg-gradient-to-r from-blue-900 via-purple-900 to-indigo-900 text-white pt-16 pb-8 mt-12 overflow-hidden"> |
| |
| <div class="absolute top-0 left-0 w-full h-full opacity-10"> |
| <div class="absolute top-20 left-10 w-64 h-64 bg-purple-500 rounded-full mix-blend-soft-light filter blur-3xl"></div> |
| <div class="absolute bottom-10 right-10 w-96 h-96 bg-indigo-500 rounded-full mix-blend-soft-light filter blur-3xl"></div> |
| </div> |
| |
| <div class="container mx-auto px-4 relative z-10"> |
| <div class="flex flex-col md:flex-row justify-between mb-12"> |
| <div class="mb-10 md:mb-0 md:w-1/3"> |
| <div class="flex items-center mb-6"> |
| <i class="fas fa-newspaper text-primary text-2xl mr-3"></i> |
| <h3 class="text-2xl font-bold bg-clip-text text-transparent bg-gradient-to-r from-primary to-accent">hoansu</h3> |
| </div> |
| <p class="text-gray-300 mb-6 max-w-md leading-relaxed">這裡是個人知識分享與生活紀錄的地方,希望我的文章能為您帶來啟發與幫助。</p> |
| <div class="flex space-x-4"> |
| <a href="#" class="w-10 h-10 rounded-full bg-white bg-opacity-10 flex items-center justify-center hover:bg-opacity-20 transition-all duration-300"> |
| <i class="fab fa-facebook-f"></i> |
| </a> |
| <a href="#" class="w-10 h-10 rounded-full bg-white bg-opacity-10 flex items-center justify-center hover:bg-opacity-20 transition-all duration-300"> |
| <i class="fab fa-twitter"></i> |
| </a> |
| <a href="#" class="w-10 h-10 rounded-full bg-white bg-opacity-10 flex items-center justify-center hover:bg-opacity-20 transition-all duration-300"> |
| <i class="fab fa-instagram"></i> |
| </a> |
| <a href="#" class="w-10 h-10 rounded-full bg-white bg-opacity-10 flex items-center justify-center hover:bg-opacity-20 transition-all duration-300"> |
| <i class="fab fa-linkedin-in"></i> |
| </a> |
| </div> |
| </div> |
| |
| <div class="grid grid-cols-2 md:grid-cols-3 gap-8 md:w-2/3"> |
| <div> |
| <h4 class="text-lg font-semibold mb-6 relative inline-block"> |
| 關於我 |
| <span class="absolute bottom-0 left-0 w-10 h-0.5 bg-accent"></span> |
| </h4> |
| <ul class="space-y-3"> |
| <li><a href="#" class="text-gray-300 hover:text-white transition-colors duration-300 flex items-start"> |
| <i class="fas fa-chevron-right text-xs mt-1 mr-2 text-accent"></i> 個人簡介 |
| </a></li> |
| <li><a href="#" class="text-gray-300 hover:text-white transition-colors duration-300 flex items-start"> |
| <i class="fas fa-chevron-right text-xs mt-1 mr-2 text-accent"></i> 創作理念 |
| </a></li> |
| <li><a href="#" class="text-gray-300 hover:text-white transition-colors duration-300 flex items-start"> |
| <i class="fas fa-chevron-right text-xs mt-1 mr-2 text-accent"></i> 聯絡方式 |
| </a></li> |
| </ul> |
| </div> |
| <div> |
| <h4 class="text-lg font-semibold mb-6 relative inline-block"> |
| 文章分類 |
| <span class="absolute bottom-0 left-0 w-10 h-0.5 bg-accent"></span> |
| </h4> |
| <ul class="space-y-3"> |
| <li><a href="#" class="text-gray-300 hover:text-white transition-colors duration-300 flex items-start"> |
| <i class="fas fa-chevron-right text-xs mt-1 mr-2 text-accent"></i> 技術分享 |
| </a></li> |
| <li><a href="#" class="text-gray-300 hover:text-white transition-colors duration-300 flex items-start"> |
| <i class="fas fa-chevron-right text-xs mt-1 mr-2 text-accent"></i> 生活點滴 |
| </a></li> |
| <li><a href="#" class="text-gray-300 hover:text-white transition-colors duration-300 flex items-start"> |
| <i class="fas fa-chevron-right text-xs mt-1 mr-2 text-accent"></i> 閱讀筆記 |
| </a></li> |
| </ul> |
| </div> |
| <div> |
| <h4 class="text-lg font-semibold mb-6 relative inline-block"> |
| 快速連結 |
| <span class="absolute bottom-0 left-0 w-10 h-0.5 bg-accent"></span> |
| </h4> |
| <ul class="space-y-3"> |
| <li><a href="#" class="text-gray-300 hover:text-white transition-colors duration-300 flex items-start"> |
| <i class="fas fa-chevron-right text-xs mt-1 mr-2 text-accent"></i> 首頁 |
| </a></li> |
| <li><a href="#" class="text-gray-300 hover:text-white transition-colors duration-300 flex items-start"> |
| <i class="fas fa-chevron-right text-xs mt-1 mr-2 text-accent"></i> 最新文章 |
| </a></li> |
| <li><a href="#" class="text-gray-300 hover:text-white transition-colors duration-300 flex items-start"> |
| <i class="fas fa-chevron-right text-xs mt-1 mr-2 text-accent"></i> 熱門文章 |
| </a></li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| |
| <div class="border-t border-gray-700 border-opacity-30 pt-8"> |
| <div class="flex flex-col md:flex-row justify-between items-center"> |
| <p class="text-gray-400 mb-4 md:mb-0">© 2023 hoansu. 保留所有權利.</p> |
| <div class="flex space-x-6"> |
| <a href="#" class="text-gray-400 hover:text-white transition-colors duration-300">隱私權政策</a> |
| <a href="#" class="text-gray-400 hover:text-white transition-colors duration-300">服務條款</a> |
| <a href="#" class="text-gray-400 hover:text-white transition-colors duration-300">聯絡我們</a> |
| </div> |
| </div> |
| </div> |
| </div> |
| </footer> |
|
|
| <script> |
| |
| let currentUser = null; |
| |
| |
| const articles = [ |
| { |
| id: 1, |
| title: "人工智能在醫療領域的應用前景", |
| excerpt: "探討AI技術如何改善診斷準確性和治療方案,提升醫療服務效率。", |
| author: "林曉明", |
| authorAvatar: "https://randomuser.me/api/portraits/men/41.jpg", |
| date: "2023-10-18", |
| views: 1240, |
| comments: 32, |
| likes: 68, |
| category: "科技趨勢", |
| popularity: 85, |
| image: "https://images.unsplash.com/photo-1576091160550-2173dba999ef?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=600&q=80" |
| }, |
| { |
| id: 2, |
| title: "UI/UX設計中的色彩心理學", |
| excerpt: "了解色彩如何影響用戶情緒和行為,創建更有效的設計方案。", |
| author: "張雅琪", |
| authorAvatar: "https://randomuser.me/api/portraits/women/67.jpg", |
| date: "2023-10-17", |
| views: 892, |
| comments: 18, |
| likes: 42, |
| category: "設計", |
| popularity: 72, |
| image: "https://images.unsplash.com/photo-1499951360447-b19be8fe80f5?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=600&q=80" |
| }, |
| { |
| id: 3, |
| title: "數位轉型對傳統企業的挑戰", |
| excerpt: "分析傳統企業在數位轉型過程中面臨的關鍵問題和解決方案。", |
| author: "王大維", |
| authorAvatar: "https://randomuser.me/api/portraits/men/52.jpg", |
| date: "2023-10-16", |
| views: 1560, |
| comments: 45, |
| likes: 89, |
| category: "商業", |
| popularity: 91, |
| image: "https://images.unsplash.com/photo-1552664730-d307ca884978?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=600&q=80" |
| }, |
| { |
| id: 4, |
| title: "遠程工作的效率提升技巧", |
| excerpt: "分享在家中辦公時保持高效生產力的實用方法和工具。", |
| author: "陳美玲", |
| authorAvatar: "https://randomuser.me/api/portraits/women/33.jpg", |
| date: "2023-10-15", |
| views: 2105, |
| comments: 67, |
| likes: 124, |
| category: "生活", |
| popularity: 95, |
| image: "https://images.unsplash.com/photo-1522071820081-009f0129c71c?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=600&q=80" |
| }, |
| { |
| id: 5, |
| title: "區塊鏈技術的未來發展方向", |
| excerpt: "探討區塊鏈技術在金融、供應鏈等領域的潛在應用和挑戰。", |
| author: "劉志豪", |
| authorAvatar: "https://randomuser.me/api/portraits/men/63.jpg", |
| date: "2023-10-14", |
| views: 956, |
| comments: 28, |
| likes: 51, |
| category: "科技趨勢", |
| popularity: 68, |
| image: "https://images.unsplash.com/photo-1620336655052-b57986f5a26a?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=600&q=80" |
| }, |
| { |
| id: 6, |
| title: "如何建立個人品牌影響力", |
| excerpt: "從內容創作到社群經營,打造個人專業形象的完整指南。", |
| author: "黃雅慧", |
| authorAvatar: "https://randomuser.me/api/portraits/women/78.jpg", |
| date: "2023-10-13", |
| views: 1780, |
| comments: 53, |
| likes: 98, |
| category: "商業", |
| popularity: 87, |
| image: "https://images.unsplash.com/photo-1551836022-d5d88e9218df?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=600&q=80" |
| }, |
| { |
| id: 7, |
| title: "2024年前端開發技術趨勢", |
| excerpt: "React、Vue、Angular等主流框架的發展方向和新特性。", |
| author: "吳建宏", |
| authorAvatar: "https://randomuser.me/api/portraits/men/84.jpg", |
| date: "2023-10-12", |
| views: 2340, |
| comments: 78, |
| likes: 156, |
| category: "科技趨勢", |
| popularity: 98, |
| image: "https://images.unsplash.com/photo-1555066931-4365d14bab8c?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=600&q=80" |
| }, |
| { |
| id: 8, |
| title: "創業初期的資金籌措策略", |
| excerpt: "介紹天使投資、風險投資等不同資金來源的優缺點和申請要點。", |
| author: "林美娟", |
| authorAvatar: "https://randomuser.me/api/portraits/women/29.jpg", |
| date: "2023-10-11", |
| views: 1420, |
| comments: 41, |
| likes: 73, |
| category: "商業", |
| popularity: 82, |
| image: "https://images.unsplash.com/photo-1460925895917-afdab827c52f?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=600&q=80" |
| }, |
| { |
| id: 9, |
| title: "心理健康與工作壓力管理", |
| excerpt: "現代職場中如何識別和應對壓力,維持身心健康。", |
| author: "張志明", |
| authorAvatar: "https://randomuser.me/api/portraits/men/12.jpg", |
| date: "2023-10-10", |
| views: 1890, |
| comments: 56, |
| likes: 102, |
| category: "生活", |
| popularity: 93, |
| image: "https://images.unsplash.com/photo-1481487196290-c152efe083f5?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=600&q=80" |
| }, |
| { |
| id: 10, |
| title: "機器學習入門指南", |
| excerpt: "為初學者提供機器學習的核心概念、學習路徑和實用資源。", |
| author: "陳雅文", |
| authorAvatar: "https://randomuser.me/api/portraits/women/54.jpg", |
| date: "2023-10-09", |
| views: 3120, |
| comments: 92, |
| likes: 187, |
| category: "科技趨勢", |
| popularity: 99, |
| image: "https://images.unsplash.com/photo-1551288049-bebda4e38f71?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=600&q=80" |
| } |
| ]; |
| |
| |
| let currentSort = 'recent'; |
| |
| let activeFilters = []; |
| |
| |
| function renderArticles(articlesToRender) { |
| const articleList = document.getElementById('articleList'); |
| articleList.innerHTML = ''; |
| |
| articlesToRender.forEach(article => { |
| const articleElement = document.createElement('div'); |
| articleElement.className = 'article-card bg-white rounded-xl overflow-hidden border border-gray-200 flex flex-col md:flex-row'; |
| |
| articleElement.innerHTML = ` |
| <div class="md:w-1/3"> |
| <img src="${article.image}" alt="${article.title}" class="w-full h-full object-cover"> |
| </div> |
| <div class="p-6 md:w-2/3"> |
| <div class="flex items-center mb-3"> |
| <span class="bg-gray-100 text-gray-800 text-xs font-medium px-2.5 py-0.5 rounded mr-2">${article.category}</span> |
| ${currentSort === 'popular' ? |
| `<span class="popular-badge text-white text-xs font-bold px-2 py-1 rounded mr-2">人氣 ${article.popularity}%</span>` : |
| `<span class="recent-badge text-white text-xs font-bold px-2 py-1 rounded mr-2">最新</span>` |
| } |
| <span class="text-gray-500 text-sm">${article.date}</span> |
| </div> |
| <h3 class="text-xl font-bold text-gray-800 mb-2">${article.title}</h3> |
| <p class="text-gray-600 mb-4">${article.excerpt}</p> |
| <div class="flex justify-between items-center"> |
| <div class="flex items-center"> |
| <img src="${article.authorAvatar}" alt="${article.author}" class="w-8 h-8 rounded-full mr-2"> |
| <span class="text-gray-700">${article.author}</span> |
| </div> |
| <div class="flex space-x-4"> |
| <span class="text-gray-500 flex items-center"><i class="far fa-eye mr-1"></i> ${article.views}</span> |
| <span class="text-gray-500 flex items-center"><i class="far fa-comment mr-1"></i> ${article.comments}</span> |
| <span class="text-gray-500 flex items-center"><i class="far fa-heart mr-1"></i> ${article.likes}</span> |
| </div> |
| </div> |
| </div> |
| `; |
| |
| articleList.appendChild(articleElement); |
| }); |
| } |
| |
| |
| function sortArticles(sortBy) { |
| currentSort = sortBy; |
| |
| |
| document.getElementById('sortRecent').classList.toggle('active', sortBy === 'recent'); |
| document.getElementById('sortPopular').classList.toggle('active', sortBy === 'popular'); |
| |
| let filteredArticles = [...articles]; |
| |
| |
| if (activeFilters.length > 0) { |
| filteredArticles = filteredArticles.filter(article => |
| activeFilters.includes(article.category) |
| ); |
| } |
| |
| |
| if (sortBy === 'recent') { |
| filteredArticles.sort((a, b) => new Date(b.date) - new Date(a.date)); |
| } else if (sortBy === 'popular') { |
| filteredArticles.sort((a, b) => b.popularity - a.popularity); |
| } |
| |
| renderArticles(filteredArticles); |
| } |
| |
| |
| function updateFilterTags() { |
| const filterContainer = document.getElementById('activeFilters'); |
| filterContainer.innerHTML = ''; |
| |
| activeFilters.forEach(category => { |
| const tag = document.createElement('span'); |
| tag.className = 'bg-blue-100 text-blue-800 text-xs font-medium px-2.5 py-0.5 rounded flex items-center'; |
| tag.innerHTML = ` |
| ${category} |
| <button class="ml-1 remove-filter" data-category="${category}"> |
| <i class="fas fa-times text-xs"></i> |
| </button> |
| `; |
| filterContainer.appendChild(tag); |
| }); |
| |
| |
| document.querySelectorAll('.remove-filter').forEach(button => { |
| button.addEventListener('click', function() { |
| const category = this.getAttribute('data-category'); |
| removeFilter(category); |
| }); |
| }); |
| } |
| |
| |
| function addFilter(category) { |
| if (!activeFilters.includes(category)) { |
| activeFilters.push(category); |
| updateFilterTags(); |
| sortArticles(currentSort); |
| } |
| } |
| |
| |
| function removeFilter(category) { |
| activeFilters = activeFilters.filter(filter => filter !== category); |
| updateFilterTags(); |
| sortArticles(currentSort); |
| } |
| |
| |
| document.addEventListener('DOMContentLoaded', function() { |
| |
| sortArticles('recent'); |
| |
| |
| document.getElementById('sortRecent').addEventListener('click', () => sortArticles('recent')); |
| document.getElementById('sortPopular').addEventListener('click', () => sortArticles('popular')); |
| |
| |
| document.querySelectorAll('.category-link').forEach(link => { |
| link.addEventListener('click', function(e) { |
| e.preventDefault(); |
| const category = this.getAttribute('data-category'); |
| addFilter(category); |
| }); |
| }); |
| |
| |
| const authBtn = document.getElementById('authBtn'); |
| const loginModal = document.getElementById('loginModal'); |
| const closeLoginModal = document.getElementById('closeLoginModal'); |
| const loginForm = document.getElementById('loginForm'); |
| const postArticleBtn = document.getElementById('postArticleBtn'); |
| |
| authBtn.addEventListener('click', function() { |
| if (currentUser) { |
| |
| currentUser = null; |
| authBtn.innerHTML = '<i class="fas fa-user mr-2"></i> 登入'; |
| postArticleBtn.disabled = true; |
| postArticleBtn.classList.add('opacity-50', 'cursor-not-allowed'); |
| alert('您已成功登出'); |
| } else { |
| |
| loginModal.classList.remove('hidden'); |
| } |
| }); |
| |
| closeLoginModal.addEventListener('click', function() { |
| loginModal.classList.add('hidden'); |
| }); |
| |
| loginForm.addEventListener('submit', function(e) { |
| e.preventDefault(); |
| const username = document.getElementById('username').value; |
| const password = document.getElementById('password').value; |
| |
| |
| if (username && password) { |
| currentUser = { username: username }; |
| authBtn.innerHTML = `<i class="fas fa-user mr-2"></i> ${username} (登出)`; |
| postArticleBtn.disabled = false; |
| postArticleBtn.classList.remove('opacity-50', 'cursor-not-allowed'); |
| loginModal.classList.add('hidden'); |
| alert('登入成功!'); |
| } else { |
| alert('請輸入帳號和密碼'); |
| } |
| }); |
| |
| |
| postArticleBtn.addEventListener('click', function() { |
| if (!currentUser) { |
| alert('請先登入以發表文章'); |
| loginModal.classList.remove('hidden'); |
| return; |
| } |
| alert('發表文章功能已啟用!'); |
| |
| }); |
| |
| |
| postArticleBtn.disabled = true; |
| postArticleBtn.classList.add('opacity-50', 'cursor-not-allowed'); |
| }); |
| </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=suanan/self-site" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> |
| </html> |