item.css 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. /* 商店资源项样式 */
  2. .store-item {
  3. background: #ffffff;
  4. border-radius: 12px;
  5. overflow: hidden;
  6. box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  7. transition: all 0.3s ease;
  8. display: flex;
  9. flex-direction: column;
  10. align-items: stretch;
  11. justify-content: flex-start;
  12. cursor: pointer;
  13. width: 100%;
  14. max-width: 100%;
  15. min-height: 0;
  16. box-sizing: border-box;
  17. }
  18. .store-item:hover {
  19. transform: translateY(-4px);
  20. box-shadow: 0 8px 24px rgba(139, 92, 246, 0.2);
  21. }
  22. /* 预览图区域 */
  23. .item-preview {
  24. position: relative;
  25. width: 100%;
  26. background: #f9fafb;
  27. overflow: hidden;
  28. display: flex;
  29. align-items: center;
  30. justify-content: center;
  31. aspect-ratio: 1 / 1;
  32. flex-shrink: 0;
  33. min-height: 200px;
  34. }
  35. .item-preview .item-category {
  36. position: absolute;
  37. top: 8px;
  38. left: 8px;
  39. z-index: 5;
  40. display: inline-block;
  41. padding: 5px 12px;
  42. background: linear-gradient(135deg, rgba(139, 92, 246, 0.15) 0%, rgba(124, 58, 237, 0.15) 100%);
  43. color: #8b5cf6;
  44. border-radius: 12px;
  45. font-size: 11px;
  46. font-weight: 600;
  47. letter-spacing: 0.3px;
  48. border: 1px solid rgba(139, 92, 246, 0.2);
  49. box-shadow: 0 1px 3px rgba(139, 92, 246, 0.1);
  50. transition: all 0.2s ease;
  51. backdrop-filter: blur(4px);
  52. }
  53. .item-preview-image {
  54. width: 100%;
  55. height: 100%;
  56. object-fit: contain;
  57. object-position: center;
  58. image-rendering: pixelated;
  59. background-color: #f9fafb;
  60. box-sizing: border-box;
  61. min-width: 0;
  62. min-height: 0;
  63. display: block;
  64. }
  65. /* FPS 控制条 */
  66. .item-fps-control {
  67. position: absolute;
  68. bottom: 0;
  69. left: 0;
  70. right: 0;
  71. background: rgba(0, 0, 0, 0.8);
  72. backdrop-filter: blur(4px);
  73. padding: 8px 12px;
  74. display: flex;
  75. align-items: center;
  76. gap: 8px;
  77. opacity: 0;
  78. transform: translateY(100%);
  79. transition: all 0.3s ease;
  80. z-index: 10;
  81. }
  82. .store-item:hover .item-fps-control {
  83. opacity: 1;
  84. transform: translateY(0);
  85. }
  86. .item-fps-label {
  87. font-size: 12px;
  88. font-weight: 500;
  89. color: #ffffff;
  90. white-space: nowrap;
  91. flex-shrink: 0;
  92. }
  93. .item-fps-slider {
  94. flex: 1;
  95. height: 4px;
  96. border-radius: 2px;
  97. background: rgba(255, 255, 255, 0.3);
  98. outline: none;
  99. -webkit-appearance: none;
  100. appearance: none;
  101. }
  102. .item-fps-slider::-webkit-slider-thumb {
  103. -webkit-appearance: none;
  104. appearance: none;
  105. width: 14px;
  106. height: 14px;
  107. border-radius: 50%;
  108. background: #8b5cf6;
  109. cursor: pointer;
  110. transition: all 0.2s ease;
  111. box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
  112. }
  113. .item-fps-slider::-webkit-slider-thumb:hover {
  114. background: #7c3aed;
  115. transform: scale(1.1);
  116. }
  117. .item-fps-slider::-moz-range-thumb {
  118. width: 14px;
  119. height: 14px;
  120. border-radius: 50%;
  121. background: #8b5cf6;
  122. cursor: pointer;
  123. border: none;
  124. transition: all 0.2s ease;
  125. box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
  126. }
  127. .item-fps-slider::-moz-range-thumb:hover {
  128. background: #7c3aed;
  129. transform: scale(1.1);
  130. }
  131. .item-fps-display {
  132. font-size: 12px;
  133. font-weight: 600;
  134. color: #ffffff;
  135. background: rgba(139, 92, 246, 0.3);
  136. padding: 4px 8px;
  137. border-radius: 4px;
  138. min-width: 50px;
  139. text-align: center;
  140. font-family: 'Courier New', monospace;
  141. flex-shrink: 0;
  142. }
  143. /* 信息区域 */
  144. .item-info {
  145. padding: 10px 12px;
  146. width: 100%;
  147. flex: 0 0 auto;
  148. display: flex;
  149. flex-direction: column;
  150. box-sizing: border-box;
  151. }
  152. .item-meta {
  153. display: flex;
  154. align-items: center;
  155. gap: 8px;
  156. flex-wrap: wrap;
  157. }
  158. .item-name {
  159. font-size: 16px;
  160. font-weight: 600;
  161. color: #1f2937;
  162. overflow: hidden;
  163. text-overflow: ellipsis;
  164. white-space: nowrap;
  165. flex: 1;
  166. min-width: 0;
  167. }
  168. .item-frames {
  169. display: flex;
  170. align-items: center;
  171. }
  172. /* 操作区域 */
  173. .item-actions {
  174. padding: 10px 12px;
  175. width: 100%;
  176. border-top: 1px solid rgba(0, 0, 0, 0.05);
  177. display: flex;
  178. flex-direction: column;
  179. gap: 8px;
  180. flex: 0 0 auto;
  181. box-sizing: border-box;
  182. }
  183. .item-price {
  184. font-size: 18px;
  185. font-weight: 700;
  186. color: #8b5cf6;
  187. text-align: center;
  188. display: flex;
  189. align-items: center;
  190. justify-content: center;
  191. }
  192. .item-buy-button {
  193. width: 100%;
  194. padding: 8px;
  195. background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%);
  196. color: white;
  197. border: none;
  198. border-radius: 8px;
  199. font-size: 14px;
  200. font-weight: 600;
  201. cursor: pointer;
  202. transition: all 0.3s ease;
  203. display: flex;
  204. align-items: center;
  205. justify-content: center;
  206. }
  207. .item-buy-button:hover {
  208. background: linear-gradient(135deg, #7c3aed 0%, #6d28d9 100%);
  209. transform: translateY(-1px);
  210. box-shadow: 0 4px 12px rgba(139, 92, 246, 0.3);
  211. }
  212. .item-buy-button:active {
  213. transform: translateY(0);
  214. }
  215. .item-buy-button.item-button-added {
  216. background: linear-gradient(135deg, #10b981 0%, #059669 100%);
  217. cursor: pointer;
  218. }
  219. .item-buy-button.item-button-added:hover {
  220. background: linear-gradient(135deg, #059669 0%, #047857 100%);
  221. transform: translateY(-1px);
  222. box-shadow: 0 4px 12px rgba(16, 185, 129, 0.3);
  223. }
  224. .item-buy-button.item-button-added:active {
  225. transform: translateY(0);
  226. }