blob: 40d787e362c5d24ac5ff66fd1b962fe7c30acd70 [file] [log] [blame]
ym9234558e9f2025-06-09 20:16:16 +08001.post-container {
2 padding: 2rem;
3 background: #f8f9fa;
4 min-height: 100vh;
5 max-width: 900px;
6 margin: auto;
7}
8
9.post-form-card {
10 background: white;
11 border-radius: 12px;
12 padding: 2rem;
13 box-shadow: 0 8px 20px rgba(255, 102, 0, 0.15);
14 margin-bottom: 2rem;
15 animation: fadeInUp 0.5s ease-in-out;
16}
17
18.post-form-title {
19 font-size: 1.5rem;
20 font-weight: bold;
21 margin-bottom: 1rem;
22 color: #ff6600;
23}
24
25.post-input,
26.post-textarea {
27 width: 100%;
28 padding: 12px 14px;
29 border-radius: 8px;
30 border: 1px solid #ffbf80;
31 margin-bottom: 1rem;
32 font-size: 1rem;
33 transition: border-color 0.3s ease;
34}
35
36.post-input:focus,
37.post-textarea:focus {
38 outline: none;
39 border-color: #ff6600;
40 box-shadow: 0 0 8px rgba(255, 102, 0, 0.5);
41}
42
43.post-textarea {
44 height: 100px;
45 resize: vertical;
46}
47
48.post-file {
49 margin-bottom: 1rem;
50}
51
52.post-button {
53 padding: 10px 20px;
54 border: none;
55 border-radius: 8px;
56 font-size: 1rem;
57 font-weight: 600;
58 margin-right: 0.5rem;
59 transition: all 0.3s ease;
60 cursor: pointer;
61 box-shadow: 0 4px 6px rgba(255, 102, 0, 0.3);
62}
63
64/* 浅橙色实底按钮 */
65.primary {
66 background: linear-gradient(45deg, #FFB366, #FFC299);
67 color: white;
68 box-shadow: 0 6px 10px rgba(255, 179, 102, 0.5);
69}
70
71.primary:hover {
72 background: linear-gradient(45deg, #FFAA33, #FFBF66);
73 box-shadow: 0 8px 14px rgba(255, 170, 51, 0.7);
74}
75
76/* 橙色边框按钮 */
77.primary-outline {
78 background: transparent;
79 border: 2px solid #ff6600;
80 color: #ff6600;
81 box-shadow: none;
82}
83
84.primary-outline:hover {
85 background: #ff6600;
86 color: white;
87 box-shadow: 0 6px 10px rgba(255, 102, 0, 0.4);
88}
89
90.post-list {
91 display: flex;
92 flex-direction: column;
93 gap: 1.5rem;
94}
95
96.post-card {
97 background: white;
98 border-radius: 12px;
99 padding: 1.5rem;
100 box-shadow: 0 4px 15px rgba(255, 102, 0, 0.12);
101 animation: fadeInUp 0.3s ease-out;
102 transition: box-shadow 0.3s ease;
103}
104
105.post-card:hover {
106 box-shadow: 0 8px 30px rgba(255, 102, 0, 0.25);
107}
108
109.post-header {
110 display: flex;
111 justify-content: space-between;
112 align-items: flex-start;
113 gap: 1rem;
114}
115
116.post-info {
117 flex: 1;
118}
119
120.post-title {
121 font-size: 1.5rem;
122 font-weight: 700;
123 color: #cc5200;
124 margin-bottom: 0.75rem;
125 padding-left: 12px;
126 border-left: 4px solid #ff6600;
127 transition: color 0.3s ease;
128}
129
130.post-title:hover {
131 color: #ff6600;
132}
133
134.post-content {
135 color: #444;
136 margin-bottom: 0.75rem;
137}
138
139.post-image {
140 width: 160px;
141 height: 120px;
142 object-fit: cover;
143 border-radius: 6px;
144 box-shadow: 0 4px 8px rgba(255, 102, 0, 0.3);
145 flex-shrink: 0;
146 cursor: pointer;
147 transition: transform 0.3s ease;
148}
149
150.post-image:hover {
151 transform: scale(1.05);
152}
153
154.post-meta {
155 font-size: 0.9rem;
156 color: #777;
157 margin-top: 0.5rem;
158}
159
160.post-actions-inline {
161 margin-top: 0.75rem;
162 display: flex;
163 align-items: center;
164 gap: 1rem;
165 font-size: 0.95rem;
166}
167
168.post-link {
169 cursor: pointer;
170 text-decoration: underline;
171 transition: color 0.3s ease;
172}
173
174.post-link.like {
175 color: #ff6600;
176}
177
178.post-link.like:hover {
179 color: #ff8533;
180}
181
182.post-link.unlike {
183 color: #cc3300;
184}
185
186.post-link.unlike:hover {
187 color: #ff3300;
188}
189
190.post-comment {
191 margin-top: 1rem;
192 border-top: 1px solid #ffe6cc;
193 padding-top: 1rem;
194}
195
196@keyframes fadeInUp {
197 from {
198 opacity: 0;
199 transform: translateY(20px);
200 }
201
202 to {
203 opacity: 1;
204 transform: translateY(0);
205 }
206}
207
208/* 图片模态框 */
209.image-modal {
210 position: fixed;
211 top: 0;
212 left: 0;
213 width: 100vw;
214 height: 100vh;
215 background: rgba(0, 0, 0, 0.75);
216 display: flex;
217 justify-content: center;
218 align-items: center;
219 z-index: 9999;
220}
221
222.image-modal-content {
223 position: relative;
224 max-width: 90%;
225 max-height: 90%;
226}
227
228.image-modal-img {
229 width: 100%;
230 max-height: 80vh;
231 border-radius: 12px;
232 box-shadow: 0 0 20px rgba(255, 102, 0, 0.8);
233}
234
235.image-modal-close {
236 position: absolute;
237 top: -20px;
238 right: -20px;
239 background: white;
240 border: none;
241 border-radius: 50%;
242 width: 36px;
243 height: 36px;
244 font-size: 24px;
245 line-height: 36px;
246 text-align: center;
247 cursor: pointer;
248 box-shadow: 0 2px 10px rgba(255, 102, 0, 0.7);
249}
250
251.action-group {
252 display: flex;
253 gap: 0.5rem;
254 margin-bottom: 0.5rem;
255}
256
257.post-empty-state {
258 text-align: center;
259 padding: 2rem;
260 background: white;
261 border-radius: 12px;
262 box-shadow: 0 4px 15px rgba(255, 102, 0, 0.12);
263}
264
265.post-empty-message {
266 font-size: 1.2rem;
267 color: #cc5200;
268 margin-bottom: 1rem;
269}
270
271/* RequestBoard组件样式保持一致 */
272.request-board-container {
273 background: white;
274 border-radius: 12px;
275 padding: 1.5rem;
276 box-shadow: 0 4px 15px rgba(255, 102, 0, 0.12);
277 margin-top: 1rem;
278}
279
280.request-board-section {
281 margin-bottom: 1.5rem;
282}
283
284.request-board-form {
285 display: grid;
286 grid-template-columns: repeat(2, 1fr);
287 gap: 1rem;
288 margin-bottom: 1.5rem;
289}
290
291.request-board-input {
292 padding: 10px 12px;
293 border-radius: 8px;
294 border: 1px solid #ffbf80;
295 font-size: 0.95rem;
296}
297
298.request-board-input:focus {
299 border-color: #ff6600;
300 box-shadow: 0 0 8px rgba(255, 102, 0, 0.5);
301 outline: none;
302}
303
304.request-board-textarea {
305 grid-column: span 2;
306 padding: 10px 12px;
307 border-radius: 8px;
308 border: 1px solid #ffbf80;
309 resize: vertical;
310 min-height: 100px;
311}
312
313.request-board-textarea:focus {
314 border-color: #ff6600;
315 box-shadow: 0 0 8px rgba(255, 102, 0, 0.5);
316 outline: none;
317}
318
319.request-board-file {
320 grid-column: span 2;
321}
322
323.request-board-list {
324 display: grid;
325 grid-template-columns: 1fr;
326 gap: 1rem;
327}
328
329.request-board-item {
330 background: white;
331 border-radius: 10px;
332 padding: 1.25rem;
333 box-shadow: 0 2px 8px rgba(255, 102, 0, 0.08);
334}
335
336.request-board-item-title {
337 font-size: 1.3rem;
338 font-weight: 700;
339 margin-bottom: 0.75rem;
340 color: hsl(24, 67%, 55%);
341 border-bottom: 2px solid #ffe0b3;
342 padding-bottom: 0.5rem;
343}
344
345.request-board-item-content {
346 color: #555;
347 margin-bottom: 1rem;
348}
349
350.request-board-item-meta {
351 display: flex;
352 gap: 1rem;
353 margin-bottom: 1rem;
354 color: #777;
355 font-size: 0.9rem;
356}
357
358.request-board-item-image {
359 max-width: 200px;
360 max-height: 150px;
361 border-radius: 6px;
362 margin-bottom: 1rem;
363}
364
365.request-board-item-actions {
366 display: flex;
367 gap: 0.75rem;
368 flex-wrap: wrap;
369}
370
371.request-board-small-input {
372 padding: 8px 10px;
373 border-radius: 6px;
374 border: 1px solid #ffbf80;
375 flex: 1;
376}
377
378.request-board-small-input:focus {
379 border-color: #ff6600;
380 box-shadow: 0 0 8px rgba(255, 102, 0, 0.5);
381 outline: none;
382}
383
384/* 新增的用户信息显示样式 */
385.post-form-user-info {
386 display: flex;
387 align-items: center;
388 margin-bottom: 20px;
389 padding: 10px;
390 background-color: #f8f9fa;
391 border-radius: 8px;
392 border: 1px solid #e9ecef;
393}
394
395.post-form-user-avatar {
396 width: 50px;
397 height: 50px;
398 border-radius: 50%;
399 object-fit: cover;
400 margin-right: 15px;
401 border: 2px solid #40a9ff;
402}
403
404.post-form-user-avatar-placeholder {
405 width: 50px;
406 height: 50px;
407 border-radius: 50%;
408 background-color: #e9ecef;
409 margin-right: 15px;
410 display: flex;
411 align-items: center;
412 justify-content: center;
413 border: 2px solid #40a9ff;
414}
415
416.avatar-initial {
417 font-size: 24px;
418 font-weight: bold;
419 color: #495057;
420}
421
422.post-form-username {
423 font-weight: 600;
424 font-size: 18px;
425 color: #212529;
426}
427
428.post-form-user-label {
429 margin-left: auto;
430 padding: 5px 10px;
431 background-color: #e6f7ff;
432 color: #1890ff;
433 border-radius: 4px;
434 font-size: 14px;
435}
436
437/* 帖子作者信息样式 */
438.post-author-info {
439 display: flex;
440 align-items: center;
441 padding: 10px 15px;
442 border-bottom: 1px solid #f0f0f0;
443 margin-bottom: 15px;
444}
445
446.post-author-avatar {
447 width: 40px;
448 height: 40px;
449 border-radius: 50%;
450 object-fit: cover;
451 margin-right: 12px;
452 border: 1px solid #e8e8e8;
453}
454
455.post-author-avatar-placeholder {
456 width: 40px;
457 height: 40px;
458 border-radius: 50%;
459 background-color: #f5f5f5;
460 margin-right: 12px;
461 display: flex;
462 align-items: center;
463 justify-content: center;
464 border: 1px solid #e8e8e8;
465}
466
467.post-author-details {
468 display: flex;
469 flex-direction: column;
470}
471
472.post-author-name {
473 font-weight: 600;
474 font-size: 16px;
475 margin-bottom: 3px;
476 color: #333;
477}
478
479.post-meta {
480 font-size: 12px;
481 color: #888;
482 margin: 2px 0;
483}