tab1.page.scss 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. /* 动态头部样式 */
  2. .dynamic-header {
  3. --background: linear-gradient(to right, var(--ion-color-primary), var(--ion-color-secondary));
  4. --color: white;
  5. ion-toolbar {
  6. --background: transparent;
  7. }
  8. .greeting-title {
  9. padding-inline: 0;
  10. h1 {
  11. font-size: 1.2rem;
  12. font-weight: 600;
  13. margin: 0;
  14. }
  15. ion-note {
  16. font-size: 0.7rem;
  17. opacity: 0.8;
  18. }
  19. }
  20. .weather-bar {
  21. --background: rgba(255, 255, 255, 0.1);
  22. backdrop-filter: blur(10px);
  23. ion-segment {
  24. --background: transparent;
  25. ion-segment-button {
  26. --color: rgba(255, 255, 255, 0.7);
  27. --color-checked: white;
  28. --indicator-color: transparent;
  29. ion-icon {
  30. font-size: 1.2rem;
  31. }
  32. }
  33. }
  34. }
  35. }
  36. /* 推荐计划滑块 */
  37. .recommendation-slider {
  38. margin: 16px 0;
  39. swiper-slide {
  40. transition: transform 0.3s ease;
  41. &.highlight {
  42. transform: scale(1.05);
  43. }
  44. }
  45. .program-card {
  46. border-radius: 16px;
  47. overflow: hidden;
  48. position: relative;
  49. height: 280px;
  50. img {
  51. object-fit: cover;
  52. height: 120px;
  53. width: 100%;
  54. }
  55. .program-badge {
  56. position: absolute;
  57. top: 10px;
  58. right: 10px;
  59. background: var(--ion-color-danger);
  60. color: white;
  61. padding: 4px 8px;
  62. border-radius: 12px;
  63. font-size: 12px;
  64. z-index: 2;
  65. }
  66. ion-progress-bar {
  67. margin: 8px 0;
  68. }
  69. }
  70. }
  71. /* 健康数据看板 */
  72. .dashboard-card {
  73. border-radius: 12px;
  74. box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
  75. ion-card-header {
  76. padding-bottom: 0;
  77. }
  78. }
  79. /* 快捷操作按钮 */
  80. .quick-actions {
  81. padding: 0;
  82. margin: 20px 0;
  83. ion-button {
  84. --border-width: 1px;
  85. --padding-top: 12px;
  86. --padding-bottom: 12px;
  87. height: 100%;
  88. ion-icon {
  89. font-size: 1.2rem;
  90. }
  91. }
  92. }
  93. /* 社区动态 */
  94. .community-feed {
  95. background: transparent;
  96. ion-item {
  97. --border-radius: 12px;
  98. --padding-start: 8px;
  99. margin-bottom: 8px;
  100. --background: var(--ion-item-background, var(--ion-background-color, #fff));
  101. box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
  102. ion-avatar {
  103. width: 40px;
  104. height: 40px;
  105. }
  106. }
  107. }
  108. /* 底部导航 */
  109. ion-footer {
  110. ion-toolbar {
  111. --background: var(--ion-color-light);
  112. --padding-top: 4px;
  113. --padding-bottom: 4px;
  114. .coach-avatar {
  115. position: relative;
  116. width: 36px;
  117. height: 36px;
  118. img {
  119. border-radius: 50%;
  120. width: 100%;
  121. height: 100%;
  122. object-fit: cover;
  123. }
  124. ion-badge {
  125. position: absolute;
  126. top: -2px;
  127. right: -2px;
  128. width: 8px;
  129. height: 8px;
  130. border-radius: 50%;
  131. &.pulse {
  132. animation: pulse 1.5s infinite;
  133. }
  134. }
  135. }
  136. ion-title {
  137. font-size: 0.9rem;
  138. font-weight: 500;
  139. }
  140. }
  141. }
  142. @keyframes pulse {
  143. 0% { transform: scale(0.95); opacity: 1; }
  144. 50% { transform: scale(1.1); opacity: 0.7; }
  145. 100% { transform: scale(0.95); opacity: 1; }
  146. }