与牧同行-兽医端小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

277 lines
5.8 KiB

  1. .page-wrapper {
  2. min-height: 100vh;
  3. background: linear-gradient(135deg, #f5f7fa 0%, #e9edf5 100%);
  4. padding: 30rpx;
  5. box-sizing: border-box;
  6. }
  7. /* 卡片样式 */
  8. .form-card {
  9. background: rgba(255, 255, 255, 0.95);
  10. backdrop-filter: blur(10px);
  11. border-radius: 32rpx;
  12. margin-bottom: 30rpx;
  13. box-shadow: 0 20rpx 40rpx rgba(0, 0, 0, 0.05), 0 4rpx 12rpx rgba(0, 0, 0, 0.03);
  14. overflow: hidden;
  15. border: 2rpx solid rgba(255, 255, 255, 0.8);
  16. transition: all 0.3s ease;
  17. }
  18. /* 卡片头部 */
  19. .card-header {
  20. padding: 28rpx 32rpx;
  21. background: linear-gradient(90deg, #ffffff, #fafcff);
  22. border-bottom: 2rpx solid rgba(7, 193, 96, 0.1);
  23. display: flex;
  24. align-items: center;
  25. gap: 12rpx;
  26. margin-bottom: 20rpx;
  27. }
  28. .header-icon {
  29. font-size: 36rpx;
  30. line-height: 1;
  31. filter: drop-shadow(0 4rpx 6rpx rgba(7, 193, 96, 0.2));
  32. }
  33. .header-title {
  34. font-size: 32rpx;
  35. font-weight: 600;
  36. color: #1a2b3c;
  37. letter-spacing: 1rpx;
  38. }
  39. /* 徽章样式 */
  40. .required-badge {
  41. background: linear-gradient(135deg, #ff6b6b, #ff4757);
  42. color: white;
  43. font-size: 22rpx;
  44. padding: 4rpx 16rpx;
  45. border-radius: 30rpx;
  46. margin-left: 16rpx;
  47. box-shadow: 0 4rpx 10rpx rgba(255, 71, 87, 0.3);
  48. }
  49. .optional-badge {
  50. background: linear-gradient(135deg, #a0a0a0, #808080);
  51. color: white;
  52. font-size: 22rpx;
  53. padding: 4rpx 16rpx;
  54. border-radius: 30rpx;
  55. margin-left: 16rpx;
  56. opacity: 0.8;
  57. }
  58. /* 卡片内容 */
  59. .card-content {
  60. padding: 0 32rpx 32rpx 32rpx;
  61. }
  62. .card-content.no-padding {
  63. padding: 0;
  64. }
  65. /* 输入框包装器 */
  66. .input-wrapper,
  67. .textarea-wrapper {
  68. background: #f8fafd;
  69. border-radius: 24rpx;
  70. margin: 0 32rpx 32rpx 32rpx;
  71. border: 2rpx solid transparent;
  72. transition: all 0.3s ease;
  73. box-shadow: inset 0 2rpx 6rpx rgba(0, 0, 0, 0.02);
  74. overflow: hidden;
  75. }
  76. .input-wrapper:focus-within,
  77. .textarea-wrapper:focus-within {
  78. border-color: #07c160;
  79. background: #ffffff;
  80. box-shadow: 0 0 0 6rpx rgba(7, 193, 96, 0.1), inset 0 2rpx 6rpx rgba(0, 0, 0, 0.02);
  81. }
  82. /* 输入框样式 */
  83. input, textarea {
  84. width: 100%;
  85. font-size: 30rpx;
  86. color: #1e293b;
  87. padding: 24rpx 28rpx;
  88. background: transparent;
  89. border: none;
  90. outline: none;
  91. }
  92. textarea {
  93. min-height: 120rpx;
  94. line-height: 1.6;
  95. }
  96. .placeholder-style {
  97. color: #aab8c5;
  98. font-size: 28rpx;
  99. }
  100. /* 分类选择器 */
  101. .picker-trigger {
  102. background: #f8fafd;
  103. padding: 24rpx 28rpx;
  104. border-radius: 24rpx;
  105. font-size: 30rpx;
  106. color: #aab8c5;
  107. display: flex;
  108. justify-content: space-between;
  109. align-items: center;
  110. border: 2rpx solid transparent;
  111. transition: all 0.3s ease;
  112. box-shadow: inset 0 2rpx 6rpx rgba(0, 0, 0, 0.02);
  113. }
  114. .picker-trigger.selected {
  115. color: #1e293b;
  116. border-color: #07c160;
  117. background: #ffffff;
  118. }
  119. .picker-arrow {
  120. font-size: 28rpx;
  121. color: #94a3b8;
  122. transition: transform 0.3s ease;
  123. }
  124. /* 标签组 */
  125. .tag-group {
  126. display: flex;
  127. flex-wrap: wrap;
  128. gap: 20rpx;
  129. margin-bottom: 24rpx;
  130. }
  131. .tag-item {
  132. padding: 16rpx 36rpx;
  133. background: #f1f5f9;
  134. border-radius: 60rpx;
  135. font-size: 28rpx;
  136. color: #475569;
  137. border: 2rpx solid #e2e8f0;
  138. transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  139. box-shadow: 0 4rpx 10rpx rgba(0, 0, 0, 0.02);
  140. }
  141. .tag-item.active {
  142. background: linear-gradient(135deg, #07c160, #059669);
  143. color: white;
  144. border-color: #07c160;
  145. transform: translateY(-2rpx);
  146. box-shadow: 0 10rpx 20rpx rgba(7, 193, 96, 0.3);
  147. }
  148. /* 已选标签区域 */
  149. .selected-tags {
  150. margin-top: 24rpx;
  151. padding: 24rpx;
  152. background: linear-gradient(135deg, #f0fdf4, #dcfce7);
  153. border-radius: 24rpx;
  154. border: 2rpx solid rgba(7, 193, 96, 0.2);
  155. }
  156. .selected-label {
  157. font-size: 26rpx;
  158. color: #059669;
  159. font-weight: 500;
  160. display: block;
  161. margin-bottom: 16rpx;
  162. }
  163. .selected-tag-list {
  164. display: flex;
  165. flex-wrap: wrap;
  166. gap: 16rpx;
  167. margin-bottom: 16rpx;
  168. }
  169. .selected-tag-item {
  170. padding: 10rpx 28rpx;
  171. background: white;
  172. border-radius: 40rpx;
  173. font-size: 26rpx;
  174. color: #07c160;
  175. border: 2rpx solid #07c160;
  176. box-shadow: 0 4rpx 10rpx rgba(7, 193, 96, 0.1);
  177. }
  178. /* 标签字符串预览 */
  179. .tag-string-preview {
  180. font-size: 26rpx;
  181. color: #475569;
  182. padding: 16rpx;
  183. background: rgba(255, 255, 255, 0.7);
  184. border-radius: 16rpx;
  185. border: 2rpx dashed #07c160;
  186. }
  187. .tag-string-value {
  188. color: #07c160;
  189. font-weight: 500;
  190. word-break: break-all;
  191. }
  192. /* 内容区域特殊样式 */
  193. .content-card .content-textarea {
  194. min-height: 300rpx;
  195. }
  196. /* 提交区域 */
  197. .submit-area {
  198. margin-top: 60rpx;
  199. padding-bottom: 40rpx;
  200. text-align: center;
  201. }
  202. .submit-btn {
  203. width: 100%;
  204. height: 96rpx;
  205. background: linear-gradient(135deg, #07c160, #059669);
  206. border-radius: 60rpx;
  207. color: white;
  208. font-size: 36rpx;
  209. font-weight: 600;
  210. display: flex;
  211. align-items: center;
  212. justify-content: center;
  213. border: none;
  214. box-shadow: 0 20rpx 40rpx rgba(7, 193, 96, 0.3);
  215. transition: all 0.3s ease;
  216. }
  217. .submit-btn:active {
  218. transform: translateY(-4rpx);
  219. box-shadow: 0 30rpx 50rpx rgba(7, 193, 96, 0.4);
  220. }
  221. .submit-btn[disabled] {
  222. opacity: 0.7;
  223. transform: none;
  224. box-shadow: 0 10rpx 20rpx rgba(7, 193, 96, 0.2);
  225. }
  226. .tip-text {
  227. margin-top: 24rpx;
  228. font-size: 26rpx;
  229. color: #94a3b8;
  230. letter-spacing: 2rpx;
  231. }
  232. /* 动画效果 */
  233. @keyframes fadeIn {
  234. from {
  235. opacity: 0;
  236. transform: translateY(20rpx);
  237. }
  238. to {
  239. opacity: 1;
  240. transform: translateY(0);
  241. }
  242. }
  243. .form-card {
  244. animation: fadeIn 0.4s ease-out forwards;
  245. }