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

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