From 2ab2466f3dd9254d89a3fa060f06c16a1a4070fb Mon Sep 17 00:00:00 2001
From: "X1627315083@163.com" <1627315083@qq.com>
Date: Thu, 14 May 2026 13:08:29 +0800
Subject: [PATCH] fix
---
package.json | 1 +
pnpm-lock.yaml | 206 +++++++++++++++++++++++++++++---------
src/App.vue | 20 +++-
src/assets/css/style.css | 151 ++++++++++++++++++++++++++++
src/assets/css/style.less | 180 +++++++++++++++++++++++++++++++++
src/components/footer.vue | 25 +++++
src/components/header.vue | 25 +++++
src/routes.ts | 45 +++++----
vite.config.ts | 13 ++-
9 files changed, 593 insertions(+), 73 deletions(-)
create mode 100644 src/assets/css/style.css
create mode 100644 src/assets/css/style.less
create mode 100644 src/components/footer.vue
create mode 100644 src/components/header.vue
diff --git a/package.json b/package.json
index 70819f4..541ea74 100644
--- a/package.json
+++ b/package.json
@@ -10,6 +10,7 @@
},
"dependencies": {
"@unhead/vue": "^2.1.15",
+ "less": "^4.6.4",
"vite-ssg": "^28.3.0",
"vue": "^3.5.34",
"vue-router": "^4.6.4"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index eaef8d5..b381d79 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -11,9 +11,12 @@ importers:
'@unhead/vue':
specifier: ^2.1.15
version: 2.1.15(vue@3.5.34(typescript@6.0.3))
+ less:
+ specifier: ^4.6.4
+ version: 4.6.4
vite-ssg:
specifier: ^28.3.0
- version: 28.3.0(unhead@3.1.0(vite@8.0.12(@types/node@24.12.4)(terser@5.47.1)))(vite@8.0.12(@types/node@24.12.4)(terser@5.47.1))(vue-router@4.6.4(vue@3.5.34(typescript@6.0.3)))(vue@3.5.34(typescript@6.0.3))
+ version: 28.3.0(unhead@2.1.15)(vite@8.0.12(@types/node@24.12.4)(less@4.6.4)(terser@5.47.1))(vue-router@4.6.4(vue@3.5.34(typescript@6.0.3)))(vue@3.5.34(typescript@6.0.3))
vue:
specifier: ^3.5.34
version: 3.5.34(typescript@6.0.3)
@@ -26,7 +29,7 @@ importers:
version: 24.12.4
'@vitejs/plugin-vue':
specifier: ^6.0.6
- version: 6.0.6(vite@8.0.12(@types/node@24.12.4)(terser@5.47.1))(vue@3.5.34(typescript@6.0.3))
+ version: 6.0.6(vite@8.0.12(@types/node@24.12.4)(less@4.6.4)(terser@5.47.1))(vue@3.5.34(typescript@6.0.3))
'@vue/tsconfig':
specifier: ^0.9.1
version: 0.9.1(typescript@6.0.3)(vue@3.5.34(typescript@6.0.3))
@@ -35,7 +38,7 @@ importers:
version: 6.0.3
vite:
specifier: ^8.0.12
- version: 8.0.12(@types/node@24.12.4)(terser@5.47.1)
+ version: 8.0.12(@types/node@24.12.4)(less@4.6.4)(terser@5.47.1)
vite-ssg-sitemap:
specifier: ^0.10.0
version: 0.10.0
@@ -140,9 +143,6 @@ packages:
'@jridgewell/gen-mapping@0.3.13':
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
- '@jridgewell/remapping@2.3.5':
- resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
-
'@jridgewell/resolve-uri@3.1.2':
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
engines: {node: '>=6.0.0'}
@@ -200,36 +200,42 @@ packages:
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@rolldown/binding-linux-arm64-musl@1.0.0':
resolution: {integrity: sha512-EIVjy2cgd7uuMMo94FVkBp7F6DhcZAUwNURkSG3RwUmvAXR6s0ISxM81U+IydcZByPG0pZIHsf1b6kTxoFDgJA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@rolldown/binding-linux-ppc64-gnu@1.0.0':
resolution: {integrity: sha512-JEwwOPcwTLAcpDQlqSmjEmfs63xJnSiUNIGvLcDLUHCWK4XowpS/7c7tUsUH6uT/ct6bMUTdXKfI8967FYj6mg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ppc64]
os: [linux]
+ libc: [glibc]
'@rolldown/binding-linux-s390x-gnu@1.0.0':
resolution: {integrity: sha512-0wjCFhLrihtAubnT9iA0N++0pSV0z5Hg7tNGdNJ4RFaINceHadoF+kiFGyY1qSSNVIAZtLotG8Ju1bgDPkjnFA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [s390x]
os: [linux]
+ libc: [glibc]
'@rolldown/binding-linux-x64-gnu@1.0.0':
resolution: {integrity: sha512-Dfn7iak9BcMMePxcoJfpSbWqnEyrp/dRF63/8qW/eHBdOZov6x5aShLLEYGYdIeSJ6vMLK/XCVB+lGIxm41bQA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@rolldown/binding-linux-x64-musl@1.0.0':
resolution: {integrity: sha512-5/utzzDmD/pD/bmuaUcbTf/sZYy0aztwIVlfpoW1fTjCZ0BaPOMVWGZL1zvgxyi7ZIVYWlxKONHmSbHuiOh8Jw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@rolldown/binding-openharmony-arm64@1.0.0':
resolution: {integrity: sha512-ouJs8VcUomfLfpbUECqFMRqdV4x6aeAK3MA4m6vTrJJjKyWTV5KnxZx7Jd9G+GlDaQQxubcba00x16OyJ1meig==}
@@ -378,6 +384,10 @@ packages:
commander@2.20.3:
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
+ copy-anything@3.0.5:
+ resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==}
+ engines: {node: '>=12.13'}
+
css-tree@3.2.1:
resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==}
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
@@ -424,6 +434,10 @@ packages:
resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==}
engines: {node: '>=20.19.0'}
+ errno@0.1.8:
+ resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
+ hasBin: true
+
estree-walker@2.0.2:
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
@@ -441,6 +455,9 @@ packages:
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
+ graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+
hookable@6.1.1:
resolution: {integrity: sha512-U9LYDy1CwhMCnprUfeAZWZGByVbhd54hwepegYTK7Pi5NvqEj63ifz5z+xukznehT7i6NIZRu89Ay1AZmRsLEQ==}
@@ -464,9 +481,22 @@ packages:
resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==}
engines: {node: '>= 14'}
+ iconv-lite@0.6.3:
+ resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
+ engines: {node: '>=0.10.0'}
+
+ image-size@0.5.5:
+ resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+
is-potential-custom-element-name@1.0.1:
resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
+ is-what@4.1.16:
+ resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
+ engines: {node: '>=12.13'}
+
jsdom@28.1.0:
resolution: {integrity: sha512-0+MoQNYyr2rBHqO1xilltfDjV9G7ymYGlAUazgcDLQaUf8JDHbuGwsxN6U9qWaElZ4w1B2r7yEGIL3GdeW3Rug==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
@@ -476,6 +506,11 @@ packages:
canvas:
optional: true
+ less@4.6.4:
+ resolution: {integrity: sha512-OJmO5+HxZLLw0RLzkqaNHzcgEAQG7C0y3aMbwtCzIUFZsLMNNq/1IdAdHEycQ58CwUO3jPTHmoN+tE5I7FQxNg==}
+ engines: {node: '>=18'}
+ hasBin: true
+
lightningcss-android-arm64@1.32.0:
resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==}
engines: {node: '>= 12.0.0'}
@@ -511,24 +546,28 @@ packages:
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
lightningcss-linux-arm64-musl@1.32.0:
resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
+ libc: [musl]
lightningcss-linux-x64-gnu@1.32.0:
resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
+ libc: [glibc]
lightningcss-linux-x64-musl@1.32.0:
resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
+ libc: [musl]
lightningcss-win32-arm64-msvc@1.32.0:
resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==}
@@ -556,9 +595,18 @@ packages:
magic-string@0.30.21:
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
+ make-dir@2.1.0:
+ resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
+ engines: {node: '>=6'}
+
mdn-data@2.27.1:
resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==}
+ mime@1.6.0:
+ resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
@@ -570,12 +618,21 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
+ needle@3.5.0:
+ resolution: {integrity: sha512-jaQyPKKk2YokHrEg+vFDYxXIHTCBgiZwSHOoVx/8V3GIBS8/VN6NdVRmg8q1ERtPkMvmOvebsgga4sAj5hls/w==}
+ engines: {node: '>= 4.4.x'}
+ hasBin: true
+
no-case@3.0.4:
resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
param-case@3.0.4:
resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==}
+ parse-node-version@1.0.1:
+ resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==}
+ engines: {node: '>= 0.10'}
+
parse5@8.0.1:
resolution: {integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==}
@@ -592,10 +649,17 @@ packages:
resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==}
engines: {node: '>=12'}
+ pify@4.0.1:
+ resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
+ engines: {node: '>=6'}
+
postcss@8.5.14:
resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==}
engines: {node: ^10 || ^12 || >=14}
+ prr@1.0.1:
+ resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==}
+
punycode@2.3.1:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
@@ -613,10 +677,21 @@ packages:
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
+ safer-buffer@2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+
+ sax@1.6.0:
+ resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==}
+ engines: {node: '>=11.0.0'}
+
saxes@6.0.0:
resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==}
engines: {node: '>=v12.22.7'}
+ semver@5.7.2:
+ resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
+ hasBin: true
+
source-map-js@1.2.1:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
@@ -673,18 +748,6 @@ packages:
unhead@2.1.15:
resolution: {integrity: sha512-MCt5T90mCWyr3Z6pUCdM9lVRXoMoVBlL7z7U4CYVIiaDiuzad/UCfLuMqz5MeNmpZUgoBCQnrucJimU7EZR+XA==}
- unhead@3.1.0:
- resolution: {integrity: sha512-SH1PAjAMspLIoBjAjE/R8hty2NYo7YcIrdu5I+PVfiW4QmmwEG4pgoiKG0MCs6WRSwiatzeha+4lqSqvHW9PEg==}
- peerDependencies:
- vite: '>=6.4.2'
- peerDependenciesMeta:
- vite:
- optional: true
-
- unplugin@3.0.0:
- resolution: {integrity: sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg==}
- engines: {node: ^20.19.0 || >=22.12.0}
-
vite-ssg-sitemap@0.10.0:
resolution: {integrity: sha512-OIja4fqUMcvWl5+bxQARe3LgzWTd8U/dWHWgrqiC7vv3AmTn0YnhMNUAimQ0M/0Aa9myEIAGLV0yKlYbKP8BJQ==}
@@ -779,9 +842,6 @@ packages:
resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==}
engines: {node: '>=20'}
- webpack-virtual-modules@0.6.2:
- resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==}
-
whatwg-mimetype@5.0.0:
resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==}
engines: {node: '>=20'}
@@ -885,11 +945,6 @@ snapshots:
'@jridgewell/sourcemap-codec': 1.5.5
'@jridgewell/trace-mapping': 0.3.31
- '@jridgewell/remapping@2.3.5':
- dependencies:
- '@jridgewell/gen-mapping': 0.3.13
- '@jridgewell/trace-mapping': 0.3.31
-
'@jridgewell/resolve-uri@3.1.2': {}
'@jridgewell/source-map@0.3.11':
@@ -975,9 +1030,9 @@ snapshots:
dependencies:
undici-types: 7.16.0
- '@unhead/dom@2.1.15(unhead@3.1.0(vite@8.0.12(@types/node@24.12.4)(terser@5.47.1)))':
+ '@unhead/dom@2.1.15(unhead@2.1.15)':
dependencies:
- unhead: 3.1.0(vite@8.0.12(@types/node@24.12.4)(terser@5.47.1))
+ unhead: 2.1.15
'@unhead/vue@2.1.15(vue@3.5.34(typescript@6.0.3))':
dependencies:
@@ -985,10 +1040,10 @@ snapshots:
unhead: 2.1.15
vue: 3.5.34(typescript@6.0.3)
- '@vitejs/plugin-vue@6.0.6(vite@8.0.12(@types/node@24.12.4)(terser@5.47.1))(vue@3.5.34(typescript@6.0.3))':
+ '@vitejs/plugin-vue@6.0.6(vite@8.0.12(@types/node@24.12.4)(less@4.6.4)(terser@5.47.1))(vue@3.5.34(typescript@6.0.3))':
dependencies:
'@rolldown/pluginutils': 1.0.0-rc.13
- vite: 8.0.12(@types/node@24.12.4)(terser@5.47.1)
+ vite: 8.0.12(@types/node@24.12.4)(less@4.6.4)(terser@5.47.1)
vue: 3.5.34(typescript@6.0.3)
'@volar/language-core@2.4.28':
@@ -1103,6 +1158,10 @@ snapshots:
commander@2.20.3: {}
+ copy-anything@3.0.5:
+ dependencies:
+ is-what: 4.1.16
+
css-tree@3.2.1:
dependencies:
mdn-data: 2.27.1
@@ -1143,6 +1202,11 @@ snapshots:
entities@8.0.0: {}
+ errno@0.1.8:
+ dependencies:
+ prr: 1.0.1
+ optional: true
+
estree-walker@2.0.2: {}
fdir@6.5.0(picomatch@4.0.4):
@@ -1152,6 +1216,9 @@ snapshots:
fsevents@2.3.3:
optional: true
+ graceful-fs@4.2.11:
+ optional: true
+
hookable@6.1.1: {}
html-encoding-sniffer@6.0.0:
@@ -1188,8 +1255,18 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ iconv-lite@0.6.3:
+ dependencies:
+ safer-buffer: 2.1.2
+ optional: true
+
+ image-size@0.5.5:
+ optional: true
+
is-potential-custom-element-name@1.0.1: {}
+ is-what@4.1.16: {}
+
jsdom@28.1.0:
dependencies:
'@acemir/cssom': 0.9.31
@@ -1217,6 +1294,19 @@ snapshots:
- '@noble/hashes'
- supports-color
+ less@4.6.4:
+ dependencies:
+ copy-anything: 3.0.5
+ parse-node-version: 1.0.1
+ optionalDependencies:
+ errno: 0.1.8
+ graceful-fs: 4.2.11
+ image-size: 0.5.5
+ make-dir: 2.1.0
+ mime: 1.6.0
+ needle: 3.5.0
+ source-map: 0.6.1
+
lightningcss-android-arm64@1.32.0:
optional: true
@@ -1276,14 +1366,29 @@ snapshots:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
+ make-dir@2.1.0:
+ dependencies:
+ pify: 4.0.1
+ semver: 5.7.2
+ optional: true
+
mdn-data@2.27.1: {}
+ mime@1.6.0:
+ optional: true
+
ms@2.1.3: {}
muggle-string@0.4.1: {}
nanoid@3.3.12: {}
+ needle@3.5.0:
+ dependencies:
+ iconv-lite: 0.6.3
+ sax: 1.6.0
+ optional: true
+
no-case@3.0.4:
dependencies:
lower-case: 2.0.2
@@ -1294,6 +1399,8 @@ snapshots:
dot-case: 3.0.4
tslib: 2.8.1
+ parse-node-version@1.0.1: {}
+
parse5@8.0.1:
dependencies:
entities: 8.0.0
@@ -1309,12 +1416,18 @@ snapshots:
picomatch@4.0.4: {}
+ pify@4.0.1:
+ optional: true
+
postcss@8.5.14:
dependencies:
nanoid: 3.3.12
picocolors: 1.1.1
source-map-js: 1.2.1
+ prr@1.0.1:
+ optional: true
+
punycode@2.3.1: {}
relateurl@0.2.7: {}
@@ -1342,10 +1455,19 @@ snapshots:
'@rolldown/binding-win32-arm64-msvc': 1.0.0
'@rolldown/binding-win32-x64-msvc': 1.0.0
+ safer-buffer@2.1.2:
+ optional: true
+
+ sax@1.6.0:
+ optional: true
+
saxes@6.0.0:
dependencies:
xmlchars: 2.2.0
+ semver@5.7.2:
+ optional: true
+
source-map-js@1.2.1: {}
source-map-support@0.5.21:
@@ -1395,31 +1517,18 @@ snapshots:
dependencies:
hookable: 6.1.1
- unhead@3.1.0(vite@8.0.12(@types/node@24.12.4)(terser@5.47.1)):
- dependencies:
- hookable: 6.1.1
- unplugin: 3.0.0
- optionalDependencies:
- vite: 8.0.12(@types/node@24.12.4)(terser@5.47.1)
-
- unplugin@3.0.0:
- dependencies:
- '@jridgewell/remapping': 2.3.5
- picomatch: 4.0.4
- webpack-virtual-modules: 0.6.2
-
vite-ssg-sitemap@0.10.0: {}
- vite-ssg@28.3.0(unhead@3.1.0(vite@8.0.12(@types/node@24.12.4)(terser@5.47.1)))(vite@8.0.12(@types/node@24.12.4)(terser@5.47.1))(vue-router@4.6.4(vue@3.5.34(typescript@6.0.3)))(vue@3.5.34(typescript@6.0.3)):
+ vite-ssg@28.3.0(unhead@2.1.15)(vite@8.0.12(@types/node@24.12.4)(less@4.6.4)(terser@5.47.1))(vue-router@4.6.4(vue@3.5.34(typescript@6.0.3)))(vue@3.5.34(typescript@6.0.3)):
dependencies:
- '@unhead/dom': 2.1.15(unhead@3.1.0(vite@8.0.12(@types/node@24.12.4)(terser@5.47.1)))
+ '@unhead/dom': 2.1.15(unhead@2.1.15)
'@unhead/vue': 2.1.15(vue@3.5.34(typescript@6.0.3))
ansis: 4.3.0
cac: 6.7.14
html-minifier-terser: 7.2.0
html5parser: 2.0.2
jsdom: 28.1.0
- vite: 8.0.12(@types/node@24.12.4)(terser@5.47.1)
+ vite: 8.0.12(@types/node@24.12.4)(less@4.6.4)(terser@5.47.1)
vue: 3.5.34(typescript@6.0.3)
optionalDependencies:
vue-router: 4.6.4(vue@3.5.34(typescript@6.0.3))
@@ -1429,7 +1538,7 @@ snapshots:
- supports-color
- unhead
- vite@8.0.12(@types/node@24.12.4)(terser@5.47.1):
+ vite@8.0.12(@types/node@24.12.4)(less@4.6.4)(terser@5.47.1):
dependencies:
lightningcss: 1.32.0
picomatch: 4.0.4
@@ -1439,6 +1548,7 @@ snapshots:
optionalDependencies:
'@types/node': 24.12.4
fsevents: 2.3.3
+ less: 4.6.4
terser: 5.47.1
vscode-uri@3.1.0: {}
@@ -1470,8 +1580,6 @@ snapshots:
webidl-conversions@8.0.1: {}
- webpack-virtual-modules@0.6.2: {}
-
whatwg-mimetype@5.0.0: {}
whatwg-url@16.0.1:
diff --git a/src/App.vue b/src/App.vue
index 90c6c65..336ed26 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,9 +1,25 @@
+
+
+
diff --git a/src/assets/css/style.css b/src/assets/css/style.css
new file mode 100644
index 0000000..81beb9e
--- /dev/null
+++ b/src/assets/css/style.css
@@ -0,0 +1,151 @@
+body,
+html,
+div,
+ul,
+li,
+h1,
+h2,
+h3,
+p {
+ margin: 0;
+ padding: 0;
+}
+* {
+ box-sizing: border-box;
+}
+html,
+body,
+#app {
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+ font-family: 'KaiseiOpti-Medium';
+ color: #232323;
+}
+@keyframes loading {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+@keyframes opacity-in {
+ 0% {
+ opacity: 0;
+ }
+ 100% {
+ opacity: 1;
+ }
+}
+@keyframes z-index-10to-1 {
+ 0% {
+ z-index: 10;
+ }
+ 100% {
+ z-index: -1;
+ }
+}
+.flex {
+ display: flex;
+}
+.flex-center {
+ justify-content: center;
+ align-items: center;
+}
+.flex-1 {
+ flex: 1;
+}
+.flex-col {
+ flex-direction: column;
+}
+.align-center {
+ align-items: center;
+}
+.space-between {
+ justify-content: space-between;
+}
+.justify-center {
+ justify-content: center;
+}
+.relative {
+ position: relative;
+}
+.el-overlay {
+ --el-color-primary: #ff7a51;
+ --el-color-primary-light-3: #ffa785;
+ --el-color-primary-light-5: #ffc2aa;
+ --el-color-primary-light-7: #ffddcf;
+ --el-color-primary-light-8: #ffe8df;
+ --el-color-primary-light-9: #fff2ec;
+ --el-color-primary-dark-2: #cc6241;
+}
+.el-select,
+.el-popper {
+ --el-color-primary: #6c6c6c;
+ /* 主灰色 */
+ --el-color-primary-light-3: #8a8a8a;
+ /* 较浅的灰色(混合20%白) */
+ --el-color-primary-light-5: #a8a8a8;
+ /* 更浅的灰色(混合33%白) */
+ --el-color-primary-light-7: #c6c6c6;
+ /* 浅灰色(混合47%白) */
+ --el-color-primary-light-8: #d4d4d4;
+ /* 很浅的灰色(混合53%白) */
+ --el-color-primary-light-9: #e3e3e3;
+ /* 极浅的灰色(混合60%白) */
+ --el-color-primary-dark-2: #565656;
+ /* 深灰色(加深20%) */
+}
+.mini-scrollbar {
+ --mini-scrollbar-width: 0.4rem;
+}
+.mini-scrollbar::-webkit-scrollbar {
+ width: var(--mini-scrollbar-width);
+}
+.mini-scrollbar::-webkit-scrollbar-thumb {
+ border-radius: 0.4rem;
+ background: rgba(0, 0, 0, 0.2);
+}
+.mosaic-bg {
+ --mosaic-bg-size: 1rem;
+ --mosaic-bg-color1: #efefef;
+ --mosaic-bg-color2: #fff;
+ background-image: repeating-conic-gradient(var(--mosaic-bg-color1) 0% 25%, var(--mosaic-bg-color2) 0% 50%);
+ background-repeat: repeat;
+ background-position: 50% 50%;
+ background-size: var(--mosaic-bg-size) var(--mosaic-bg-size);
+}
+button[custom],
+button[custom="white"] {
+ min-width: 19.4rem;
+ height: 5rem;
+ padding: 0 1rem;
+ border-radius: 0;
+ font-family: KaiseiOpti-Bold;
+ font-size: var(--button-font-size, 2rem);
+ color: var(--button-color, #232323);
+ background: var(--button-bgcolor, #fff);
+ border: var(--button-border, none);
+ cursor: pointer;
+}
+button[custom]:active,
+button[custom="white"]:active {
+ background: var(--button-click-bgcolor, #e4e4e4);
+ color: var(--button-click-color, #232323);
+}
+button[custom="black"] {
+ --button-bgcolor: #232323;
+ --button-color: #fff;
+ --button-click-bgcolor: #333;
+ --button-click-color: #fff;
+ --button-font-size: 1.6rem;
+}
+button[custom="black-box"] {
+ --button-bgcolor: transparent;
+ --button-color: #232323;
+ --button-border: 0.2rem solid #979797;
+ --button-click-bgcolor: #979797;
+ --button-click-color: #fff;
+ --button-font-size: 1.6rem;
+}
diff --git a/src/assets/css/style.less b/src/assets/css/style.less
new file mode 100644
index 0000000..23f75a9
--- /dev/null
+++ b/src/assets/css/style.less
@@ -0,0 +1,180 @@
+body,
+html,
+div,
+ul,
+li,
+h1,
+h2,
+h3,
+p {
+ margin: 0;
+ padding: 0;
+}
+
+* {
+ box-sizing: border-box;
+}
+
+html,
+body,
+#app {
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+ font-family: 'KaiseiOpti-Medium';
+ color: #232323;
+}
+
+@keyframes loading {
+ 0% {
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+
+@keyframes opacity-in {
+ 0% {
+ opacity: 0;
+ }
+
+ 100% {
+ opacity: 1;
+ }
+}
+
+@keyframes z-index-10to-1 {
+ 0% {
+ z-index: 10;
+ }
+
+ 100% {
+ z-index: -1;
+ }
+}
+
+.flex {
+ display: flex;
+}
+
+.flex-center {
+ justify-content: center;
+ align-items: center;
+}
+
+.flex-1 {
+ flex: 1;
+}
+
+.flex-col {
+ flex-direction: column;
+}
+
+.align-center {
+ align-items: center;
+}
+
+.space-between {
+ justify-content: space-between;
+}
+
+.justify-center {
+ justify-content: center;
+}
+
+.relative {
+ position: relative;
+}
+
+.el-overlay {
+ --el-color-primary: #ff7a51; // 主橙红色
+ --el-color-primary-light-3: #ffa785; // 较浅的橙红(混合20%白)
+ --el-color-primary-light-5: #ffc2aa; // 更浅的橙红(混合33%白)
+ --el-color-primary-light-7: #ffddcf; // 浅橙红(混合47%白)
+ --el-color-primary-light-8: #ffe8df; // 很浅的橙红(混合53%白)
+ --el-color-primary-light-9: #fff2ec; // 极浅的橙红(混合60%白)
+ --el-color-primary-dark-2: #cc6241; // 深橙红(加深20%)
+}
+
+.el-select,
+.el-popper {
+ --el-color-primary: #6c6c6c;
+ /* 主灰色 */
+ --el-color-primary-light-3: #8a8a8a;
+ /* 较浅的灰色(混合20%白) */
+ --el-color-primary-light-5: #a8a8a8;
+ /* 更浅的灰色(混合33%白) */
+ --el-color-primary-light-7: #c6c6c6;
+ /* 浅灰色(混合47%白) */
+ --el-color-primary-light-8: #d4d4d4;
+ /* 很浅的灰色(混合53%白) */
+ --el-color-primary-light-9: #e3e3e3;
+ /* 极浅的灰色(混合60%白) */
+ --el-color-primary-dark-2: #565656;
+ /* 深灰色(加深20%) */
+}
+
+
+// 迷你滚动条
+.mini-scrollbar {
+ --mini-scrollbar-width: 0.4rem;
+
+ &::-webkit-scrollbar {
+ width: var(--mini-scrollbar-width);
+ }
+
+ &::-webkit-scrollbar-thumb {
+ border-radius: 0.4rem;
+ background: rgba(0, 0, 0, 0.2);
+ }
+}
+
+.mosaic-bg {
+ --mosaic-bg-size: 1rem;
+ --mosaic-bg-color1: #efefef;
+ --mosaic-bg-color2: #fff;
+ background-image: repeating-conic-gradient(var(--mosaic-bg-color1) 0% 25%, var(--mosaic-bg-color2) 0% 50%);
+ background-repeat: repeat;
+ background-position: 50% 50%;
+ background-size: var(--mosaic-bg-size) var(--mosaic-bg-size);
+}
+
+
+// 自定义button按钮
+button[custom],
+button[custom="white"] {
+ min-width: 19.4rem;
+ height: 5rem;
+ padding: 0 1rem;
+ border-radius: 0;
+ font-family: KaiseiOpti-Bold;
+ font-size: var(--button-font-size, 2rem);
+ color: var(--button-color, #232323);
+ background: var(--button-bgcolor, #fff);
+ border: var(--button-border, none);
+ cursor: pointer;
+
+ &:active {
+ background: var(--button-click-bgcolor, #e4e4e4);
+ color: var(--button-click-color, #232323);
+ }
+}
+
+button[custom="black"] {
+ --button-bgcolor: #232323;
+ --button-color: #fff;
+ --button-click-bgcolor: #333;
+ --button-click-color: #fff;
+ --button-font-size: 1.6rem;
+}
+
+button[custom="black-box"] {
+ --button-bgcolor: transparent;
+ --button-color: #232323;
+ --button-border: 0.2rem solid #979797;
+ --button-click-bgcolor: #979797;
+ --button-click-color: #fff;
+ --button-font-size: 1.6rem;
+}
\ No newline at end of file
diff --git a/src/components/footer.vue b/src/components/footer.vue
new file mode 100644
index 0000000..bb55661
--- /dev/null
+++ b/src/components/footer.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/header.vue b/src/components/header.vue
new file mode 100644
index 0000000..bb55661
--- /dev/null
+++ b/src/components/header.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/routes.ts b/src/routes.ts
index b2192ee..50ec043 100644
--- a/src/routes.ts
+++ b/src/routes.ts
@@ -5,24 +5,29 @@ import HomeView from './pages/HomeView.vue'
import ProductsView from './pages/ProductsView.vue'
export const routes: RouteRecordRaw[] = [
- {
- path: '/',
- name: 'home',
- component: HomeView,
- },
- {
- path: '/about',
- name: 'about',
- component: AboutView,
- },
- {
- path: '/products',
- name: 'products',
- component: ProductsView,
- },
- {
- path: '/contact',
- name: 'contact',
- component: ContactView,
- },
+ {
+ path: '/:lang?',
+ children: [
+ {
+ path: '',
+ component: HomeView,
+ alias: ['/:lang?', '/:lang?/home'],
+
+ },
+ {
+ path: 'about',
+ component: AboutView,
+ },
+ {
+ path: 'products',
+ name: 'products',
+ component: ProductsView,
+ },
+ {
+ path: 'contact',
+ name: 'contact',
+ component: ContactView,
+ },
+ ],
+ },
]
diff --git a/vite.config.ts b/vite.config.ts
index 0b2b8fe..01fba58 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -3,11 +3,14 @@ import type { ViteSSGOptions } from 'vite-ssg'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import generateSitemap from 'vite-ssg-sitemap'
+import { fileURLToPath, URL } from 'node:url'
// https://vite.dev/config/
const config = {
base: '/',
- plugins: [vue()],
+ plugins: [vue()
+
+ ],
ssgOptions: {
dirStyle: 'nested',
script: 'defer',
@@ -21,7 +24,13 @@ const config = {
outDir: 'dist'
})
}
- }
+ },
+ resolve: {
+ alias: {
+ '@': fileURLToPath(new URL('./src', import.meta.url)),
+ _c: fileURLToPath(new URL('./src/components', import.meta.url))
+ }
+ },
} satisfies UserConfig & { ssgOptions: ViteSSGOptions }
export default defineConfig(config)