index.html 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. {% extends "base.html" %}
  2. {% set title = "首页" %}
  3. {% set page = "index" %}
  4. {% block head_extra %}
  5. <link rel="stylesheet" href="{{ url_for('static', filename='lib/swiper/swiper-bundle.min.css') }}" />
  6. {% endblock %}
  7. {% block content %}
  8. <!-- Swiper Hero Banner -->
  9. <div class="swiper hero-swiper">
  10. <div class="swiper-wrapper">
  11. <div class="swiper-slide">
  12. <section class="hero hero-slide-1">
  13. <div class="hero-content">
  14. <h1 class="hero-title"><i class="ri-rocket-line" style="margin-right:8px; color:var(--brand)"></i>发现高质量源代码资源</h1>
  15. <p class="hero-desc">支持仓库浏览、文件预览、会员下载与完整运营后台</p>
  16. <div class="toolbar hero-toolbar">
  17. <a class="btn btn-primary btn-lg" href="{{ url_for('page_resources') }}">
  18. <i class="ri-search-line"></i> 浏览资源
  19. </a>
  20. <a class="btn btn-lg" href="{{ url_for('page_vip') }}">
  21. <i class="ri-vip-crown-line"></i> 开通会员
  22. </a>
  23. </div>
  24. </div>
  25. </section>
  26. </div>
  27. <div class="swiper-slide">
  28. <section class="hero hero-slide-2">
  29. <div class="hero-content">
  30. <h1 class="hero-title"><i class="ri-code-s-slash-line" style="margin-right:8px; color:var(--brand)"></i>全平台多语言支持</h1>
  31. <p class="hero-desc">涵盖前端、后端、移动端、人工智能等全栈优质源码</p>
  32. <div class="toolbar hero-toolbar">
  33. <a class="btn btn-primary btn-lg" href="{{ url_for('page_resources') }}">
  34. <i class="ri-arrow-right-line"></i> 立即探索
  35. </a>
  36. </div>
  37. </div>
  38. </section>
  39. </div>
  40. <div class="swiper-slide">
  41. <section class="hero hero-slide-3">
  42. <div class="hero-content">
  43. <h1 class="hero-title"><i class="ri-shield-check-line" style="margin-right:8px; color:var(--brand)"></i>安全、可靠、高效</h1>
  44. <p class="hero-desc">所有代码均经过严格审核,确保开箱即用,零套路</p>
  45. <div class="toolbar hero-toolbar">
  46. <a class="btn btn-primary btn-lg" href="{{ url_for('page_vip') }}">
  47. <i class="ri-vip-diamond-line"></i> 了解VIP特权
  48. </a>
  49. </div>
  50. </div>
  51. </section>
  52. </div>
  53. </div>
  54. <div class="swiper-pagination"></div>
  55. <div class="swiper-button-prev"></div>
  56. <div class="swiper-button-next"></div>
  57. </div>
  58. <div class="toolbar search-bar" style="margin-top: -24px; position: relative; z-index: 10; justify-content: center; background: rgba(255,255,255,0.9); padding: 20px; border-radius: 16px; box-shadow: var(--shadow-lg);">
  59. <div class="search-bar-inner" style="display: flex; gap: 12px; width: 100%; max-width: 800px; margin: 0 auto; flex-wrap: wrap;">
  60. <div style="position: relative; flex: 1; min-width: 200px;">
  61. <i class="ri-search-line" style="position: absolute; left: 16px; top: 50%; transform: translateY(-50%); color: var(--text-muted); font-size: 1.2rem;"></i>
  62. <input id="q" class="input" placeholder="搜索标题或简介" style="width: 100%; padding-left: 48px; height: 48px; font-size: 1.1rem; border-radius: 12px;" />
  63. </div>
  64. <select id="type" class="input" style="width: 160px; height: 48px; border-radius: 12px; flex: 1; min-width: 120px;">
  65. <option value="">全部类型</option>
  66. <option value="FREE">免费资源</option>
  67. <option value="VIP">VIP专属</option>
  68. </select>
  69. <button id="searchBtn" class="btn btn-primary" style="height: 48px; padding: 0 32px; border-radius: 12px; font-size: 1.1rem; flex: 1; min-width: 120px;">
  70. 搜索
  71. </button>
  72. </div>
  73. </div>
  74. <div style="display:flex; justify-content:space-between; align-items:flex-end; margin-top:40px; margin-bottom: 24px;">
  75. <h2 style="margin:0;"><i class="ri-fire-line" style="color:var(--brand); margin-right:8px;"></i>最新资源</h2>
  76. <a href="{{ url_for('page_resources') }}" class="btn-ghost" style="color:var(--brand); font-weight:500;">查看全部 <i class="ri-arrow-right-s-line"></i></a>
  77. </div>
  78. <div id="resourceList" class="grid"></div>
  79. <div class="pager" id="pager" style="margin-top: 32px;">
  80. <button id="prevPage" class="btn"><i class="ri-arrow-left-s-line"></i> 上一页</button>
  81. <span id="pageInfo" class="muted" style="font-weight: 500;"></span>
  82. <button id="nextPage" class="btn">下一页 <i class="ri-arrow-right-s-line"></i></button>
  83. </div>
  84. <h2 style="margin-top:60px; text-align:center;"><i class="ri-thumb-up-line" style="color:var(--brand); margin-right:8px;"></i>为什么选择这里</h2>
  85. <div class="grid feature-grid" style="margin-top:24px; gap: 24px;">
  86. <div class="card feature-card" style="text-align: center; padding: 40px 24px;">
  87. <div class="feature-icon" style="font-size: 3rem; color: var(--brand); margin-bottom: 16px;"><i class="ri-eye-line"></i></div>
  88. <h3 style="margin-bottom: 12px; font-size: 1.25rem;">快速预览</h3>
  89. <div class="muted">无需克隆仓库即可浏览目录、预览文件内容,所见即所得。</div>
  90. </div>
  91. <div class="card feature-card" style="text-align: center; padding: 40px 24px;">
  92. <div class="feature-icon" style="font-size: 3rem; color: #f59e0b; margin-bottom: 16px;"><i class="ri-vip-crown-line"></i></div>
  93. <h3 style="margin-bottom: 12px; font-size: 1.25rem;">尊享特权</h3>
  94. <div class="muted">VIP 资源一键下载 ZIP,全站无限制访问,权益实时生效。</div>
  95. </div>
  96. <div class="card feature-card" style="text-align: center; padding: 40px 24px;">
  97. <div class="feature-icon" style="font-size: 3rem; color: #10b981; margin-bottom: 16px;"><i class="ri-settings-4-line"></i></div>
  98. <h3 style="margin-bottom: 12px; font-size: 1.25rem;">极简管理</h3>
  99. <div class="muted">提供强大的资源、订单、用户与配置集中管理后台。</div>
  100. </div>
  101. </div>
  102. {% endblock %}
  103. {% block scripts %}
  104. <script src="{{ url_for('static', filename='lib/swiper/swiper-bundle.min.js') }}"></script>
  105. {{ super() }}
  106. <script>
  107. document.addEventListener('DOMContentLoaded', function() {
  108. const swiper = new Swiper('.hero-swiper', {
  109. loop: true,
  110. autoplay: {
  111. delay: 5000,
  112. disableOnInteraction: false,
  113. },
  114. pagination: {
  115. el: '.swiper-pagination',
  116. clickable: true,
  117. },
  118. navigation: {
  119. nextEl: '.swiper-button-next',
  120. prevEl: '.swiper-button-prev',
  121. },
  122. effect: 'fade',
  123. fadeEffect: {
  124. crossFade: true
  125. }
  126. });
  127. });
  128. </script>
  129. {% endblock %}