张延森 2 years ago
parent
commit
5c9c0213df

+ 1
- 0
package.json View File

@@ -13,6 +13,7 @@
13 13
   },
14 14
   "devDependencies": {
15 15
     "@vitejs/plugin-vue": "^3.0.3",
16
+    "less": "^4.1.3",
16 17
     "vite": "^3.0.7"
17 18
   }
18 19
 }

+ 191
- 3
pnpm-lock.yaml View File

@@ -2,6 +2,7 @@ lockfileVersion: 5.4
2 2
 
3 3
 specifiers:
4 4
   '@vitejs/plugin-vue': ^3.0.3
5
+  less: ^4.1.3
5 6
   vite: ^3.0.7
6 7
   vue: ^3.2.37
7 8
 
@@ -10,7 +11,8 @@ dependencies:
10 11
 
11 12
 devDependencies:
12 13
   '@vitejs/plugin-vue': registry.npmmirror.com/@vitejs/plugin-vue/3.0.3_vite@3.0.8+vue@3.2.37
13
-  vite: registry.npmmirror.com/vite/3.0.8
14
+  less: registry.npmmirror.com/less/4.1.3
15
+  vite: registry.npmmirror.com/vite/3.0.8_less@4.1.3
14 16
 
15 17
 packages:
16 18
 
@@ -66,7 +68,7 @@ packages:
66 68
       vite: ^3.0.0
67 69
       vue: ^3.2.25
68 70
     dependencies:
69
-      vite: registry.npmmirror.com/vite/3.0.8
71
+      vite: registry.npmmirror.com/vite/3.0.8_less@4.1.3
70 72
       vue: registry.npmmirror.com/vue/3.2.37
71 73
     dev: true
72 74
 
@@ -164,11 +166,44 @@ packages:
164 166
     name: '@vue/shared'
165 167
     version: 3.2.37
166 168
 
169
+  registry.npmmirror.com/copy-anything/2.0.6:
170
+    resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz}
171
+    name: copy-anything
172
+    version: 2.0.6
173
+    dependencies:
174
+      is-what: registry.npmmirror.com/is-what/3.14.1
175
+    dev: true
176
+
167 177
   registry.npmmirror.com/csstype/2.6.20:
168 178
     resolution: {integrity: sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/csstype/-/csstype-2.6.20.tgz}
169 179
     name: csstype
170 180
     version: 2.6.20
171 181
 
182
+  registry.npmmirror.com/debug/3.2.7:
183
+    resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz}
184
+    name: debug
185
+    version: 3.2.7
186
+    peerDependencies:
187
+      supports-color: '*'
188
+    peerDependenciesMeta:
189
+      supports-color:
190
+        optional: true
191
+    dependencies:
192
+      ms: registry.npmmirror.com/ms/2.1.3
193
+    dev: true
194
+    optional: true
195
+
196
+  registry.npmmirror.com/errno/0.1.8:
197
+    resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz}
198
+    name: errno
199
+    version: 0.1.8
200
+    hasBin: true
201
+    requiresBuild: true
202
+    dependencies:
203
+      prr: registry.npmmirror.com/prr/1.0.1
204
+    dev: true
205
+    optional: true
206
+
172 207
   registry.npmmirror.com/esbuild-android-64/0.14.54:
173 208
     resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz}
174 209
     name: esbuild-android-64
@@ -441,6 +476,14 @@ packages:
441 476
     version: 1.1.1
442 477
     dev: true
443 478
 
479
+  registry.npmmirror.com/graceful-fs/4.2.10:
480
+    resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz}
481
+    name: graceful-fs
482
+    version: 4.2.10
483
+    requiresBuild: true
484
+    dev: true
485
+    optional: true
486
+
444 487
   registry.npmmirror.com/has/1.0.3:
445 488
     resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/has/-/has-1.0.3.tgz}
446 489
     name: has
@@ -450,6 +493,26 @@ packages:
450 493
       function-bind: registry.npmmirror.com/function-bind/1.1.1
451 494
     dev: true
452 495
 
496
+  registry.npmmirror.com/iconv-lite/0.6.3:
497
+    resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz}
498
+    name: iconv-lite
499
+    version: 0.6.3
500
+    engines: {node: '>=0.10.0'}
501
+    dependencies:
502
+      safer-buffer: registry.npmmirror.com/safer-buffer/2.1.2
503
+    dev: true
504
+    optional: true
505
+
506
+  registry.npmmirror.com/image-size/0.5.5:
507
+    resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz}
508
+    name: image-size
509
+    version: 0.5.5
510
+    engines: {node: '>=0.10.0'}
511
+    hasBin: true
512
+    requiresBuild: true
513
+    dev: true
514
+    optional: true
515
+
453 516
   registry.npmmirror.com/is-core-module/2.10.0:
454 517
     resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-core-module/-/is-core-module-2.10.0.tgz}
455 518
     name: is-core-module
@@ -458,6 +521,34 @@ packages:
458 521
       has: registry.npmmirror.com/has/1.0.3
459 522
     dev: true
460 523
 
524
+  registry.npmmirror.com/is-what/3.14.1:
525
+    resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz}
526
+    name: is-what
527
+    version: 3.14.1
528
+    dev: true
529
+
530
+  registry.npmmirror.com/less/4.1.3:
531
+    resolution: {integrity: sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/less/-/less-4.1.3.tgz}
532
+    name: less
533
+    version: 4.1.3
534
+    engines: {node: '>=6'}
535
+    hasBin: true
536
+    dependencies:
537
+      copy-anything: registry.npmmirror.com/copy-anything/2.0.6
538
+      parse-node-version: registry.npmmirror.com/parse-node-version/1.0.1
539
+      tslib: registry.npmmirror.com/tslib/2.4.0
540
+    optionalDependencies:
541
+      errno: registry.npmmirror.com/errno/0.1.8
542
+      graceful-fs: registry.npmmirror.com/graceful-fs/4.2.10
543
+      image-size: registry.npmmirror.com/image-size/0.5.5
544
+      make-dir: registry.npmmirror.com/make-dir/2.1.0
545
+      mime: registry.npmmirror.com/mime/1.6.0
546
+      needle: registry.npmmirror.com/needle/3.1.0
547
+      source-map: registry.npmmirror.com/source-map/0.6.1
548
+    transitivePeerDependencies:
549
+      - supports-color
550
+    dev: true
551
+
461 552
   registry.npmmirror.com/magic-string/0.25.9:
462 553
     resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz}
463 554
     name: magic-string
@@ -465,6 +556,35 @@ packages:
465 556
     dependencies:
466 557
       sourcemap-codec: registry.npmmirror.com/sourcemap-codec/1.4.8
467 558
 
559
+  registry.npmmirror.com/make-dir/2.1.0:
560
+    resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz}
561
+    name: make-dir
562
+    version: 2.1.0
563
+    engines: {node: '>=6'}
564
+    requiresBuild: true
565
+    dependencies:
566
+      pify: registry.npmmirror.com/pify/4.0.1
567
+      semver: registry.npmmirror.com/semver/5.7.1
568
+    dev: true
569
+    optional: true
570
+
571
+  registry.npmmirror.com/mime/1.6.0:
572
+    resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz}
573
+    name: mime
574
+    version: 1.6.0
575
+    engines: {node: '>=4'}
576
+    hasBin: true
577
+    requiresBuild: true
578
+    dev: true
579
+    optional: true
580
+
581
+  registry.npmmirror.com/ms/2.1.3:
582
+    resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz}
583
+    name: ms
584
+    version: 2.1.3
585
+    dev: true
586
+    optional: true
587
+
468 588
   registry.npmmirror.com/nanoid/3.3.4:
469 589
     resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz}
470 590
     name: nanoid
@@ -472,6 +592,29 @@ packages:
472 592
     engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
473 593
     hasBin: true
474 594
 
595
+  registry.npmmirror.com/needle/3.1.0:
596
+    resolution: {integrity: sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/needle/-/needle-3.1.0.tgz}
597
+    name: needle
598
+    version: 3.1.0
599
+    engines: {node: '>= 4.4.x'}
600
+    hasBin: true
601
+    requiresBuild: true
602
+    dependencies:
603
+      debug: registry.npmmirror.com/debug/3.2.7
604
+      iconv-lite: registry.npmmirror.com/iconv-lite/0.6.3
605
+      sax: registry.npmmirror.com/sax/1.2.4
606
+    transitivePeerDependencies:
607
+      - supports-color
608
+    dev: true
609
+    optional: true
610
+
611
+  registry.npmmirror.com/parse-node-version/1.0.1:
612
+    resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz}
613
+    name: parse-node-version
614
+    version: 1.0.1
615
+    engines: {node: '>= 0.10'}
616
+    dev: true
617
+
475 618
   registry.npmmirror.com/path-parse/1.0.7:
476 619
     resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz}
477 620
     name: path-parse
@@ -483,6 +626,14 @@ packages:
483 626
     name: picocolors
484 627
     version: 1.0.0
485 628
 
629
+  registry.npmmirror.com/pify/4.0.1:
630
+    resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz}
631
+    name: pify
632
+    version: 4.0.1
633
+    engines: {node: '>=6'}
634
+    dev: true
635
+    optional: true
636
+
486 637
   registry.npmmirror.com/postcss/8.4.16:
487 638
     resolution: {integrity: sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss/-/postcss-8.4.16.tgz}
488 639
     name: postcss
@@ -493,6 +644,13 @@ packages:
493 644
       picocolors: registry.npmmirror.com/picocolors/1.0.0
494 645
       source-map-js: registry.npmmirror.com/source-map-js/1.0.2
495 646
 
647
+  registry.npmmirror.com/prr/1.0.1:
648
+    resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz}
649
+    name: prr
650
+    version: 1.0.1
651
+    dev: true
652
+    optional: true
653
+
496 654
   registry.npmmirror.com/resolve/1.22.1:
497 655
     resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz}
498 656
     name: resolve
@@ -514,6 +672,28 @@ packages:
514 672
       fsevents: registry.npmmirror.com/fsevents/2.3.2
515 673
     dev: true
516 674
 
675
+  registry.npmmirror.com/safer-buffer/2.1.2:
676
+    resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz}
677
+    name: safer-buffer
678
+    version: 2.1.2
679
+    dev: true
680
+    optional: true
681
+
682
+  registry.npmmirror.com/sax/1.2.4:
683
+    resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz}
684
+    name: sax
685
+    version: 1.2.4
686
+    dev: true
687
+    optional: true
688
+
689
+  registry.npmmirror.com/semver/5.7.1:
690
+    resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz}
691
+    name: semver
692
+    version: 5.7.1
693
+    hasBin: true
694
+    dev: true
695
+    optional: true
696
+
517 697
   registry.npmmirror.com/source-map-js/1.0.2:
518 698
     resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz}
519 699
     name: source-map-js
@@ -544,8 +724,15 @@ packages:
544 724
     version: 2.0.0
545 725
     engines: {node: '>=4'}
546 726
 
547
-  registry.npmmirror.com/vite/3.0.8:
727
+  registry.npmmirror.com/tslib/2.4.0:
728
+    resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/tslib/-/tslib-2.4.0.tgz}
729
+    name: tslib
730
+    version: 2.4.0
731
+    dev: true
732
+
733
+  registry.npmmirror.com/vite/3.0.8_less@4.1.3:
548 734
     resolution: {integrity: sha512-AOZ4eN7mrkJiOLuw8IA7piS4IdOQyQCA81GxGsAQvAZzMRi9ZwGB3TOaYsj4uLAWK46T5L4AfQ6InNGlxX30IQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vite/-/vite-3.0.8.tgz}
735
+    id: registry.npmmirror.com/vite/3.0.8
549 736
     name: vite
550 737
     version: 3.0.8
551 738
     engines: {node: ^14.18.0 || >=16.0.0}
@@ -566,6 +753,7 @@ packages:
566 753
         optional: true
567 754
     dependencies:
568 755
       esbuild: registry.npmmirror.com/esbuild/0.14.54
756
+      less: registry.npmmirror.com/less/4.1.3
569 757
       postcss: registry.npmmirror.com/postcss/8.4.16
570 758
       resolve: registry.npmmirror.com/resolve/1.22.1
571 759
       rollup: registry.npmmirror.com/rollup/2.77.3

+ 21
- 23
src/App.vue View File

@@ -1,31 +1,29 @@
1 1
 <script setup>
2
-// This starter template is using Vue 3 <script setup> SFCs
3
-// Check out https://vuejs.org/api/sfc-script-setup.html#script-setup
4
-import HelloWorld from './components/HelloWorld.vue'
2
+import { computed, onMounted, ref } from 'vue';
3
+import Loader from '@/components/Loader.vue';
4
+import Image from '@/components/Image.vue';
5
+import { preload } from '@/utils/preload';
6
+
7
+const loading = ref(true);
8
+const percent = ref(0);
9
+const resources = ref([]);
10
+
11
+const updateCallback = (num) => {
12
+  percent.value = Math.round(num * 100);
13
+}
14
+
15
+onMounted(() => {
16
+  preload(updateCallback).then((res) => {
17
+    loading.value = false;
18
+    resources.value = res;
19
+  })
20
+});
5 21
 </script>
6 22
 
7 23
 <template>
8
-  <div>
9
-    <a href="https://vitejs.dev" target="_blank">
10
-      <img src="/vite.svg" class="logo" alt="Vite logo" />
11
-    </a>
12
-    <a href="https://vuejs.org/" target="_blank">
13
-      <img src="./assets/vue.svg" class="logo vue" alt="Vue logo" />
14
-    </a>
15
-  </div>
16
-  <HelloWorld msg="Vite + Vue" />
24
+  <Loader :loading="loading" :percent="percent" />
25
+  <Image v-for="res in resources" :key="res.image" :resource="res"></Image>
17 26
 </template>
18 27
 
19 28
 <style scoped>
20
-.logo {
21
-  height: 6em;
22
-  padding: 1.5em;
23
-  will-change: filter;
24
-}
25
-.logo:hover {
26
-  filter: drop-shadow(0 0 2em #646cffaa);
27
-}
28
-.logo.vue:hover {
29
-  filter: drop-shadow(0 0 2em #42b883aa);
30
-}
31 29
 </style>

BIN
src/assets/images/1.jpg View File


BIN
src/assets/images/10-1.jpg View File


BIN
src/assets/images/10-2.jpg View File


BIN
src/assets/images/10.jpg View File


BIN
src/assets/images/11.jpg View File


BIN
src/assets/images/12.jpg View File


BIN
src/assets/images/13.jpg View File


BIN
src/assets/images/14.jpg View File


BIN
src/assets/images/15-1.jpg View File


BIN
src/assets/images/15-2.jpg View File


BIN
src/assets/images/15.jpg View File


BIN
src/assets/images/16.jpg View File


BIN
src/assets/images/17.jpg View File


BIN
src/assets/images/18.jpg View File


BIN
src/assets/images/19-1.jpg View File


BIN
src/assets/images/19-2.jpg View File


BIN
src/assets/images/19.jpg View File


BIN
src/assets/images/2.jpg View File


BIN
src/assets/images/20.jpg View File


BIN
src/assets/images/21.jpg View File


BIN
src/assets/images/22.jpg View File


BIN
src/assets/images/23.jpg View File


BIN
src/assets/images/3.jpg View File


BIN
src/assets/images/4.jpg View File


BIN
src/assets/images/5-1.jpg View File


BIN
src/assets/images/5-2.jpg View File


BIN
src/assets/images/5.jpg View File


BIN
src/assets/images/6.jpg View File


BIN
src/assets/images/7.jpg View File


BIN
src/assets/images/8-1.jpg View File


BIN
src/assets/images/8-2.jpg View File


BIN
src/assets/images/8.jpg View File


BIN
src/assets/images/9.jpg View File


+ 0
- 40
src/components/HelloWorld.vue View File

@@ -1,40 +0,0 @@
1
-<script setup>
2
-import { ref } from 'vue'
3
-
4
-defineProps({
5
-  msg: String
6
-})
7
-
8
-const count = ref(0)
9
-</script>
10
-
11
-<template>
12
-  <h1>{{ msg }}</h1>
13
-
14
-  <div class="card">
15
-    <button type="button" @click="count++">count is {{ count }}</button>
16
-    <p>
17
-      Edit
18
-      <code>components/HelloWorld.vue</code> to test HMR
19
-    </p>
20
-  </div>
21
-
22
-  <p>
23
-    Check out
24
-    <a href="https://vuejs.org/guide/quick-start.html#local" target="_blank"
25
-      >create-vue</a
26
-    >, the official Vue + Vite starter
27
-  </p>
28
-  <p>
29
-    Install
30
-    <a href="https://github.com/johnsoncodehk/volar" target="_blank">Volar</a>
31
-    in your IDE for a better DX
32
-  </p>
33
-  <p class="read-the-docs">Click on the Vite and Vue logos to learn more</p>
34
-</template>
35
-
36
-<style scoped>
37
-.read-the-docs {
38
-  color: #888;
39
-}
40
-</style>

+ 21
- 0
src/components/Image.vue View File

@@ -0,0 +1,21 @@
1
+<template>
2
+  <img :src="resource.img.src" alt="">
3
+</template>
4
+
5
+<script setup>
6
+const props = defineProps({
7
+  resource: Object,
8
+  default: () => ({})
9
+})
10
+
11
+</script>
12
+
13
+<style lang="less" scoped>
14
+img {
15
+  display: block;
16
+  width: 100vw;
17
+  height: auto;
18
+  object-fit: contain;
19
+}
20
+</style>
21
+

+ 114
- 0
src/components/Loader.vue View File

@@ -0,0 +1,114 @@
1
+<template>
2
+  <div class="loader-wrapper" :class="{ loaded: !loading }">
3
+    <div class="loader">
4
+      <P class="tip">{{tip}}</P>
5
+      <p class="percent">{{percent}}%</p>
6
+      <p class="progress">
7
+        <div :style="progressStyle"></div>
8
+      </p>
9
+    </div>
10
+    <div class="loader-section section-top"></div>
11
+    <div class="loader-section section-bottom"></div>    
12
+  </div>
13
+</template>
14
+
15
+<script setup>
16
+import { computed } from "vue"
17
+
18
+const props = defineProps({
19
+  tip: {
20
+    type: String,
21
+    default: 'loading...'
22
+  },
23
+  percent: {
24
+    type: Number,
25
+    default: 0
26
+  },
27
+  loading: Boolean
28
+})
29
+
30
+const progressStyle = computed(() => ({ width: `${props.percent}%` }))
31
+
32
+</script>
33
+
34
+
35
+<style lang="less" scoped>
36
+
37
+@bg-color: #D7DDD3;
38
+@tip-color: #933D33;
39
+@text-color: #fff;
40
+
41
+.loader-wrapper {
42
+  position: fixed;
43
+  top: 0;
44
+  left: 0;
45
+  width: 100%;
46
+  height: 100%;
47
+  z-index: 10;
48
+  overflow: hidden;
49
+
50
+  .loader {
51
+    display: block;
52
+    position: relative;
53
+    z-index: 11;
54
+    color: @tip-color;
55
+    font-size: 2em;
56
+    text-align: center;
57
+    padding-top: 200px;
58
+
59
+    .percent {
60
+      color: @text-color;
61
+    }
62
+
63
+    .progress {
64
+      box-sizing: border-box;
65
+      padding: 0 2em;
66
+
67
+      & > div {
68
+        width: 0%;
69
+        height: 2px;
70
+        background: @tip-color;
71
+        border-radius: 50%;
72
+      }
73
+    }
74
+  }
75
+
76
+  .loader-section {
77
+    position: fixed;
78
+    left: 0;
79
+    width: 100%;
80
+    height: 51%;
81
+    background: @bg-color;
82
+    z-index: 10;
83
+  }
84
+  .section-top {
85
+    top: 0;
86
+  }
87
+
88
+  .section-bottom {
89
+    bottom: 0;
90
+  }
91
+
92
+  &.loaded {
93
+    visibility: hidden;
94
+    transform: translateX(-100%);
95
+    transition: all 0.3s 1s ease-out;
96
+
97
+    .loader {
98
+      opacity: 0;
99
+      transition: all 0.3s ease-out;
100
+    }
101
+
102
+    .section-top {
103
+      transform: translateY(-100%);
104
+      transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
105
+    }
106
+
107
+    .section-bottom {
108
+      transform: translateY(100%);
109
+      transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
110
+    }
111
+  }
112
+}
113
+
114
+</style>

+ 5
- 75
src/style.css View File

@@ -1,13 +1,8 @@
1 1
 :root {
2
-  font-family: Inter, Avenir, Helvetica, Arial, sans-serif;
3 2
   font-size: 16px;
4 3
   line-height: 24px;
5 4
   font-weight: 400;
6 5
 
7
-  color-scheme: light dark;
8
-  color: rgba(255, 255, 255, 0.87);
9
-  background-color: #242424;
10
-
11 6
   font-synthesis: none;
12 7
   text-rendering: optimizeLegibility;
13 8
   -webkit-font-smoothing: antialiased;
@@ -15,76 +10,11 @@
15 10
   -webkit-text-size-adjust: 100%;
16 11
 }
17 12
 
18
-a {
19
-  font-weight: 500;
20
-  color: #646cff;
21
-  text-decoration: inherit;
22
-}
23
-a:hover {
24
-  color: #535bf2;
25
-}
26
-
27
-a {
28
-  font-weight: 500;
29
-  color: #646cff;
30
-  text-decoration: inherit;
31
-}
32
-a:hover {
33
-  color: #535bf2;
34
-}
35
-
36
-body {
13
+html, body, #app {
37 14
   margin: 0;
38
-  display: flex;
39
-  place-items: center;
40
-  min-width: 320px;
41
-  min-height: 100vh;
42
-}
43
-
44
-h1 {
45
-  font-size: 3.2em;
46
-  line-height: 1.1;
15
+  height: 100%;
47 16
 }
48 17
 
49
-button {
50
-  border-radius: 8px;
51
-  border: 1px solid transparent;
52
-  padding: 0.6em 1.2em;
53
-  font-size: 1em;
54
-  font-weight: 500;
55
-  font-family: inherit;
56
-  background-color: #1a1a1a;
57
-  cursor: pointer;
58
-  transition: border-color 0.25s;
59
-}
60
-button:hover {
61
-  border-color: #646cff;
62
-}
63
-button:focus,
64
-button:focus-visible {
65
-  outline: 4px auto -webkit-focus-ring-color;
66
-}
67
-
68
-.card {
69
-  padding: 2em;
70
-}
71
-
72
-#app {
73
-  max-width: 1280px;
74
-  margin: 0 auto;
75
-  padding: 2rem;
76
-  text-align: center;
77
-}
78
-
79
-@media (prefers-color-scheme: light) {
80
-  :root {
81
-    color: #213547;
82
-    background-color: #ffffff;
83
-  }
84
-  a:hover {
85
-    color: #747bff;
86
-  }
87
-  button {
88
-    background-color: #f9f9f9;
89
-  }
90
-}
18
+img {
19
+  border: none;
20
+}

+ 24
- 0
src/utils/preload.js View File

@@ -0,0 +1,24 @@
1
+import { resources } from "./resources";
2
+
3
+export function preload(onProgress) {
4
+  return new Promise((resolve, reject) => {
5
+    const total = resources.length;
6
+    let cursor = 0;
7
+
8
+    const callback = () => {
9
+      cursor += 1;
10
+      onProgress(cursor / total);
11
+      if (cursor >= total) {
12
+        resolve(resources)
13
+      }
14
+    }
15
+
16
+    for (let res of resources) {
17
+      const img = document.createElement('img');
18
+      img.onload = callback;
19
+      img.onerror = callback;
20
+      img.src = res.image;
21
+      res.img = img;
22
+    }
23
+  })
24
+}

+ 137
- 0
src/utils/resources.js View File

@@ -0,0 +1,137 @@
1
+
2
+import img1 from '@/assets/images/1.jpg';
3
+import img2 from '@/assets/images/2.jpg';
4
+import img3 from '@/assets/images/3.jpg';
5
+import img4 from '@/assets/images/4.jpg';
6
+import img5_1 from '@/assets/images/5-1.jpg';
7
+import img5_2 from '@/assets/images/5-2.jpg';
8
+import img5 from '@/assets/images/5.jpg';
9
+import img6 from '@/assets/images/6.jpg';
10
+import img7 from '@/assets/images/7.jpg';
11
+import img8_1 from '@/assets/images/8-1.jpg';
12
+import img8_2 from '@/assets/images/8-2.jpg';
13
+import img8 from '@/assets/images/8.jpg';
14
+import img9 from '@/assets/images/9.jpg';
15
+import img10_1 from '@/assets/images/10-1.jpg';
16
+import img10_2 from '@/assets/images/10-2.jpg';
17
+import img10 from '@/assets/images/10.jpg';
18
+import img11 from '@/assets/images/11.jpg';
19
+import img12 from '@/assets/images/12.jpg';
20
+import img13 from '@/assets/images/13.jpg';
21
+import img14 from '@/assets/images/14.jpg';
22
+import img15_1 from '@/assets/images/15-1.jpg';
23
+import img15_2 from '@/assets/images/15-2.jpg';
24
+import img15 from '@/assets/images/15.jpg';
25
+import img16 from '@/assets/images/16.jpg';
26
+import img17 from '@/assets/images/17.jpg';
27
+import img18 from '@/assets/images/18.jpg';
28
+import img19_1 from '@/assets/images/19-1.jpg';
29
+import img19_2 from '@/assets/images/19-2.jpg';
30
+import img19 from '@/assets/images/19.jpg';
31
+import img20 from '@/assets/images/20.jpg';
32
+import img21 from '@/assets/images/21.jpg';
33
+import img22 from '@/assets/images/22.jpg';
34
+import img23 from '@/assets/images/23.jpg';
35
+
36
+// 预加载资源
37
+export const resources = [
38
+  { 
39
+    image: img1,
40
+  },
41
+  { 
42
+    image: img2,
43
+  },
44
+  { 
45
+    image: img3,
46
+  },
47
+  { 
48
+    image: img4,
49
+  },
50
+  { 
51
+    image: img5_1,
52
+  },
53
+  { 
54
+    image: img5_2,
55
+  },
56
+  { 
57
+    image: img5,
58
+  },
59
+  { 
60
+    image: img6,
61
+  },
62
+  { 
63
+    image: img7,
64
+  },
65
+  { 
66
+    image: img8_1,
67
+  },
68
+  { 
69
+    image: img8_2,
70
+  },
71
+  { 
72
+    image: img8,
73
+  },
74
+  { 
75
+    image: img9,
76
+  },
77
+  { 
78
+    image: img10_1,
79
+  },
80
+  { 
81
+    image: img10_2,
82
+  },
83
+  { 
84
+    image: img10,
85
+  },
86
+  { 
87
+    image: img11,
88
+  },
89
+  { 
90
+    image: img12,
91
+  },
92
+  { 
93
+    image: img13,
94
+  },
95
+  { 
96
+    image: img14,
97
+  },
98
+  { 
99
+    image: img15_1,
100
+  },
101
+  { 
102
+    image: img15_2,
103
+  },
104
+  { 
105
+    image: img15,
106
+  },
107
+  { 
108
+    image: img16,
109
+  },
110
+  { 
111
+    image: img17,
112
+  },
113
+  { 
114
+    image: img18,
115
+  },
116
+  { 
117
+    image: img19_1,
118
+  },
119
+  { 
120
+    image: img19_2,
121
+  },
122
+  { 
123
+    image: img19,
124
+  },
125
+  { 
126
+    image: img20,
127
+  },
128
+  { 
129
+    image: img21,
130
+  },
131
+  { 
132
+    image: img22,
133
+  },
134
+  { 
135
+    image: img23,
136
+  },
137
+]

+ 7
- 1
vite.config.js View File

@@ -1,7 +1,13 @@
1 1
 import { defineConfig } from 'vite'
2 2
 import vue from '@vitejs/plugin-vue'
3
+// import path from "path";
3 4
 
4 5
 // https://vitejs.dev/config/
5 6
 export default defineConfig({
6
-  plugins: [vue()]
7
+  plugins: [vue()],
8
+  resolve:{
9
+    alias:{
10
+      '@':'/src/',      //格式一定要写对喽不然没有代码提示或者报错
11
+    }
12
+  }
7 13
 })