与牧同行-小程序用户端
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.

453 lines
6.5 KiB

  1. .forum-page {
  2. min-height: 100vh;
  3. background-color: #f8f8f8;
  4. position: relative;
  5. }
  6. /* 帖子详情容器 */
  7. .post-detail-container {
  8. height: 100vh;
  9. box-sizing: border-box;
  10. }
  11. /* 帖子主体 */
  12. .post-main {
  13. background-color: white;
  14. padding: 40rpx 30rpx;
  15. margin-bottom: 20rpx;
  16. }
  17. .post-header {
  18. display: flex;
  19. justify-content: space-between;
  20. align-items: center;
  21. margin-bottom: 30rpx;
  22. }
  23. .user-info {
  24. display: flex;
  25. align-items: center;
  26. }
  27. .avatar {
  28. width: 80rpx;
  29. height: 80rpx;
  30. border-radius: 50%;
  31. margin-right: 20rpx;
  32. }
  33. .user-detail {
  34. display: flex;
  35. flex-direction: column;
  36. }
  37. .username {
  38. font-size: 32rpx;
  39. font-weight: bold;
  40. color: #333;
  41. margin-bottom: 8rpx;
  42. }
  43. .post-time {
  44. font-size: 26rpx;
  45. color: #999;
  46. }
  47. .post-status .solved-badge {
  48. background-color: #07c160;
  49. color: white;
  50. font-size: 24rpx;
  51. padding: 8rpx 16rpx;
  52. border-radius: 20rpx;
  53. }
  54. /* 帖子内容 */
  55. .post-content {
  56. margin-bottom: 30rpx;
  57. }
  58. .post-title {
  59. font-size: 36rpx;
  60. font-weight: bold;
  61. color: #333;
  62. margin-bottom: 24rpx;
  63. line-height: 1.4;
  64. }
  65. .post-desc {
  66. font-size: 30rpx;
  67. color: #555;
  68. line-height: 1.6;
  69. margin-bottom: 30rpx;
  70. }
  71. /* 帖子图片 */
  72. .post-images {
  73. margin: 30rpx 0;
  74. }
  75. .images-container {
  76. display: flex;
  77. flex-wrap: wrap;
  78. gap: 20rpx;
  79. }
  80. .post-image {
  81. width: 220rpx;
  82. height: 220rpx;
  83. border-radius: 12rpx;
  84. flex-shrink: 0;
  85. }
  86. /* 回复区域 */
  87. .replies-section {
  88. background-color: white;
  89. border-radius: 20rpx 20rpx 0 0;
  90. padding: 40rpx 30rpx;
  91. margin: 0;
  92. }
  93. .section-title {
  94. display: flex;
  95. justify-content: space-between;
  96. align-items: center;
  97. margin-bottom: 30rpx;
  98. padding-bottom: 20rpx;
  99. border-bottom: 2rpx solid #f0f0f0;
  100. }
  101. .title-text {
  102. font-size: 34rpx;
  103. font-weight: bold;
  104. color: #333;
  105. }
  106. .reply-count {
  107. font-size: 28rpx;
  108. color: #07c160;
  109. font-weight: bold;
  110. }
  111. /* 回复列表 */
  112. .reply-list {
  113. margin-top: 10rpx;
  114. }
  115. .reply-item {
  116. padding: 30rpx 0;
  117. border-bottom: 1rpx solid #f8f8f8;
  118. }
  119. .reply-item:last-child {
  120. border-bottom: none;
  121. }
  122. .reply-user {
  123. display: flex;
  124. align-items: center;
  125. margin-bottom: 20rpx;
  126. }
  127. .reply-avatar {
  128. width: 64rpx;
  129. height: 64rpx;
  130. border-radius: 50%;
  131. margin-right: 20rpx;
  132. }
  133. .reply-user-info {
  134. display: flex;
  135. flex-direction: column;
  136. }
  137. .reply-username {
  138. font-size: 28rpx;
  139. color: #333;
  140. margin-bottom: 6rpx;
  141. font-weight: 500;
  142. }
  143. .reply-time {
  144. font-size: 24rpx;
  145. color: #999;
  146. }
  147. .reply-content {
  148. font-size: 30rpx;
  149. color: #444;
  150. line-height: 1.5;
  151. margin-left: 84rpx;
  152. margin-bottom: 20rpx;
  153. }
  154. /* 回复操作 */
  155. .reply-actions {
  156. display: flex;
  157. align-items: center;
  158. margin-left: 84rpx;
  159. margin-top: 20rpx;
  160. gap: 40rpx;
  161. }
  162. .reply-action {
  163. display: flex;
  164. align-items: center;
  165. color: #999;
  166. font-size: 24rpx;
  167. padding: 4rpx 8rpx;
  168. }
  169. .reply-action-icon {
  170. width: 28rpx;
  171. height: 28rpx;
  172. margin-right: 8rpx;
  173. }
  174. .reply-action-text {
  175. font-size: 24rpx;
  176. color: #666;
  177. }
  178. /* 评论列表 */
  179. .comment-list {
  180. margin-left: 84rpx;
  181. margin-top: 20rpx;
  182. background-color: #fafafa;
  183. border-radius: 12rpx;
  184. padding: 20rpx;
  185. }
  186. .comment-item {
  187. padding: 20rpx 0;
  188. }
  189. .comment-item:not(:last-child) {
  190. border-bottom: 1rpx solid #eee;
  191. }
  192. .comment-user {
  193. display: flex;
  194. align-items: center;
  195. margin-bottom: 12rpx;
  196. }
  197. .comment-avatar {
  198. width: 48rpx;
  199. height: 48rpx;
  200. border-radius: 50%;
  201. margin-right: 15rpx;
  202. }
  203. .comment-user-info {
  204. display: flex;
  205. flex-direction: column;
  206. }
  207. .comment-username {
  208. font-size: 26rpx;
  209. color: #666;
  210. margin-bottom: 4rpx;
  211. }
  212. .comment-time {
  213. font-size: 22rpx;
  214. color: #999;
  215. }
  216. .comment-content {
  217. font-size: 28rpx;
  218. color: #555;
  219. line-height: 1.4;
  220. margin-left: 63rpx;
  221. }
  222. .comment-to {
  223. color: #07c160;
  224. font-weight: 500;
  225. }
  226. /* 评论操作 */
  227. .comment-actions {
  228. margin-left: 63rpx;
  229. margin-top: 12rpx;
  230. }
  231. .comment-action {
  232. font-size: 24rpx;
  233. color: #999;
  234. padding: 4rpx 8rpx;
  235. }
  236. /* 空回复状态 */
  237. .empty-replies {
  238. display: flex;
  239. flex-direction: column;
  240. align-items: center;
  241. justify-content: center;
  242. padding: 100rpx 0;
  243. text-align: center;
  244. }
  245. .empty-reply-text {
  246. font-size: 28rpx;
  247. color: #999;
  248. }
  249. .bottom-placeholder {
  250. height: 160rpx;
  251. }
  252. /* 底部输入栏 */
  253. .bottom-input-container {
  254. position: fixed;
  255. bottom: 0;
  256. left: 0;
  257. right: 0;
  258. background-color: white;
  259. border-top: 1rpx solid #eee;
  260. padding: 20rpx 30rpx;
  261. box-shadow: 0 -4rpx 20rpx rgba(0, 0, 0, 0.05);
  262. z-index: 100;
  263. transition: transform 0.3s ease;
  264. }
  265. .input-wrapper {
  266. display: flex;
  267. align-items: center;
  268. gap: 20rpx;
  269. }
  270. .reply-input {
  271. flex: 1;
  272. background-color: #f8f8f8;
  273. border-radius: 40rpx;
  274. padding: 10rpx 30rpx;
  275. font-size: 30rpx;
  276. }
  277. .send-btn {
  278. background-color: #07c160;
  279. color: white;
  280. font-size: 28rpx;
  281. padding: 20rpx 40rpx;
  282. line-height: normal;
  283. border-radius: 40rpx;
  284. margin: 0;
  285. min-width: 120rpx;
  286. transition: background-color 0.3s;
  287. }
  288. .send-btn[disabled] {
  289. background-color: #cccccc;
  290. color: white;
  291. }
  292. /* 回复对象显示 */
  293. .reply-target {
  294. display: flex;
  295. justify-content: space-between;
  296. align-items: center;
  297. background-color: #f0f0f0;
  298. border-radius: 20rpx;
  299. padding: 16rpx 24rpx;
  300. margin-top: 15rpx;
  301. animation: slideIn 0.3s ease;
  302. }
  303. @keyframes slideIn {
  304. from {
  305. opacity: 0;
  306. transform: translateY(-10rpx);
  307. }
  308. to {
  309. opacity: 1;
  310. transform: translateY(0);
  311. }
  312. }
  313. .target-text {
  314. font-size: 26rpx;
  315. color: #07c160;
  316. font-weight: 500;
  317. }
  318. .clear-target {
  319. font-size: 36rpx;
  320. color: #999;
  321. padding: 0 10rpx 4rpx 20rpx;
  322. }
  323. /* 图片预览 */
  324. .preview-overlay {
  325. position: fixed;
  326. top: 0;
  327. left: 0;
  328. right: 0;
  329. bottom: 0;
  330. background-color: rgba(0, 0, 0, 0.95);
  331. display: flex;
  332. flex-direction: column;
  333. align-items: center;
  334. justify-content: center;
  335. z-index: 1000;
  336. }
  337. .preview-swiper {
  338. width: 100%;
  339. height: 70vh;
  340. }
  341. .preview-image {
  342. width: 100%;
  343. height: 100%;
  344. }
  345. .preview-indicator {
  346. position: absolute;
  347. bottom: 60rpx;
  348. color: white;
  349. font-size: 28rpx;
  350. background-color: rgba(0, 0, 0, 0.5);
  351. padding: 10rpx 24rpx;
  352. border-radius: 20rpx;
  353. }
  354. /* 加载提示 */
  355. .loading {
  356. display: flex;
  357. flex-direction: column;
  358. align-items: center;
  359. justify-content: center;
  360. padding: 60rpx 0;
  361. color: #999;
  362. font-size: 28rpx;
  363. }
  364. .loading-icon {
  365. width: 60rpx;
  366. height: 60rpx;
  367. margin-bottom: 20rpx;
  368. animation: rotate 1s linear infinite;
  369. }
  370. @keyframes rotate {
  371. 0% { transform: rotate(0deg); }
  372. 100% { transform: rotate(360deg); }
  373. }
  374. /* 移除按钮边框 */
  375. button::after {
  376. border: none;
  377. }
  378. /* 滚动条样式 */
  379. ::-webkit-scrollbar {
  380. width: 0;
  381. height: 0;
  382. color: transparent;
  383. }