tcb-theme.css 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564
  1. /* TCB Shop Demo 主题变量和颜色系统集成 */
  2. /* 集成到当前小程序项目,保持与Tailwind CSS兼容 */
  3. /* ===== 主题变量系统 ===== */
  4. :root {
  5. /* 主要主题色 */
  6. --tcb-primary-color: #fa4126;
  7. --tcb-primary-text-color: #fa550f;
  8. /* TDesign 组件主题变量 */
  9. --td-input-placeholder-text-color: #bbbbbb;
  10. --td-input-text-color: #333333;
  11. --td-tab-bar-color: #bbb;
  12. --td-tab-bar-active-color: #333;
  13. --td-cascader-active-color: #fa4126;
  14. --td-switch-checked-color: #34c759;
  15. --td-button-default-bg-color: #fa4126;
  16. --td-button-default-border-color: #fa4126;
  17. --td-checkbox-icon-checked-color: #fa4126;
  18. /* TDesign Tabs 组件主题变量 */
  19. --td-tab-font-size: 28rpx;
  20. --td-tab-nav-bg-color: #fff;
  21. --td-tab-item-color: #333;
  22. --td-tab-item-active-color: #fa550f;
  23. --td-tab-item-disabled-color: rgba(0, 0, 0, 0.26);
  24. --td-tab-track-color: #fa550f;
  25. --td-tab-track-width: 32rpx;
  26. --td-tab-track-thickness: 6rpx;
  27. --td-tab-track-radius: 8rpx;
  28. --td-tab-item-height: 96rpx;
  29. --td-tab-icon-size: 36rpx;
  30. --td-tab-border-color: #e7e7e7;
  31. --td-tab-item-tag-bg: #f3f3f3;
  32. --td-tab-item-tag-active-bg: rgba(250, 85, 15, 0.1);
  33. --td-tab-item-tag-height: 64rpx;
  34. }
  35. /* ===== 语义化颜色类 ===== */
  36. /* 文字颜色类 */
  37. .text-primary {
  38. color: #fa550f;
  39. }
  40. .text-success {
  41. color: #5fb446;
  42. }
  43. .text-warn {
  44. color: #ec8131;
  45. }
  46. .text-danger {
  47. color: #de1c24;
  48. }
  49. /* 背景颜色类 */
  50. .bg-primary {
  51. background-color: #fa550f;
  52. }
  53. .bg-success {
  54. background-color: #5fb446;
  55. }
  56. .bg-warn {
  57. background-color: #ec8131;
  58. }
  59. .bg-danger {
  60. background-color: #de1c24;
  61. }
  62. /* ===== 层级颜色类 ===== */
  63. /* 文字层级颜色 */
  64. .text-title {
  65. color: #282828;
  66. }
  67. .text-normal {
  68. color: #5d5d5d;
  69. }
  70. .text-small {
  71. color: #9b9b9b;
  72. }
  73. .text-minor {
  74. color: #ececec;
  75. }
  76. .text-border {
  77. color: #eeeeee;
  78. }
  79. /* 背景层级颜色 */
  80. .bg-title {
  81. background-color: #282828;
  82. }
  83. .bg-normal {
  84. background-color: #5d5d5d;
  85. }
  86. .bg-small {
  87. background-color: #9b9b9b;
  88. }
  89. .bg-minor {
  90. background-color: #ececec;
  91. }
  92. .bg-border {
  93. background-color: #eeeeee;
  94. }
  95. /* ===== 边框颜色类 ===== */
  96. .border-primary {
  97. border-color: #fa550f;
  98. }
  99. .border-success {
  100. border-color: #5fb446;
  101. }
  102. .border-warn {
  103. border-color: #ec8131;
  104. }
  105. .border-danger {
  106. border-color: #de1c24;
  107. }
  108. .border-title {
  109. border-color: #282828;
  110. }
  111. .border-normal {
  112. border-color: #5d5d5d;
  113. }
  114. .border-small {
  115. border-color: #9b9b9b;
  116. }
  117. .border-minor {
  118. border-color: #ececec;
  119. }
  120. /* ===== 按钮样式类 ===== */
  121. .btn-primary {
  122. background-color: #fa4126;
  123. border-color: #fa4126;
  124. color: white;
  125. }
  126. .btn-primary:active {
  127. background-color: #e03a22;
  128. border-color: #e03a22;
  129. }
  130. .btn-success {
  131. background-color: #5fb446;
  132. border-color: #5fb446;
  133. color: white;
  134. }
  135. .btn-success:active {
  136. background-color: #4f9a3a;
  137. border-color: #4f9a3a;
  138. }
  139. .btn-warn {
  140. background-color: #ec8131;
  141. border-color: #ec8131;
  142. color: white;
  143. }
  144. .btn-warn:active {
  145. background-color: #d6732c;
  146. border-color: #d6732c;
  147. }
  148. .btn-danger {
  149. background-color: #de1c24;
  150. border-color: #de1c24;
  151. color: white;
  152. }
  153. .btn-danger:active {
  154. background-color: #c5181f;
  155. border-color: #c5181f;
  156. }
  157. /* ===== 状态指示器类 ===== */
  158. .status-primary {
  159. color: #fa550f;
  160. background-color: rgba(250, 85, 15, 0.1);
  161. }
  162. .status-success {
  163. color: #5fb446;
  164. background-color: rgba(95, 180, 70, 0.1);
  165. }
  166. .status-warn {
  167. color: #ec8131;
  168. background-color: rgba(236, 129, 49, 0.1);
  169. }
  170. .status-danger {
  171. color: #de1c24;
  172. background-color: rgba(222, 28, 36, 0.1);
  173. }
  174. /* ===== 图标颜色类 ===== */
  175. .icon-primary {
  176. color: #fa550f;
  177. }
  178. .icon-success {
  179. color: #5fb446;
  180. }
  181. .icon-warn {
  182. color: #ec8131;
  183. }
  184. .icon-danger {
  185. color: #de1c24;
  186. }
  187. .icon-title {
  188. color: #282828;
  189. }
  190. .icon-normal {
  191. color: #5d5d5d;
  192. }
  193. .icon-small {
  194. color: #9b9b9b;
  195. }
  196. /* ===== 阴影效果类 ===== */
  197. .shadow-primary {
  198. box-shadow: 0 2rpx 8rpx rgba(250, 85, 15, 0.15);
  199. }
  200. .shadow-success {
  201. box-shadow: 0 2rpx 8rpx rgba(95, 180, 70, 0.15);
  202. }
  203. .shadow-warn {
  204. box-shadow: 0 2rpx 8rpx rgba(236, 129, 49, 0.15);
  205. }
  206. .shadow-danger {
  207. box-shadow: 0 2rpx 8rpx rgba(222, 28, 36, 0.15);
  208. }
  209. /* ===== 渐变背景类 ===== */
  210. .gradient-primary {
  211. background: linear-gradient(135deg, #fa4126, #fa550f);
  212. }
  213. .gradient-success {
  214. background: linear-gradient(135deg, #5fb446, #4f9a3a);
  215. }
  216. .gradient-warn {
  217. background: linear-gradient(135deg, #ec8131, #d6732c);
  218. }
  219. .gradient-danger {
  220. background: linear-gradient(135deg, #de1c24, #c5181f);
  221. }
  222. /* ===== 透明度工具类 ===== */
  223. .opacity-10 {
  224. opacity: 0.1;
  225. }
  226. .opacity-20 {
  227. opacity: 0.2;
  228. }
  229. .opacity-30 {
  230. opacity: 0.3;
  231. }
  232. .opacity-40 {
  233. opacity: 0.4;
  234. }
  235. .opacity-50 {
  236. opacity: 0.5;
  237. }
  238. .opacity-60 {
  239. opacity: 0.6;
  240. }
  241. .opacity-70 {
  242. opacity: 0.7;
  243. }
  244. .opacity-80 {
  245. opacity: 0.8;
  246. }
  247. .opacity-90 {
  248. opacity: 0.9;
  249. }
  250. /* ===== 字体大小系统 ===== */
  251. /* 从20rpx到82rpx的完整字体大小类名 */
  252. .fs-20 { font-size: 20rpx; }
  253. .fs-22 { font-size: 22rpx; }
  254. .fs-24 { font-size: 24rpx; }
  255. .fs-26 { font-size: 26rpx; }
  256. .fs-28 { font-size: 28rpx; }
  257. .fs-30 { font-size: 30rpx; }
  258. .fs-32 { font-size: 32rpx; }
  259. .fs-34 { font-size: 34rpx; }
  260. .fs-36 { font-size: 36rpx; }
  261. .fs-38 { font-size: 38rpx; }
  262. .fs-40 { font-size: 40rpx; }
  263. .fs-42 { font-size: 42rpx; }
  264. .fs-44 { font-size: 44rpx; }
  265. .fs-46 { font-size: 46rpx; }
  266. .fs-48 { font-size: 48rpx; }
  267. .fs-50 { font-size: 50rpx; }
  268. .fs-52 { font-size: 52rpx; }
  269. .fs-54 { font-size: 54rpx; }
  270. .fs-56 { font-size: 56rpx; }
  271. .fs-58 { font-size: 58rpx; }
  272. .fs-60 { font-size: 60rpx; }
  273. .fs-62 { font-size: 62rpx; }
  274. .fs-64 { font-size: 64rpx; }
  275. .fs-66 { font-size: 66rpx; }
  276. .fs-68 { font-size: 68rpx; }
  277. .fs-70 { font-size: 70rpx; }
  278. .fs-72 { font-size: 72rpx; }
  279. .fs-74 { font-size: 74rpx; }
  280. .fs-76 { font-size: 76rpx; }
  281. .fs-78 { font-size: 78rpx; }
  282. .fs-80 { font-size: 80rpx; }
  283. .fs-82 { font-size: 82rpx; }
  284. /* ===== 字重系统 ===== */
  285. .fw-super { font-weight: 800; }
  286. .fw-main { font-weight: 600; }
  287. .fw-normal { font-weight: 400; }
  288. .fw-minor { font-weight: 300; }
  289. /* ===== 文本处理工具类 ===== */
  290. /* 行高工具类 */
  291. .lh-1 { line-height: 1; }
  292. .lh-1-2 { line-height: 1.2; }
  293. .lh-1-4 { line-height: 1.4; }
  294. .lh-1-6 { line-height: 1.6; }
  295. .lh-1-8 { line-height: 1.8; }
  296. /* 多行文本截断工具类 */
  297. .line-clamp-1 {
  298. overflow: hidden;
  299. display: -webkit-box;
  300. -webkit-box-orient: vertical;
  301. -webkit-line-clamp: 1;
  302. }
  303. .line-clamp-2 {
  304. overflow: hidden;
  305. display: -webkit-box;
  306. -webkit-box-orient: vertical;
  307. -webkit-line-clamp: 2;
  308. }
  309. .line-clamp-3 {
  310. overflow: hidden;
  311. display: -webkit-box;
  312. -webkit-box-orient: vertical;
  313. -webkit-line-clamp: 3;
  314. }
  315. /* ===== Flex布局工具类 ===== */
  316. /* 对齐类 */
  317. .justify-start { justify-content: flex-start; }
  318. .justify-center { justify-content: center; }
  319. .justify-end { justify-content: flex-end; }
  320. .justify-between { justify-content: space-between; }
  321. .justify-around { justify-content: space-around; }
  322. /* 分布类 */
  323. .items-start { align-items: flex-start; }
  324. .items-center { align-items: center; }
  325. .items-end { align-items: flex-end; }
  326. .items-stretch { align-items: stretch; }
  327. /* 方向类 */
  328. .flex-row { flex-direction: row; }
  329. .flex-col { flex-direction: column; }
  330. .flex-row-reverse { flex-direction: row-reverse; }
  331. .flex-col-reverse { flex-direction: column-reverse; }
  332. /* 换行类 */
  333. .flex-wrap { flex-wrap: wrap; }
  334. .flex-nowrap { flex-wrap: nowrap; }
  335. .flex-wrap-reverse { flex-wrap: wrap-reverse; }
  336. /* ===== 间距系统 ===== */
  337. /* 基于rpx的padding工具类 */
  338. .p-4 { padding: 4rpx; }
  339. .p-8 { padding: 8rpx; }
  340. .p-12 { padding: 12rpx; }
  341. .p-16 { padding: 16rpx; }
  342. .p-20 { padding: 20rpx; }
  343. .p-24 { padding: 24rpx; }
  344. .p-28 { padding: 28rpx; }
  345. .p-32 { padding: 32rpx; }
  346. /* 方向特定padding */
  347. .pt-4 { padding-top: 4rpx; }
  348. .pr-4 { padding-right: 4rpx; }
  349. .pb-4 { padding-bottom: 4rpx; }
  350. .pl-4 { padding-left: 4rpx; }
  351. .pt-8 { padding-top: 8rpx; }
  352. .pr-8 { padding-right: 8rpx; }
  353. .pb-8 { padding-bottom: 8rpx; }
  354. .pl-8 { padding-left: 8rpx; }
  355. .pt-12 { padding-top: 12rpx; }
  356. .pr-12 { padding-right: 12rpx; }
  357. .pb-12 { padding-bottom: 12rpx; }
  358. .pl-12 { padding-left: 12rpx; }
  359. .pt-16 { padding-top: 16rpx; }
  360. .pr-16 { padding-right: 16rpx; }
  361. .pb-16 { padding-bottom: 16rpx; }
  362. .pl-16 { padding-left: 16rpx; }
  363. .pt-20 { padding-top: 20rpx; }
  364. .pr-20 { padding-right: 20rpx; }
  365. .pb-20 { padding-bottom: 20rpx; }
  366. .pl-20 { padding-left: 20rpx; }
  367. .pt-24 { padding-top: 24rpx; }
  368. .pr-24 { padding-right: 24rpx; }
  369. .pb-24 { padding-bottom: 24rpx; }
  370. .pl-24 { padding-left: 24rpx; }
  371. .pt-28 { padding-top: 28rpx; }
  372. .pr-28 { padding-right: 28rpx; }
  373. .pb-28 { padding-bottom: 28rpx; }
  374. .pl-28 { padding-left: 28rpx; }
  375. .pt-32 { padding-top: 32rpx; }
  376. .pr-32 { padding-right: 32rpx; }
  377. .pb-32 { padding-bottom: 32rpx; }
  378. .pl-32 { padding-left: 32rpx; }
  379. /* 基于rpx的margin工具类 */
  380. .m-4 { margin: 4rpx; }
  381. .m-8 { margin: 8rpx; }
  382. .m-12 { margin: 12rpx; }
  383. .m-16 { margin: 16rpx; }
  384. .m-20 { margin: 20rpx; }
  385. .m-24 { margin: 24rpx; }
  386. .m-28 { margin: 28rpx; }
  387. .m-32 { margin: 32rpx; }
  388. /* 方向特定margin */
  389. .mt-4 { margin-top: 4rpx; }
  390. .mr-4 { margin-right: 4rpx; }
  391. .mb-4 { margin-bottom: 4rpx; }
  392. .ml-4 { margin-left: 4rpx; }
  393. .mt-8 { margin-top: 8rpx; }
  394. .mr-8 { margin-right: 8rpx; }
  395. .mb-8 { margin-bottom: 8rpx; }
  396. .ml-8 { margin-left: 8rpx; }
  397. .mt-12 { margin-top: 12rpx; }
  398. .mr-12 { margin-right: 12rpx; }
  399. .mb-12 { margin-bottom: 12rpx; }
  400. .ml-12 { margin-left: 12rpx; }
  401. .mt-16 { margin-top: 16rpx; }
  402. .mr-16 { margin-right: 16rpx; }
  403. .mb-16 { margin-bottom: 16rpx; }
  404. .ml-16 { margin-left: 16rpx; }
  405. .mt-20 { margin-top: 20rpx; }
  406. .mr-20 { margin-right: 20rpx; }
  407. .mb-20 { margin-bottom: 20rpx; }
  408. .ml-20 { margin-left: 20rpx; }
  409. .mt-24 { margin-top: 24rpx; }
  410. .mr-24 { margin-right: 24rpx; }
  411. .mb-24 { margin-bottom: 24rpx; }
  412. .ml-24 { margin-left: 24rpx; }
  413. .mt-28 { margin-top: 28rpx; }
  414. .mr-28 { margin-right: 28rpx; }
  415. .mb-28 { margin-bottom: 28rpx; }
  416. .ml-28 { margin-left: 28rpx; }
  417. .mt-32 { margin-top: 32rpx; }
  418. .mr-32 { margin-right: 32rpx; }
  419. .mb-32 { margin-bottom: 32rpx; }
  420. .ml-32 { margin-left: 32rpx; }
  421. /* ===== 边框处理 ===== */
  422. /* 1px边框处理方案 */
  423. .border-1 {
  424. border-width: 1rpx;
  425. border-style: solid;
  426. }
  427. /* 边框颜色和样式工具类 */
  428. .border-solid { border-style: solid; }
  429. .border-dashed { border-style: dashed; }
  430. .border-dotted { border-style: dotted; }
  431. /* ===== 兼容性处理 ===== */
  432. /* 确保与现有Tailwind CSS样式兼容 */
  433. /* 这些类名不会与Tailwind CSS的默认类名冲突 */
  434. /* 响应式设计支持 */
  435. @media (max-width: 375px) {
  436. .text-title {
  437. font-size: 16rpx;
  438. }
  439. .text-normal {
  440. font-size: 14rpx;
  441. }
  442. .text-small {
  443. font-size: 12rpx;
  444. }
  445. }
  446. @media (min-width: 768px) {
  447. .text-title {
  448. font-size: 18rpx;
  449. }
  450. .text-normal {
  451. font-size: 16rpx;
  452. }
  453. .text-small {
  454. font-size: 14rpx;
  455. }
  456. }