@cecee/document-flip-book 1.0.15 → 1.0.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,668 +1,674 @@
1
- .common-header-bar {
2
- display: flex;
3
- align-items: center;
4
- justify-content: space-between;
5
- height: 50px;
6
- padding: 0 16px;
7
- background: #fff;
8
- border-bottom: 1px solid #f0f0f0;
9
-
10
- .header-left,
11
- .header-right,
12
- .header-item {
1
+ .common-header-bar {
13
2
  display: flex;
14
3
  align-items: center;
15
- }
4
+ justify-content: space-between;
5
+ height: 50px;
6
+ padding: 0 16px;
7
+ background: #fff;
8
+ border-bottom: 1px solid #f0f0f0;
16
9
 
17
- .header-title {
18
- font-size: 18px;
19
- font-weight: bold;
20
- margin-right: 16px;
21
- }
10
+ .header-left,
11
+ .header-right,
12
+ .header-item {
13
+ display: flex;
14
+ align-items: center;
15
+ }
22
16
 
23
- .dfb-divider {
24
- width: 1px;
25
- height: 18px;
26
- background: #e8e8e8;
27
- margin: 0 8px;
17
+ .header-title {
18
+ font-size: 18px;
19
+ font-weight: bold;
20
+ margin-right: 16px;
21
+ }
22
+
23
+ .dfb-divider {
24
+ width: 1px;
25
+ height: 18px;
26
+ background: #e8e8e8;
27
+ margin: 0 8px;
28
+ }
28
29
  }
29
- }
30
-
31
- .book-page {
32
- width: 100%;
33
- height: 100%;
34
- background: #9F7D4E;
35
- padding: 22px;
36
- }
37
-
38
- .book-view {
39
- box-shadow: 0 0 18px rgba(0, 0, 0, 0.18);
40
- position: relative;
41
- overflow: hidden;
42
-
43
- // 页面内侧阴影(靠近中缝处的深度感)
44
- &::before {
45
- content: "";
46
- position: absolute;
47
- top: 0;
48
- bottom: 0;
49
- width: 20px;
50
- z-index: 5;
51
- pointer-events: none;
52
- transition: opacity 0.3s ease;
30
+
31
+ .book-page {
32
+ width: 100%;
33
+ height: 100%;
34
+ background: #9F7D4E;
35
+ padding: 22px;
53
36
  }
54
37
 
55
- // 偶数页(通常是右页)阴影在左侧
56
- &:nth-child(even)::before {
57
- left: 0;
58
- background: linear-gradient(to right, rgba(0, 0, 0, 0.12) 0%, rgba(0, 0, 0, 0.05) 40%, transparent 100%);
38
+ .book-view {
39
+ box-shadow: 0 0 18px rgba(0, 0, 0, 0.18);
40
+ position: relative;
41
+ overflow: hidden;
42
+
43
+ // 页面内侧阴影(靠近中缝处的深度感)
44
+ &::before {
45
+ content: "";
46
+ position: absolute;
47
+ top: 0;
48
+ bottom: 0;
49
+ width: 20px;
50
+ z-index: 5;
51
+ pointer-events: none;
52
+ transition: opacity 0.3s ease;
53
+ }
54
+
55
+ // 偶数页(通常是右页)阴影在左侧
56
+ &:nth-child(even)::before {
57
+ left: 0;
58
+ background: linear-gradient(to right, rgba(0, 0, 0, 0.12) 0%, rgba(0, 0, 0, 0.05) 40%, transparent 100%);
59
+ }
60
+
61
+ // 奇数页(通常是左页)阴影在右侧
62
+ &:nth-child(odd)::before {
63
+ right: 0;
64
+ background: linear-gradient(to left, rgba(0, 0, 0, 0.12) 0%, rgba(0, 0, 0, 0.05) 40%, transparent 100%);
65
+ }
66
+
67
+ // 封面页(第一页)通常不需要这种内部阴影,或者阴影较弱
68
+ &:first-child::before {
69
+ opacity: 0.3;
70
+ }
59
71
  }
60
72
 
61
- // 奇数页(通常是左页)阴影在右侧
62
- &:nth-child(odd)::before {
63
- right: 0;
64
- background: linear-gradient(to left, rgba(0, 0, 0, 0.12) 0%, rgba(0, 0, 0, 0.05) 40%, transparent 100%);
73
+ .header-nav-btn {
74
+ padding: 0 7px;
65
75
  }
66
76
 
67
- // 封面页(第一页)通常不需要这种内部阴影,或者阴影较弱
68
- &:first-child::before {
69
- opacity: 0.3;
77
+ .dfb-HTMLFlipBook {
78
+ overflow: hidden;
79
+ background: #fff;
70
80
  }
71
- }
72
-
73
- .header-nav-btn {
74
- padding: 0 7px;
75
- }
76
-
77
- .dfb-HTMLFlipBook {
78
- overflow: hidden;
79
- background: #fff;
80
- }
81
-
82
- .dfb-root {
83
- display: flex;
84
- flex-direction: column;
85
- height: 100%;
86
- min-width: 1000px;
87
- overflow: hidden;
88
- background: #fff;
89
-
90
- &.is-fullscreen-modal {
91
- position: fixed;
92
- top: 0;
93
- left: 0;
94
- width: 100vw;
95
- height: 100vh;
96
- z-index: 1001;
81
+
82
+ .dfb-root {
83
+ display: flex;
84
+ flex-direction: column;
85
+ height: 100%;
86
+ min-width: 1000px;
87
+ overflow: hidden;
97
88
  background: #fff;
98
- animation: dfb-fade-in 0.3s ease;
89
+
90
+ &.is-fullscreen-modal {
91
+ position: fixed;
92
+ top: 0;
93
+ left: 0;
94
+ width: 100vw;
95
+ height: 100vh;
96
+ z-index: 1001;
97
+ background: #fff;
98
+ animation: dfb-fade-in 0.3s ease;
99
+ }
99
100
  }
100
- }
101
101
 
102
- @keyframes dfb-fade-in {
103
- from {
104
- opacity: 0;
105
- transform: scale(0.95);
102
+ @keyframes dfb-fade-in {
103
+ from {
104
+ opacity: 0;
105
+ transform: scale(0.95);
106
+ }
107
+
108
+ to {
109
+ opacity: 1;
110
+ transform: scale(1);
111
+ }
106
112
  }
107
113
 
108
- to {
109
- opacity: 1;
110
- transform: scale(1);
114
+ .dfb-header {
115
+ display: flex;
116
+ align-items: center;
117
+ justify-content: space-between;
118
+ height: 55px;
119
+ padding: 10px 10px;
120
+ background: #fff;
121
+ border-bottom: 1px solid #f0f0f0;
122
+
123
+ .dfb-search-btn {
124
+ height: 30px;
125
+ }
126
+
127
+ &-left-group {
128
+ display: flex;
129
+ align-items: center;
130
+ gap: 4px;
131
+ }
132
+
133
+ &-right-group {
134
+ display: flex;
135
+ align-items: center;
136
+ gap: 16px;
137
+ }
138
+
139
+ .dfb-divider {
140
+ height: 18px;
141
+ background: #e8e8e8;
142
+ margin: 0 8px;
143
+ }
144
+
145
+ .ant-btn-link {
146
+ color: #000;
147
+ font-size: 14px;
148
+ padding: 0 8px;
149
+ height: auto;
150
+
151
+ &:hover {
152
+ color: #1677ff;
153
+ }
154
+
155
+ &:disabled {
156
+ color: #d9d9d9;
157
+ cursor: not-allowed;
158
+ }
159
+ }
160
+
161
+ // 搜索框样式
162
+ &-search-wrap {
163
+ display: flex;
164
+ align-items: center;
165
+ gap: 8px;
166
+ }
167
+
168
+ &-search-input {
169
+ width: 220px;
170
+ height: 36px;
171
+ border-radius: 6px;
172
+
173
+ &:hover,
174
+ &:focus {
175
+ border-color: #4096ff;
176
+ }
177
+ }
178
+
179
+ &-search-btn {
180
+ height: 36px;
181
+ border-radius: 6px;
182
+ padding: 0 16px;
183
+ }
111
184
  }
112
- }
113
-
114
- .dfb-header {
115
- display: flex;
116
- align-items: center;
117
- justify-content: space-between;
118
- height: 55px;
119
- padding: 10px 10px;
120
- background: #fff;
121
- border-bottom: 1px solid #f0f0f0;
122
-
123
- .dfb-search-btn {
124
- height: 30px;
185
+
186
+ .dfb-headerTitle {
187
+ font-size: 18px;
188
+ font-weight: 600;
189
+ color: #111827;
125
190
  }
126
191
 
127
- &-left-group {
192
+ .dfb-headerLeftActions {
128
193
  display: flex;
129
194
  align-items: center;
130
- gap: 4px;
195
+ gap: 6px;
131
196
  }
132
197
 
133
- &-right-group {
198
+ .dfb-headerCenter {
134
199
  display: flex;
135
200
  align-items: center;
136
- gap: 16px;
201
+ gap: 4px;
202
+ color: #111827;
137
203
  }
138
204
 
139
- .dfb-divider {
140
- height: 18px;
141
- background: #e8e8e8;
142
- margin: 0 8px;
205
+ .dfb-pageIndicator {
206
+ display: inline-flex;
207
+ align-items: center;
208
+ justify-content: center;
209
+ min-width: 66px;
210
+ font-weight: 600;
211
+ color: #111827;
143
212
  }
144
213
 
145
- .ant-btn-link {
146
- color: #000;
147
- font-size: 14px;
148
- padding: 0 8px;
149
- height: auto;
150
-
151
- &:hover {
152
- color: #1677ff;
153
- }
154
-
155
- &:disabled {
156
- color: #d9d9d9;
157
- cursor: not-allowed;
158
- }
214
+ .dfb-headerRight {
215
+ display: flex;
216
+ align-items: center;
217
+ gap: 10px;
159
218
  }
160
219
 
161
- // 搜索框样式
162
- &-search-wrap {
220
+ .dfb-searchWrap {
163
221
  display: flex;
164
222
  align-items: center;
165
223
  gap: 8px;
166
224
  }
167
225
 
168
- &-search-input {
169
- width: 220px;
170
- height: 36px;
171
- border-radius: 6px;
172
-
173
- &:hover,
174
- &:focus {
175
- border-color: #4096ff;
176
- }
226
+ .dfb-searchInput {
227
+ width: 280px;
177
228
  }
178
229
 
179
- &-search-btn {
180
- height: 36px;
181
- border-radius: 6px;
182
- padding: 0 16px;
230
+ .dfb-searchBtn {
231
+ padding: 0 14px;
183
232
  }
184
- }
185
-
186
- .dfb-headerTitle {
187
- font-size: 18px;
188
- font-weight: 600;
189
- color: #111827;
190
- }
191
-
192
- .dfb-headerLeftActions {
193
- display: flex;
194
- align-items: center;
195
- gap: 6px;
196
- }
197
-
198
- .dfb-headerCenter {
199
- display: flex;
200
- align-items: center;
201
- gap: 4px;
202
- color: #111827;
203
- }
204
-
205
- .dfb-pageIndicator {
206
- display: inline-flex;
207
- align-items: center;
208
- justify-content: center;
209
- min-width: 66px;
210
- font-weight: 600;
211
- color: #111827;
212
- }
213
-
214
- .dfb-headerRight {
215
- display: flex;
216
- align-items: center;
217
- gap: 10px;
218
- }
219
-
220
- .dfb-searchWrap {
221
- display: flex;
222
- align-items: center;
223
- gap: 8px;
224
- }
225
-
226
- .dfb-searchInput {
227
- width: 280px;
228
- }
229
-
230
- .dfb-searchBtn {
231
- padding: 0 14px;
232
- }
233
-
234
- .dfb-stage {
235
- flex: 1;
236
- display: flex;
237
- overflow: auto;
238
- padding: 20px;
239
- position: relative;
240
- justify-content: center;
241
- min-width: 100px;
242
-
243
- // 解决 AntD Spin 嵌套导致的布局问题
244
- .ant-spin-nested-loading {
245
- width: 100%;
246
- height: 100%;
247
-
248
- .ant-spin-container {
233
+
234
+ .dfb-stage {
235
+ flex: 1;
236
+ display: flex;
237
+ overflow: auto;
238
+ padding: 20px;
239
+ position: relative;
240
+ justify-content: center;
241
+ min-width: 100px;
242
+
243
+ // 解决 AntD Spin 嵌套导致的布局问题
244
+ .ant-spin-nested-loading {
249
245
  width: 100%;
250
246
  height: 100%;
251
- display: flex;
252
- flex-direction: column;
247
+
248
+ .ant-spin-container {
249
+ width: 100%;
250
+ height: 100%;
251
+ display: flex;
252
+ flex-direction: column;
253
+ }
253
254
  }
254
255
  }
255
- }
256
-
257
- .dfb-sideTabs {
258
- position: absolute;
259
- right: 2px; // 调整位置,使其紧贴书本边缘
260
- top: 40px;
261
- display: flex;
262
- flex-direction: column;
263
- gap: 6px; //
264
- z-index: 10;
265
- transition: all 0.3s ease;
266
-
267
- &.is-on-cover {
268
- right: -42px; // 封面是单页模式,标签需要向左移动(进入书壳内部边缘)
269
- top: 40px;
270
- }
271
256
 
272
- .dfb-sideTab {
273
- width: 42px;
274
- min-height: 80px;
275
- padding: 12px 6px 12px 10px;
276
- border: none;
277
- border-radius: 0 6px 6px 0;
278
- cursor: pointer;
279
- color: #fff;
280
- font-size: 13px;
281
- font-weight: 500;
282
- line-height: 1.2;
283
- writing-mode: vertical-rl;
284
- text-align: center;
285
- transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
286
- box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.1);
287
- position: relative;
288
- overflow: hidden;
257
+ .dfb-sideTabs {
258
+ position: absolute;
259
+ right: 2px; // 调整位置,使其紧贴书本边缘
260
+ top: 40px;
289
261
  display: flex;
290
- align-items: center;
291
- justify-content: center;
262
+ flex-direction: column;
263
+ gap: 6px; //
264
+ z-index: 10;
265
+ transition: all 0.3s ease;
292
266
 
293
- // 标签左侧的装饰条(仅在选中态或悬浮态显示,模拟折痕)
294
- &::before {
295
- content: "";
296
- position: absolute;
297
- left: 0;
298
- top: 0;
299
- bottom: 0;
300
- width: 0; // 默认宽度为 0
301
- background: rgba(255, 255, 255, 0.35);
302
- transition: all 0.2s ease;
303
- opacity: 0;
267
+ &.is-on-cover {
268
+ right: -42px; // 封面是单页模式,标签需要向左移动(进入书壳内部边缘)
269
+ top: 40px;
304
270
  }
305
271
 
306
-
307
-
308
- &.is-active {
272
+ .dfb-sideTab {
273
+ width: 42px;
274
+ min-height: 80px;
275
+ padding: 12px 6px 12px 10px;
276
+ border: none;
277
+ border-radius: 0 6px 6px 0;
278
+ cursor: pointer;
279
+ color: #fff;
280
+ font-size: 13px;
281
+ font-weight: 500;
282
+ line-height: 1.2;
283
+ writing-mode: vertical-rl;
284
+ text-align: center;
285
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
286
+ box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.1);
309
287
  position: relative;
310
- left: -10px;
311
- width: 52px; // 选中态更长
312
- padding-left: 16px;
313
- font-weight: 700;
314
- box-shadow: 5px 2px 12px rgba(0, 0, 0, 0.2);
315
- z-index: 12;
316
- font-size: 14px;
288
+ overflow: hidden;
289
+ display: flex;
290
+ align-items: center;
291
+ justify-content: center;
317
292
 
293
+ // 标签左侧的装饰条(仅在选中态或悬浮态显示,模拟折痕)
318
294
  &::before {
319
- width: 8px; // 选中态条纹显示且最宽
320
- opacity: 1;
321
- background: rgba(255, 255, 255, 0.4);
295
+ content: "";
296
+ position: absolute;
297
+ left: 0;
298
+ top: 0;
299
+ bottom: 0;
300
+ width: 0; // 默认宽度为 0
301
+ background: rgba(255, 255, 255, 0.35);
302
+ transition: all 0.2s ease;
303
+ opacity: 0;
322
304
  }
323
- }
324
305
 
325
- .dfb-sideTabText {
326
- letter-spacing: 2px;
327
- filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.1));
306
+
307
+
308
+ &.is-active {
309
+ position: relative;
310
+ left: -10px;
311
+ width: 52px; // 选中态更长
312
+ padding-left: 16px;
313
+ font-weight: 700;
314
+ box-shadow: 5px 2px 12px rgba(0, 0, 0, 0.2);
315
+ z-index: 12;
316
+ font-size: 14px;
317
+
318
+ &::before {
319
+ width: 8px; // 选中态条纹显示且最宽
320
+ opacity: 1;
321
+ background: rgba(255, 255, 255, 0.4);
322
+ }
323
+ }
324
+
325
+ .dfb-sideTabText {
326
+ letter-spacing: 2px;
327
+ filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.1));
328
+ }
328
329
  }
330
+
329
331
  }
330
332
 
331
- }
332
-
333
- .is-on-activeTab {
334
- right:12px !important;
335
- }
336
-
337
- .dfb-book-wrapper {
338
- display: block;
339
- margin: auto; // 关键:在 flex 容器中使用 margin: auto 实现完美居中且溢出时可滚动到顶部
340
- position: relative;
341
- min-width: 300px;
342
- }
343
-
344
- .dfb-bookShell1 {
345
- position: relative;
346
- padding: 18px 0 18px 54px;
347
- background: transparent;
348
- transition: background-color 0.3s ease;
349
- }
350
-
351
- .dfb-bookShell {
352
- position: relative;
353
- padding: 18px 54px;
354
- background: #9F7D4E;
355
- transition: background-color 0.3s ease;
356
-
357
- &::after {
358
- content: "";
359
- position: absolute;
360
- top: 0;
361
- left: 0;
362
- right: 0;
363
- bottom: 0;
364
- background-image: url("https://www.transparenttextures.com/patterns/leather.png");
365
- opacity: 0.1;
366
- pointer-events: none;
367
- border-radius: 8px;
333
+ .is-on-activeTab {
334
+ right: 12px !important;
368
335
  }
369
336
 
370
- // 书本中缝分割线
371
- .dfb-book-spine {
372
- position: absolute;
373
- left: 50%;
374
- top: 18px;
375
- bottom: 18px;
376
- width: 2px;
377
- transform: translateX(-50%);
378
- background: rgba(0, 0, 0, 0.2);
379
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
380
- z-index: 5;
381
- pointer-events: none;
382
- transition: opacity 0.3s ease;
337
+ .dfb-book-wrapper {
338
+ display: block;
339
+ margin: auto; // 关键:在 flex 容器中使用 margin: auto 实现完美居中且溢出时可滚动到顶部
340
+ position: relative;
341
+ min-width: 300px;
342
+ }
383
343
 
384
- &::before {
344
+ .dfb-bookShell1 {
345
+ position: relative;
346
+ padding: 18px 0 18px 54px;
347
+ background: transparent;
348
+ transition: background-color 0.3s ease;
349
+ }
350
+
351
+ .dfb-bookShell {
352
+ position: relative;
353
+ padding: 18px 54px;
354
+ background: #9F7D4E;
355
+ transition: background-color 0.3s ease;
356
+
357
+ &::after {
385
358
  content: "";
386
359
  position: absolute;
387
- left: -4px;
388
360
  top: 0;
361
+ left: 0;
362
+ right: 0;
389
363
  bottom: 0;
390
- width: 10px;
391
- background: linear-gradient(to right, transparent, rgba(0, 0, 0, 0.15), transparent);
364
+ background-image: url("https://www.transparenttextures.com/patterns/leather.png");
365
+ opacity: 0.1;
366
+ pointer-events: none;
367
+ border-radius: 8px;
368
+ }
369
+
370
+ // 书本中缝分割线
371
+ .dfb-book-spine {
372
+ position: absolute;
373
+ left: 50%;
374
+ top: 18px;
375
+ bottom: 18px;
376
+ width: 2px;
377
+ transform: translateX(-50%);
378
+ background: rgba(0, 0, 0, 0.2);
379
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
380
+ z-index: 5;
381
+ pointer-events: none;
382
+ transition: opacity 0.3s ease;
383
+
384
+ &::before {
385
+ content: "";
386
+ position: absolute;
387
+ left: -4px;
388
+ top: 0;
389
+ bottom: 0;
390
+ width: 10px;
391
+ background: linear-gradient(to right, transparent, rgba(0, 0, 0, 0.15), transparent);
392
+ }
392
393
  }
393
394
  }
394
- }
395
395
 
396
- .dfb-cover {
397
- width: 100%;
398
- height: 100%;
399
- display: grid;
400
- place-items: center;
401
- background: #9F7D4E;
402
- color: #111;
403
- font-size: 46px;
404
- font-weight: 800;
405
- letter-spacing: 8px;
406
- border: 3px solid rgba(0, 0, 0, 0.55);
407
- }
396
+ .dfb-cover {
397
+ width: 100%;
398
+ height: 100%;
399
+ display: grid;
400
+ place-items: center;
401
+ background: #9F7D4E;
402
+ color: #111;
403
+ font-size: 46px;
404
+ font-weight: 800;
405
+ letter-spacing: 8px;
406
+ border: 3px solid rgba(0, 0, 0, 0.55);
407
+ }
408
408
 
409
409
 
410
410
 
411
411
 
412
- .export-modal {
413
- .ant-modal-content {
414
- border-radius: 8px;
415
- padding: 24px;
416
- }
417
- .export-radio {
418
- .ant-radio-wrapper {
419
- padding: 8px 0;
412
+ .export-modal {
413
+ .ant-modal-content {
414
+ border-radius: 8px;
415
+ padding: 24px;
416
+ }
417
+
418
+ .export-radio {
419
+ .ant-radio-wrapper {
420
+ padding: 8px 0;
421
+ }
420
422
  }
421
- }
422
- }
423
-
424
- .archive-cover {
425
- width: 100%;
426
- height: 100%;
427
- background: #9F7D4E; // 棕黄色背景
428
- display: flex;
429
- align-items: center;
430
- justify-content: center;
431
- color: #000;
432
- font-family: "SimSun", "STSong", serif;
433
- padding: 40px;
434
- box-sizing: border-box;
435
-
436
- &__outer-border {
437
- border: 5px solid #000;
438
- width: 100%;
439
- height: 100%;
440
- padding: 4px;
441
- box-sizing: border-box;
442
- display: flex;
443
423
  }
444
424
 
445
- &__inner {
446
- border: 1px solid #000;
425
+ .archive-cover {
447
426
  width: 100%;
448
427
  height: 100%;
449
- padding: 20px 20px;
450
- box-sizing: border-box;
428
+ background: #9F7D4E; // 棕黄色背景
451
429
  display: flex;
452
- flex-direction: column;
453
430
  align-items: center;
454
- background: transparent;
455
- }
456
-
457
- &__company {
458
- font-size: 26px;
459
- font-weight: bold;
460
- margin-top: 10px;
461
- margin-bottom: 30px;
462
- letter-spacing: 4px;
463
- text-align: center;
464
- }
431
+ justify-content: center;
432
+ color: #000;
433
+ font-family: "SimSun", "STSong", serif;
434
+ padding: 40px;
435
+ box-sizing: border-box;
465
436
 
466
- &__title {
467
- font-size: 42px;
468
- font-weight: 900;
469
- margin-bottom: 22px;
470
- letter-spacing: 16px;
471
- text-align: center;
472
- line-height: 1;
473
- }
437
+ &__outer-border {
438
+ border: 5px solid #000;
439
+ width: 100%;
440
+ height: 100%;
441
+ padding: 4px;
442
+ box-sizing: border-box;
443
+ display: flex;
444
+ }
474
445
 
475
- &__table {
476
- width: 100%;
477
- border-collapse: collapse;
478
- border: 2px solid #000;
479
- margin-bottom: 10px;
446
+ &__inner {
447
+ border: 1px solid #000;
448
+ width: 100%;
449
+ height: 100%;
450
+ padding: 20px 20px;
451
+ box-sizing: border-box;
452
+ display: flex;
453
+ flex-direction: column;
454
+ align-items: center;
455
+ background: transparent;
456
+ }
480
457
 
481
- td {
482
- border: 1.5px solid #000;
483
- height: 30px;
484
- padding: 4px 12px;
485
- vertical-align: middle;
458
+ &__company {
459
+ font-size: 26px;
460
+ font-weight: bold;
461
+ margin-top: 10px;
462
+ margin-bottom: 30px;
463
+ letter-spacing: 4px;
486
464
  text-align: center;
487
- font-size: 16px;
488
- font-weight: 600;
465
+ }
489
466
 
490
- &.label {
491
- width: 120px;
492
- background: rgba(0, 0, 0, 0.04);
493
- font-weight: 900;
494
- }
467
+ &__title {
468
+ font-size: 42px;
469
+ font-weight: 900;
470
+ margin-bottom: 22px;
471
+ letter-spacing: 16px;
472
+ text-align: center;
473
+ line-height: 1;
474
+ }
495
475
 
496
- &.value {
476
+ &__table {
477
+ width: 100%;
478
+ border-collapse: collapse;
479
+ border: 2px solid #000;
480
+ margin-bottom: 10px;
481
+
482
+ td {
483
+ border: 1.5px solid #000;
484
+ height: 30px;
485
+ padding: 4px 12px;
486
+ vertical-align: middle;
497
487
  text-align: center;
498
- }
488
+ font-size: 16px;
489
+ font-weight: 600;
490
+
491
+ &.label {
492
+ width: 120px;
493
+ background: rgba(0, 0, 0, 0.04);
494
+ font-weight: 900;
495
+ }
496
+
497
+ &.value {
498
+ text-align: center;
499
+ }
499
500
 
500
- &.tall-row {
501
- height: 100px;
502
- line-height: 1.4;
503
- padding: 10px 15px;
501
+ &.tall-row {
502
+ height: 100px;
503
+ line-height: 1.4;
504
+ padding: 10px 15px;
505
+ }
504
506
  }
505
507
  }
506
- }
507
508
 
508
- &__stats-row {
509
- height: 54px !important;
509
+ &__stats-row {
510
+ height: 54px !important;
510
511
 
511
- .stats-content {
512
- display: flex;
513
- justify-content: center;
514
- align-items: center;
515
- width: 100%;
516
- font-size: 20px;
517
- font-weight: 700;
518
- gap: 30px;
519
-
520
- .num {
521
- font-family: "Times New Roman", serif;
522
- font-size: 24px;
523
- margin: 0 5px;
524
- min-width: 30px;
525
- display: inline-block;
526
- text-align: center;
527
- border-bottom: none; // 如果需要下划线可以加,但图片里没有
512
+ .stats-content {
513
+ display: flex;
514
+ justify-content: center;
515
+ align-items: center;
516
+ width: 100%;
517
+ font-size: 20px;
518
+ font-weight: 700;
519
+ gap: 30px;
520
+
521
+ .num {
522
+ font-family: "Times New Roman", serif;
523
+ font-size: 24px;
524
+ margin: 0 5px;
525
+ min-width: 30px;
526
+ display: inline-block;
527
+ text-align: center;
528
+ border-bottom: none; // 如果需要下划线可以加,但图片里没有
529
+ }
528
530
  }
529
531
  }
530
532
  }
531
- }
532
-
533
- // 项目模式封面样式
534
- .project-cover-container {
535
- // position: absolute;
536
- // left: 15px;
537
- // top: 0px;
538
- // width: calc(100% - 15px);
539
- width: 100%;
540
- height: 100%;
541
- z-index: 20;
542
- box-sizing: border-box;
543
- display: flex;
544
- flex-direction: column;
545
- font-family: "SimSun", "STSong", serif;
546
- padding: 30px;
547
-
548
- // 移除 react-pageflip 默认添加的样式影响
549
- &.stf__item {
550
- background-color: transparent !important;
551
- box-shadow: none !important;
552
- &.--hard, &.--soft, &.--simple, &.--right {
553
- background-color: transparent !important;
554
- }
555
- }
556
533
 
557
- .project-cover-border-outer {
558
- border: 5px solid #000;
559
- padding: 5px;
534
+ // 项目模式封面样式
535
+ .project-cover-container {
536
+ // position: absolute;
537
+ // left: 15px;
538
+ // top: 0px;
539
+ // width: calc(100% - 15px);
540
+ width: 100%;
560
541
  height: 100%;
542
+ z-index: 20;
561
543
  box-sizing: border-box;
562
- }
563
-
564
- .project-cover-border-inner {
565
- border: 2px solid #000;
566
- height: 100%;
567
544
  display: flex;
568
545
  flex-direction: column;
569
- box-sizing: border-box;
570
- }
571
-
572
- .project-cover-header {
573
- text-align: center;
574
- color: #000;
575
- padding: 8px 0;
576
-
577
- .project-cover-title {
578
- font-size: 54px;
579
- margin: 0;
580
- font-weight: 900;
581
- letter-spacing: 8px;
582
- padding: 14px 0;
546
+ font-family: "SimSun", "STSong", serif;
547
+ padding: 30px;
548
+
549
+ // 移除 react-pageflip 默认添加的样式影响
550
+ &.stf__item {
551
+ background-color: transparent !important;
552
+ box-shadow: none !important;
553
+
554
+ &.--hard,
555
+ &.--soft,
556
+ &.--simple,
557
+ &.--right {
558
+ background-color: transparent !important;
559
+ }
583
560
  }
584
- }
585
561
 
586
- .project-cover-stats-row {
587
- display: flex;
588
- border-bottom: 1px solid #000;
589
- border-top: 1px solid #000;
590
- margin-top: -1px;
562
+ .project-cover-border-outer {
563
+ border: 5px solid #000;
564
+ padding: 5px;
565
+ height: 100%;
566
+ box-sizing: border-box;
567
+ }
591
568
 
592
- .stat-cell-label {
593
- flex: 1;
594
- text-align: center;
595
- padding: 8px;
596
- border-right: 1px solid #000;
569
+ .project-cover-border-inner {
570
+ border: 2px solid #000;
571
+ height: 100%;
597
572
  display: flex;
598
- align-items: center;
599
- justify-content: center;
600
- gap: 8px;
573
+ flex-direction: column;
574
+ box-sizing: border-box;
601
575
  }
602
576
 
603
- .stat-cell-value {
604
- flex: 1;
577
+ .project-cover-header {
605
578
  text-align: center;
606
- padding: 8px;
607
- border-right: 1px solid #000;
608
- font-family: "Times New Roman", serif;
609
- font-size: 18px;
610
- font-weight: bold;
579
+ color: #000;
580
+ padding: 8px 0;
611
581
 
612
- &:last-child {
613
- border-right: none;
582
+ .project-cover-title {
583
+ font-size: 54px;
584
+ margin: 0;
585
+ font-weight: 900;
586
+ letter-spacing: 8px;
587
+ padding: 20px 0;
614
588
  }
615
589
  }
616
- }
617
-
618
- .project-cover-details {
619
- // flex: 1;
620
- display: flex;
621
- flex-direction: column;
622
590
 
623
- .detail-row {
591
+ .project-cover-stats-row {
624
592
  display: flex;
625
593
  border-bottom: 1px solid #000;
594
+ border-top: 1px solid #000;
595
+ margin-top: -1px;
626
596
 
627
- .detail-label {
628
- width: 100px;
629
- padding: 8px;
630
- font-weight: bold;
597
+ .stat-cell-label {
598
+ flex: 1;
599
+ text-align: center;
600
+ padding: 12px;
631
601
  border-right: 1px solid #000;
602
+ display: flex;
603
+ align-items: center;
604
+ justify-content: center;
605
+ gap: 8px;
632
606
  }
633
607
 
634
- .detail-value {
608
+ .stat-cell-value {
635
609
  flex: 1;
636
- padding: 8px;
637
- font-weight: 600;
610
+ text-align: center;
611
+ padding: 12px;
612
+ border-right: 1px solid #000;
613
+ font-family: "Times New Roman", serif;
614
+ font-size: 18px;
615
+ font-weight: bold;
616
+
617
+ &:last-child {
618
+ border-right: none;
619
+ }
638
620
  }
639
621
  }
640
- }
641
622
 
642
- .project-cover-footer {
643
- .footer-row {
623
+ .project-cover-details {
624
+ // flex: 1;
644
625
  display: flex;
645
- border-bottom: 1px solid #000;
626
+ flex-direction: column;
646
627
 
647
- .footer-cell {
648
- flex: 1;
649
- text-align: center;
650
- padding: 10px;
651
- border-right: 1px solid #000;
652
- font-weight: bold;
628
+ .detail-row {
653
629
  display: flex;
654
- align-items: center;
655
- justify-content: center;
656
- font-size: 16px;
630
+ border-bottom: 1px solid #000;
657
631
 
658
- &:last-child {
659
- border-right: none;
632
+ .detail-label {
633
+ width: 100px;
634
+ padding: 12px;
635
+ font-weight: bold;
636
+ border-right: 1px solid #000;
637
+ }
638
+
639
+ .detail-value {
640
+ flex: 1;
641
+ padding: 12px;
642
+
643
+ font-weight: 600;
660
644
  }
661
645
  }
646
+ }
662
647
 
663
- &.no-bottom-border {
664
- border-bottom: none;
648
+ .project-cover-footer {
649
+ .footer-row {
650
+ display: flex;
651
+ border-bottom: 1px solid #000;
652
+
653
+ .footer-cell {
654
+ flex: 1;
655
+ text-align: center;
656
+ padding: 12px;
657
+ border-right: 1px solid #000;
658
+ font-weight: bold;
659
+ display: flex;
660
+ align-items: center;
661
+ justify-content: center;
662
+ font-size: 16px;
663
+
664
+ &:last-child {
665
+ border-right: none;
666
+ }
667
+ }
668
+
669
+ &.no-bottom-border {
670
+ border-bottom: none;
671
+ }
665
672
  }
666
673
  }
667
- }
668
- }
674
+ }