store.html 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>动画商城</title>
  7. <link rel="stylesheet" href="../../css/store/store.css" />
  8. <link rel="stylesheet" href="../../css/store/item.css" />
  9. </head>
  10. <body>
  11. <div class="store-root">
  12. <div class="store-container">
  13. <!-- 搜索栏 -->
  14. <div class="store-header">
  15. <div class="search-bar">
  16. <input
  17. type="text"
  18. id="searchInput"
  19. class="search-input"
  20. placeholder="搜索资源..."
  21. />
  22. <button class="search-button" id="searchButton">
  23. <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
  24. <path d="M9 17A8 8 0 1 0 9 1a8 8 0 0 0 0 16zM18 18l-4-4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
  25. </svg>
  26. </button>
  27. </div>
  28. </div>
  29. <!-- 分类栏 -->
  30. <div class="category-bar" id="categoryBar">
  31. <button class="category-item active" data-category="">全部</button>
  32. <!-- 分类按钮将通过 JavaScript 动态加载 -->
  33. </div>
  34. <!-- 资源网格 -->
  35. <div class="resources-grid" id="resourcesGrid">
  36. <!-- 资源项将通过 JavaScript 动态加载 -->
  37. </div>
  38. <!-- 空状态 -->
  39. <div class="empty-state" id="emptyState" style="display: none;">
  40. <div class="empty-icon">📦</div>
  41. <div class="empty-text">暂无资源</div>
  42. </div>
  43. <!-- 加载状态 -->
  44. <div class="loading-state" id="loadingState" style="display: none;">
  45. <div class="loading-spinner"></div>
  46. <div class="loading-text">加载中...</div>
  47. </div>
  48. </div>
  49. </div>
  50. <!-- 动画预览弹窗 -->
  51. <div class="preview-modal" id="previewModal" style="display: none;">
  52. <div class="preview-modal-content">
  53. <div class="preview-modal-header">
  54. <h3 class="preview-modal-title" id="previewTitle">动画预览</h3>
  55. <button class="preview-modal-close" id="previewClose">
  56. <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
  57. <path d="M18 6L6 18M6 6l12 12" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
  58. </svg>
  59. </button>
  60. </div>
  61. <div class="preview-modal-body">
  62. <div class="preview-animation-container">
  63. <img id="previewAnimationImage" class="preview-animation-image" alt="动画预览" />
  64. </div>
  65. </div>
  66. <div class="preview-modal-footer">
  67. <div class="fps-control">
  68. <label class="fps-label">播放速度</label>
  69. <input type="range" id="fpsSlider" class="fps-slider" min="1" max="30" value="8" step="1">
  70. <span class="fps-display" id="fpsDisplay">8 FPS</span>
  71. </div>
  72. </div>
  73. </div>
  74. </div>
  75. <script src="../../js/store/item.js"></script>
  76. <script src="../../js/store/store.js"></script>
  77. </body>
  78. </html>