update
@ -1,5 +1,28 @@
|
||||
// @ts-check
|
||||
import { defineConfig } from 'astro/config';
|
||||
import node from '@astrojs/node';
|
||||
|
||||
// https://astro.build/config
|
||||
export default defineConfig({});
|
||||
export default defineConfig({
|
||||
output: 'server',
|
||||
adapter: node({
|
||||
mode: 'standalone',
|
||||
}),
|
||||
build: {
|
||||
format: 'file',
|
||||
},
|
||||
server: {
|
||||
port:4323,
|
||||
host: '0.0.0.0',
|
||||
},
|
||||
redirects: {
|
||||
'/index': {
|
||||
status: 301, // 永久重定向
|
||||
destination: '/',
|
||||
},
|
||||
'/index.html': {
|
||||
status: 301, // 永久重定向
|
||||
destination: '/',
|
||||
},
|
||||
},
|
||||
});
|
||||
|
188
package-lock.json
generated
@ -8,6 +8,7 @@
|
||||
"name": "lanyu",
|
||||
"version": "0.0.1",
|
||||
"dependencies": {
|
||||
"@astrojs/node": "^9.4.0",
|
||||
"astro": "^5.12.9"
|
||||
}
|
||||
},
|
||||
@ -52,6 +53,20 @@
|
||||
"vfile": "^6.0.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@astrojs/node": {
|
||||
"version": "9.4.0",
|
||||
"resolved": "https://registry.npmmirror.com/@astrojs/node/-/node-9.4.0.tgz",
|
||||
"integrity": "sha512-Gxs0iVUvOmQmK+H1DBoabcgvdSDg277SwbujRv2cUBlnpcOTJQDFRhRvyJ7G+Zkd06/jhRphsTTmmrBY0PqI4g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@astrojs/internal-helpers": "0.7.1",
|
||||
"send": "^1.2.0",
|
||||
"server-destroy": "^1.0.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"astro": "^5.3.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@astrojs/prism": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmmirror.com/@astrojs/prism/-/prism-3.3.0.tgz",
|
||||
@ -1976,6 +1991,15 @@
|
||||
"integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/depd": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz",
|
||||
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/dequal": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/dequal/-/dequal-2.0.3.tgz",
|
||||
@ -2062,12 +2086,27 @@
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/ee-first": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz",
|
||||
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/emoji-regex": {
|
||||
"version": "10.4.0",
|
||||
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-10.4.0.tgz",
|
||||
"integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/encodeurl": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-2.0.0.tgz",
|
||||
"integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/entities": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/entities/-/entities-6.0.1.tgz",
|
||||
@ -2127,6 +2166,12 @@
|
||||
"@esbuild/win32-x64": "0.25.9"
|
||||
}
|
||||
},
|
||||
"node_modules/escape-html": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz",
|
||||
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/escape-string-regexp": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
|
||||
@ -2148,6 +2193,15 @@
|
||||
"@types/estree": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/etag": {
|
||||
"version": "1.8.1",
|
||||
"resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz",
|
||||
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/eventemitter3": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-5.0.1.tgz",
|
||||
@ -2216,6 +2270,15 @@
|
||||
"unicode-trie": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/fresh": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/fresh/-/fresh-2.0.0.tgz",
|
||||
"integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/fsevents": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
|
||||
@ -2474,6 +2537,31 @@
|
||||
"integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==",
|
||||
"license": "BSD-2-Clause"
|
||||
},
|
||||
"node_modules/http-errors": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz",
|
||||
"integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"depd": "2.0.0",
|
||||
"inherits": "2.0.4",
|
||||
"setprototypeof": "1.2.0",
|
||||
"statuses": "2.0.1",
|
||||
"toidentifier": "1.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/http-errors/node_modules/statuses": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz",
|
||||
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/import-meta-resolve": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz",
|
||||
@ -2484,6 +2572,12 @@
|
||||
"url": "https://github.com/sponsors/wooorm"
|
||||
}
|
||||
},
|
||||
"node_modules/inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/iron-webcrypto": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmmirror.com/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz",
|
||||
@ -3430,6 +3524,27 @@
|
||||
],
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/mime-db": {
|
||||
"version": "1.54.0",
|
||||
"resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.54.0.tgz",
|
||||
"integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/mime-types": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-3.0.1.tgz",
|
||||
"integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"mime-db": "^1.54.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/mrmime": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/mrmime/-/mrmime-2.0.1.tgz",
|
||||
@ -3543,6 +3658,18 @@
|
||||
"integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/on-finished": {
|
||||
"version": "2.4.1",
|
||||
"resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz",
|
||||
"integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"ee-first": "1.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/oniguruma-parser": {
|
||||
"version": "0.12.1",
|
||||
"resolved": "https://registry.npmmirror.com/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz",
|
||||
@ -3738,6 +3865,15 @@
|
||||
"integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/range-parser": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz",
|
||||
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/readdirp": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-4.1.2.tgz",
|
||||
@ -4035,6 +4171,40 @@
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/send": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/send/-/send-1.2.0.tgz",
|
||||
"integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"debug": "^4.3.5",
|
||||
"encodeurl": "^2.0.0",
|
||||
"escape-html": "^1.0.3",
|
||||
"etag": "^1.8.1",
|
||||
"fresh": "^2.0.0",
|
||||
"http-errors": "^2.0.0",
|
||||
"mime-types": "^3.0.1",
|
||||
"ms": "^2.1.3",
|
||||
"on-finished": "^2.4.1",
|
||||
"range-parser": "^1.2.1",
|
||||
"statuses": "^2.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 18"
|
||||
}
|
||||
},
|
||||
"node_modules/server-destroy": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/server-destroy/-/server-destroy-1.0.1.tgz",
|
||||
"integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==",
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/setprototypeof": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz",
|
||||
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/sharp": {
|
||||
"version": "0.33.5",
|
||||
"resolved": "https://registry.npmmirror.com/sharp/-/sharp-0.33.5.tgz",
|
||||
@ -4138,6 +4308,15 @@
|
||||
"url": "https://github.com/sponsors/wooorm"
|
||||
}
|
||||
},
|
||||
"node_modules/statuses": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.2.tgz",
|
||||
"integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/string-width": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-7.2.0.tgz",
|
||||
@ -4212,6 +4391,15 @@
|
||||
"url": "https://github.com/sponsors/SuperchupuDev"
|
||||
}
|
||||
},
|
||||
"node_modules/toidentifier": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz",
|
||||
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/tr46": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz",
|
||||
|
@ -9,6 +9,7 @@
|
||||
"astro": "astro"
|
||||
},
|
||||
"dependencies": {
|
||||
"@astrojs/node": "^9.4.0",
|
||||
"astro": "^5.12.9"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
1
public/baijiahao.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1751524741029" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4814" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M955.757714 955.977143c-68.315429 68.022857-136.557714 68.022857-256 68.022857H324.242286c-119.442286 0-187.684571 0-256-68.022857S0 819.2 0 699.977143V324.022857C0 204.8 0.731429 136.777143 68.242286 68.022857S204.8 0 324.242286 0h375.515428c119.442286 0 187.684571 0 256 68.022857S1024 204.8 1024 324.022857v375.954286c0 119.222857 0 187.245714-68.242286 256zM802.669714 191.634286c-20.553143-13.165714-42.130286-24.137143-62.025143-38.034286a24.137143 24.137143 0 0 0-37.229714 2.925714 58.002286 58.002286 0 0 1-48.347428 18.285715c-121.124571-0.731429-242.249143 0-363.446858-0.731429H146.285714v8.777143a8.557714 8.557714 0 0 1 2.121143 0.731428 32.841143 32.841143 0 0 0 40.813714 25.6c65.243429-1.462857 130.56-0.731429 195.876572-0.731428h16.310857l-17.188571 106.788571c-2.194286 13.165714-4.973714 26.331429-6.509715 40.228572a10.093714 10.093714 0 0 1-12.361143 10.24 620.836571 620.836571 0 0 1-127.268571-13.165715 1250.742857 1250.742857 0 0 0-24.283429-2.194285V877.714286h122.002286c0-11.702857 0.804571-23.405714 0-35.108572s2.779429-14.628571 13.092572-14.628571c54.491429 0.731429 108.982857 0 163.474285 0h105.033143l4.096 49.737143h119.442286V614.4a449.389714 449.389714 0 0 1-115.712 64.365714 15.798857 15.798857 0 0 0-6.070857 11.702857c-0.585143 19.017143 0 38.034286 0 57.051429v47.542857a92.598857 92.598857 0 0 1-13.312 0.731429c-86.089143 0.731429-172.178286 0-258.267429 0.731428-9.362286 0-11.410286-3.657143-11.410286-13.897143V400.091429h283.282286v31.451428c1.682286 0.731429 2.194286 1.462857 2.486857 1.462857a387.657143 387.657143 0 0 1 114.614857-41.691428 24.210286 24.210286 0 0 0 4.096-14.628572 12.580571 12.580571 0 0 0-5.485714-10.24q-55.881143-8.777143-111.689143-15.36a4.022857 4.022857 0 0 0-3.584 1.462857l-1.682285 11.702858H453.193143c26.843429-49.005714 52.809143-96.548571 78.189714-143.36a18.944 18.944 0 0 1 19.529143-12.434286c82.651429 0.731429 165.229714 0 247.881143 0a28.672 28.672 0 0 0 12.068571-5.12 59.318857 59.318857 0 0 0-8.192-11.702857zM511.268571 547.108571a597.942857 597.942857 0 0 0-151.259428 231.862858 38.619429 38.619429 0 0 0 9.581714-8.045715c23.698286-27.794286 47.250286-56.32 71.314286-84.114285a21.065143 21.065143 0 0 1 13.677714-8.045715 236.909714 236.909714 0 0 0 143.36-19.748571c15.140571-6.582857 29.257143-15.36 46.884572-24.868572-16.603429-8.777143-28.745143-15.36-40.96-21.211428a222.208 222.208 0 0 0 190.537142-77.531429c-18.212571-2.925714-33.133714-5.851429-47.981714-8.045714 0-1.462857 0-2.194286-0.512-3.657143a154.038857 154.038857 0 0 0 131.657143-108.251428 480.768 480.768 0 0 0-366.299429 131.657142z" fill="#353535" p-id="4815"></path></svg>
|
After Width: | Height: | Size: 2.9 KiB |
1
public/douyin.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg t="1752209161879" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="42207" width="200" height="200"><path d="M911.984876 511.989901c0 287.092902-112.902043 400.025181-399.994945 400.025181-287.062666 0-399.994945-112.932279-399.994945-400.025181 0-287.062666 112.932279-399.994945 400.025182-399.994945 287.062666 0 399.964709 112.932279 399.964708 400.025181z" fill="#1A1A1A" p-id="42208"></path><path d="M530.192135 343.33227v247.090384a55.42299 55.42299 0 0 1-55.937005 55.997478 55.42299 55.42299 0 0 1-55.937006-55.997478c0-31.324723 24.642519-55.937006 55.937006-55.937006v-71.962202a128.44346 128.44346 0 0 0-127.899208 127.899208c0 70.238737 57.690706 127.989916 127.899208 127.989916 70.238737 0 127.989916-57.751179 127.989916-127.989916v-151.63464c26.245038 10.824567 53.82047 17.718424 78.765351 17.718425v-71.992438c-20.439684 0-44.507715-4.626142-59.172281-12.457323-14.63433-7.861417-19.59307-12.910866-19.59307-28.724408z" fill="#FF0000" fill-opacity=".6" p-id="42209"></path><path d="M516.5556 315.968491v247.120621c0 31.324723-24.672755 55.937006-55.997478 55.937005a55.362518 55.362518 0 0 1-55.937005-55.937005c0-31.324723 24.612282-55.937006 55.937005-55.937006v-72.022674c-70.208501 0-127.899208 57.751179-127.899207 127.95968a128.44346 128.44346 0 0 0 127.899207 127.899207c70.238737 0 127.989916-57.66047 127.989917-127.899207v-151.725349c26.245038 10.885039 53.82047 17.778897 78.765351 17.778897v-72.022674c-20.439684 0-44.507715-4.626142-59.172281-12.487559-14.664566-7.831181-19.59307-12.880629-19.59307-28.694172z" fill="#028080" fill-opacity=".486" p-id="42210"></path><path d="M516.5556 329.635263v247.150856c0 31.324723-24.672755 55.937006-55.997478 55.937006a55.362518 55.362518 0 0 1-55.937005-55.937006c0-31.324723 24.612282-55.967242 55.937005-55.967242v-71.992438c-70.208501 0-127.899208 57.751179-127.899207 127.95968a128.44346 128.44346 0 0 0 127.899207 127.899208c70.238737 0 127.989916-57.66047 127.989917-127.899208V425.121243c26.245038 10.824567 53.82047 17.718424 78.765351 17.718425v-71.992439c-20.439684 0-44.507715-4.626142-59.172281-12.457322-14.664566-7.861417-19.59307-12.910866-19.59307-28.724408z" fill="#FFFFFF" p-id="42211"></path></svg>
|
After Width: | Height: | Size: 2.2 KiB |
1
public/fontawesome-webfont.woff2
Normal file
@ -0,0 +1 @@
|
||||
No Content: https://v.bootstrapmb.com/2025/7/r6t016220/fonts/fontawesome-webfont.woff2?v=4.6.3
|
1
public/fonts/fontawesome-webfont.woff2
Normal file
@ -0,0 +1 @@
|
||||
No Content: https://v.bootstrapmb.com/2025/7/r6t016220/fonts/fontawesome-webfont.woff2?v=4.6.3
|
1
public/fonts/roboto/roboto-light-webfont.woff2
Normal file
@ -0,0 +1 @@
|
||||
No Content: https://v.bootstrapmb.com/2025/7/r6t016220/fonts/roboto/roboto-light-webfont.woff2
|
1
public/fonts/roboto/roboto-medium-webfont.woff2
Normal file
@ -0,0 +1 @@
|
||||
No Content: https://v.bootstrapmb.com/2025/7/r6t016220/fonts/roboto/roboto-medium-webfont.woff2
|
1
public/fonts/roboto/roboto-regular-webfont.woff2
Normal file
@ -0,0 +1 @@
|
||||
No Content: https://v.bootstrapmb.com/2025/7/r6t016220/fonts/roboto/roboto-regular-webfont.woff2
|
1
public/fonts/themify.woff
Normal file
@ -0,0 +1 @@
|
||||
No Content: https://v.bootstrapmb.com/2025/7/r6t016220/fonts/themify.woff?-fvbane
|
1
public/huawei.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg t="1752207127575" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="36117" width="200" height="200"><path d="M381.3 30.42a227.78 227.78 0 0 1 60.51-13.11c21.19 31.26 28.24 69.08 39.33 104.88 7.57 39.33 13.62 78.66 14.63 118.5 5 27.73 2 55.46 3 83.7 1.52 25.21-2 50.43-1 76.14 1 35.3-4 70.6-3.53 106.4-5 22.69-1 46.39-8.06 68.58-8.58-4.54-12.61-13.62-18.16-21.18-39.83-59-76.64-119.51-110.93-181.53-32.78-65.55-67.57-133.63-70.6-208.25-2.49-59 39.35-115.48 94.81-134.13z m207.25-10.09c5-3 10.59 0.5 16.13 1 27.23 6.05 56.48 10.08 79.68 27.73 21.68 18.16 41.85 39.84 49.92 67.57 11.59 33.28 7.06 69.59 0 103.37-10.09 42.86-29.25 83.2-48.41 123-6 12.1-14.62 23.2-20.17 35.8-11.09 24.71-25.72 47.9-39.84 70.6-22.18 38.32-46.89 74.62-71.1 111.44-3.53 4-8.06 14.11-14.11 7.56-4-40.85-7.06-81.19-8.58-122-5.54-51.94-2.52-104.38-3-156.82 3.53-34.79 4-69.59 8.07-103.88 8.06-40.84 13.61-82.19 26.22-122 9.07-13.62 10.59-33.79 25.21-43.37z m-421 131.11c5.55-2.53 8.07 4.53 11.6 7.56a2305.54 2305.54 0 0 1 251.06 402.39c5.55 11.6 12.61 23.19 13.62 36.31-12.61-3-23.2-9.59-34.79-15.13a2115.66 2115.66 0 0 1-188.59-107.91c-22.69-16.14-45.89-31.77-66.06-50.93-40.34-28.24-68.07-76.14-64.54-126.06 4-57.49 39.83-105.89 77.65-146.23z m687.8-0.51h8.06c18.16 23.7 39.34 45.89 52.45 73.12C929.93 248.76 937 277 939 305.23c-1.51 31.26-11.6 63.54-32.27 87.74-13.61 12.1-24.2 26.73-38.32 37.31-75.14 59.51-159.85 105.9-245.07 150.27-12.6 6.56-24.71 15.63-38.83 17.15 2.53-17.65 13.12-31.77 20.17-47.91a2240 2240 0 0 1 201.2-331.29c15.63-22.69 33.78-44.37 49.42-67.57z m-833 265.24c2-4 1.51-11.1 7.06-12.11 10.08 2 18.65 8.58 27.73 13.62 120.52 65.55 240.53 132.62 356 206.74 4 2 6.05 6.05 7.56 10.59-76.14 1-152.28 1-227.92 0.5-45.88 0.51-89.75-20.67-122-52.44C43 552.82 21.77 514.49 19.25 472.64c0-18.66-2-37.82 3-56.47z m957.57-3.53c7.56-4.54 15.12-9.08 24.2-8.07 1.51 17.65 5 35.3 5.55 52.94-3 21.69-2.52 44.38-12.11 64.55-8.06 17.65-16.13 35.8-30.25 49.41-15.13 14.12-27.73 31.27-46.9 40.34-21.17 16.14-48.4 21.18-74.62 22.7-79.68 0.5-159.85 0.5-239.52 0 2-4 4-7.57 8.07-9.59 118.49-76.14 242-144.71 365.58-212.28zM192.71 667.79c42.87-4.54 86.23-0.51 129.09-5.55 30.76-1 61.52-2.52 91.77 0-8.06 13.11-22.69 19.16-34.28 27.73a721.31 721.31 0 0 1-102.37 61c-35.29 17.65-79.67 11.09-109.92-13.62-24.71-17.14-41.86-41.85-58-66.56 27.73-3.53 56-1 83.7-3z m421.05-5.55c30.26-2 61-1 91.77 0.5 41.35 4.54 83.71 0.51 125.06 5 29.24 2.52 58.49 0 87.74 3.53-10.09 21.17-25.72 39.33-42.86 55.46-26.22 27.27-66.56 40.9-103.37 32.83-32.28-10.09-60.51-30.26-89.26-46.9-15.63-9.58-30.25-20.17-45.88-30.25-8.58-6-17.65-11.6-23.2-20.17z" fill="#C71F1E" p-id="36118"></path><path d="M18.75 846.29c12.1 0.5 23.7 0.5 35.8 0 0 21.18-1 42.86 0.5 64.54 26.73 1 54 1 81.19 0 1.51-21.18 0.5-42.86 0.5-64 12.1 0.51 23.7 0.51 35.8 0q-0.75 78.68 0 157.33h-35.8c0-21.68 1-42.86-0.5-64.54-26.73-1-54-1-81.19 0-1 21.68-0.5 42.86-0.5 64.54h-35.8c0.5-53 0.5-105.39 0-157.83z m182.54 0c12.1 0.5 23.7 0.5 35.8 0 1 33.78-0.51 67.57 0.5 101.86 0 16.64 13.11 33.78 30.76 33.78 17.65 3 42.86-2 46.9-22.69 1.51-37.31 0.5-75.13 0.5-113 12.1 0.5 23.7 0.5 35.8 0 0.51 33.78 0.51 67.57 0.51 101.35-0.51 13.11 0 28.75-10.59 38.33-19.16 18.65-47.4 21.18-72.61 19.66-15.64-1.51-33.28-2-45.89-12.6a49 49 0 0 1-20.68-41.86c-1-34.79 0-69.58-1-104.88z m232 0h38.83c4.54 17.14 15.13 31.26 20.67 47.9 14.12 22.69 19.67 49.42 34.29 71.61 6.05 12.1 11.6 24.2 15.13 37.82-12.1 0-24.21 1-36.31-0.51-8.07-10.59-10.08-24.71-17.14-35.8a336.18 336.18 0 0 0-74.63 0.5c-6.05 11.6-10.09 24.71-17.65 35.81-11.09 1-22.19 0.5-33.28 0.5 1-15.13 8.57-27.73 16.14-39.84 7.56-19.16 17.14-37.31 24.2-56.47 13.61-18.66 17.65-41.85 29.75-61.52z m-7.56 90.76a108.52 108.52 0 0 0 50.93 0c-8.66-19.16-14.66-38.82-25.77-56.47-11.6 17.14-16.64 37.82-25.21 56.47zM524 846.29h39.33c3 15.13 6.55 30.25 12.6 44.37 9.58 24.71 13.11 50.93 23.7 75.14l4.54-1.52c4-32.77 19.67-63 23.7-95.3a159.57 159.57 0 0 1 6.56-22.19h42.87c9.58 31.27 21.18 61.52 28.74 93.29 3 9.58 4 21.18 13.11 26.73 8.07-40.34 24.71-78.67 34.79-118.5 12.1-3 25.21-0.51 38.33-1.52-18.16 52.45-36.81 104.38-54 157.33-14.12 0-28.24 1-42.36 0-4.53-2.52-4.53-8.57-6.05-12.61-11.09-33.28-18.65-68.07-32.77-99.84-5 9.08-6.56 19.16-9.08 28.74-7.56 27.74-15.63 55.47-22.69 83.21-14.62 0.5-28.74 0.5-43.37 0-12.1-20.17-14.12-44.38-25.71-64.55-10.59-26.72-16.64-56-30.26-81.18a31.36 31.36 0 0 1-2-11.6zM818.49 867a46.9 46.9 0 0 1 38.82-20.17c27.74-0.5 55 0 82.7-0.5v28.24c-23.7-0.51-47.4-1-71.1 0-17.65 2-28.74 18.65-29.75 35.8 33.28 2 67.07 0.5 100.85 0.5v28.24c-32.78-0.5-66.06-1-98.83 0-4 16.14 5 33.28 21.68 37.32 25.72 4.53 51.43 1 77.15 2.52v24.71c-27.73 0-55 0.5-82.7 0a63.87 63.87 0 0 1-55-49.42c-5-29.75-4-63.54 16.14-87.24z m154.3-17.64a100.14 100.14 0 0 1 36.81-0.51c2 29.25 0.5 58.49 1 87.74-0.51 22.69 1.51 45.38-1.52 67.57h-36.3c0.51-51.98 0.51-103.41 0.01-154.84z" p-id="36119"></path></svg>
|
After Width: | Height: | Size: 4.8 KiB |
BIN
public/iconfont.woff2
Normal file
BIN
public/image/an-badge.png
Normal file
After Width: | Height: | Size: 9.0 KiB |
BIN
public/image/bg-shape-after.png
Normal file
After Width: | Height: | Size: 31 KiB |
BIN
public/image/bg-shape.png
Normal file
After Width: | Height: | Size: 51 KiB |
BIN
public/image/bg-trans-4.png
Normal file
After Width: | Height: | Size: 548 KiB |
BIN
public/image/bg-video.png
Normal file
After Width: | Height: | Size: 190 KiB |
BIN
public/image/icon-4.png
Normal file
After Width: | Height: | Size: 7.3 KiB |
BIN
public/image/icon-5.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
public/image/icon-6.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
BIN
public/image/img-1.jpg
Normal file
After Width: | Height: | Size: 167 KiB |
BIN
public/image/img-1.png
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
public/image/img-10.jpg
Normal file
After Width: | Height: | Size: 71 KiB |
BIN
public/image/img-10.png
Normal file
After Width: | Height: | Size: 95 KiB |
BIN
public/image/img-11.png
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
public/image/img-12.png
Normal file
After Width: | Height: | Size: 92 KiB |
BIN
public/image/img-13.png
Normal file
After Width: | Height: | Size: 92 KiB |
BIN
public/image/img-faq.png
Normal file
After Width: | Height: | Size: 49 KiB |
BIN
public/image/is-badge.png
Normal file
After Width: | Height: | Size: 8.5 KiB |
BIN
public/image/loading.gif
Normal file
After Width: | Height: | Size: 1.3 MiB |
BIN
public/image/logo-clr.png
Normal file
After Width: | Height: | Size: 6.1 KiB |
BIN
public/image/profile-img-2.jpg
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
public/image/profile-img-3.jpg
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
public/image/profile-img.jpg
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
public/image/quote.png
Normal file
After Width: | Height: | Size: 4.9 KiB |
BIN
public/image/tool-1.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
public/image/tool-2.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
public/image/tool-3.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
public/image/tool-4.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
public/image/tool-5.png
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
public/image/tool-6.png
Normal file
After Width: | Height: | Size: 60 KiB |
BIN
public/image/tool-7.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
public/image/tool-8.png
Normal file
After Width: | Height: | Size: 48 KiB |
178
public/js/script.js
Normal file
@ -0,0 +1,178 @@
|
||||
(function(a) {
|
||||
a(window).on("load", function() {
|
||||
a("#status").fadeOut();
|
||||
a("#preloader").delay(350).fadeOut("slow");
|
||||
a("body").delay(350).css({
|
||||
overflow: "visible"
|
||||
})
|
||||
});
|
||||
skrollr.init({
|
||||
smoothScrolling: true
|
||||
});
|
||||
var h = a(".video");
|
||||
if (h.length > 0) {
|
||||
h.magnificPopup({
|
||||
type: "iframe",
|
||||
iframe: {
|
||||
markup: '<style>.mfp-iframe-holder .mfp-content {max-width: 900px;height:500px}</style><div class="mfp-iframe-scaler" ><div class="mfp-close"></div><iframe class="mfp-iframe" frameborder="0" allowfullscreen></iframe></div></div>'
|
||||
}
|
||||
})
|
||||
}
|
||||
var b = a(".counter");
|
||||
if (b.length > 0) {
|
||||
b.counterUp({
|
||||
delay: 20,
|
||||
time: 3000
|
||||
})
|
||||
}
|
||||
var g = a(".swiper-container");
|
||||
if (g.length > 0) {
|
||||
var o = new Swiper(g, {
|
||||
effect: "coverflow",
|
||||
loop: true,
|
||||
centeredSlides: true,
|
||||
autoplay: 2000,
|
||||
speed: 2000,
|
||||
slidesPerView: "auto",
|
||||
coverflow: {
|
||||
rotate: 0,
|
||||
stretch: 80,
|
||||
depth: 200,
|
||||
modifier: 1,
|
||||
slideShadows: false,
|
||||
}
|
||||
})
|
||||
}
|
||||
var f = a(".parallaxie");
|
||||
if (f.length > 0) {
|
||||
f.parallaxie({
|
||||
speed: 0.975
|
||||
})
|
||||
}
|
||||
var n = a(".quote-wrapper");
|
||||
if (n.length > 0) {
|
||||
n.owlCarousel({
|
||||
loop: true,
|
||||
autoplayTimeout: 3500,
|
||||
nav: false,
|
||||
margin: 20,
|
||||
responsive: {
|
||||
320: {
|
||||
items: 1
|
||||
},
|
||||
681: {
|
||||
items: 2
|
||||
},
|
||||
991: {
|
||||
items: 3
|
||||
},
|
||||
1200: {
|
||||
items: 4
|
||||
},
|
||||
1920: {
|
||||
items: 5
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
var r = a(".tools-carousel");
|
||||
if (r.length > 0) {
|
||||
r.owlCarousel({
|
||||
loop: true,
|
||||
autoplay: true,
|
||||
autoplayTimeout: 1000,
|
||||
autoWidth: true,
|
||||
nav: false,
|
||||
responsive: {
|
||||
320: {
|
||||
items: 2
|
||||
},
|
||||
681: {
|
||||
items: 4
|
||||
},
|
||||
991: {
|
||||
items: 6
|
||||
},
|
||||
1200: {
|
||||
items: 8
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
new WOW().init();
|
||||
if (a(".mailchimp").length > 0) {
|
||||
a(".mailchimp").ajaxChimp({
|
||||
language: "es",
|
||||
callback: l,
|
||||
url: ""
|
||||
})
|
||||
}
|
||||
|
||||
function l(d) {
|
||||
if (d.result === "success") {
|
||||
a(".subscription-success").html(d.msg).fadeIn(1000);
|
||||
a(".subscription-error").fadeOut(500)
|
||||
} else {
|
||||
if (d.result === "error") {
|
||||
a(".subscription-error").html(d.msg).fadeIn(1000)
|
||||
}
|
||||
}
|
||||
}
|
||||
a.ajaxChimp.translations.es = {
|
||||
submit: "Submitting...",
|
||||
0: "We have sent you a confirmation email",
|
||||
1: "Please enter a value",
|
||||
2: "An email address must contain a single @",
|
||||
3: "The domain portion of the email address is invalid (the portion after the @: )",
|
||||
4: "The username portion of the email address is invalid (the portion before the @: )",
|
||||
5: "This email address looks fake or invalid. Please enter a real email address"
|
||||
};
|
||||
var c = a(".right-nav a, .demo a");
|
||||
if (c.length > 0) {
|
||||
c.on("click", function(d) {
|
||||
a(document).off("scroll");
|
||||
if (location.pathname.replace(/^\//, "") == this.pathname.replace(/^\//, "") || location.hostname == this.hostname) {
|
||||
var t = a(this.hash),
|
||||
m = a(".navbar").height() - 2;
|
||||
t = t.length ? t : a("[name=" + this.hash.slice(1) + "]");
|
||||
if (t.length) {
|
||||
a("html,body").animate({
|
||||
scrollTop: t.offset().top - m
|
||||
}, 1000);
|
||||
return false
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function q(d) {
|
||||
a(d.target).prev(".panel-heading").find(".more-less").toggleClass("glyphicon-plus glyphicon-minus")
|
||||
}
|
||||
a(".panel-group").on("hidden.bs.collapse", q);
|
||||
a(".panel-group").on("shown.bs.collapse", q);
|
||||
var j = document.getElementById("filt-monthly"),
|
||||
i = document.getElementById("filt-hourly"),
|
||||
p = document.getElementById("switcher"),
|
||||
k = document.getElementById("monthly"),
|
||||
s = document.getElementById("hourly");
|
||||
j.addEventListener("click", function() {
|
||||
p.checked = false;
|
||||
j.classList.add("toggler--is-active");
|
||||
i.classList.remove("toggler--is-active");
|
||||
k.classList.remove("none");
|
||||
s.classList.add("none")
|
||||
});
|
||||
i.addEventListener("click", function() {
|
||||
p.checked = true;
|
||||
i.classList.add("toggler--is-active");
|
||||
j.classList.remove("toggler--is-active");
|
||||
k.classList.add("none");
|
||||
s.classList.remove("none")
|
||||
});
|
||||
p.addEventListener("click", function() {
|
||||
i.classList.toggle("toggler--is-active");
|
||||
j.classList.toggle("toggler--is-active");
|
||||
k.classList.toggle("none");
|
||||
s.classList.toggle("none")
|
||||
})
|
||||
})(jQuery);
|
20
public/js/vendor.bundle.js
Normal file
BIN
public/logo.png
Normal file
After Width: | Height: | Size: 13 KiB |
1
public/meizu.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg t="1752207057246" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="31493" width="200" height="200"><path d="M709.1584 7.6416c169.664 0 307.2 137.536 307.2 307.2v394.3168c0 169.664-137.536 307.2-307.2 307.2H314.8416c-169.664 0-307.2-137.536-307.2-307.2V314.8416c0-169.664 137.536-307.2 307.2-307.2h394.3168zM550.4 435.648h-25.6v153.6h25.6v-153.6z m-281.6 0H115.2a25.6 25.6 0 0 0-25.6 25.6h1.1776v128h25.6v-128h60.224v128h25.6v-128h68.3904v128h25.6v-128H294.4l-0.064-1.92A25.6 25.6 0 0 0 268.8 435.6608z m463.2448-0.896h-153.6v25.6h109.9008l-102.8224 102.8224h-7.0784v7.0784l-0.4352 0.4352 0.4352 0.4352V588.8h153.6v-25.6h-110.3232l102.8224-102.8352h7.5008v-25.6z m-235.2896 0h-128l-1.92 0.0768a25.6 25.6 0 0 0-23.68 25.5232v102.8224a25.6 25.6 0 0 0 25.6 25.6h128v-25.6h-128v-34.432h128v-25.6h-128v-42.7904h128v-25.6z m286.4896 0h-25.6v128.4224l0.0768 1.92a25.6 25.6 0 0 0 25.5232 23.68h102.4A25.6 25.6 0 0 0 907.8144 576h3.4304V434.7392h-25.6v128.4224h-102.4V434.752z" fill="#1677FF" p-id="31494"></path></svg>
|
After Width: | Height: | Size: 1.0 KiB |
1
public/oppo.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg t="1752207115006" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="34798" width="200" height="200"><path d="M832.7 464.3c-30.6-16.1-62.7-16.1-94.1 0-24.9 12.1-24.9 35.4-0.8 49.8 14.5 8.9 31.4 11.3 47.4 12.1 16.9-0.8 33.8-2.4 48.2-11.3 24.2-14.5 25-37.7-0.7-50.6zM243.3 465.1c-14.5-8.9-31.4-12.9-49-12.1-16.9-0.8-33 2.4-48.2 11.3-23.3 13.7-23.3 34.6-1.6 49 25.8 16.9 74.7 16.9 99.7 0 20.9-14.5 20.9-34.5-0.9-48.2z" fill="#02925F" p-id="34799"></path><path d="M511.3 5.9C230.6 5.9 3 232.9 3 512.9s227.6 507 508.3 507 508.3-227 508.3-507-227.5-507-508.3-507zM274.6 518c-20.9 11.3-43.5 14.5-67.5 15.3-24.1-1.6-48.2-4-69.9-17.7-25-15.3-25-37.8 0-53.8 12.9-8.9 28.2-13.7 44.2-15.3 31.4-3.2 63.5-2.4 92.5 12.9 12.1 6.5 22.6 14.5 24 28.1 0 16-11.2 24.1-23.3 30.5z m212.4-7.9c-9.7 8.1-20.1 12.9-32.2 16.1-37.9 10.5-74.8 9.7-110.2-6.4-8.1-3.3-9.7-0.8-9.7 6.4v34.6c0 8.1-3.3 12.1-11.3 11.3h-8c-7.3 0.8-10.5-2.5-10.5-10.5v-53.8c0-16.9 0.8-34.6 0-51.4-0.8-9.7 2.4-12.9 12.1-12.9 17.7 0 17.7-0.8 17.7 17.7v34.6c0 8 3.3 13.7 9.7 16.9 33.8 17.7 67.5 18.5 100.5 0 21.7-12.1 21.7-33.8 0-47.4-20.9-12.9-44.2-13.7-67.5-11.3-4.1 0.8-10.5 4-11.3-0.8-0.8-4 6.5-4 10.5-4.8 29-4.9 57-4.1 85.2 5.6 9.6 3.2 19.3 8.1 25.8 14.5 13.7 12.7 13.7 28.7-0.8 41.6z m188.1 9.6c-41.1 18.5-83.6 18.5-125.5 1.6-10.5-4.1-10.5-4.9-10.5 6.4 0 10.5-0.8 21.7 0 32.2 0 8.9-3.2 12.1-12.1 12.1-19.3 0-19.3 0-19.3-18.5v-46.6c0-16.9 0.8-34.6 0-51.4-0.8-8.9 2.4-12.9 11.3-12.1h8c8.9-0.8 11.3 3.2 11.3 12.1v40.2c-0.8 8 2.5 12.9 8.9 16.9 25.7 17.7 76.3 16.9 101.3-0.8 19.3-13.7 18.5-33-0.8-45.8-20.9-14.5-44.9-15.3-69.9-12.1-3.3 0.8-9.7 4-10.5-0.8-0.8-4 5.7-4 9.7-4.8 33.8-4.8 66.7-4.8 98.1 10.5 12.8 6.5 24.9 14.5 25 29.8 0.8 16.6-12.1 25.5-25 31.1z m187.3 1.6c-41.9 18.5-84.4 18.5-127.1 0-12.9-5.6-25.8-13.7-25.8-30.6 0-17.7 12.9-25.8 25.8-32.2 16.9-8.9 37.8-12.9 66.7-12.9 19.3-0.8 41.1 3.2 61.1 12.9 12.9 6.5 25.8 14.5 25 32.2 0.1 16.1-12 25-25.7 30.6z" fill="#02925F" p-id="34800"></path></svg>
|
After Width: | Height: | Size: 1.9 KiB |
1
public/toutiaohao.svg
Normal file
After Width: | Height: | Size: 9.7 KiB |
1
public/vivo.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg t="1752207099574" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="33717" width="200" height="200"><path d="M743.12192 593.98656c-26.18368-0.09728-47.42656-22.80448-47.42656-50.83648v-4.31616c0-28.0832 21.36064-50.75968 47.42656-50.88256h82.70336c26.20928 0.12288 47.44704 22.79936 47.44704 50.88256v4.31616c-0.09728 28.032-21.36064 50.7392-47.44704 50.83648h-82.70336z" fill="#415FFF" p-id="33718"></path><path d="M512 973.99808c-255.14496 0-461.99808-206.83264-461.99808-461.99808C50.00192 256.85504 256.85504 50.00192 512 50.00192c255.16544 0 461.99808 206.85312 461.99808 461.99808 0 255.16544-206.83264 461.99808-461.99808 461.99808zM386.4576 459.68384a16.8448 16.8448 0 0 0-10.05568 15.81056v134.56896c0 9.50272 7.41376 17.23392 16.4864 17.23392 9.07264 0 16.38912-7.7312 16.38912-17.23392V475.52c0-9.48224-7.41376-17.23392-16.38912-17.23392v-0.02048c-2.21696 0.04608-4.4032 0.52736-6.4256 1.41824z m11.0592-60.89216a6.43072 6.43072 0 0 0-4.5312-2.08896h-0.29184a6.20544 6.20544 0 0 0-4.5568 2.06336l-17.20832 18.24256a7.296 7.296 0 0 0 0 9.91232l17.2032 18.23744a6.48192 6.48192 0 0 0 4.75648 2.08896 6.2464 6.2464 0 0 0 4.6336-2.06336l17.2288-18.24256a7.30112 7.30112 0 0 0 0-9.9072l-17.2288-18.24256z m149.95456 228.5056c16.19968 0.09728 29.08672-7.7312 40.84736-25.58464l74.5472-116.11136a18.52416 18.52416 0 0 0 2.87744-9.88672 17.84832 17.84832 0 0 0-7.10144-14.44864 15.91296 15.91296 0 0 0-9.28768-3.0976 16.43008 16.43008 0 0 0-13.4912 7.53664l-74.35264 116.3264c-4.5568 7.3216-9.50272 10.4192-14.35136 10.4192h-0.09728c-5.66272-0.12288-9.78944-3.31264-14.44352-10.4192l-74.5472-116.13696a15.90784 15.90784 0 0 0-13.51168-7.51104 15.91296 15.91296 0 0 0-9.28768 3.0976 18.3808 18.3808 0 0 0-4.224 24.33536l74.63936 115.92192c10.32192 16.17408 25.3952 25.55904 41.472 25.55904h0.31232z m-308.44928 0c16.19968 0.09728 29.09184-7.7312 40.94464-25.58464l74.56768-116.11136a18.4832 18.4832 0 0 0 1.03936-17.95072 17.97632 17.97632 0 0 0-5.26336-6.38464 15.91296 15.91296 0 0 0-9.28768-3.0976 16.41984 16.41984 0 0 0-13.51168 7.53664l-74.56768 116.11136c-4.53632 7.3216-9.47712 10.41408-14.32576 10.41408h-0.1024c-5.6832-0.09216-9.80992-3.31264-14.4384-10.41408L149.504 465.70496a16.00512 16.00512 0 0 0-13.48608-7.6288c-3.3536-0.00512-6.60992 1.08032-9.28768 3.09248a18.3808 18.3808 0 0 0-4.224 24.33536l74.75712 116.20864c10.32192 16.19968 25.46688 25.58464 41.4464 25.58464h0.31232z m504.09984-171.81696c-43.20256 0-78.3616 37.43744-78.3616 83.328v4.32128c0 46.00832 35.15904 83.34848 78.3616 83.34848h82.70336c43.19744 0 78.38208-37.43744 78.38208-83.328v-4.31616c-0.09728-45.91616-35.15904-83.3536-78.38208-83.3536h-82.70336z" fill="#415FFF" p-id="33719"></path></svg>
|
After Width: | Height: | Size: 2.7 KiB |
1
public/weibo.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg t="1752208850628" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="41022" width="200" height="200"><path d="M851.4 590.193c-22.196-66.233-90.385-90.422-105.912-91.863-15.523-1.442-29.593-9.94-19.295-27.505 10.302-17.566 29.304-68.684-7.248-104.681-36.564-36.14-116.512-22.462-173.094 0.866-56.434 23.327-53.39 7.055-51.65-8.925 1.89-16.848 32.355-111.02-60.791-122.395C311.395 220.86 154.85 370.754 99.572 457.15 16 587.607 29.208 675.873 29.208 675.873h0.58c10.009 121.819 190.787 218.869 412.328 218.869 190.5 0 350.961-71.853 398.402-169.478 0 0 0.143-0.433 0.575-1.156 4.938-10.506 8.71-21.168 11.035-32.254 6.668-26.205 11.755-64.215-0.728-101.66z m-436.7 251.27c-157.71 0-285.674-84.095-285.674-187.768 0-103.671 127.82-187.76 285.674-187.76 157.705 0 285.673 84.089 285.673 187.76 0 103.815-127.968 187.768-285.673 187.768z" fill="#E71F19" p-id="41023"></path><path d="M803.096 425.327c2.896 1.298 5.945 1.869 8.994 1.869 8.993 0 17.7-5.328 21.323-14.112 5.95-13.964 8.993-28.793 8.993-44.205 0-62.488-51.208-113.321-114.181-113.321-15.379 0-30.32 3.022-44.396 8.926-11.755 4.896-17.263 18.432-12.335 30.24 4.933 11.662 18.572 17.134 30.465 12.238 8.419-3.46 17.268-5.33 26.41-5.33 37.431 0 67.752 30.241 67.752 67.247 0 9.068-1.735 17.857-5.369 26.202a22.832 22.832 0 0 0 12.335 30.236l0.01 0.01z" fill="#F5AA15" p-id="41024"></path><path d="M726.922 114.157c-25.969 0-51.65 3.744-76.315 10.942-18.423 5.472-28.868 24.622-23.5 42.91 5.509 18.29 24.804 28.657 43.237 23.329a201.888 201.888 0 0 1 56.578-8.064c109.253 0 198.189 88.271 198.189 196.696 0 19.436-2.905 38.729-8.419 57.16-5.508 18.289 4.79 37.588 23.212 43.053 3.342 1.014 6.817 1.442 10.159 1.442 14.943 0 28.725-9.648 33.37-24.48 7.547-24.906 11.462-50.826 11.462-77.175-0.143-146.588-120.278-265.813-267.973-265.813z" fill="#F5AA15" p-id="41025"></path><path d="M388.294 534.47c-84.151 0-152.34 59.178-152.34 132.334 0 73.141 68.189 132.328 152.34 132.328 84.148 0 152.337-59.182 152.337-132.328 0-73.15-68.19-132.334-152.337-132.334zM338.53 752.763c-29.454 0-53.39-23.755-53.39-52.987 0-29.228 23.941-52.989 53.39-52.989 29.453 0 53.39 23.76 53.39 52.989 0 29.227-23.937 52.987-53.39 52.987z m99.82-95.465c-6.382 11.086-19.296 15.696-28.726 10.219-9.43-5.323-11.75-18.717-5.37-29.803 6.386-11.09 19.297-15.7 28.725-10.224 9.43 5.472 11.755 18.864 5.37 29.808z" fill="#040000" p-id="41026"></path></svg>
|
After Width: | Height: | Size: 2.4 KiB |
1
public/xiaomi.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg t="1752207085737" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="32621" width="200" height="200"><path d="M716.8 0c169.664 0 307.2 137.536 307.2 307.2v409.6c0 169.664-137.536 307.2-307.2 307.2H307.2C137.536 1024 0 886.464 0 716.8V307.2C0 137.536 137.536 0 307.2 0h409.6zM529.6128 320.5248H228.608a4.2368 4.2368 0 0 0-4.1984 4.2752v372.608a4.224 4.224 0 0 0 4.1984 4.2496h80.4096c2.3168 0 4.1984-1.92 4.1984-4.288V404.928c0-2.368 1.8816-4.3008 4.1984-4.3008h172.9024c32.4736 0 58.8032 27.008 58.8032 60.3008v236.4416c0 2.368 1.8816 4.288 4.1856 4.288h79.232a4.224 4.224 0 0 0 4.1728-4.2752V430.3872c0-60.672-47.936-109.8624-107.0848-109.8624zM470.144 468.992h-80.384a4.2496 4.2496 0 0 0-4.1984 4.3008v224.0896c0 2.3808 1.8688 4.288 4.1984 4.288h80.384c1.1136 0 2.176-0.448 2.9568-1.2416a4.3392 4.3392 0 0 0 1.2288-3.0464V473.28a4.352 4.352 0 0 0-1.2288-3.0464 4.1344 4.1344 0 0 0-2.9568-1.2544z m321.4336-148.4416h-80.3584c-2.3296 0-4.224 1.92-4.224 4.3008v372.5312c0 2.3808 1.8944 4.288 4.224 4.288h80.3584c2.3296 0 4.2112-1.92 4.2112-4.288V324.8384a4.352 4.352 0 0 0-1.2288-3.0464 4.1472 4.1472 0 0 0-2.9824-1.2544z" fill="#FF6A00" p-id="32622"></path></svg>
|
After Width: | Height: | Size: 1.2 KiB |
1
src/assets/css/pre.css
Normal file
14
src/assets/css/style.css
Normal file
16
src/assets/css/vendor.bundle.css
Normal file
1
src/assets/fonts/roboto/roboto-light-webfont.woff2
Normal file
@ -0,0 +1 @@
|
||||
No Content: https://v.bootstrapmb.com/2025/7/r6t016220/fonts/roboto/roboto-light-webfont.woff2
|
1
src/assets/fonts/roboto/roboto-medium-webfont.woff2
Normal file
@ -0,0 +1 @@
|
||||
No Content: https://v.bootstrapmb.com/2025/7/r6t016220/fonts/roboto/roboto-medium-webfont.woff2
|
1
src/assets/fonts/roboto/roboto-regular-webfont.woff2
Normal file
@ -0,0 +1 @@
|
||||
No Content: https://v.bootstrapmb.com/2025/7/r6t016220/fonts/roboto/roboto-regular-webfont.woff2
|
1
src/assets/fonts/themify.woff
Normal file
@ -0,0 +1 @@
|
||||
No Content: https://v.bootstrapmb.com/2025/7/r6t016220/fonts/themify.woff?-fvbane
|
@ -1,14 +1,168 @@
|
||||
---
|
||||
import { getConfig } from '../../utils/config'
|
||||
import '../assets/css/pre.css'
|
||||
import '../assets/css/vendor.bundle.css'
|
||||
import '../assets/css/style.css'
|
||||
const config = getConfig(Astro)
|
||||
const { isShowHeader = true } = Astro.props
|
||||
const {
|
||||
desc = '',
|
||||
title = '',
|
||||
keywords = '',
|
||||
bytedance = ''
|
||||
} = Astro.props
|
||||
---
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||
<link rel="icon" type="image/svg+xml" href="/logo.png" />
|
||||
<meta name="generator" content={Astro.generator} />
|
||||
<title>Astro Basics</title>
|
||||
<title>{title ? `${title} | 览屿官方网站` : `览屿官方网站`}</title>
|
||||
<!-- site metas -->
|
||||
<meta name="keywords" content={keywords}>
|
||||
<meta name="description" content={desc}>
|
||||
<link rel="icon" href="/logo.png" type="image/gif" sizes="16x16">
|
||||
</head>
|
||||
<body>
|
||||
<body data-spy="scroll" data-target="#navbar" data-offset="70">
|
||||
<!-- Preloader -->
|
||||
<!-- <div id="preloader">
|
||||
<div id="status"> </div>
|
||||
</div> -->
|
||||
<!-- -->
|
||||
<!-- header -->
|
||||
<header>
|
||||
<!-- navbar -->
|
||||
<nav id="navbar" class="navbar navbar-custom navbar-fixed-top" data-spy="affix" data-offset-top="70">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<!-- Brand and toggle get grouped for better mobile display -->
|
||||
<div class="navbar-header page-scroll">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
|
||||
菜单
|
||||
</button>
|
||||
<a class="navbar-brand page-scroll logo-light" href="/">
|
||||
<img alt="" src="/logo.png" width="30" height="30">
|
||||
</a>
|
||||
<a class="navbar-brand page-scroll logo-clr" href="/">
|
||||
<img alt="" src="/logo.png" width="30" height="30">
|
||||
</a>
|
||||
<span class="img-pre" style="font-weight: bold;color:black;margin-left:.5rem">览屿</span>
|
||||
</div>
|
||||
<!-- Collect the nav links,forms,and other content for toggling -->
|
||||
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
||||
<div class="right-nav text-right">
|
||||
<ul class="nav navbar-nav menu">
|
||||
<li>
|
||||
<a href="/">首页</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/news">产品动态</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/about">关于我们</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/contact">联系我们</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.navbar-collapse -->
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<!-- End navbar -->
|
||||
<!-- banner -->
|
||||
<div class="hero bg-shape" style={isShowHeader ? '' : 'display:none'}>
|
||||
<div class="hero-content">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="row">
|
||||
<div class="col-sm-5">
|
||||
<div class="intro-text grad-orange">
|
||||
<div class="meta-head clip-txt">览屿</div>
|
||||
<h2>沉浸学习,大咖分享</h2>
|
||||
<div class="spce"></div>
|
||||
<p class="large">览屿是一款超实用的知识学习应用,堪称知识宝库!想提升自我的你别错过。它有丰富课程,生活学院讲传统智慧,国学学院授易经知识,书画学院教国画技巧 ,每周上新直播课,专业授课。</p>
|
||||
<div class="btn-holder">
|
||||
<a href="https://appgallery.huawei.com/app/C114689713" class="btn grdnt-orange">立即下载</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-7">
|
||||
<div class="text-right img-pre">
|
||||
<img alt="" src="image/img-1.png">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Banner -->
|
||||
</header>
|
||||
<!-- End header -->
|
||||
<slot />
|
||||
<footer class="footer-wrapper bg-gray pb-0 sec-pad">
|
||||
<div class="container footer-content">
|
||||
<div class="row">
|
||||
<div class="row footer-widget">
|
||||
<div class="col-md-3 col-sm-6 res-margin">
|
||||
<a class="navbar-brand" href="index.html">
|
||||
<img alt="" src="/logo.png" width="30" height="30">
|
||||
</a>
|
||||
<div class="spce"></div>
|
||||
<p>7 * 24小时客服热线 <a href="tel:400-180-1950">400-180-1950</a></p>
|
||||
</div>
|
||||
<div class="col-md-2 col-sm-6 col-md-offset-1 res-margin">
|
||||
<h6>产品</h6>
|
||||
<div class="spce"></div>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="/news">产品动态</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-3 col-sm-6 res-margin">
|
||||
<h6>支持</h6>
|
||||
<div class="spce"></div>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="/contact">联系我们</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/about">关于我们</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-3 col-sm-6">
|
||||
<h6>关注我们</h6>
|
||||
<div class="spce"></div>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://author.baidu.com/home?from=bjh_article&app_id=1837340757389869"><img alt="" src="/baijiahao.svg" width="30" height="30"></a>
|
||||
<a href="https://www.douyin.com/user/MS4wLjABAAAAVSHPmAfZaIHG2JkIDxz6ZsRnd8LyDjabi56FHGWnwF4?from_tab_name=main"><img alt="" src="/douyin.svg" width="30" height="30"></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="spce md"></div>
|
||||
<div class="spce"></div>
|
||||
<div class="copyright text-center">
|
||||
Copyright © 2025 览屿
|
||||
All Rights By <a href="https://www.bootstrapmb.com">览屿</a>
|
||||
.
|
||||
苏ICP备2024117037号-27 苏B2-20242110号
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script is:inline src="/js/vendor.bundle.js"></script>
|
||||
<script is:inline src="/js/script.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
40
src/middleware/index.ts
Normal file
@ -0,0 +1,40 @@
|
||||
import { getHost } from "../../utils/host";
|
||||
import { websiteConfig } from "../../utils/rpc";
|
||||
|
||||
export async function onRequest (context: any, next: any) {
|
||||
|
||||
console.log('middleware')
|
||||
// 拦截一个请求里的数据
|
||||
// 可选地修改 `locals` 中的属性
|
||||
const host = await getHost(context.request);
|
||||
|
||||
console.log(host)
|
||||
// if (host == 'www.zhishihuisheng.com' || host == 'zhishihuisheng.com') {
|
||||
// return next();
|
||||
// }
|
||||
|
||||
// 防止无线跳转
|
||||
if (context.locals.is_write) {
|
||||
return next();
|
||||
}
|
||||
|
||||
if (!host) {
|
||||
context.locals.is_write = 1;
|
||||
return context.rewrite('/404');
|
||||
}
|
||||
|
||||
const {code, data} = await websiteConfig(host);
|
||||
|
||||
if (!data || code !== 0) {
|
||||
context.locals.is_write = 1;
|
||||
return context.rewrite('/404');
|
||||
}
|
||||
|
||||
if (!context.locals.is_write) {
|
||||
context.locals.is_write = 1;
|
||||
context.locals.template_config = data;
|
||||
// return context.rewrite('/template/' + data.app_template + context.url.pathname);
|
||||
}
|
||||
|
||||
return next();
|
||||
};
|
356
src/pages/about.astro
Normal file
@ -0,0 +1,356 @@
|
||||
---
|
||||
import Layout from "../layouts/Layout.astro";
|
||||
---
|
||||
<Layout isShowHeader = {false}>
|
||||
<div class="container-fluid" style="padding-top: 5rem;padding-bottom:2rem">
|
||||
<div class="hero-content">
|
||||
<!-- <span class="text-title aos-init aos-animate" data-aos="fade-up" data-aos-delay="400">About Us</span> -->
|
||||
<div class="hero-content-left">
|
||||
<h1 class="text1 aos-init aos-animate" data-aos="zoom-out-right" data-aos-delay="300">关于我们</h1>
|
||||
<span class="text2 aos-init aos-animate" data-aos="fade-up" data-aos-delay="400">
|
||||
淮安川界信息技术有限公司成立于2021年,我们是一家深植于互联网领域,专注于产品开发与创新的前沿企业。自成立以来,我们始终秉持着以技术为驱动,以用户为核心的发展理念,矢志不渝地致力于提供卓越的数字化解决方案。我们的使命不仅仅在于打造功能强大、安全可靠的互联网产品,更在于通过我们的专业能力和不懈努力,帮助客户实现业务的持续增长,推动其运营模式的高效升级,并创造更加人性化、便捷且富有吸引力的用户体验。
|
||||
</span>
|
||||
<span class="text2 aos-init aos-animate" data-aos="fade-up" data-aos-delay="500">
|
||||
在这个快速变化的数字时代,我们紧跟技术潮流,不断探索和应用最新的互联网技术,包括但不限于大数据、云计算、人工智能、物联网等,以创新驱动产品迭代和服务升级。我们的团队汇聚了来自不同背景的精英人才,他们拥有丰富的行业经验、深厚的技术功底和敏锐的创新思维,共同构成了我们强大的研发实力和竞争优势。
|
||||
</span>
|
||||
<span class="text2 aos-init aos-animate" data-aos="fade-up" data-aos-delay="600">
|
||||
我们深知,每一个客户的需求都是独一无二的。因此,我们坚持提供定制化服务,从深入理解客户的业务场景和需求出发,量身定制最适合的数字化解决方案。无论是助力传统企业数字化转型,还是陪伴初创企业快速成长,我们都能够成为客户信赖的伙伴,携手共赴成功之路。
|
||||
</span>
|
||||
<span class="text2 aos-init aos-animate" data-aos="fade-up" data-aos-delay="700">
|
||||
展望未来,我们将继续秉承开放、合作、共赢的态度,深化与各界伙伴的交流与合作,共同推动互联网行业的繁荣发展。同时,我们也将持续优化自身,不断提升技术创新能力和服务水平,为全球范围内的客户提供更加优质、高效、全面的数字化服务,共创美好未来。
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="hero-content-right">
|
||||
<h2 class="text3 aos-init aos-animate" data-aos="zoom-out-right" data-aos-delay="400">川界成长与发展</h2>
|
||||
|
||||
<p class="text4 aos-init aos-animate" data-aos="zoom-out-right" data-aos-delay="300">多维发展空间</p>
|
||||
<li class="text5 aos-init aos-animate" data-aos="fade-up" data-aos-delay="500">提供不同类型、赛道、地域和文化的实战机会</li>
|
||||
|
||||
<p class="text4 aos-init aos-animate" data-aos="zoom-out-right" data-aos-delay="300">高人才密度</p>
|
||||
<li class="text5 aos-init aos-animate" data-aos="fade-up" data-aos-delay="500">汇聚优秀人才,共同成长、相互激发</li>
|
||||
|
||||
<p class="text4 aos-init aos-animate" data-aos="zoom-out-right" data-aos-delay="300">学习和培养</p>
|
||||
<li class="text5 aos-init aos-animate" data-aos="fade-up" data-aos-delay="500">提供开放的学习资源和针对性培训,不断自我提升</li>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</Layout>
|
||||
<style>
|
||||
::-webkit-scrollbar-button {
|
||||
display: none;
|
||||
}
|
||||
::-webkit-scrollbar-corner {
|
||||
background-color: transparent;
|
||||
}
|
||||
::-webkit-scrollbar {
|
||||
width: 0;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.ac-more:hover {
|
||||
cursor: pointer;
|
||||
color: #5b63ff;
|
||||
}
|
||||
|
||||
.hover-pointer:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.bg-light-pink {
|
||||
background-color: #fcf2f0;
|
||||
-webkit-transition: all 0.3s ease 0s;
|
||||
-o-transition: all 0.3s ease 0s;
|
||||
transition: all 0.3s ease 0s;
|
||||
}
|
||||
|
||||
.hero-section-padding {
|
||||
padding: 320px 0 220px;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 1800px) and (max-width: 2600px) {
|
||||
.hero-section-padding {
|
||||
padding: 350px 0 200px;
|
||||
height: 100vh;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 1200px) and (max-width: 1365px) {
|
||||
.hero-section-padding {
|
||||
padding: 300px 0 143px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 992px) and (max-width: 1199px) {
|
||||
.hero-section-padding {
|
||||
padding: 300px 0 143px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 768px) and (max-width: 991px) {
|
||||
.hero-section-padding {
|
||||
padding: 170px 0 140px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 767px) {
|
||||
.hero-section-padding {
|
||||
padding: 110px 0 70px;
|
||||
}
|
||||
}
|
||||
|
||||
/* 文案 */
|
||||
.hero-content {
|
||||
display: flex;
|
||||
font-family: 'Proxima Nova Rg';
|
||||
}
|
||||
|
||||
.hero-content .text-title {
|
||||
color: #36299a;
|
||||
font-size: 30px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* left */
|
||||
.hero-content .hero-content-left {
|
||||
width: 34%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-left: 8%;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-left .text1 {
|
||||
font-weight: bold;
|
||||
font-size: 48px;
|
||||
color: #000000;
|
||||
font-family: 'Proxima Nova Rg';
|
||||
line-height: 60px;
|
||||
letter-spacing: 10px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-left .text2 {
|
||||
font-size: 15px;
|
||||
color: #333333;
|
||||
line-height: 25px;
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
/* right */
|
||||
.hero-content .hero-content-right {
|
||||
margin-left: 12%;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text3 {
|
||||
color: #36299a;
|
||||
font-size: 30px;
|
||||
font-weight: bold;
|
||||
font-family: 'Proxima Nova Rg';
|
||||
margin-bottom: 50px;
|
||||
margin-top: 10px;
|
||||
letter-spacing: 4px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text4 {
|
||||
color: #36299a;
|
||||
font-size: 17px;
|
||||
font-weight: bold;
|
||||
margin-top: 26px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text5 {
|
||||
color: #333333;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.body-dark-mode-wrap.dark-visible .hero-content .text-title {
|
||||
color: #d1d1d1;
|
||||
}
|
||||
.body-dark-mode-wrap.dark-visible .hero-content .hero-content-left .text1 {
|
||||
color: #ffffff;
|
||||
}
|
||||
.body-dark-mode-wrap.dark-visible .hero-content .hero-content-left .text2 {
|
||||
color: #9b9b9b;
|
||||
}
|
||||
.body-dark-mode-wrap.dark-visible .hero-content .hero-content-right .text3 {
|
||||
color: #ffffff;
|
||||
}
|
||||
.body-dark-mode-wrap.dark-visible .hero-content .hero-content-right .text4 {
|
||||
color: #d1d1d1;
|
||||
}
|
||||
.body-dark-mode-wrap.dark-visible .hero-content .hero-content-right .text5 {
|
||||
color: #9b9b9b;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 1200px) and (max-width: 1370px) {
|
||||
.hero-content .text-title {
|
||||
font-size: 28px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-left .text1 {
|
||||
font-size: 44px;
|
||||
line-height: 60px;
|
||||
letter-spacing: 10px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-left .text2 {
|
||||
font-size: 13px;
|
||||
line-height: 23px;
|
||||
margin-top: 26px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text3 {
|
||||
font-size: 28px;
|
||||
margin-bottom: 50px;
|
||||
margin-top: 8px;
|
||||
letter-spacing: 2px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text4 {
|
||||
font-size: 15px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text5 {
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 992px) and (max-width: 1199px) {
|
||||
.hero-content .text-title {
|
||||
font-size: 26px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-left .text1 {
|
||||
font-size: 40px;
|
||||
line-height: 50px;
|
||||
letter-spacing: 8px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-left .text2 {
|
||||
font-size: 12px;
|
||||
line-height: 22px;
|
||||
margin-top: 22px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text3 {
|
||||
font-size: 26px;
|
||||
margin-bottom: 40px;
|
||||
margin-top: 8px;
|
||||
letter-spacing: 2px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text4 {
|
||||
font-size: 14px;
|
||||
margin-top: 16px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text5 {
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 768px) and (max-width: 991px) {
|
||||
.hero-content .text-title {
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-left .text1 {
|
||||
font-size: 32px;
|
||||
line-height: 42px;
|
||||
letter-spacing: 7px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-left .text2 {
|
||||
font-size: 10px;
|
||||
line-height: 18px;
|
||||
margin-top: 16px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text3 {
|
||||
font-size: 22px;
|
||||
margin-bottom: 34px;
|
||||
margin-top: 6px;
|
||||
letter-spacing: 2px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text4 {
|
||||
font-size: 12px;
|
||||
margin-top: 14px;
|
||||
line-height: 12px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text5 {
|
||||
font-size: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 576px) and (max-width: 767px) {
|
||||
.hero-content .text-title {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-left .text1 {
|
||||
font-size: 22px;
|
||||
line-height: 34px;
|
||||
letter-spacing: 6px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-left .text2 {
|
||||
font-size: 8px;
|
||||
line-height: 16px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text3 {
|
||||
font-size: 16px;
|
||||
margin-bottom: 24px;
|
||||
margin-top: 6px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text4 {
|
||||
font-size: 10px;
|
||||
margin-top: 10px;
|
||||
line-height: 16px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text5 {
|
||||
font-size: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
/* wap */
|
||||
@media only screen and (max-width: 767px) {
|
||||
.hero-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 30px 15px;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-left {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
/* right */
|
||||
.hero-content .hero-content-right {
|
||||
width: 100%;
|
||||
margin-left: 0;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text3 {
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text4 {
|
||||
margin-top: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
346
src/pages/contact.astro
Normal file
@ -0,0 +1,346 @@
|
||||
---
|
||||
import Layout from "../layouts/Layout.astro";
|
||||
---
|
||||
<Layout isShowHeader = {false}>
|
||||
<div class="hero-section-padding section-padding-lr-1 bg-light-pink">
|
||||
<div class="container-fluid">
|
||||
<div class="hero-content">
|
||||
<div class="hero-content-left">
|
||||
<h1 class="text1 aos-init aos-animate" data-aos="zoom-out-right" data-aos-delay="200">与我们保持联系</h1>
|
||||
<span class="text2 aos-init aos-animate" data-aos="fade-up" data-aos-delay="300">江苏省淮安市淮安区平桥镇团结路253号</span>
|
||||
<a class="text2 aos-init aos-animate" data-aos="fade-up" data-aos-delay="300" href="tel:400-180-1950">+400-180-1950</a>
|
||||
<span class="text3 aos-init aos-animate" data-aos="fade-up" data-aos-delay="400">
|
||||
<a href="mailto:chuanjiexinxi@163.com">chuanjiexinxi@163.com</a>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="hero-content-right">
|
||||
<h2 class="text4 aos-init aos-animate" data-aos="zoom-out-right" data-aos-delay="300">你可能遇到的问题</h2>
|
||||
<span class="text5 aos-init aos-animate" data-aos="fade-up" data-aos-delay="500">软件如何进行退费?</span>
|
||||
<span class="text5 aos-init aos-animate" data-aos="fade-up" data-aos-delay="600">你们的产品会不会收集个人信息?</span>
|
||||
<span class="text5 aos-init aos-animate" data-aos="fade-up" data-aos-delay="700">如何不在跳转产品?</span>
|
||||
|
||||
<div class="bott-b aos-init aos-animate" data-aos="fade-up" data-aos-delay="800">
|
||||
<a href="tel:400-180-1950">联系我们</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</Layout>
|
||||
<style>
|
||||
::-webkit-scrollbar-button {
|
||||
display: none;
|
||||
}
|
||||
::-webkit-scrollbar-corner {
|
||||
background-color: transparent;
|
||||
}
|
||||
::-webkit-scrollbar {
|
||||
width: 0;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.ac-more:hover {
|
||||
cursor: pointer;
|
||||
color: #5b63ff;
|
||||
}
|
||||
|
||||
.hover-pointer:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.bg-light-pink {
|
||||
/* background-color: #fcf2f0; */
|
||||
-webkit-transition: all 0.3s ease 0s;
|
||||
-o-transition: all 0.3s ease 0s;
|
||||
transition: all 0.3s ease 0s;
|
||||
}
|
||||
|
||||
.hero-section-padding {
|
||||
padding: 300px 0 230px;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 1800px) and (max-width: 2600px) {
|
||||
.hero-section-padding {
|
||||
padding: 400px 0 500px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 1200px) and (max-width: 1365px) {
|
||||
.hero-section-padding {
|
||||
padding: 300px 0 143px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 992px) and (max-width: 1199px) {
|
||||
.hero-section-padding {
|
||||
padding: 300px 0 143px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 768px) and (max-width: 991px) {
|
||||
.hero-section-padding {
|
||||
padding: 170px 0 140px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 767px) {
|
||||
.hero-section-padding {
|
||||
padding: 110px 0 70px;
|
||||
}
|
||||
}
|
||||
|
||||
/* 文案 */
|
||||
.hero-content {
|
||||
display: flex;
|
||||
font-family: "Proxima Nova Rg";
|
||||
}
|
||||
|
||||
/* left */
|
||||
.hero-content .hero-content-left {
|
||||
width: 46%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-left: 4%;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-left .box-big {
|
||||
display: flex;
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-left .box-nu {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
background: #ffffff;
|
||||
border-radius: 20px;
|
||||
box-shadow: 0 8px 20px 0 rgba(0, 0, 0, 0.1);
|
||||
margin-right: 22px;
|
||||
}
|
||||
.hero-content .hero-content-left .box-2 {
|
||||
background: #36299a;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-left .text1 {
|
||||
color: #36299a;
|
||||
font-size: 44px;
|
||||
font-weight: bold;
|
||||
font-family: "Proxima Nova Rg";
|
||||
margin-bottom: 40px;
|
||||
letter-spacing: 4px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-left .text2 {
|
||||
font-size: 18px;
|
||||
color: #000000;
|
||||
line-height: 40px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-left .text3 {
|
||||
margin-top: 20px;
|
||||
}
|
||||
.hero-content .hero-content-left .text3 a {
|
||||
font-size: 26px;
|
||||
font-weight: bold;
|
||||
color: #f88341;
|
||||
border-bottom: 1px solid #f88341;
|
||||
}
|
||||
|
||||
/* right */
|
||||
.hero-content .hero-content-right {
|
||||
margin-left: 6%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .bott-b {
|
||||
width: 180px;
|
||||
height: 55px;
|
||||
background: #f88341;
|
||||
border-radius: 22px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .bott-b a {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
line-height: 55px;
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text4 {
|
||||
color: #36299a;
|
||||
font-size: 44px;
|
||||
font-weight: bold;
|
||||
font-family: "Proxima Nova Rg";
|
||||
margin-bottom: 40px;
|
||||
letter-spacing: 4px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text5 {
|
||||
color: #898989;
|
||||
font-size: 16px;
|
||||
border-bottom: 1px solid #e1e1e1;
|
||||
margin-bottom: 50px;
|
||||
}
|
||||
|
||||
.body-dark-mode-wrap.dark-visible .hero-content .hero-content-left .text1 {
|
||||
color: #ffffff;
|
||||
}
|
||||
.body-dark-mode-wrap.dark-visible .hero-content .hero-content-left .text2 {
|
||||
color: #9b9b9b;
|
||||
}
|
||||
.body-dark-mode-wrap.dark-visible .hero-content .hero-content-right .text4 {
|
||||
color: #ffffff;
|
||||
}
|
||||
.body-dark-mode-wrap.dark-visible .hero-content .hero-content-right .text5 {
|
||||
color: #9b9b9b;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 1200px) and (max-width: 1370px) {
|
||||
.hero-content .hero-content-left .text1 {
|
||||
font-size: 44px;
|
||||
line-height: 60px;
|
||||
letter-spacing: 10px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-left .text2 {
|
||||
font-size: 13px;
|
||||
line-height: 23px;
|
||||
margin-top: 26px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text4 {
|
||||
font-size: 28px;
|
||||
margin-bottom: 50px;
|
||||
margin-top: 8px;
|
||||
letter-spacing: 2px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text5 {
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 992px) and (max-width: 1199px) {
|
||||
.hero-content .hero-content-left .text1 {
|
||||
font-size: 40px;
|
||||
line-height: 50px;
|
||||
letter-spacing: 8px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-left .text2 {
|
||||
font-size: 12px;
|
||||
line-height: 22px;
|
||||
margin-top: 22px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text4 {
|
||||
font-size: 26px;
|
||||
margin-bottom: 40px;
|
||||
margin-top: 8px;
|
||||
letter-spacing: 2px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text5 {
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 768px) and (max-width: 991px) {
|
||||
.hero-content .hero-content-left .text1 {
|
||||
font-size: 32px;
|
||||
line-height: 42px;
|
||||
letter-spacing: 7px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-left .text2 {
|
||||
font-size: 10px;
|
||||
line-height: 18px;
|
||||
margin-top: 16px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text4 {
|
||||
font-size: 22px;
|
||||
margin-bottom: 34px;
|
||||
margin-top: 6px;
|
||||
letter-spacing: 2px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text5 {
|
||||
font-size: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 576px) and (max-width: 767px) {
|
||||
.hero-content .hero-content-left .text1 {
|
||||
font-size: 22px;
|
||||
line-height: 34px;
|
||||
letter-spacing: 6px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-left .text2 {
|
||||
font-size: 8px;
|
||||
line-height: 16px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text4 {
|
||||
font-size: 16px;
|
||||
margin-bottom: 24px;
|
||||
margin-top: 6px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text5 {
|
||||
font-size: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
/* wap */
|
||||
@media only screen and (max-width: 767px) {
|
||||
.hero-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 60px 15px;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-left {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-left .text1 {
|
||||
font-size: 30px;
|
||||
margin-bottom: 20px;
|
||||
letter-spacing: 2px;
|
||||
}
|
||||
|
||||
/* right */
|
||||
.hero-content .hero-content-right {
|
||||
width: 100%;
|
||||
margin-left: 0;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text4 {
|
||||
margin-top: 30px;
|
||||
font-size: 20px;
|
||||
margin-bottom: 20px;
|
||||
letter-spacing: 2px;
|
||||
}
|
||||
|
||||
.hero-content .hero-content-right .text5 {
|
||||
font-size: 14px;
|
||||
border-bottom: 1px solid #e1e1e1;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
@ -1,11 +1,236 @@
|
||||
---
|
||||
import Welcome from '../components/Welcome.astro';
|
||||
import Layout from '../layouts/Layout.astro';
|
||||
|
||||
// Welcome to Astro! Wondering what to do next? Check out the Astro documentation at https://docs.astro.build
|
||||
// Don't want to use any of this? Delete everything in this file, the `assets`, `components`, and `layouts` directories, and start fresh.
|
||||
import Layout from "../layouts/Layout.astro";
|
||||
import { Image } from "astro:assets";
|
||||
---
|
||||
|
||||
<Layout>
|
||||
<Welcome />
|
||||
<!--count -->
|
||||
<section class="ft-drk bg-shape-after sec-pad-lg text-center light">
|
||||
<div class="sec-pad-sm"></div>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="text-center section-text wow animated fadeInUp" data-wow-duration="2s" data-wow-delay=".2s">
|
||||
<h4>为什么选择我们</h4>
|
||||
</div>
|
||||
<div class="row ft-dark grad-orange pt-0">
|
||||
<div class="col-md-10 col-md-offset-1">
|
||||
<div class="col-sm-4 wow animated fadeInUp" data-wow-duration="2s" data-wow-delay=".2s">
|
||||
<div class="item">
|
||||
<div class="icon">
|
||||
<img alt="" src="image/icon-4.png">
|
||||
</div>
|
||||
<h5 class="heading">4.5 分</h5>
|
||||
<p>平均评分</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4 wow animated fadeInUp" data-wow-duration="2s" data-wow-delay=".2s">
|
||||
<div class="item">
|
||||
<div class="icon">
|
||||
<img alt="" src="image/icon-5.png">
|
||||
</div>
|
||||
<h4 class="heading">100000+</h4>
|
||||
<p>应用商店总下载量</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4 wow animated fadeInUp" data-wow-duration="2s" data-wow-delay=".2s">
|
||||
<div class="item">
|
||||
<div class="icon">
|
||||
<img alt="" src="image/icon-6.png">
|
||||
</div>
|
||||
<h4 class="heading">10000+</h4>
|
||||
<p>用户总数</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- End -->
|
||||
<!-- Tools -->
|
||||
<section class="tools bg-grad-shad sec-pad-lg">
|
||||
<div class="sec-pad-lg pb-0">
|
||||
<div class="text-center section-text wow animated fadeInUp" data-wow-duration="2s" data-wow-delay=".2s">
|
||||
<h4>我们的合作商</h4>
|
||||
<div class="spce"></div>
|
||||
<p class="large fx-wdth">支持各大手机厂商及主流软件。您可在各大应用商店下载。</p>
|
||||
</div>
|
||||
<div class="owl-carousel pb-0 tools-carousel wow animated fadeInUp" data-wow-duration="1.2s" data-wow-delay=".2s">
|
||||
<div class="tools-item">
|
||||
<!-- <Image src='huawei.svg' alt={`huawei`} width={100} /> -->
|
||||
<img alt="" src="huawei.svg">
|
||||
</div>
|
||||
<div class="tools-item">
|
||||
<img alt="" src="meizu.svg">
|
||||
</div>
|
||||
<div class="tools-item">
|
||||
<img alt="" src="vivo.svg">
|
||||
</div>
|
||||
<div class="tools-item">
|
||||
<img alt="" src="oppo.svg">
|
||||
</div>
|
||||
<div class="tools-item">
|
||||
<img alt="" src="xiaomi.svg">
|
||||
</div>
|
||||
<div class="tools-item">
|
||||
<img alt="" src="weibo.svg">
|
||||
</div>
|
||||
<div class="tools-item">
|
||||
<img alt="" src="baijiahao.svg">
|
||||
</div>
|
||||
<div class="tools-item">
|
||||
<img alt="" src="douyin.svg">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- Overview -->
|
||||
<section class="about-section" id="overview">
|
||||
<div class="container">
|
||||
<div class="row sec-pad pb-0">
|
||||
<div class="col-md-10 col-md-offset-1">
|
||||
<div class="flx-container res-center-sm align-flx-center flx-off-xs row">
|
||||
<div class="col-sm-8 col-md-7 res-margin-sm">
|
||||
<div class="overview-img wow animated fadeInUp" data-wow-duration="1.2s" data-wow-delay=".2s">
|
||||
<img alt="" src="image/img-10.jpg">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4 col-md-5">
|
||||
<div class="overview-text wow animated fadeInUp" data-wow-duration="1.2s" data-wow-delay=".2s">
|
||||
<div class="text">
|
||||
<h4>名师讲书</h4>
|
||||
<div class="spce"></div>
|
||||
<p>名师带您走进书的世界,大咖引领您探索智慧的边界,一场不可错过的视听盛宴即将开启。</p>
|
||||
<div class="spce sm"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row sec-pad pt-0">
|
||||
<div class="col-md-10 col-md-offset-1">
|
||||
<div class="flx-container res-center-sm align-flx-center flx-off-xs row">
|
||||
<div class="col-sm-4 col-md-5 res-margin-sm">
|
||||
<div class="overview-text wow animated fadeInUp" data-wow-duration="1.2s" data-wow-delay=".2s">
|
||||
<div class="text">
|
||||
<h4>授课专业,每周上新</h4>
|
||||
<div class="spce"></div>
|
||||
<p>精品直播呈现,权威师资授课,每周准时更新,为你持续输送优质内容。</p>
|
||||
<div class="spce"></div>
|
||||
<!-- <a href="#" class="btn grdnt-orange">Get It Now</a> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-8 col-md-7 res-margin-sm">
|
||||
<div class="overview-img fr wow animated fadeInUp" data-wow-duration="1.2s" data-wow-delay=".2s">
|
||||
<img alt="" src="image/img-11.png">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- // -->
|
||||
<!-- FAQS-->
|
||||
<section class="sec-pad-lg bg-dark light">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="row">
|
||||
<div class="col-md-10 col-md-offset-1">
|
||||
<div class="faq-wrapper row">
|
||||
<div class="text-center section-text wow animated fadeInUp" data-wow-duration="2s" data-wow-delay=".2s">
|
||||
<h4>常见问题</h4>
|
||||
<div class="spce"></div>
|
||||
<p class="large fx-wdth">为您整理了览屿app的常见问题,让您可以快速找到答案。</p>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="faq-items right-dir-col col-md-8">
|
||||
<div class="col-sm-6 res-margin-sm wow fadeInUp animated" data-wow-duration="1.2s" data-wow-delay=".2s">
|
||||
<div class="icon-bg-sm grdnt-orange">
|
||||
<span class="clip-txt">?</span>
|
||||
</div>
|
||||
<div class="text">
|
||||
<h5>如何下载安装?</h5>
|
||||
<p>您可以在各大手机的应用商店进行下载安装。</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 wow fadeInUp animated" data-wow-duration="1.2s" data-wow-delay=".2s">
|
||||
<div class="icon-bg-sm grdnt-orange">
|
||||
<span class="clip-txt">?</span>
|
||||
</div>
|
||||
<div class="text">
|
||||
<h5>软件免费吗?</h5>
|
||||
<p>软件内有免费的课程供您学习,您也可以升级成会员解锁更多功能。</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="spce lg"></div>
|
||||
<div class="col-sm-6 res-margin-sm wow fadeInUp animated" data-wow-duration="1.2s" data-wow-delay=".2s">
|
||||
<div class="icon-bg-sm grdnt-orange">
|
||||
<span class="clip-txt">?</span>
|
||||
</div>
|
||||
<div class="text">
|
||||
<h5>能否下载后无网络收听?</h5>
|
||||
<p>软件支持下载后离线浏览。</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 wow fadeInUp animated" data-wow-duration="1.2s" data-wow-delay=".2s">
|
||||
<div class="icon-bg-sm grdnt-orange">
|
||||
<span class="clip-txt">?</span>
|
||||
</div>
|
||||
<div class="text">
|
||||
<h5>关于会员</h5>
|
||||
<p>关于会员的问题可以联系客服热线:400-180-1950。我们会有专门人员对您一对一解答。</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="spce lg"></div>
|
||||
<div class="col-sm-6 wow fadeInUp animated" data-wow-duration="1.2s" data-wow-delay=".2s">
|
||||
<div class="icon-bg-sm grdnt-orange">
|
||||
<span class="clip-txt">?</span>
|
||||
</div>
|
||||
<div class="text">
|
||||
<h5>如何联系客服人员?</h5>
|
||||
<p>您可以拨打我们的7 * 24小时客服热线:400-180-1950。</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 res-margin-sm wow fadeInUp animated" data-wow-duration="1.2s" data-wow-delay=".2s">
|
||||
<div class="icon-bg-sm grdnt-orange">
|
||||
<span class="clip-txt">?</span>
|
||||
</div>
|
||||
<div class="text">
|
||||
<h5>是个什么平台?</h5>
|
||||
<p>是一款非常好用的学习办公的软件,这款软件里面包含的非常多丰富的学习办公的软件,这里面的可以很好的满足更多用户的稀罕的,可以在这里面提升更多的学习的氛围的。</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="img-pre col-md-4 wow fadeInUp animated" data-wow-duration="1.2s" data-wow-delay=".3s">
|
||||
<img alt="" src="image/img-faq.png">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- -->
|
||||
</Layout>
|
||||
<style>
|
||||
.overview-img {
|
||||
max-width: 300px;
|
||||
}
|
||||
|
||||
.fr {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.tools-item img{
|
||||
padding: 1.5rem;
|
||||
}
|
||||
|
||||
.row {
|
||||
margin-left: unset;
|
||||
margin-right: unset;
|
||||
}
|
||||
</style>
|
223
src/pages/news.astro
Normal file
@ -0,0 +1,223 @@
|
||||
---
|
||||
import Layout from '../layouts/Layout.astro';
|
||||
import { newsIndex } from '../../utils/rpc';
|
||||
import { getConfig } from '../../utils/config';
|
||||
// import { TP2_COLUMN_NEWS, TP2_COLUMN_NEWS_URL, TP2_COLUMN_INDEX, TP2_COLUMN_INDEX_URL } from '../../../../utils/const';
|
||||
const config = getConfig(Astro)
|
||||
const {code, data} = await newsIndex(config.id);
|
||||
console.log(data)
|
||||
---
|
||||
<Layout
|
||||
isShowHeader = {false}
|
||||
>
|
||||
<main class="v4 main page-news">
|
||||
<div class="news-list-component">
|
||||
<div class="container">
|
||||
<div class="wrap wrap--small">
|
||||
<div class="result-product">
|
||||
<div class="result-product__items news-archive-items">
|
||||
{
|
||||
data.map(news => (
|
||||
<a href={`/news/${news.id}`} title={news.title} class="result-product__item result-product__item--border">
|
||||
<div class="result-product__content">
|
||||
<span class="result-product__label">{news.created_at}</span>
|
||||
<div class="heading result-product__title">{news.title}</div>
|
||||
<p class="result-product__info">{news.description}</p>
|
||||
</div>
|
||||
<div class="result-product__media ">
|
||||
<img class="result-product__image img-lazy show success-img" alt={news.title} src={news.cover} onerror="imgErrorUrl(this)" style="" />
|
||||
</div>
|
||||
</a>
|
||||
))
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</Layout>
|
||||
<style>
|
||||
.page-news {
|
||||
background-color: #fff !important;
|
||||
padding-top: 5rem;
|
||||
.result-product__image {
|
||||
border-radius: 16px;
|
||||
}
|
||||
|
||||
.columns-name {
|
||||
font-size: 5rem;
|
||||
padding: 3rem;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 767.98px) {
|
||||
.columns-name {
|
||||
font-size: 2rem;
|
||||
padding: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.result-product__media {
|
||||
-webkit-box-flex: 0;
|
||||
-webkit-flex: 0 0 260px;
|
||||
-ms-flex: 0 0 260px;
|
||||
flex: 0 0 260px;
|
||||
max-width: 260px;
|
||||
height: 173.3px;
|
||||
position: relative
|
||||
}
|
||||
.result-product__image {
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border: 0;
|
||||
vertical-align: middle;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%,-50%);
|
||||
cursor: pointer
|
||||
}
|
||||
|
||||
.result-product__item {
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.result-product__info {
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
color: #7f7f7f;
|
||||
line-height: 1.5
|
||||
}
|
||||
|
||||
.result-product__label {
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
color: #7f7f7f;
|
||||
line-height: 1.71;
|
||||
display: block;
|
||||
margin-bottom: 8px
|
||||
}
|
||||
|
||||
.result-product__title {
|
||||
font-size: 22px;
|
||||
font-weight: 700;
|
||||
line-height: 1.45;
|
||||
color: #000;
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
max-height: 120px;
|
||||
overflow: hidden
|
||||
}
|
||||
|
||||
.result-product__item--border {
|
||||
border-bottom: 1px solid #ededed
|
||||
}
|
||||
|
||||
.result-product__item {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
padding: 32px 0
|
||||
}
|
||||
|
||||
|
||||
.result-product {
|
||||
margin-bottom: 80px
|
||||
}
|
||||
|
||||
.result-product:last-of-type {
|
||||
margin-bottom: 0
|
||||
}
|
||||
|
||||
.result-product__items {
|
||||
display: block;
|
||||
background-color: #fff
|
||||
}
|
||||
|
||||
.result-product__item {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
padding: 32px 0
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 1200px) {
|
||||
.no-touch .result-product__item:hover .result-product__title {
|
||||
color:#7f7f7f
|
||||
}
|
||||
|
||||
.no-touch .result-product__item:hover .result-product__image--thumb::before {
|
||||
opacity: .5
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 768px) {
|
||||
.result-product__media {
|
||||
-webkit-box-flex: 0;
|
||||
-webkit-flex: 0 0 120px;
|
||||
-ms-flex: 0 0 120px;
|
||||
flex: 0 0 120px;
|
||||
height: 90px;
|
||||
background-color: unset
|
||||
}
|
||||
|
||||
.result-product__info {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.result-product__title {
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.result-product__content {
|
||||
display: flex;
|
||||
flex-direction: column-reverse;
|
||||
}
|
||||
}
|
||||
|
||||
.result-product__item--border {
|
||||
border-bottom: 1px solid #ededed
|
||||
}
|
||||
|
||||
.result-product__item-title {
|
||||
font-size: 22px;
|
||||
font-weight: 700;
|
||||
line-height: 1.45;
|
||||
color: #000;
|
||||
display: block;
|
||||
padding-bottom: 24px;
|
||||
padding-top: 80px
|
||||
}
|
||||
|
||||
.result-product__item-title--big {
|
||||
font-size: 32px;
|
||||
line-height: 1.25;
|
||||
letter-spacing: -0.5px
|
||||
}
|
||||
|
||||
.result-product__label {
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
color: #7f7f7f;
|
||||
line-height: 1.71;
|
||||
display: block;
|
||||
margin-bottom: 8px
|
||||
}
|
||||
|
||||
.result-product__content-text {
|
||||
position: relative;
|
||||
-webkit-transform: translateY(-50%);
|
||||
transform: translateY(-50%);
|
||||
top: 50%;
|
||||
max-width: 730px;
|
||||
padding-right: 20px
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
336
src/pages/news/[...slug].astro
Normal file
@ -0,0 +1,336 @@
|
||||
---
|
||||
import Layout from '../../layouts/Layout.astro';
|
||||
import { newsDetail } from '../../../utils/rpc';
|
||||
import { getConfig } from '../../../utils/config';
|
||||
// import { TP2_COLUMN_NEWS, TP2_COLUMN_NEWS_URL } from '../../../../utils/const';
|
||||
const { slug } = Astro.params;
|
||||
const config = getConfig(Astro)
|
||||
if (!slug) {
|
||||
return Astro.redirect('/500');
|
||||
}
|
||||
|
||||
const {code, data} = await newsDetail(slug, config);
|
||||
|
||||
if (!data || code !== 0) {
|
||||
return Astro.redirect('/404');
|
||||
}
|
||||
|
||||
// const breadcrumb = [{
|
||||
// title: '主页',
|
||||
// url: '/'
|
||||
// }, {title: TP2_COLUMN_NEWS, url: TP2_COLUMN_NEWS_URL}, {title: data.title, url: 'javascript:void(0);'}]
|
||||
---
|
||||
<Layout isShowHeader = {false}>
|
||||
<div>
|
||||
<main class="news-main">
|
||||
<div class="news-container">
|
||||
<article class="news-detail-content">
|
||||
<!-- <span class="news-date">发布于: {data.created_at}</span> -->
|
||||
<h1 class="title" title="标题">{data.title}</h1>
|
||||
<div class="top-icon"></div>
|
||||
<div class="news-content" set:html={data.content}>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="news-navigation">
|
||||
{
|
||||
data.prevNews && (
|
||||
<div>
|
||||
<span>上一篇: </span>
|
||||
<a class="news-prev news-link" title={data.prevNews.title} href={`/news/${data.prevNews.id}`}>{data.prevNews.title}</a>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
{
|
||||
data.nextNews && (
|
||||
<div>
|
||||
<span>下一篇: </span>
|
||||
<a class="news-next news-link" title={data.nextNews.title} href={`/news/${data.nextNews.id}`}>{data.nextNews.title}</a>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<!-- <aside class="news-sidebar">
|
||||
<div class="related-news">
|
||||
<h3>相关新闻</h3>
|
||||
<ul>
|
||||
{data.about.map(item => (
|
||||
<li>
|
||||
<a class="news-link" title={item.title} href={`/news/${item.id}`}>
|
||||
<span class="related-title">{item.title}</span>
|
||||
{/* <span class="related-date">{item.date}</span> */}
|
||||
</a>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
</aside> -->
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<style is:inline>
|
||||
.news-content p {
|
||||
margin: 20px 0;
|
||||
color: #6f6f6f;
|
||||
font-size: 18px;
|
||||
line-height: 32px;
|
||||
}
|
||||
.news-content img {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
|
||||
main {
|
||||
margin-top: 5rem;
|
||||
}
|
||||
|
||||
article {
|
||||
width: 50rem;
|
||||
}
|
||||
|
||||
/* .news-main {
|
||||
margin-top: 5rem;
|
||||
} */
|
||||
|
||||
|
||||
.top-icon {
|
||||
padding-bottom: 30px;
|
||||
border-bottom: 1px solid #e0e0e0
|
||||
}
|
||||
|
||||
.news-date {
|
||||
font-weight: 700;
|
||||
font-size: 14px;
|
||||
color: #d0021b;
|
||||
line-height: 17px;
|
||||
margin-bottom: 30px;
|
||||
display: inline-block
|
||||
}
|
||||
|
||||
.news-meta {
|
||||
border-bottom: 1px solid var(--text-primary);
|
||||
color: black;
|
||||
padding-bottom: 1rem;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
.title {
|
||||
font-size: 2.5rem;
|
||||
text-align: left;
|
||||
font-weight: 700;
|
||||
color: var(--text-primary);
|
||||
margin-bottom: 1.5rem;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.news-meta {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
gap: 2rem;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
.news-meta span{
|
||||
color: var(--text-primary);
|
||||
}
|
||||
|
||||
/* .news-date, .news-author {
|
||||
color: rgba(255, 255, 255, 0.9);
|
||||
font-size: 1rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
} */
|
||||
|
||||
.news-author a {
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
}
|
||||
/*
|
||||
.news-date::before {
|
||||
content: '📅';
|
||||
}
|
||||
|
||||
.news-author::before {
|
||||
content: '👤';
|
||||
} */
|
||||
|
||||
.news-tags {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
gap: 1rem;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.news-tag {
|
||||
background: rgba(255, 255, 255, 0.15);
|
||||
color: white;
|
||||
padding: 0.3rem 1rem;
|
||||
border-radius: var(--radius-md);
|
||||
font-size: 0.9rem;
|
||||
backdrop-filter: blur(4px);
|
||||
border: 1px solid rgba(255, 255, 255, 0.1);
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.news-tag:hover {
|
||||
background: rgba(255, 255, 255, 0.25);
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
|
||||
.news-container {
|
||||
/* max-width: 1200px; */
|
||||
/* margin: -2rem auto 0; */
|
||||
/* padding: 0 1.5rem 3rem; */
|
||||
/* display: grid; */
|
||||
/* grid-template-columns: 1fr 320px; */
|
||||
/* gap: 2.5rem; */
|
||||
position: relative;
|
||||
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.news-detail-content {
|
||||
border-right: 1px solid var(--text-primary);
|
||||
padding: 3rem;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.news-content {
|
||||
padding-top: 3rem;
|
||||
font-size: 1.1rem;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
.news-images {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
||||
gap: 1.5rem;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.news-images img {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
border-radius: var(--radius-lg);
|
||||
box-shadow: var(--shadow-md);
|
||||
transition: transform 0.3s ease;
|
||||
}
|
||||
|
||||
.news-images img:hover {
|
||||
transform: scale(1.02);
|
||||
}
|
||||
|
||||
.news-content p {
|
||||
margin-bottom: 1.8rem;
|
||||
}
|
||||
|
||||
.news-content p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.news-navigation {
|
||||
margin-top: 1rem;
|
||||
padding-top: 2rem;
|
||||
border-top: 1px solid var(--divider-color);
|
||||
}
|
||||
|
||||
.news-sidebar {
|
||||
position: sticky;
|
||||
top: 2rem;
|
||||
height: fit-content;
|
||||
}
|
||||
|
||||
.related-news {
|
||||
padding: 1rem;
|
||||
/* box-shadow: var(--shadow-lg); */
|
||||
}
|
||||
|
||||
.related-news h3 {
|
||||
font-size: 1.2rem;
|
||||
color: var(--text-primary);
|
||||
margin-bottom: 1.5rem;
|
||||
padding-bottom: 1rem;
|
||||
border-bottom: 1px solid var(--text-primary);
|
||||
}
|
||||
|
||||
.related-news ul {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.related-news li {
|
||||
/* margin-bottom: 1.2rem;
|
||||
padding-bottom: 1.2rem; */
|
||||
border-bottom: 1px solid var(--divider-color);
|
||||
}
|
||||
|
||||
.related-news li:last-child {
|
||||
margin-bottom: 0;
|
||||
padding-bottom: 0;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.related-news a {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.5rem;
|
||||
text-decoration: none;
|
||||
/* color: var(--text-secondary); */
|
||||
/* color: black; */
|
||||
transition: all 0.3s ease;
|
||||
padding: 0.4rem;
|
||||
border-radius: var(--radius-md);
|
||||
}
|
||||
|
||||
.related-news a:hover {
|
||||
transform: translateX(5px);
|
||||
}
|
||||
|
||||
.related-title {
|
||||
font-size: 1rem;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.related-date {
|
||||
font-size: 0.9rem;
|
||||
color: var(--text-tertiary);
|
||||
}
|
||||
|
||||
@media (max-width: 1024px) {
|
||||
.news-container {
|
||||
grid-template-columns: 1fr;
|
||||
margin-top: -1rem;
|
||||
}
|
||||
|
||||
.news-sidebar {
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
|
||||
.news-detail-content {
|
||||
padding: 1.5rem;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.news-share {
|
||||
flex-wrap: wrap;
|
||||
gap: 0.8rem;
|
||||
}
|
||||
|
||||
.share-btn {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</Layout>
|
12
utils/config.ts
Normal file
@ -0,0 +1,12 @@
|
||||
import type { IWebsiteConfig } from "./rpc";
|
||||
|
||||
export function getConfig(Astro: any):IWebsiteConfig
|
||||
{
|
||||
return Astro.locals.template_config;
|
||||
}
|
||||
|
||||
// 取默认的配置
|
||||
export function getExtra(extraTag: string = '')
|
||||
{
|
||||
return {}
|
||||
}
|
5
utils/host.ts
Normal file
@ -0,0 +1,5 @@
|
||||
export async function getHost(request: Request) {
|
||||
// 获取请求头中的 Host
|
||||
const host = request.headers.get('host');
|
||||
return host;
|
||||
}
|
75
utils/rpc-client.ts
Normal file
@ -0,0 +1,75 @@
|
||||
import net from 'net'
|
||||
|
||||
interface JsonRpcRequest {
|
||||
jsonrpc: '2.0'
|
||||
method: string
|
||||
params?: any
|
||||
id: number
|
||||
}
|
||||
|
||||
interface JsonRpcResponse {
|
||||
jsonrpc: '2.0'
|
||||
id: number
|
||||
result?: any
|
||||
error?: { code: number; message: string; data?: any }
|
||||
context?: any
|
||||
}
|
||||
|
||||
export class JsonRpcClient {
|
||||
private host: string
|
||||
private port: number
|
||||
private timeout: number
|
||||
|
||||
constructor(host: string = '127.0.0.1', port: number = 9504, timeout = 1000) {
|
||||
this.host = host
|
||||
this.port = port
|
||||
this.timeout = timeout
|
||||
}
|
||||
|
||||
async call(method: string, params?: any): Promise<any> {
|
||||
const req: JsonRpcRequest = {
|
||||
jsonrpc: '2.0',
|
||||
method,
|
||||
params,
|
||||
id: Date.now(),
|
||||
}
|
||||
|
||||
const message = JSON.stringify(req) + '\n'
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
const client = new net.Socket()
|
||||
let response = ''
|
||||
|
||||
client.setEncoding('utf-8')
|
||||
const timer = setTimeout(() => {
|
||||
client.destroy()
|
||||
reject(new Error('RPC call timed out'))
|
||||
}, this.timeout)
|
||||
|
||||
client.connect(this.port, this.host, () => {
|
||||
client.write(message)
|
||||
})
|
||||
|
||||
client.on('data', (data) => {
|
||||
response += data.toString()
|
||||
try {
|
||||
const res: JsonRpcResponse = JSON.parse(response)
|
||||
clearTimeout(timer)
|
||||
client.end()
|
||||
if (res.error) {
|
||||
reject(new Error(res.error.message))
|
||||
} else {
|
||||
resolve(res.result)
|
||||
}
|
||||
} catch (e) {
|
||||
// wait for more data
|
||||
}
|
||||
})
|
||||
|
||||
client.on('error', (err) => {
|
||||
clearTimeout(timer)
|
||||
reject(err)
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
137
utils/rpc.ts
Normal file
@ -0,0 +1,137 @@
|
||||
import { JsonRpcClient } from './rpc-client.ts'
|
||||
|
||||
interface images {
|
||||
src:string
|
||||
}
|
||||
|
||||
interface result<T> {
|
||||
code : number
|
||||
message : string
|
||||
data : T
|
||||
}
|
||||
|
||||
function getRpcClient() {
|
||||
|
||||
return new JsonRpcClient(import.meta.env.RPC_REMOTE, import.meta.env.RPC_PORT)
|
||||
}
|
||||
|
||||
// 新闻列表
|
||||
export interface InewsIndex {
|
||||
id: number
|
||||
title: string
|
||||
cover: string
|
||||
keywords: string
|
||||
description: string
|
||||
content: string
|
||||
created_at: string
|
||||
updated_at: string
|
||||
column_tag: string
|
||||
column_tag_url: string
|
||||
second_column_tag: string
|
||||
second_column_tag_url: string
|
||||
}
|
||||
export async function newsIndex(websiteId:number = 0, limit:number = 10, page:number = 1, filter = []):Promise<{
|
||||
code : number
|
||||
message : string
|
||||
data : InewsIndex[]
|
||||
total: number
|
||||
hot: {
|
||||
cover: string
|
||||
id: string
|
||||
title: string
|
||||
created_at: string
|
||||
}[]
|
||||
guess: {
|
||||
cover: string
|
||||
id: string
|
||||
title: string
|
||||
created_at: string
|
||||
}[]
|
||||
}>{
|
||||
const client = getRpcClient()
|
||||
const result = await client.call('news/index', {
|
||||
id:websiteId,
|
||||
limit: limit,
|
||||
page: page,
|
||||
filter: filter
|
||||
})
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
|
||||
// 新闻详情
|
||||
export interface InewsDetail {
|
||||
id: number
|
||||
title: string
|
||||
keywords: string
|
||||
description: string
|
||||
content: string
|
||||
created_at: string
|
||||
updated_at: string
|
||||
column_tag: string
|
||||
column_tag_url: string
|
||||
second_column_tag: string
|
||||
second_column_tag_url: string
|
||||
about: {
|
||||
id: number
|
||||
title: string
|
||||
}[]
|
||||
prevNews: {
|
||||
id: number
|
||||
title: string
|
||||
}
|
||||
nextNews: {
|
||||
id: number
|
||||
title: string
|
||||
}
|
||||
}
|
||||
export async function newsDetail(id:string, config: IWebsiteConfig):Promise<result<InewsDetail>>{
|
||||
const client = getRpcClient()
|
||||
const result = await client.call('news/view', {
|
||||
id:id,
|
||||
app_id: config.id
|
||||
})
|
||||
return result
|
||||
}
|
||||
|
||||
|
||||
// 网站配置
|
||||
export interface IWebsiteConfig {
|
||||
id: number
|
||||
app_extra_tag: string
|
||||
app_name: string
|
||||
app_description: string
|
||||
app_keywords: string
|
||||
app_company: string
|
||||
app_logo: string
|
||||
app_favicon: string
|
||||
app_copyright: string
|
||||
app_icp: string
|
||||
app_filing: string
|
||||
app_filing_url: string
|
||||
app_baidu_zhanzhang: string
|
||||
}
|
||||
export async function websiteConfig(host:string):Promise<result<IWebsiteConfig>>{
|
||||
const client = getRpcClient()
|
||||
const result = await client.call('website/config', {
|
||||
host:host
|
||||
})
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
|
||||
export interface Icolumns {
|
||||
id: number
|
||||
title: string
|
||||
link: string
|
||||
desc:string
|
||||
}
|
||||
export async function columns(id: number):Promise<result<Icolumns>>{
|
||||
const client = getRpcClient()
|
||||
const result = await client.call('column/index', {
|
||||
app_id:id,
|
||||
})
|
||||
return result
|
||||
}
|