.forum-page { min-height: 100vh; background-color: #f8f8f8; position: relative; } /* 帖子详情容器 */ .post-detail-container { height: 100vh; box-sizing: border-box; } /* 帖子主体 */ .post-main { background-color: white; padding: 40rpx 30rpx; margin-bottom: 20rpx; } .post-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 30rpx; } .user-info { display: flex; align-items: center; } .avatar { width: 80rpx; height: 80rpx; border-radius: 50%; margin-right: 20rpx; } .user-detail { display: flex; flex-direction: column; } .username { font-size: 32rpx; font-weight: bold; color: #333; margin-bottom: 8rpx; } .post-time { font-size: 26rpx; color: #999; } .post-status .solved-badge { background-color: #07c160; color: white; font-size: 24rpx; padding: 8rpx 16rpx; border-radius: 20rpx; } /* 帖子内容 */ .post-content { margin-bottom: 30rpx; } .post-title { font-size: 36rpx; font-weight: bold; color: #333; margin-bottom: 24rpx; line-height: 1.4; } .post-desc { font-size: 30rpx; color: #555; line-height: 1.6; margin-bottom: 30rpx; } /* 帖子图片 */ .post-images { margin: 30rpx 0; } .images-container { display: flex; flex-wrap: wrap; gap: 20rpx; } .post-image { width: 220rpx; height: 220rpx; border-radius: 12rpx; flex-shrink: 0; } /* 回复区域 */ .replies-section { background-color: white; border-radius: 20rpx 20rpx 0 0; padding: 40rpx 30rpx; margin: 0; } .section-title { display: flex; justify-content: space-between; align-items: center; margin-bottom: 30rpx; padding-bottom: 20rpx; border-bottom: 2rpx solid #f0f0f0; } .title-text { font-size: 34rpx; font-weight: bold; color: #333; } .reply-count { font-size: 28rpx; color: #07c160; font-weight: bold; } /* 回复列表 */ .reply-list { margin-top: 10rpx; } .reply-item { padding: 30rpx 0; border-bottom: 1rpx solid #f8f8f8; } .reply-item:last-child { border-bottom: none; } .reply-user { display: flex; align-items: center; margin-bottom: 20rpx; } .reply-avatar { width: 64rpx; height: 64rpx; border-radius: 50%; margin-right: 20rpx; } .reply-user-info { display: flex; flex-direction: column; } .reply-username { font-size: 28rpx; color: #333; margin-bottom: 6rpx; font-weight: 500; } .reply-time { font-size: 24rpx; color: #999; } .reply-content { font-size: 30rpx; color: #444; line-height: 1.5; margin-left: 84rpx; margin-bottom: 20rpx; } /* 回复操作 */ .reply-actions { display: flex; align-items: center; margin-left: 84rpx; margin-top: 20rpx; gap: 40rpx; } .reply-action { display: flex; align-items: center; color: #999; font-size: 24rpx; padding: 4rpx 8rpx; } .reply-action-icon { width: 28rpx; height: 28rpx; margin-right: 8rpx; } .reply-action-text { font-size: 24rpx; color: #666; } /* 评论列表 */ .comment-list { margin-left: 84rpx; margin-top: 20rpx; background-color: #fafafa; border-radius: 12rpx; padding: 20rpx; } .comment-item { padding: 20rpx 0; } .comment-item:not(:last-child) { border-bottom: 1rpx solid #eee; } .comment-user { display: flex; align-items: center; margin-bottom: 12rpx; } .comment-avatar { width: 48rpx; height: 48rpx; border-radius: 50%; margin-right: 15rpx; } .comment-user-info { display: flex; flex-direction: column; } .comment-username { font-size: 26rpx; color: #666; margin-bottom: 4rpx; } .comment-time { font-size: 22rpx; color: #999; } .comment-content { font-size: 28rpx; color: #555; line-height: 1.4; margin-left: 63rpx; } .comment-to { color: #07c160; font-weight: 500; } /* 评论操作 */ .comment-actions { margin-left: 63rpx; margin-top: 12rpx; } .comment-action { font-size: 24rpx; color: #999; padding: 4rpx 8rpx; } /* 空回复状态 */ .empty-replies { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 100rpx 0; text-align: center; } .empty-reply-text { font-size: 28rpx; color: #999; } .bottom-placeholder { height: 160rpx; } /* 底部输入栏 */ .bottom-input-container { position: fixed; bottom: 0; left: 0; right: 0; background-color: white; border-top: 1rpx solid #eee; padding: 20rpx 30rpx; box-shadow: 0 -4rpx 20rpx rgba(0, 0, 0, 0.05); z-index: 100; transition: transform 0.3s ease; } .input-wrapper { display: flex; align-items: center; gap: 20rpx; } .reply-input { flex: 1; background-color: #f8f8f8; border-radius: 40rpx; padding: 10rpx 30rpx; font-size: 30rpx; } .send-btn { background-color: #07c160; color: white; font-size: 28rpx; padding: 20rpx 40rpx; line-height: normal; border-radius: 40rpx; margin: 0; min-width: 120rpx; transition: background-color 0.3s; } .send-btn[disabled] { background-color: #cccccc; color: white; } /* 回复对象显示 */ .reply-target { display: flex; justify-content: space-between; align-items: center; background-color: #f0f0f0; border-radius: 20rpx; padding: 16rpx 24rpx; margin-top: 15rpx; animation: slideIn 0.3s ease; } @keyframes slideIn { from { opacity: 0; transform: translateY(-10rpx); } to { opacity: 1; transform: translateY(0); } } .target-text { font-size: 26rpx; color: #07c160; font-weight: 500; } .clear-target { font-size: 36rpx; color: #999; padding: 0 10rpx 4rpx 20rpx; } /* 图片预览 */ .preview-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.95); display: flex; flex-direction: column; align-items: center; justify-content: center; z-index: 1000; } .preview-swiper { width: 100%; height: 70vh; } .preview-image { width: 100%; height: 100%; } .preview-indicator { position: absolute; bottom: 60rpx; color: white; font-size: 28rpx; background-color: rgba(0, 0, 0, 0.5); padding: 10rpx 24rpx; border-radius: 20rpx; } /* 加载提示 */ .loading { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 60rpx 0; color: #999; font-size: 28rpx; } .loading-icon { width: 60rpx; height: 60rpx; margin-bottom: 20rpx; animation: rotate 1s linear infinite; } @keyframes rotate { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* 移除按钮边框 */ button::after { border: none; } /* 滚动条样式 */ ::-webkit-scrollbar { width: 0; height: 0; color: transparent; }