This commit is contained in:
toom1996
2025-07-09 17:33:41 +08:00
parent 46ad420309
commit 92e543ecff
64 changed files with 15946 additions and 15 deletions

View File

@ -1,5 +1,16 @@
// @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: {
// host: '0.0.0.0',
},
});

188
package-lock.json generated
View File

@ -8,6 +8,7 @@
"name": "huoerguosi",
"version": "0.0.1",
"dependencies": {
"@astrojs/node": "^9.3.0",
"astro": "^5.11.0"
}
},
@ -52,6 +53,20 @@
"vfile": "^6.0.3"
}
},
"node_modules/@astrojs/node": {
"version": "9.3.0",
"resolved": "https://registry.npmmirror.com/@astrojs/node/-/node-9.3.0.tgz",
"integrity": "sha512-IV8NzGStHAsKBz1ljxxD8PBhBfnw/BEx/PZfsncTNXg9D4kQtZbSy+Ak0LvDs+rPmK0VeXLNn0HAdWuHCVg8cw==",
"license": "MIT",
"dependencies": {
"@astrojs/internal-helpers": "0.6.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",
@ -1975,6 +1990,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",
@ -2061,12 +2085,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",
@ -2126,6 +2165,12 @@
"@esbuild/win32-x64": "0.25.6"
}
},
"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",
@ -2147,6 +2192,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",
@ -2215,6 +2269,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",
@ -2473,6 +2536,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",
@ -2483,6 +2571,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",
@ -3429,6 +3523,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",
@ -3542,6 +3657,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",
@ -3737,6 +3864,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",
@ -4034,6 +4170,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",
@ -4137,6 +4307,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",
@ -4211,6 +4390,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",

View File

@ -9,6 +9,7 @@
"astro": "astro"
},
"dependencies": {
"@astrojs/node": "^9.3.0",
"astro": "^5.11.0"
}
}
}

BIN
public/images/about-bg.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
public/images/anli.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 392 B

BIN
public/images/bg-chart1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
public/images/bg-chart2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
public/images/bg-chart3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
public/images/btn1-bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 B

BIN
public/images/btn2-bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 670 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
public/images/logo40_40.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
public/images/nav-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 448 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 925 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
public/images/slide.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
public/images/slide_1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

1
public/images/themes.png Normal file
View File

@ -0,0 +1 @@
No Content: https://www.xaikead.com/images/themes.png

BIN
public/images/to-top1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 B

BIN
public/images/top-icons.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
public/images/top.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 950 B

BIN
public/images/website.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 941 KiB

141
public/js/easing.js Normal file
View File

@ -0,0 +1,141 @@
/*
* jQuery EasIng v1.1.2 - http://gsgd.co.uk/sandbox/jquery.easIng.php
*
* Uses the built In easIng capabilities added In jQuery 1.1
* to offer multiple easIng options
*
* Copyright (c) 2007 George Smith
* Licensed under the MIT License:
* http://www.opensource.org/licenses/mit-license.php
*/
// t: current time, b: begInnIng value, c: change In value, d: duration
jQuery.extend( jQuery.easing,
{
easeInQuad: function (x, t, b, c, d) {
return c*(t/=d)*t + b;
},
easeOutQuad: function (x, t, b, c, d) {
return -c *(t/=d)*(t-2) + b;
},
easeInOutQuad: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t + b;
return -c/2 * ((--t)*(t-2) - 1) + b;
},
easeInCubic: function (x, t, b, c, d) {
return c*(t/=d)*t*t + b;
},
easeOutCubic: function (x, t, b, c, d) {
return c*((t=t/d-1)*t*t + 1) + b;
},
easeInOutCubic: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t*t + b;
return c/2*((t-=2)*t*t + 2) + b;
},
easeInQuart: function (x, t, b, c, d) {
return c*(t/=d)*t*t*t + b;
},
easeOutQuart: function (x, t, b, c, d) {
return -c * ((t=t/d-1)*t*t*t - 1) + b;
},
easeInOutQuart: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
return -c/2 * ((t-=2)*t*t*t - 2) + b;
},
easeInQuint: function (x, t, b, c, d) {
return c*(t/=d)*t*t*t*t + b;
},
easeOutQuint: function (x, t, b, c, d) {
return c*((t=t/d-1)*t*t*t*t + 1) + b;
},
easeInOutQuint: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
return c/2*((t-=2)*t*t*t*t + 2) + b;
},
easeInSine: function (x, t, b, c, d) {
return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
},
easeOutSine: function (x, t, b, c, d) {
return c * Math.sin(t/d * (Math.PI/2)) + b;
},
easeInOutSine: function (x, t, b, c, d) {
return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
},
easeInExpo: function (x, t, b, c, d) {
return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
},
easeOutExpo: function (x, t, b, c, d) {
return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
},
easeInOutExpo: function (x, t, b, c, d) {
if (t==0) return b;
if (t==d) return b+c;
if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
},
easeInCirc: function (x, t, b, c, d) {
return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
},
easeOutCirc: function (x, t, b, c, d) {
return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
},
easeInOutCirc: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
},
easeInElastic: function (x, t, b, c, d) {
var s=1.70158;var p=0;var a=c;
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
if (a < Math.abs(c)) { a=c; var s=p/4; }
else var s = p/(2*Math.PI) * Math.asin (c/a);
return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
},
easeOutElastic: function (x, t, b, c, d) {
var s=1.70158;var p=0;var a=c;
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
if (a < Math.abs(c)) { a=c; var s=p/4; }
else var s = p/(2*Math.PI) * Math.asin (c/a);
return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
},
easeInOutElastic: function (x, t, b, c, d) {
var s=1.70158;var p=0;var a=c;
if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
if (a < Math.abs(c)) { a=c; var s=p/4; }
else var s = p/(2*Math.PI) * Math.asin (c/a);
if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
},
easeInBack: function (x, t, b, c, d, s) {
if (s == undefined) s = 1.70158;
return c*(t/=d)*t*((s+1)*t - s) + b;
},
easeOutBack: function (x, t, b, c, d, s) {
if (s == undefined) s = 1.70158;
return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
},
easeInOutBack: function (x, t, b, c, d, s) {
if (s == undefined) s = 1.70158;
if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
},
easeInBounce: function (x, t, b, c, d) {
return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
},
easeOutBounce: function (x, t, b, c, d) {
if ((t/=d) < (1/2.75)) {
return c*(7.5625*t*t) + b;
} else if (t < (2/2.75)) {
return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
} else if (t < (2.5/2.75)) {
return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
} else {
return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
}
},
easeInOutBounce: function (x, t, b, c, d) {
if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
}
});

4
public/js/jquery.min.js vendored Normal file

File diff suppressed because one or more lines are too long

40
public/js/jquery.mixitup.min.js vendored Normal file
View File

@ -0,0 +1,40 @@
/*
* MIXITUP - A CSS3 & JQuery Filter and Sort Plugin
* Version: 1.4.0
* Author: Patrick Kunka
* Copyright 2012-2013 Patrick Kunka, All Rights Reserved
* FREE FOR NON-COMMERCIAL USE
* http://www.mixitup.io
*/
(function(e){function m(d,b,h,c,a){function j(){k.unbind();b&&v(b,h,c,a);a.startOrder=[];a.newOrder=[];a.origSort=[];a.checkSort=[];u.removeStyle(a.prefix+"filter, filter, "+a.prefix+"transform, transform, opacity, display").css(a.clean).removeAttr("data-checksum");window.atob||u.css({display:"none",opacity:"0"});k.removeStyle(a.prefix+"transition, transition, "+a.prefix+"perspective, perspective, "+a.prefix+"perspective-origin, perspective-origin, "+(a.resizeContainer?"height":""));"list"==a.layoutMode?
(q.css({display:a.targetDisplayList,opacity:"1"}),a.origDisplay=a.targetDisplayList):(q.css({display:a.targetDisplayGrid,opacity:"1"}),a.origDisplay=a.targetDisplayGrid);a.origLayout=a.layoutMode;setTimeout(function(){u.removeStyle(a.prefix+"transition, transition");a.mixing=!1;if("function"==typeof a.onMixEnd){var b=a.onMixEnd.call(this,a);a=b?b:a}})}clearInterval(a.failsafe);a.mixing=!0;if("function"==typeof a.onMixStart){var f=a.onMixStart.call(this,a);a=f?f:a}for(var g=a.transitionSpeed,f=0;2>
f;f++){var n=0==f?n=a.prefix:"";a.transition[n+"transition"]="all "+g+"ms linear";a.transition[n+"transform"]=n+"translate3d(0,0,0)";a.perspective[n+"perspective"]=a.perspectiveDistance+"px";a.perspective[n+"perspective-origin"]=a.perspectiveOrigin}var r=a.targetSelector,u=c.find(r);u.each(function(){this.data={}});var k=u.parent();k.css(a.perspective);a.easingFallback="ease-in-out";"smooth"==a.easing&&(a.easing="cubic-bezier(0.25, 0.46, 0.45, 0.94)");"snap"==a.easing&&(a.easing="cubic-bezier(0.77, 0, 0.175, 1)");
"windback"==a.easing&&(a.easing="cubic-bezier(0.175, 0.885, 0.320, 1.275)",a.easingFallback="cubic-bezier(0.175, 0.885, 0.320, 1)");"windup"==a.easing&&(a.easing="cubic-bezier(0.6, -0.28, 0.735, 0.045)",a.easingFallback="cubic-bezier(0.6, 0.28, 0.735, 0.045)");f="list"==a.layoutMode&&null!=a.listEffects?a.listEffects:a.effects;Array.prototype.indexOf&&(a.fade=-1<f.indexOf("fade")?"0":"",a.scale=-1<f.indexOf("scale")?"scale(.01)":"",a.rotateZ=-1<f.indexOf("rotateZ")?"rotate(180deg)":"",a.rotateY=-1<
f.indexOf("rotateY")?"rotateY(90deg)":"",a.rotateX=-1<f.indexOf("rotateX")?"rotateX(90deg)":"",a.blur=-1<f.indexOf("blur")?"blur(8px)":"",a.grayscale=-1<f.indexOf("grayscale")?"grayscale(100%)":"");d=d.replace(/\s|\//g,".");var q=e(),s=e();if("or"==a.filterLogic){var m=d.split(".");!0==a.multiFilter&&""==m[0]&&m.shift();1>m.length?s=s.add(c.find(r+":visible")):u.each(function(){for(var a=0,b=e(this),c=0;c<m.length;c++)b.hasClass(m[c])&&(q=q.add(b),a++);0==a&&(s=s.add(b))})}else q=q.add(k.find(r+"."+
d)),s=s.add(k.find(r+":not(."+d+"):visible"));d=q.length;var t=e(),p=e(),l=e();s.each(function(){var a=e(this);"none"!=a.css("display")&&(t=t.add(a),l=l.add(a))});if(q.filter(":visible").length==d&&!t.length&&!b){if(a.origLayout==a.layoutMode)return j(),!1;if(1==q.length)return"list"==a.layoutMode?(c.addClass(a.listClass),c.removeClass(a.gridClass),l.css("display",a.targetDisplayList)):(c.addClass(a.gridClass),c.removeClass(a.listClass),l.css("display",a.targetDisplayGrid)),j(),!1}a.origHeight=k.height();
if(q.length){c.removeClass(a.failClass);q.each(function(){var a=e(this);"none"==a.css("display")?p=p.add(a):l=l.add(a)});if(a.origLayout!=a.layoutMode&&!1==a.animateGridList)return"list"==a.layoutMode?(c.addClass(a.listClass),c.removeClass(a.gridClass),l.css("display",a.targetDisplayList)):(c.addClass(a.gridClass),c.removeClass(a.listClass),l.css("display",a.targetDisplayGrid)),j(),!1;if(!window.atob)return j(),!1;u.css(a.clean);l.each(function(){this.data.origPos=e(this).offset()});"list"==a.layoutMode?
(c.addClass(a.listClass),c.removeClass(a.gridClass),p.css("display",a.targetDisplayList)):(c.addClass(a.gridClass),c.removeClass(a.listClass),p.css("display",a.targetDisplayGrid));p.each(function(){this.data.showInterPos=e(this).offset()});t.each(function(){this.data.hideInterPos=e(this).offset()});l.each(function(){this.data.preInterPos=e(this).offset()});"list"==a.layoutMode?l.css("display",a.targetDisplayList):l.css("display",a.targetDisplayGrid);b&&v(b,h,c,a);if(b&&a.origSort.compare(a.checkSort))return j(),
!1;t.hide();p.each(function(){this.data.finalPos=e(this).offset()});l.each(function(){this.data.finalPrePos=e(this).offset()});a.newHeight=k.height();b&&v("reset",null,c,a);p.hide();l.css("display",a.origDisplay);"block"==a.origDisplay?(c.addClass(a.listClass),p.css("display",a.targetDisplayList)):(c.removeClass(a.listClass),p.css("display",a.targetDisplayGrid));a.resizeContainer&&k.css("height",a.origHeight+"px");d={};for(f=0;2>f;f++)n=0==f?n=a.prefix:"",d[n+"transform"]=a.scale+" "+a.rotateX+" "+
a.rotateY+" "+a.rotateZ,d[n+"filter"]=a.blur+" "+a.grayscale;p.css(d);l.each(function(){var b=this.data,c=e(this);c.hasClass("mix_tohide")?(b.preTX=b.origPos.left-b.hideInterPos.left,b.preTY=b.origPos.top-b.hideInterPos.top):(b.preTX=b.origPos.left-b.preInterPos.left,b.preTY=b.origPos.top-b.preInterPos.top);for(var d={},g=0;2>g;g++){var f=0==g?f=a.prefix:"";d[f+"transform"]="translate("+b.preTX+"px,"+b.preTY+"px)"}c.css(d)});"list"==a.layoutMode?(c.addClass(a.listClass),c.removeClass(a.gridClass)):
(c.addClass(a.gridClass),c.removeClass(a.listClass));setTimeout(function(){if(a.resizeContainer){for(var b={},c=0;2>c;c++){var d=0==c?d=a.prefix:"";b[d+"transition"]="all "+g+"ms ease-in-out";b.height=a.newHeight+"px"}k.css(b)}t.css("opacity",a.fade);p.css("opacity",1);p.each(function(){var b=this.data;b.tX=b.finalPos.left-b.showInterPos.left;b.tY=b.finalPos.top-b.showInterPos.top;for(var c={},d=0;2>d;d++){var f=0==d?f=a.prefix:"";c[f+"transition-property"]=f+"transform, "+f+"filter, opacity";c[f+
"transition-timing-function"]=a.easing+", linear, linear";c[f+"transition-duration"]=g+"ms";c[f+"transition-delay"]="0";c[f+"transform"]="translate("+b.tX+"px,"+b.tY+"px)";c[f+"filter"]="none"}e(this).css("-webkit-transition","all "+g+"ms "+a.easingFallback).css(c)});l.each(function(){var b=this.data;b.tX=0!=b.finalPrePos.left?b.finalPrePos.left-b.preInterPos.left:0;b.tY=0!=b.finalPrePos.left?b.finalPrePos.top-b.preInterPos.top:0;for(var c={},d=0;2>d;d++){var f=0==d?f=a.prefix:"";c[f+"transition"]=
"all "+g+"ms "+a.easing;c[f+"transform"]="translate("+b.tX+"px,"+b.tY+"px)"}e(this).css("-webkit-transition","all "+g+"ms "+a.easingFallback).css(c)});b={};for(c=0;2>c;c++)d=0==c?d=a.prefix:"",b[d+"transition"]="all "+g+"ms "+a.easing+", "+d+"filter "+g+"ms linear, opacity "+g+"ms linear",b[d+"transform"]=a.scale+" "+a.rotateX+" "+a.rotateY+" "+a.rotateZ,b[d+"filter"]=a.blur+" "+a.grayscale,b.opacity=a.fade;t.css(b);k.bind("webkitTransitionEnd transitionend otransitionend oTransitionEnd",function(a){if(-1<
a.originalEvent.propertyName.indexOf("transform")||-1<a.originalEvent.propertyName.indexOf("opacity"))-1<r.indexOf(".")?e(a.target).hasClass(r.replace(".",""))&&j():e(a.target).is(r)&&j()})},10);a.failsafe=setTimeout(function(){a.mixing&&j()},g+400)}else{a.resizeContainer&&k.css("height",a.origHeight+"px");if(!window.atob)return j(),!1;t=s;setTimeout(function(){k.css(a.perspective);if(a.resizeContainer){for(var b={},d=0;2>d;d++){var e=0==d?e=a.prefix:"";b[e+"transition"]="height "+g+"ms ease-in-out";
b.height=a.minHeight+"px"}k.css(b)}u.css(a.transition);if(s.length){b={};for(d=0;2>d;d++)e=0==d?e=a.prefix:"",b[e+"transform"]=a.scale+" "+a.rotateX+" "+a.rotateY+" "+a.rotateZ,b[e+"filter"]=a.blur+" "+a.grayscale,b.opacity=a.fade;t.css(b);k.bind("webkitTransitionEnd transitionend otransitionend oTransitionEnd",function(b){if(-1<b.originalEvent.propertyName.indexOf("transform")||-1<b.originalEvent.propertyName.indexOf("opacity"))c.addClass(a.failClass),j()})}else a.mixing=!1},10)}}function v(d,b,
h,c){function a(a,b){return 1*a.attr(d).toLowerCase()<1*b.attr(d).toLowerCase()?-1:1*a.attr(d).toLowerCase()>1*b.attr(d).toLowerCase()?1:0}function j(a){"asc"==b?f.prepend(a).prepend(" \
"):f.append(a).append(" \
")}h.find(c.targetSelector).wrapAll('<div class="mix_sorter"/>');var f=h.find(".mix_sorter");c.origSort.length||f.find(c.targetSelector+":visible").each(function(){e(this).wrap("<s/>");c.origSort.push(e(this).parent().html().replace(/\s+/g,""));e(this).unwrap()});f.empty();if("reset"==d)e.each(c.startOrder,
function(){f.append(this).append(" \
")});else if("default"==d)e.each(c.origOrder,function(){j(this)});else if("random"==d){if(!c.newOrder.length){for(var g=c.startOrder.slice(),n=g.length,r=n;r--;){var m=parseInt(Math.random()*n),k=g[r];g[r]=g[m];g[m]=k}c.newOrder=g}e.each(c.newOrder,function(){f.append(this).append(" \
")})}else"custom"==d?e.each(b,function(){j(this)}):("undefined"===typeof c.origOrder[0].attr(d)&&console.log("No such attribute found. Terminating"),c.newOrder.length||(e.each(c.origOrder,
function(){c.newOrder.push(e(this))}),c.newOrder.sort(a)),e.each(c.newOrder,function(){j(this)}));c.checkSort=[];f.find(c.targetSelector+":visible").each(function(a){var b=e(this);0==a&&b.attr("data-checksum","1");b.wrap("<s/>");c.checkSort.push(b.parent().html().replace(/\s+/g,""));b.unwrap()});h.find(c.targetSelector).unwrap()}var w={init:function(d){return this.each(function(){var b={targetSelector:".mix",filterSelector:".filter",sortSelector:".sort",buttonEvent:"click",effects:["fade","scale"],
listEffects:null,easing:"smooth",layoutMode:"grid",targetDisplayGrid:"inline-block",targetDisplayList:"block",listClass:"",gridClass:"",transitionSpeed:600,showOnLoad:"all",multiFilter:!1,filterLogic:"or",resizeContainer:!0,minHeight:0,failClass:"fail",perspectiveDistance:"3000",perspectiveOrigin:"50% 50%",animateGridList:!0,onMixLoad:null,onMixStart:null,onMixEnd:null,container:null,origOrder:[],startOrder:[],newOrder:[],origSort:[],checkSort:[],filter:"",mixing:!1,origDisplay:"",origLayout:"",origHeight:0,
newHeight:0,isTouch:!1,resetDelay:0,failsafe:null,prefix:"",easingFallback:"ease-in-out",transition:{},perspective:{},clean:{},fade:"1",scale:"",rotateX:"",rotateY:"",rotateZ:"",blur:"",grayscale:""};d&&e.extend(b,d);this.config=b;e.support.touch="ontouchend"in document;e.support.touch&&(b.isTouch=!0,b.resetDelay=350);b.container=e(this);var h=b.container,c;a:{c=h[0];for(var a=["Webkit","Moz","O","ms"],j=0;j<a.length;j++)if(a[j]+"Transition"in c.style){c=a[j];break a}c="transition"in c.style?"":!1}b.prefix=
c;b.prefix=b.prefix?"-"+b.prefix.toLowerCase()+"-":"";h.find(b.targetSelector).each(function(){b.origOrder.push(e(this))});for(c=0;2>c;c++)a=0==c?a=b.prefix:"",b.transition[a+"transition"]="all "+b.transitionSpeed+"ms ease-in-out",b.perspective[a+"perspective"]=b.perspectiveDistance+"px",b.perspective[a+"perspective-origin"]=b.perspectiveOrigin;for(c=0;2>c;c++)a=0==c?a=b.prefix:"",b.clean[a+"transition"]="none";"list"==b.layoutMode?(h.addClass(b.listClass),b.origDisplay=b.targetDisplayList):(h.addClass(b.gridClass),
b.origDisplay=b.targetDisplayGrid);b.origLayout=b.layoutMode;c=b.showOnLoad.split(" ");e.each(c,function(){e(b.filterSelector+'[data-filter="'+this+'"]').addClass("active")});h.find(b.targetSelector).addClass("mix_all");"all"==c[0]&&(c[0]="mix_all",b.showOnLoad="mix_all");var f=e();e.each(c,function(){f=f.add(e("."+this))});f.each(function(){var a=e(this);"list"==b.layoutMode?a.css("display",b.targetDisplayList):a.css("display",b.targetDisplayGrid);a.css(b.transition)});setTimeout(function(){b.mixing=
!0;f.css("opacity","1");setTimeout(function(){"list"==b.layoutMode?f.removeStyle(b.prefix+"transition, transition").css({display:b.targetDisplayList,opacity:1}):f.removeStyle(b.prefix+"transition, transition").css({display:b.targetDisplayGrid,opacity:1});b.mixing=!1;if("function"==typeof b.onMixLoad){var a=b.onMixLoad.call(this,b);b=a?a:b}},b.transitionSpeed)},10);b.filter=b.showOnLoad;e(b.sortSelector).bind(b.buttonEvent,function(){if(!b.mixing){var a=e(this),c=a.attr("data-sort"),d=a.attr("data-order");
if(a.hasClass("active")){if("random"!=c)return!1}else e(b.sortSelector).removeClass("active"),a.addClass("active");h.find(b.targetSelector).each(function(){b.startOrder.push(e(this))});m(b.filter,c,d,h,b)}});e(b.filterSelector).bind(b.buttonEvent,function(){if(!b.mixing){var a=e(this);if(!1==b.multiFilter)e(b.filterSelector).removeClass("active"),a.addClass("active"),b.filter=a.attr("data-filter"),e(b.filterSelector+'[data-filter="'+b.filter+'"]').addClass("active"),"all"==b.filter&&(b.filter="mix_all");
else{var c=a.attr("data-filter");"all"==c&&(c="mix_all");a.hasClass("active")?(a.removeClass("active"),b.filter=b.filter.replace(RegExp("(\\s|^)"+c),"")):(a.addClass("active"),b.filter=b.filter+" "+c)}m(b.filter,null,null,h,b)}})})},toGrid:function(){return this.each(function(){var d=this.config;"grid"!=d.layoutMode&&(d.layoutMode="grid",m(d.filter,null,null,e(this),d))})},toList:function(){return this.each(function(){var d=this.config;"list"!=d.layoutMode&&(d.layoutMode="list",m(d.filter,null,null,
e(this),d))})},filter:function(d){return this.each(function(){var b=this.config;e(b.filterSelector).removeClass("active");e(b.filterSelector+'[data-filter="'+d+'"]').addClass("active");"all"==d&&(d="mix_all");b.mixing||(b.filter=d,m(d,null,null,e(this),b))})},sort:function(d){return this.each(function(){var b=this.config;if(e.isArray(d))var h=d[0],c=d[1];else h=d,c="desc";b.mixing||(e(this).find(b.targetSelector).each(function(){b.startOrder.push(e(this))}),m(b.filter,h,c,e(this),b))})}};e.fn.mixitup=
function(d,b){if(w[d])return w[d].apply(this,Array.prototype.slice.call(arguments,1));if("object"===typeof d||!d)return w.init.apply(this,arguments)};e.fn.removeStyle=function(d){return this.each(function(){var b=e(this);d=d.replace(/\s+/g,"");var h=d.split(",");e.each(h,function(){var c=RegExp(this.toString()+"[^;]+;?","g");b.attr("style",function(a,b){if(b)return b.replace(c,"")})})})};Array.prototype.compare=function(d){if(this.length!=d.length)return!1;for(var b=0;b<d.length;b++)if(this[b].compare&&
!this[b].compare(d[b])||this[b]!==d[b])return!1;return!0}})(jQuery);

5
public/js/move-top.js Normal file
View File

@ -0,0 +1,5 @@
/* UItoTop jQuery Plugin 1.2 | Matt Varone | http://www.mattvarone.com/web-design/uitotop-jquery-plugin */
(function($){$.fn.UItoTop=function(options){var defaults={text:'To Top',min:200,inDelay:600,outDelay:400,containerID:'toTop',containerHoverID:'toTopHover',scrollSpeed:1000,easingType:'linear'},settings=$.extend(defaults,options),containerIDhash='#'+settings.containerID,containerHoverIDHash='#'+settings.containerHoverID;$('body').append('<a href="#" id="'+settings.containerID+'">'+settings.text+'</a>');$(containerIDhash).hide().on('click.UItoTop',function(){$('html, body').animate({scrollTop:0},settings.scrollSpeed,settings.easingType);$('#'+settings.containerHoverID,this).stop().animate({'opacity':0},settings.inDelay,settings.easingType);return false;}).prepend('<span id="'+settings.containerHoverID+'"></span>').hover(function(){$(containerHoverIDHash,this).stop().animate({'opacity':1},600,'linear');},function(){$(containerHoverIDHash,this).stop().animate({'opacity':0},700,'linear');});$(window).scroll(function(){var sd=$(window).scrollTop();if(typeof document.body.style.maxHeight==="undefined"){$(containerIDhash).css({'position':'absolute','top':sd+$(window).height()-50});}
if(sd>settings.min)
$(containerIDhash).fadeIn(settings.inDelay);else
$(containerIDhash).fadeOut(settings.Outdelay);});};})(jQuery);

8
public/js/responsiveslides.min.js vendored Normal file
View File

@ -0,0 +1,8 @@
/*! http://responsiveslides.com v1.54 by @viljamis */
(function(c,I,B){c.fn.responsiveSlides=function(l){var a=c.extend({auto:!0,speed:500,timeout:4E3,pager:!1,nav:!1,random:!1,pause:!1,pauseControls:!0,prevText:"Previous",nextText:"Next",maxwidth:"",navContainer:"",manualControls:"",namespace:"rslides",before:c.noop,after:c.noop},l);return this.each(function(){B++;var f=c(this),s,r,t,m,p,q,n=0,e=f.children(),C=e.size(),h=parseFloat(a.speed),D=parseFloat(a.timeout),u=parseFloat(a.maxwidth),g=a.namespace,d=g+B,E=g+"_nav "+d+"_nav",v=g+"_here",j=d+"_on",
w=d+"_s",k=c("<ul class='"+g+"_tabs "+d+"_tabs' />"),x={"float":"left",position:"relative",opacity:1,zIndex:2},y={"float":"none",position:"absolute",opacity:0,zIndex:1},F=function(){var b=(document.body||document.documentElement).style,a="transition";if("string"===typeof b[a])return!0;s=["Moz","Webkit","Khtml","O","ms"];var a=a.charAt(0).toUpperCase()+a.substr(1),c;for(c=0;c<s.length;c++)if("string"===typeof b[s[c]+a])return!0;return!1}(),z=function(b){a.before(b);F?(e.removeClass(j).css(y).eq(b).addClass(j).css(x),
n=b,setTimeout(function(){a.after(b)},h)):e.stop().fadeOut(h,function(){c(this).removeClass(j).css(y).css("opacity",1)}).eq(b).fadeIn(h,function(){c(this).addClass(j).css(x);a.after(b);n=b})};a.random&&(e.sort(function(){return Math.round(Math.random())-0.5}),f.empty().append(e));e.each(function(a){this.id=w+a});f.addClass(g+" "+d);l&&l.maxwidth&&f.css("max-width",u);e.hide().css(y).eq(0).addClass(j).css(x).show();F&&e.show().css({"-webkit-transition":"opacity "+h+"ms ease-in-out","-moz-transition":"opacity "+
h+"ms ease-in-out","-o-transition":"opacity "+h+"ms ease-in-out",transition:"opacity "+h+"ms ease-in-out"});if(1<e.size()){if(D<h+100)return;if(a.pager&&!a.manualControls){var A=[];e.each(function(a){a+=1;A+="<li><a href='#' class='"+w+a+"'>"+a+"</a></li>"});k.append(A);l.navContainer?c(a.navContainer).append(k):f.after(k)}a.manualControls&&(k=c(a.manualControls),k.addClass(g+"_tabs "+d+"_tabs"));(a.pager||a.manualControls)&&k.find("li").each(function(a){c(this).addClass(w+(a+1))});if(a.pager||a.manualControls)q=
k.find("a"),r=function(a){q.closest("li").removeClass(v).eq(a).addClass(v)};a.auto&&(t=function(){p=setInterval(function(){e.stop(!0,!0);var b=n+1<C?n+1:0;(a.pager||a.manualControls)&&r(b);z(b)},D)},t());m=function(){a.auto&&(clearInterval(p),t())};a.pause&&f.hover(function(){clearInterval(p)},function(){m()});if(a.pager||a.manualControls)q.bind("click",function(b){b.preventDefault();a.pauseControls||m();b=q.index(this);n===b||c("."+j).queue("fx").length||(r(b),z(b))}).eq(0).closest("li").addClass(v),
a.pauseControls&&q.hover(function(){clearInterval(p)},function(){m()});if(a.nav){g="<a href='#' class='"+E+" prev'>"+a.prevText+"</a><a href='#' class='"+E+" next'>"+a.nextText+"</a>";l.navContainer?c(a.navContainer).append(g):f.after(g);var d=c("."+d+"_nav"),G=d.filter(".prev");d.bind("click",function(b){b.preventDefault();b=c("."+j);if(!b.queue("fx").length){var d=e.index(b);b=d-1;d=d+1<C?n+1:0;z(c(this)[0]===G[0]?b:d);if(a.pager||a.manualControls)r(c(this)[0]===G[0]?b:d);a.pauseControls||m()}});
a.pauseControls&&d.hover(function(){clearInterval(p)},function(){m()})}}if("undefined"===typeof document.body.style.maxWidth&&l.maxwidth){var H=function(){f.css("width","100%");f.width()>u&&f.css("width",u)};H();c(I).bind("resize",function(){H()})}})}})(jQuery,this,0);

5789
src/assets/css/bootstrap.css vendored Normal file

File diff suppressed because it is too large Load Diff

280
src/assets/css/family.css Normal file
View File

@ -0,0 +1,280 @@
/* cyrillic-ext */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 300;
/*src: local('Open Sans Light'), local('OpenSans-Light'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN_r8OX-hpKKSTj5PW.woff2) format('woff2');
unicode-range: UTF-8, U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 300;
/*src: local('Open Sans Light'), local('OpenSans-Light'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN_r8OVuhpKKSTj5PW.woff2) format('woff2');
unicode-range: UTF-8,U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 300;
/*src: local('Open Sans Light'), local('OpenSans-Light'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN_r8OXuhpKKSTj5PW.woff2) format('woff2');
unicode-range: UTF-8,U+1F00-1FFF;
}
/* greek */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 300;
/*src: local('Open Sans Light'), local('OpenSans-Light'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN_r8OUehpKKSTj5PW.woff2) format('woff2');
unicode-range: UTF-8,U+0370-03FF;
}
/* vietnamese */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 300;
/* src: local('Open Sans Light'), local('OpenSans-Light'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN_r8OXehpKKSTj5PW.woff2) format('woff2');
unicode-range: UTF-8,U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 300;
/*src: local('Open Sans Light'), local('OpenSans-Light'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN_r8OXOhpKKSTj5PW.woff2) format('woff2');
unicode-range:UTF-8, U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 300;
/*src: local('Open Sans Light'), local('OpenSans-Light'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN_r8OUuhpKKSTjw.woff2) format('woff2');
unicode-range: UTF-8,U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 400;
/* src: local('Open Sans Regular'), local('OpenSans-Regular'), url(https://fonts.gstatic.com/s/opensans/v17/mem8YaGs126MiZpBA-UFWJ0bf8pkAp6a.woff2) format('woff2');
unicode-range: UTF-8,U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 400;
/* src: local('Open Sans Regular'), local('OpenSans-Regular'), url(https://fonts.gstatic.com/s/opensans/v17/mem8YaGs126MiZpBA-UFUZ0bf8pkAp6a.woff2) format('woff2');
unicode-range: UTF-8,U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 400;
/*src: local('Open Sans Regular'), local('OpenSans-Regular'), url(https://fonts.gstatic.com/s/opensans/v17/mem8YaGs126MiZpBA-UFWZ0bf8pkAp6a.woff2) format('woff2');
unicode-range: UTF-8,U+1F00-1FFF;
}
/* greek */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 400;
/*src: local('Open Sans Regular'), local('OpenSans-Regular'), url(https://fonts.gstatic.com/s/opensans/v17/mem8YaGs126MiZpBA-UFVp0bf8pkAp6a.woff2) format('woff2');
unicode-range: U+0370-03FF;
}
/* vietnamese */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 400;
/* src: local('Open Sans Regular'), local('OpenSans-Regular'), url(https://fonts.gstatic.com/s/opensans/v17/mem8YaGs126MiZpBA-UFWp0bf8pkAp6a.woff2) format('woff2');
unicode-range:UTF-8, U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 400;
/*src: local('Open Sans Regular'), local('OpenSans-Regular'), url(https://fonts.gstatic.com/s/opensans/v17/mem8YaGs126MiZpBA-UFW50bf8pkAp6a.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 400;
/* src: local('Open Sans Regular'), local('OpenSans-Regular'), url(https://fonts.gstatic.com/s/opensans/v17/mem8YaGs126MiZpBA-UFVZ0bf8pkAg.woff2) format('woff2');
unicode-range: UTF-8,U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 600;
/*src: local('Open Sans SemiBold'), local('OpenSans-SemiBold'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UNirkOX-hpKKSTj5PW.woff2) format('woff2');
unicode-range: UTF-8,U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 600;
/*src: local('Open Sans SemiBold'), local('OpenSans-SemiBold'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UNirkOVuhpKKSTj5PW.woff2) format('woff2');
unicode-range: UTF-8,U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 600;
src: local('Open Sans SemiBold'), local('OpenSans-SemiBold'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UNirkOXuhpKKSTj5PW.woff2) format('woff2');
unicode-range: UTF-8,U+1F00-1FFF;
}
/* greek */
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 600;
/*src: local('Open Sans SemiBold'), local('OpenSans-SemiBold'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UNirkOUehpKKSTj5PW.woff2) format('woff2');
unicode-range: UTF-8,U+0370-03FF;
}
/* vietnamese */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 600;
/*src: local('Open Sans SemiBold'), local('OpenSans-SemiBold'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UNirkOXehpKKSTj5PW.woff2) format('woff2');
unicode-range: UTF-8,U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 600;
/*src: local('Open Sans SemiBold'), local('OpenSans-SemiBold'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UNirkOXOhpKKSTj5PW.woff2) format('woff2');
unicode-range: UTF-8,U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 600;
/*src: local('Open Sans SemiBold'), local('OpenSans-SemiBold'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UNirkOUuhpKKSTjw.woff2) format('woff2');
unicode-range: UTF-8,U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 700;
/*src: local('Open Sans Bold'), local('OpenSans-Bold'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN7rgOX-hpKKSTj5PW.woff2) format('woff2');
unicode-range:UTF-8, U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 700;
/*src: local('Open Sans Bold'), local('OpenSans-Bold'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN7rgOVuhpKKSTj5PW.woff2) format('woff2');
unicode-range: UTF-8,U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 700;
/*src: local('Open Sans Bold'), local('OpenSans-Bold'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN7rgOXuhpKKSTj5PW.woff2) format('woff2');
unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 700;
/*src: local('Open Sans Bold'), local('OpenSans-Bold'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN7rgOUehpKKSTj5PW.woff2) format('woff2');
unicode-range: U+0370-03FF;
}
/* vietnamese */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 700;
/*src: local('Open Sans Bold'), local('OpenSans-Bold'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN7rgOXehpKKSTj5PW.woff2) format('woff2');
unicode-range: UTF-8,U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 700;
/*src: local('Open Sans Bold'), local('OpenSans-Bold'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN7rgOXOhpKKSTj5PW.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 700;
src: local('Open Sans Bold'), local('OpenSans-Bold'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN7rgOUuhpKKSTjw.woff2) /*format('woff2');
unicode-range: UTF-8,U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 800;
/* src: local('Open Sans ExtraBold'), local('OpenSans-ExtraBold'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN8rsOX-hpKKSTj5PW.woff2) format('woff2');
unicode-range: UTF-8,U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 800;
/*src: local('Microsoft YaHei,SimSun,Arial,SimHei,Open Sans ExtraBold'), local('OpenSans-ExtraBold'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN8rsOVuhpKKSTj5PW.woff2) format('woff2');
unicode-range: UTF-8,U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 800;
/*src: local('Microsoft YaHei,SimSun,Arial,SimHei,Open Sans ExtraBold'), local('OpenSans-ExtraBold'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN8rsOXuhpKKSTj5PW.woff2) format('woff2');
unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 800;
/*src: local('Microsoft YaHei,SimSun,Arial,SimHei,Open Sans ExtraBold'), local('OpenSans-ExtraBold'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN8rsOUehpKKSTj5PW.woff2) format('woff2');
unicode-range: UTF-8,U+0370-03FF;
}
/* vietnamese */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 800;
/* src: local('Microsoft YaHei,SimSun,Arial,SimHei,Open Sans ExtraBold'), local('OpenSans-ExtraBold'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN8rsOXehpKKSTj5PW.woff2) format('woff2');
unicode-range: UTF-8,U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 800;
/*src: local('Microsoft YaHei,SimSun,Arial,SimHei,Open Sans ExtraBold'), local('OpenSans-ExtraBold'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN8rsOXOhpKKSTj5PW.woff2) format('woff2');
unicode-range: UTF-8,U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Microsoft YaHei,SimSun,Arial,SimHei,Open Sans';
font-style: normal;
font-weight: 800;
/* src: local('Microsoft YaHei,SimSun,Arial,SimHei,Open Sans ExtraBold'), local('OpenSans-ExtraBold'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN8rsOUuhpKKSTjw.woff2) format('woff2');
unicode-range:UTF-8, U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

View File

@ -0,0 +1,13 @@
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->

File diff suppressed because it is too large Load Diff

5
src/assets/css1/all.min.css vendored Normal file

File diff suppressed because one or more lines are too long

7
src/assets/css1/bootstrap.min.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

6
src/assets/css1/owl.carousel.min.css vendored Normal file
View File

@ -0,0 +1,6 @@
/**
* Owl Carousel v2.3.4
* Copyright 2013-2018 David Deutsch
* Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE
*/
.owl-carousel,.owl-carousel .owl-item{-webkit-tap-highlight-color:transparent;position:relative}.owl-carousel{display:none;width:100%;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y;touch-action:manipulation;-moz-backface-visibility:hidden}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0,0,0)}.owl-carousel .owl-item,.owl-carousel .owl-wrapper{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0)}.owl-carousel .owl-item{min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-touch-callout:none}.owl-carousel .owl-item img{display:block;width:100%}.owl-carousel .owl-dots.disabled,.owl-carousel .owl-nav.disabled{display:none}.no-js .owl-carousel,.owl-carousel.owl-loaded{display:block}.owl-carousel .owl-dot,.owl-carousel .owl-nav .owl-next,.owl-carousel .owl-nav .owl-prev{cursor:pointer;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel .owl-nav button.owl-next,.owl-carousel .owl-nav button.owl-prev,.owl-carousel button.owl-dot{background:0 0;color:inherit;border:none;padding:0!important;font:inherit}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel.owl-refresh .owl-item{visibility:hidden}.owl-carousel.owl-drag .owl-item{-ms-touch-action:pan-y;touch-action:pan-y;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-grab{cursor:move;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.owl-carousel .animated{animation-duration:1s;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{animation-name:fadeOut}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{transition:height .5s ease-in-out}.owl-carousel .owl-item .owl-lazy{opacity:0;transition:opacity .4s ease}.owl-carousel .owl-item .owl-lazy:not([src]),.owl-carousel .owl-item .owl-lazy[src^=""]{max-height:0}.owl-carousel .owl-item img.owl-lazy{transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(https://avstechnolabs.com/Themeforest/Seomek/css/owl.video.play.png) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;transition:transform .1s ease}.owl-carousel .owl-video-play-icon:hover{-ms-transform:scale(1.3,1.3);transform:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;background-size:contain;transition:opacity .4s ease}.owl-carousel .owl-video-frame{position:relative;z-index:1;height:100%;width:100%}

File diff suppressed because it is too large Load Diff

3798
src/assets/css1/style.css Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,16 @@
.consult_contact{position:fixed;bottom:22%;right:0;width:114px;height:114px;cursor:pointer;}
.consult_wrap{position:relative;width:114px;height:114px;}
.consult_wrap .tip{position:absolute;right:95px;top:45px;display:none;width:150px;height:24px;border-radius:3px;font-size:14px;line-height:24px;text-align:center;background:#3091f2;color:#fff;-webkit-transition:display 1s ease;transition:display 1s ease;}
.consult_wrap .tip:after{position:absolute;right:-8px;top:50%;content:"";width:0;height:0;border-top:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid #3091f2;-webkit-transform:translateY(-50%);transform:translateY(-50%);}
.consult_contact img{position:absolute;left:50%;top:50%;width:auto;-webkit-transform:translate3d(-50%, -50%, 0);transform:translate3d(-50%, -50%, 0);}
.consult_contact .staff_img{z-index:999;}
@keyframes ballRotate{0%{transform:rotate(0);}
100%{transform:rotate(360deg);}
}
.consult_contact .ball{top:20px;width:auto;transform-origin:0 38px;animation:ballRotate 2.5s infinite linear;z-index:9999;}
@keyframes bg2Animation{0%{opacity:0;}
50%{opacity:1;}
100%{opacity:0;}
}
.consult_contact .bg-2{animation:bg2Animation 2.5s infinite linear;}
.consult_contact:hover .tip{display:block;}

View File

@ -1,14 +1,115 @@
---
import '../assets/css/bootstrap.css'
import '../assets/css/theme-style.css'
---
<!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" />
<!-- mobile metas -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="viewport" content="initial-scale=1, maximum-scale=1">
<link rel="icon" href="/images/logo40_40.png" type="image/gif" />
<!-- <link rel="icon" type="image/svg+xml" href="/favicon.svg" /> -->
<meta name="generator" content={Astro.generator} />
<title>Astro Basics</title>
<title>霍尔果斯飞驰广告传媒有限公司</title>
<!-- site metas -->
<meta name="keywords" content="霍尔果斯霍尔果斯飞驰广告传媒有限公司">
<meta name="description" content="霍尔果斯飞驰广告传媒有限公司是一家充满活力和创新精神的互联网企业,专注于为客户提供卓越的数字化解决方案。我们秉承以客户为中心的理念,致力于通过创新技术和策略,助力企业实现数字化转型与品牌升级,共同开创更加美好的未来。">
<meta name="author" content="">
<!-- fevicon -->
<link rel="icon" href="images/fevicon.png" type="image/gif" />
<script is:inline src="/js/jquery.min.js"></script>
<script is:inline type="text/javascript" src="/js/move-top.js"></script>
<script is:inline type="text/javascript" src="/js/easing.js"></script>
</head>
<body>
<body class="main-layout">
<div id="home" class="header">
<div class="container">
<div class="logo">
<div>
<a href="#"><img src="/images/logo40_40.png" title="logo" /></a>
</div>
<div class="logo-text">
<p>霍尔果斯飞驰广告传媒有限公司</p>
</div>
</div>
<!----start-top-nav---->
<nav class="top-nav">
<ul class="top-nav">
<li class=""><a href="/" class="scroll">首页 <span> </span></a></li>
<li class="page-scroll"><a href="/news" class="scroll">新闻中心<span> </span></a></li>
<li class="page-scroll"><a href="/service" class="scroll">我们的服务 <span> </span></a></li>
<li class="page-scroll"><a href="/about" class="scroll">关于我们 <span> </span></a></li>
<li class="contatct-active" class="page-scroll"><a href="#contact" class="scroll">联系我们</a></li>
</ul>
<a href="#" id="pull"><img src="/images/nav-icon.png" title="menu" /></a>
</nav>
<div class="clearfix"> </div>
</div>
</div>
<!----- //End-header---->
<!----- start-slider---->
<!----start-slider-script---->
<script is:inline src="/js/responsiveslides.min.js"></script>
<script>
// You can also use "$(window).load(function() {"
$(function () {
// Slideshow 4
$("#slider4").responsiveSlides({
auto: true,
pager: true,
nav: true,
speed: 500,
namespace: "callbacks",
before: function () {
$('.events').append("<li>before event fired.</li>");
},
after: function () {
$('.events').append("<li>after event fired.</li>");
}
});
});
</script>
<slot />
<div id="contact" class="contact">
<div class="container">
<div class="contact-head text-center">
<h3>联系我们</h3>
<span>霍尔果斯飞驰广告传媒致力于为客户提供优秀创新的内容整合营销专业服务</span>
<p>期待与优秀的您合作</p>
</div>
<div class="contact-grids">
<!-- <div class="col-md-7 contact-left">
</div> -->
<div class="col-md-5 contact-right">
<h4>联系信息</h4><br />
<p><span class="icon1"> </span><a href="#">4001500607</a></p><br />
<p><span class="icon2"> </span>hegsfeichi1@163.com</p><br />
<p><span class="icon3"> </span><label>新疆伊犁哈萨克自治州霍尔果斯市中哈国际边境合作中心B4地块东方劲秀展厅二层9012室</label></p><br />
</div>
<div class="clearfix"> </div>
</div>
</div>
</div>
<div class="footer">
<div class="container">
<div class="footer-right">
<p> ©2025 新疆霍尔果斯飞驰广告传媒科技有限公司 版权所有 <a target="_blank" href="http://beian.miit.gov.cn/">新ICP备2025017329号-1</a></p>
<script type="text/javascript">
$(document).ready(function() {-2
$().UItoTop({ easingType: 'easeOutQuart' });
});
</script>
<a href="#" id="toTop" style="display: block;"> <span id="toTopHover" style="opacity: 1;"> </span></a>
</div>
<div class="clearfix"> </div>
</div>
</div>
</body>
</html>
@ -20,3 +121,33 @@
height: 100%;
}
</style>
<style is:global>
.container {
/* display: flex;
align-items: center; */
}
.logo {
display: flex;
align-items: center;
/* a {
margin-top: unset;
}
p {
margin: unset;
font-weight: bold;
} */
.logo-text {
margin-top: 1em;
}
.logo-text p{
font-weight: bold !important;
color: black;
margin: unset;
}
}
</style>

36
src/middleware/index.ts Normal file
View File

@ -0,0 +1,36 @@
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);
// 防止无线跳转
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_number = 2;
context.locals.template_config = data;
return context.rewrite(context.url.pathname);
}
return next();
};

82
src/pages/about.astro Normal file
View File

@ -0,0 +1,82 @@
---
import Layout from "../layouts/Layout.astro";
// import '../assets/css1/all.min.css'
import '../assets/css1/style.css'
import '../assets/css1/style5.css'
---
<Layout>
<div class="site-content">
<!-- Page-Header Section STARTS Here -->
<div class="page-header text-center">
<div class="container">
<h1 class="page-title">关于我们</h1>
<ul id="breadcrumbs" class="breadcrumbs">
<li>
<a href='/' class='crumb'>首页</a> &gt; <a href='/about'>关于我们</a>&nbsp;
</li>
</ul>
</div>
</div>
<!-- Page-Header Section End Here -->
<!-- Business Grow Section STARTS Here -->
<section>
<div class="container">
<div class="row align-items-center justify-content-between">
<div class="col-md-6">
<div class="businessgrow_img">
<img class="lazy" src="images/about-divice.png" alt="businessgrow_img">
</div>
</div>
<div class="col-md-6">
<div class="businessgrow_text">
<div class="heading text-lg-left">
<h2>霍尔果斯飞驰广告传媒有限公司</h2>
<img class="lazy" src="images/headin_border.png" alt="headin_border">
</div>
<p>霍尔果斯飞驰广告传媒有限公司是一家充满活力和创新精神的互联网企业,专注于为客户提供卓越的数字化解决方案。我们秉承以客户为中心的理念,致力于通过创新技术和策略,助力企业实现数字化转型与品牌升级,共同开创更加美好的未来。</p>
</div>
</div>
</div>
</div>
</section>
<!-- Business Grow Section End Here -->
<!-- Service Section STARTS Here -->
<section class="content_market_page_services pt-0">
<div class="container">
<div class="row align-items-center justify-content-center">
<div class="col-lg-4 col-md-6 col-sm-6 col-xs-12">
<div class="service-box white_bg">
<span class="big-number">01</span>
<div class="service_icon">01</div>
<div class="service-content-box">
<h5>质量第一</h5>
<p>力争成为国内质量第一服务商中的佼佼者。</p>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-sm-6 col-xs-12">
<div class="service-box white_bg">
<span class="big-number">02</span>
<div class="service_icon">02</div>
<div class="service-content-box">
<h5>用户至上</h5>
<p>秉着用户至上的行业服务水平而努力。</p>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-sm-6 col-xs-12">
<div class="service-box white_bg">
<span class="big-number">03</span>
<div class="service_icon">03</div>
<div class="service-content-box">
<h5>长期合作</h5>
<p>与各个客户愿意建立长久的合作关系。</p>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Service Section End Here -->
</div>
</Layout>

View File

@ -1,11 +1,199 @@
---
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 { getConfig } from '../../utils/config'
const config = getConfig(Astro)
---
<Layout>
<Welcome />
</Layout>
<div id="top" class="callbacks_container">
<ul class="rslides" id="slider4">
<li>
<img src="./images/slide.jpg" alt="">
<div class="caption text-center">
<div class="slide-text-info">
<a class="btn1" href="#"><span>欢迎您的到来</span></a>
<h1>我们是一家<span>数字整合营销</span>公司</h1>
<div class="slide-text">
<p>我们是一家领先的数字整合营销公司核心团队成员拥有超过10年的互联网行业经验且均具备4A广告公司背景。我们深耕策略、创意、内容营销与新媒体等领域为客户提供创新的数字化解决方案帮助品牌在快速变化的市场中脱颖而出。</p>
</div>
<a class="btn2" href="#contact"><span>期待我们的合作</span></a>
</div>
</div>
</li>
<li>
<img src="./images/slide.jpg" alt="">
<div class="caption text-center">
<div class="slide-text-info">
<a class="btn1" href="#"><span>欢迎您的到来</span></a>
<h1>多领域<span>媒体资源</span>平台</h1>
<div class="slide-text">
<p>我们致力于为网红与广告主之间建立高效的合作平台,提供定制化的网红整合营销传播方案,帮助品牌提升广告转化率,实现精准营销与广泛覆盖。</p>
</div>
<a class="btn2" href="#contact"><span>期待我们的合作</span></a>
</div>
</div>
</li>
<li>
<img src="./images/slide.jpg" alt="">
<div class="caption text-center">
<div class="slide-text-info">
<a class="btn1" href="#"><span>欢迎您的到来</span></a>
<h1>质量第一<span> 用户至上</span> 长期合作</h1>
<div class="slide-text">
<p>霍尔果斯飞驰广告传媒公司中本着“质量第一、用户至上、长期合作”原则,为客户提优质的服务。</p>
</div>
<a class="btn2" href="#contact"><span>期待我们的合作</span></a>
</div>
</div>
</li>
</ul>
</div>
<div class="clearfix"> </div>
<!----- //End-slider---->
<!----start-services---->
<div id="ser" class="services">
<div class="container">
<div class="services-head text-center">
<h3>我们的服务</h3>
<p>我们的目标是成为互联网时代的顶尖数字整合营销公司。凭借多年在数字营销领域的深耕与积累,我们对全渠道资源有着深刻的洞察与独到的理解。通过策略、创意、数据与资源整合,推动互动营销创新,引领行业新趋势。</p>
</div>
<!-----start-services-grids---->
<div class="services-grids">
<div class="col-md-4 services-grid">
<div class="col-md-3 services-grid-left">
<a class="top-icon1" href="#"><span> </span></a>
</div>
<div class="col-md-9 services-grid-right">
<h4><a href="#">品牌口碑宣传</a></h4>
<p>我们深入理解品牌策略的规划与执行从品牌定位、数据分析到数字化营销全方位延展。我们通过KV设计、创意开发及VI管理确保品牌的视觉呈现与市场认知高度一致。</p>
</div>
<div class="clearfix"> </div>
</div>
<div class="col-md-4 services-grid">
<div class="col-md-3 services-grid-left">
<a class="top-icon2" href="#"><span> </span></a>
</div>
<div class="col-md-9 services-grid-right">
<h4><a href="#">品牌声誉维护</a></h4>
<p>构建全网品牌口碑矩阵,确保品牌声誉在各大平台全面覆盖。通过持续监控与优化,有效提升品牌声誉与市场认知度。</p>
</div>
<div class="clearfix"> </div>
</div>
<div class="col-md-4 services-grid">
<div class="col-md-3 services-grid-left">
<a class="top-icon3" href="#"><span> </span></a>
</div>
<div class="col-md-9 services-grid-right">
<h4><a href="#">全网SEO优化</a></h4>
<p>提供从策略规划到项目执行的完整SEO优化方案借助视觉设计与技术手段提升企业网站的可见度与访问量。我们的服务包括网站建设、系统开发、视频制作等助力客户在网络传播中保持领先地位。</p>
</div>
<div class="clearfix"> </div>
</div>
<div class="col-md-4 services-grid">
<div class="col-md-3 services-grid-left">
<a class="top-icon4" href="#"><span> </span></a>
</div>
<div class="col-md-9 services-grid-right">
<h4><a href="#">客户关系整合营销服务</a></h4>
<p>基于精准用户画像,提供全生命周期的整合营销服务,帮助企业全面了解客户的需求与行为模式。通过从内容创意到实施的全方位商业生态链,优化客户决策过程,提升品牌忠诚度与用户粘性。</p>
</div>
<div class="clearfix"> </div>
</div>
<div class="col-md-4 services-grid">
<div class="col-md-3 services-grid-left">
<a class="top-icon5" href="#"><span> </span></a>
</div>
<div class="col-md-9 services-grid-right">
<h4><a href="#">公关传播及视频</a></h4>
<p>专业的PR稿件撰写与发布网络舆情监测与危机处理。利用大数据分析实时捕捉舆情源制定应对方案帮助企业解决危机、树立品牌美誉度。我们的服务还包括商业视频策划、拍摄与制作以及短视频直播全方位提升品牌传播力。</p>
</div>
<div class="clearfix"> </div>
</div>
<div class="col-md-4 services-grid">
<div class="col-md-3 services-grid-left">
<a class="top-icon6" href="#"><span> </span></a>
</div>
<div class="col-md-9 services-grid-right">
<h4><a href="#">多领域媒体资源平台</a></h4>
<p>覆盖国内5000多个具有影响力的媒体资源包括权威平面媒体、新媒体、行业类媒体与政府资源。我们为客户提供360度社会化媒体发布策略打造精准的广告投放与公关传播方案。我们还拥有3万名网红资源覆盖多个行业如美妆、服饰、美食、母婴等提供定制化的网红整合营销方案提升广告转化率。</p>
</div>
<div class="clearfix"> </div>
</div>
<div class="clearfix"> </div>
</div>
</div>
</div>
<div id="about" class="about">
<div class="container">
<div class="about-head">
<h4>关于我们</h4>
<h5>我们致力于为客户提供优秀创新的内容整合营销专业服务</h5>
<p>我们的目标是成为互联网时代的顶尖数字整合营销公司。凭借多年在数字营销领域的深耕与积累,我们对全渠道资源有着深刻的洞察与独到的理解。通过策略、创意、数据与资源整合,推动互动营销创新,引领行业新趋势。</p>
</div>
<!----- start-about-grids----->
<div class="about-grids">
<div class="col-md-7 about-grid-left">
<span> </span>
</div>
<div class="col-md-5 about-grid-right">
<h5>我们做什么?</h5>
<p>霍尔果斯飞驰广告传媒有限公司是一家充满活力和创新精神的互联网企业,专注于为客户提供卓越的数字化解决方案。我们秉承以客户为中心的理念,致力于通过创新技术和策略,助力企业实现数字化转型与品牌升级,共同开创更加美好的未来。</p>
</div>
<div class="clearfix"> </div>
</div>
<!----- //End-about-grids----->
</div>
</div>
<div id="team" class="team">
<div class="container">
<div class="team-head text-center">
<h3>我们的核心成员</h3>
<p>霍尔果斯飞驰广告传媒的核心成员分别在策略、创意,内容营销、新媒体等领域具有丰富的的互联网从业经验。</p>
</div>
<div class="team-members-grids text-center">
<div class="col-md-4 team-member-grid">
<!--<img src="./images/team-member-pic.jpg" title="name" />-->
<h5><a href="#">薯条</a></h5>
<p>拥有丰富的大客户管理经验、媒介、渠道合作经验。熟悉社会化媒体、渠道合作管理、网络营销等业务,丰富媒介资源及渠道合作及资源。</p>
<ul class="list-unstyled list-inline">
<li><a href="#"><i class="fa fa-facebook"> </i></a></li>
<li><a href="#"><i class="fa fa-twitter"> </i></a></li>
<li><a href="#"><i class="fa fa-skype"> </i></a></li>
</ul>
</div>
<div class="col-md-4 team-member-grid">
<!--<img src="./images/team-member-pic.jpg" title="name" />-->
<h5><a href="#">汤姆</a></h5>
<p>丰厚的软件的技术研发经验精通JAVA、PHP等语言,深谙互联网、移动互联网最新技术,五年以上运营商平台架构设计经验。</p>
<ul class="list-unstyled list-inline">
<li><a href="#"><i class="fa fa-facebook"> </i></a></li>
<li><a href="#"><i class="fa fa-twitter"> </i></a></li>
<li><a href="#"><i class="fa fa-skype"> </i></a></li>
</ul>
</div>
<div class="col-md-4 team-member-grid">
<!--<img src="./images/team-member-pic4.jpg" title="name" />-->
<h5><a href="#">苏苏</a></h5>
<p>深耕整合营销执行经验,主要服务国内外知名大客户,服务的行业有汽车、快消、软件等。</p><br>
<ul class="list-unstyled list-inline">
<li><a href="#"><i class="fa fa-facebook"> </i></a></li>
<li><a href="#"><i class="fa fa-twitter"> </i></a></li>
<li><a href="#"><i class="fa fa-skype"> </i></a></li>
</ul>
</div>
<div class="col-md-4 team-member-grid">
<!--<img src="./images/team-member-pic4.jpg" title="name" />-->
<h5><a href="#">竹竿</a></h5>
<p>业内资深人士服务过国内外知名大客户擅长网页、app及平面设计等多领域创意设计具有参与创意并后期执行的设计经验。</p>
<ul class="list-unstyled list-inline">
<li><a href="#"><i class="fa fa-facebook"> </i></a></li>
<li><a href="#"><i class="fa fa-twitter"> </i></a></li>
<li><a href="#"><i class="fa fa-skype"> </i></a></li>
</ul>
</div>
<div class="clearfix"> </div>
</div>
</div>
</div>
</Layout>

65
src/pages/news.astro Normal file
View File

@ -0,0 +1,65 @@
---
import Layout from "../layouts/Layout.astro";
import { getConfig } from '../../utils/config'
import '../assets/css1/style.css'
import '../assets/css1/style5.css'
import { newsIndex } from "../../utils/rpc";
import { Image } from "astro:assets";
const config = getConfig(Astro)
const {code, data} = await newsIndex(config.id);
if (!data || code !== 0) {
return Astro.redirect('/404');
}
console.log(data)
---
<Layout>
<div class="site-content">
<!-- Page-Header Section STARTS Here -->
<div class="page-header text-center">
<div class="container">
<h1 class="page-title">新闻中心</h1>
<ul id="breadcrumbs" class="breadcrumbs">
<li>
<a href='/' class='crumb'>首页</a> &gt; <a href='/news' class='crumb'>新闻中心</a>
</li>
</ul>
</div>
</div>
<!-- Page-Header Section End Here -->
<!-- Blog Grid Section Start Here -->
<section class="blog-page">
<div class="container">
<div class="row">
{
data?.map(e => {
return <div class="col-lg-4 col-md-6">
<div class="post-inner">
<div class="entry-media">
<a href={`/news/${e.id}`} title={`${e.title}`}>
<Image loading="eager" style={`aspect-ratio: 16 / 9;object-fit: contain;`} src={e.cover} alt={e.title} width={100} height={100} />
</a>
</div>
<div class="inner-post">
<div class="entry-header">
<div class="entry-meta">
<span class="posted-on">
<span><time class="entry-date published">{e.created_at}</time></span>
</span>
</div>
<a href={`/news/${e.id}`} title={`${e.title}`} class="entry-title">{e.title}</a>
</div>
<p class="entry-summary">{e.description}</p>
</div>
</div>
</div>
})
}
</div>
</div>
</section>
<!-- Blog Grid Section End Here -->
</div>
</Layout>

View File

@ -0,0 +1,337 @@
---
import Layout from "../../layouts/Layout.astro";
import { getConfig } from '../../../utils/config'
import '../../assets/css1/style.css'
import '../../assets/css1/style5.css'
import { newsDetail } from "../../../utils/rpc";
const { slug } = Astro.params;
const config = getConfig(Astro)
if (!slug) {
return Astro.redirect('/404');
}
const {code, data} = await newsDetail(slug);
if (!data || code !== 0) {
return Astro.redirect('/404');
}
---
<Layout>
<div class="v4 header-placeholder nav-v2" id="header-placeholder"></div>
<div class="html-text-component parbase">
<div class="v4 n06-news-second-navigation" id="news-second-navigation-v4" data-component="n06-news-second-navigation">
<div class="product-tabs-wrap container">
<div class="product-tabs__heading">
<div class="product-tabs__title body-medium">
<!-- <a title={TP2_COLUMN_NEWS} href={TP2_COLUMN_NEWS_URL} class="product-link product-link__active">{TP2_COLUMN_NEWS}</a> -->
</div>
</div>
</div>
</div>
</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>
</Layout>
<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>
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>

217
src/pages/service.astro Normal file
View File

@ -0,0 +1,217 @@
---
import Layout from "../layouts/Layout.astro";
// import '../assets/css1/all.min.css'
import '../assets/css1/style.css'
import '../assets/css1/style5.css'
---
<Layout>
<div class="site-content">
<!-- Page-Header Section STARTS Here -->
<div class="page-header text-center">
<div class="container">
<h1 class="page-title">我们的服务</h1>
<ul id="breadcrumbs" class="breadcrumbs">
<li>
<a href="/" class="crumb">首页</a> &gt; <a href="/service" class="crumb">我们的服务</a>
</li>
</ul>
</div>
</div>
<!-- Page-Header Section End Here -->
<!-- Service Section STARTS Here -->
<section class="content_market_page_services">
<div class="container">
<div class="row align-items-center">
<div class="col-lg-6 col-xl-3 col-md-6 col-sm-6 col-xs-12">
<div class="service-box white_bg">
<span class="big-number">01</span>
<div class="service_icon">01</div>
<div class="service-content-box">
<h5>品牌口碑宣传</h5>
<p>我们深入理解品牌策略的规划与执行,从品牌定位、数据分析到数字化营销全方位延展。确保品牌的视觉呈现与市场认知高度一致。</p>
</div>
</div>
</div>
<div class="col-lg-6 col-xl-3 col-md-6 col-sm-6 col-xs-12">
<div class="service-box white_bg">
<span class="big-number">02</span>
<div class="service_icon">02</div>
<div class="service-content-box">
<h5>品牌声誉维护</h5>
<p>构建全网品牌口碑矩阵,确保品牌声誉在各大平台全面覆盖。通过持续监控与优化,有效提升品牌声誉与市场认知度。</p>
</div>
</div>
</div>
<div class="col-lg-6 col-xl-3 col-md-6 col-sm-6 col-xs-12">
<div class="service-box white_bg">
<span class="big-number">03</span>
<div class="service_icon">03</div>
<div class="service-content-box">
<h5>全网SEO优化</h5>
<p>提供从策略规划到项目执行的完整SEO优化方案借助视觉设计与技术手段提升企业网站的可见度与访问量。我们的服务包括网站建设、系统开发、视频制作等助力客户在网络传播中保持领先地位。</p>
</div>
</div>
</div>
<div class="col-lg-6 col-xl-3 col-md-6 col-sm-6 col-xs-12">
<div class="service-box white_bg">
<span class="big-number">04</span>
<div class="service_icon">04</div>
<div class="service-content-box">
<h5>客户关系整合营销服务</h5>
<p>基于精准用户画像,提供全生命周期的整合营销服务,帮助企业全面了解客户的需求与行为模式。通过从内容创意到实施的全方位商业生态链,优化客户决策过程,提升品牌忠诚度与用户粘性。</p>
</div>
</div>
</div>
<div class="col-lg-6 col-xl-3 col-md-6 col-sm-6 col-xs-12">
<div class="service-box white_bg">
<span class="big-number">05</span>
<div class="service_icon">05</div>
<div class="service-content-box">
<h5>公关传播及视频</h5>
<p>专业的PR稿件撰写与发布网络舆情监测与危机处理。利用大数据分析实时捕捉舆情源制定应对方案帮助企业解决危机、树立品牌美誉度。我们的服务还包括商业视频策划、拍摄与制作以及短视频直播全方位提升品牌传播力。</p>
</div>
</div>
</div>
<div class="col-lg-6 col-xl-3 col-md-6 col-sm-6 col-xs-12">
<div class="service-box white_bg">
<span class="big-number">06</span>
<div class="service_icon">06</div>
<div class="service-content-box">
<h5>多领域媒体资源平台</h5>
<p>覆盖国内5000多个具有影响力的媒体资源包括权威平面媒体、新媒体、行业类媒体与政府资源。提供360度社会化媒体发布策略打造精准的广告投放与公关传播方案。提供定制化的网红整合营销方案提升广告转化率。</p>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Service Section End Here -->
<!-- Our Services Section STARTS Here -->
<section>
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="heading">
<h2>如何开展</h2>
<img class="lazy" src="images/headin_border.png" data-src="images/headin_border.png" alt="headin_border">
</div>
</div>
</div>
<div class="row">
<div class="col-lg-4 col-md-6 col-sm-6">
<div class="service_bg white_bg">
<div class="service_img">
<img class="lazy" src="images/service_img1.png" data-src="images/service_img1.png" alt="service_img">
</div>
<div class="service_text">
<h5>行业数据分析</h5>
<p>对您的行业及竞争对手现状进行分析分析出竞争优势、行业流量特点及SEO优化需求</p>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-sm-6">
<div class="service_bg white_bg">
<div class="service_img">
<img class="lazy" src="images/service_img2.png" data-src="images/service_img2.png" alt="service_img">
</div>
<div class="service_text">
<h5>您的网站现状分析</h5>
<p>从服务器设置到网站架构最后到网站的用户体验做出全方位分析然后制定SEO优化方案</p>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-sm-6">
<div class="service_bg white_bg">
<div class="service_img">
<img class="lazy" src="images/service_img3.png" data-src="images/service_img3.png" alt="service_img">
</div>
<div class="service_text">
<h5>网站SEO优化执行</h5>
<p>从网站的代码部分到所有的优化设置共计包含245项SEO优化细节全部细化按正常步骤执行</p>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-sm-6">
<div class="service_bg white_bg">
<div class="service_img">
<img class="lazy" src="images/service_img4.png" data-src="images/service_img4.png" alt="service_img">
</div>
<div class="service_text">
<h5>受众群体分析</h5>
<p>对网站受众用户访问站点情况分析,尽量在现有网站进行微调,降低用户访问跳出率,增加用户咨询概率;</p>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-sm-6">
<div class="service_bg white_bg">
<div class="service_img">
<img class="lazy" src="images/service_img5.png" data-src="images/service_img5.png" alt="service_img">
</div>
<div class="service_text">
<h5>用户体验改善</h5>
<p>对网站架构、图片素材、转化词语及按钮设置、客服系统设置等作出SEO优化分析及改善增强用户访问页面数量及时长</p>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-sm-6">
<div class="service_bg white_bg">
<div class="service_img">
<img class="lazy" src="images/service_img6.png" data-src="images/service_img6.png" alt="service_img">
</div>
<div class="service_text">
<h5>目标预估及执行</h5>
<p>按三个月为一个阶段进行SEO优化预估指定考核KPI及工作内容每季度全新的SEO策略优化执行让网站不断增加关键词排名数量</p>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Our Services Section End Here -->
<!-- Client Counter Section Start Here -->
<section class="pt-0 home_2_counter">
<div class="container">
<div class="row">
<div class="col-md-3 col-sm-6 col-xs-6 col-6">
<div class="seomek-counter">
<div>
<span class="num" data-to="30" data-time="2000">30</span>
<span>+</span>
</div>
<h6>SEO数据分析要点</h6>
</div>
</div>
<div class="col-md-3 col-sm-6 col-xs-6 col-6">
<div class="seomek-counter">
<div>
<span class="num" data-to="245" data-time="2000">245</span>
<span>+</span>
</div>
<h6>SEO优化执行细节</h6>
</div>
</div>
<div class="col-md-3 col-sm-6 col-xs-6 col-6">
<div class="seomek-counter">
<div>
<span class="num" data-to="10" data-time="2000">10</span>
<span>+</span>
</div>
<h6>SEO优化策略</h6>
</div>
</div>
<div class="col-md-3 col-sm-6 col-xs-6 col-6">
<div class="seomek-counter">
<div>
<span class="num" data-to="20" data-time="2000">20</span>
<span>+</span>
</div>
<h6>转化率提升方法</h6>
</div>
</div>
</div>
</div>
</section>
<!-- Client Counter Section End Here -->
</div>
</Layout>

6
src/styles/bootstrap.min.css vendored Normal file

File diff suppressed because one or more lines are too long

169
src/styles/responsive.css Normal file
View File

@ -0,0 +1,169 @@
/*--------------------------------------------------------------------- File Name: responsive.css ---------------------------------------------------------------------*/
/*------------------------------------------------------------------- 991px x 768px ---------------------------------------------------------------------*/
@media (min-width: 1200px) and (max-width: 1500px) {
.header_full_banner {
padding-left: 125px;
}
}
@media (min-width: 992px) and (max-width: 1199px) {
.header_full_banner {
padding-left: 125px;
}
.titlepage h2 {
font-size: 42px;
}
ul.location_icon li {
padding-left: 38px;
}
.bottom_form .enter {
width: 55%;
}
ul.social_icon li a {
margin: 0px 1px;
}
.cont h3 {
font-size: 38px;
}
.banner_main {
padding-top: 100px;
}
}
@media (min-width: 768px) and (max-width: 991px) {
.header_full_banner {
padding-left: 125px;
}
.text-bg h1 {
padding-top: 0px;
font-size: 61px;
line-height: 70px;
}
.banner_main {
padding-top: 80px;
}
.banner_main {
min-height: 600px;
}
.titlepage h2 {
font-size: 33px;
}
ul.location_icon li {
font-size: 15px;
padding-left: 8px;
}
.bottom_form .enter {
width: 58%;
}
.sub_btn {
padding: 12px 0px;
max-width: 137px;
margin-left: -2px;
}
ul.social_icon li a {
width: 32px;
font-size: 19px;
margin: 0px 1px;
height: 32px;
}
}
@media (min-width: 576px) and (max-width: 767px) {
.header {
padding: 15px 30px 10px 30px;
}
.header_full_banner {
padding-left: 109px;
}
.login_btn a {
padding: 4px 26px;
}
ul.btn li {
padding: 0px 9px;
}
.text-bg h1 {
font-size: 39px;
line-height: 40px;
padding-bottom: 25px;
}
.logo {
width: 128px;
}
.titlepage h2 {
font-size: 34px;
}
.banner_main {
padding-top: 80px;
}
.banner_main {
min-height: 600px;
}
.about_img {
margin-bottom: 20px;
}
ul.location_icon li {
font-size: 17px;
padding-left: 13px;
}
.sub_btn {
max-width: 189px;
}
}
@media (max-width: 575px) {
.header {
padding: 30px 0px 15px 0px;
}
.header_full_banner {
padding-left: 109px;
}
.logo {
text-align: center !important;
padding-bottom: 6px;
float: left;
}
.text-bg h1 {
font-size: 31px;
line-height: 40px;
padding-bottom: 40px;
padding-left: 10px;
}
.header_full_banner {
min-height: inherit;
}
ul.btn {
display: none;
}
.text-bg span {
display: none;
}
.banner_main {
padding-top: 50px;
}
.banner_main {
min-height: 400px;
}
.text-bg a {
max-width: 168px;
}
.titlepage h2 {
font-size: 33px;
line-height: 44px;
}
.about_img {
margin-bottom: 20px;
}
ul.location_icon li {
padding-left: 0px;
display: block;
text-align: left;
margin-top: 20px;
}
.bottom_form .enter {
width: 100%;
margin-bottom: 30px;
}
}

985
src/styles/style.css Normal file
View File

@ -0,0 +1,985 @@
/*--------------------------------------------------------------------- File Name: style.css ---------------------------------------------------------------------*/
/*--------------------------------------------------------------------- import Fonts ---------------------------------------------------------------------*/
/* @import url('https://fonts.googleapis.com/css?family=Rajdhani:300,400,500,600,700');
@import url('https://fonts.googleapis.com/css?family=Poppins:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i');
@import url('https://fonts.googleapis.com/css?family=Raleway:100,400,600,700,900&display=swap'); */
/*****---------------------------------------- 1) font-family: 'Rajdhani', sans-serif;
2) font-family: 'Poppins', sans-serif;
----------------------------------------*****/
/*--------------------------------------------------------------------- import Files ---------------------------------------------------------------------*/
/* @import url(animate.min.css);
@import url(normalize.css);
@import url(icomoon.css);
@import url(font-awesome.min.css);
@import url(meanmenu.css);
@import url(owl.carousel.min.css);
@import url(swiper.min.css);
@import url(slick.css);
@import url(jquery.fancybox.min.css);
@import url(jquery-ui.css);
@import url(nice-select.css); */
/*--------------------------------------------------------------------- skeleton ---------------------------------------------------------------------*/
* {
box-sizing: border-box !important;
}
html {
scroll-behavior: smooth;
}
body {
color: #666666;
font-size: 14px;
font-family: 'Raleway', sans-serif;
line-height: 1.80857;
font-weight: normal;
}
a {
color: #1f1f1f;
text-decoration: none !important;
outline: none !important;
-webkit-transition: all .3s ease-in-out;
-moz-transition: all .3s ease-in-out;
-ms-transition: all .3s ease-in-out;
-o-transition: all .3s ease-in-out;
transition: all .3s ease-in-out;
}
h1,
h2,
h3,
h4,
h5,
h6 {
letter-spacing: 0;
font-weight: normal;
position: relative;
padding: 0 0 10px 0;
font-weight: normal;
line-height: normal;
color: #111111;
margin: 0
}
h1 {
font-size: 24px;
}
h2 {
font-size: 22px;
}
h3 {
font-size: 18px;
}
h4 {
font-size: 16px
}
h5 {
font-size: 14px
}
h6 {
font-size: 13px
}
*,
*::after,
*::before {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
h1 a,
h2 a,
h3 a,
h4 a,
h5 a,
h6 a {
color: #212121;
text-decoration: none!important;
opacity: 1
}
button:focus {
outline: none;
}
ul,
li,
ol {
margin: 0px;
padding: 0px;
list-style: none;
}
p {
margin: 0px;
font-weight: 500;
font-size: 15px;
line-height: 24px;
}
a {
color: #222222;
text-decoration: none;
outline: none !important;
}
a,
.btn {
text-decoration: none !important;
outline: none !important;
-webkit-transition: all .3s ease-in-out;
-moz-transition: all .3s ease-in-out;
-ms-transition: all .3s ease-in-out;
-o-transition: all .3s ease-in-out;
transition: all .3s ease-in-out;
}
img {
max-width: 100%;
height: auto;
}
:focus {
outline: 0;
}
.btn-custom {
margin-top: 20px;
background-color: transparent !important;
border: 2px solid #ddd;
padding: 12px 40px;
font-size: 16px;
}
.lead {
font-size: 18px;
line-height: 30px;
color: #767676;
margin: 0;
padding: 0;
}
.form-control:focus {
border-color: #ffffff !important;
box-shadow: 0 0 0 .2rem rgba(255, 255, 255, .25);
}
.navbar-form input {
border: none !important;
}
.badge {
font-weight: 500;
}
blockquote {
margin: 20px 0 20px;
padding: 30px;
}
button {
border: 0;
margin: 0;
padding: 0;
cursor: pointer;
}
.full {
float: left;
width: 100%;
}
.layout_padding {
padding-top: 90px;
padding-bottom: 90px;
}
.layout_padding_2 {
padding-top: 75px;
padding-bottom: 75px;
}
.light_silver {
background: #f9f9f9;
}
.theme_bg {
background: #38c8a8;
}
.margin_top_30 {
margin-top: 30px !important;
}
.full {
width: 100%;
float: left;
margin: 0;
padding: 0;
}
/**-- heading section --**/
/*---------------------------- preloader area ----------------------------*/
.loader_bg {
position: fixed;
z-index: 9999999;
background: #fff;
width: 100%;
height: 100%;
}
.loader {
height: 100%;
width: 100%;
position: absolute;
left: 0;
top: 0;
display: flex;
justify-content: center;
align-items: center;
}
.loader img {
width: 280px;
}
/*-- menu_sitbar--*/
header {
position: relative;
}
.menu_sitbar {
float: left;
width: 120px;
height: 100%;
background: #0808ff;
border-right: #fff solid 7px;
padding: 33px;
position: absolute;
top: 0;
left: 0;
}
#sidebar {
width: 160px;
position: fixed;
top: 0;
left: -280px;
height: 100vh;
z-index: 1000;
background: #fff;
color: #fff;
transition: all 0.3s;
overflow-y: scroll;
box-shadow: 3px 3px 3px rgba(0, 0, 0, 0.2);
}
#sidebar.active {
left: 0;
}
#dismiss {
color: #000;
width: 35px;
height: 35px;
line-height: 34px;
text-align: center;
background: #fff;
position: absolute;
top: 10px;
right: 10px;
cursor: pointer;
-webkit-transition: all 0.3s;
-o-transition: all 0.3s;
transition: all 0.3s;
}
#dismiss:hover {
background: #0808ff;
color: #fff;
}
.overlay {
display: none;
position: fixed;
width: 100vw;
height: 100vh;
background: rgba(0, 0, 0, 0.7);
z-index: 998;
opacity: 0;
transition: all 0.5s ease-in-out;
}
.overlay.active {
display: block;
opacity: 1;
}
#sidebarCollapse {
background: transparent;
padding: 0;
border: none;
}
#sidebar .sidebar-header {
padding: 20px;
background: #0808ff;
}
#sidebar ul.components {
padding: 55px 0;
}
#sidebar ul p {
color: #fff;
padding: 10px;
}
#sidebar ul li a {
padding: 10px 25px;
font-size: 1.3em;
display: block;
font-weight: 500;
}
#sidebar ul li a:hover {
color: #fff;
background: #0808ff;
}
#sidebar ul li.active>a,
a[aria-expanded="true"] {
color: #fff;
background: #0808ff;
}
a[data-toggle="collapse"] {
position: relative;
}
.dropdown-toggle::after {
display: block;
position: absolute;
top: 50%;
right: 20px;
transform: translateY(-50%);
}
ul ul a {
font-size: 0.9em !important;
padding-left: 30px !important;
background: #6d7fcc;
}
ul.CTAs {
padding: 20px;
}
ul.CTAs a {
text-align: center;
font-size: 0.9em !important;
display: block;
border-radius: 5px;
margin-bottom: 5px;
}
a.download {
background: #fff;
color: #7386D5;
}
a.article,
a.article:hover {
background: #6d7fcc !important;
color: #fff !important;
}
/*--end menu_sitbar--*/
ul.btn {
float: right;
}
ul.btn li {
display: inline-block;
padding: 0 25px;
}
ul.btn li a {
color: #fff;
font-size: 16px;
}
ul.btn li:last-child {
padding-right: 0;
}
.login_btn {
padding-left: 50px;
}
.login_btn a {
background-color: #fff;
display: inline-block;
padding: 7px 35px;
border-radius: 10px;
color: #292e39 !important;
font-size: 17px;
}
.login_btn a:hover {
color: #fff !important;
background: #0808ff;
}
/*-- header area --*/
/*--------------------------------------------------------------------- top banner area ---------------------------------------------------------------------*/
/*--------------------------------------------------------------------- layout new css ---------------------------------------------------------------------*/
.header_full_banner {
background: url(../images/banner.jpg);
background-repeat: no-repeat;
min-height: 700px;
background-size: 100% 100%;
padding-left: 60px;
}
.header {
width: 100%;
background: transparent;
padding: 20px 30px;
}
.logo a {
font-size: 40px;
font-weight: bold;
text-transform: uppercase;
color: #fff;
line-height: 40px;
}
/** banner section **/
.banner_main {
display: flex;
justify-content: center;
align-content: center;
align-items: center;
padding-top: 150px;
}
.text-bg {
text-align: center;
padding-bottom: 50px;
}
.text-bg h1 {
color: #fff;
font-size: 90px;
line-height: 80px;
padding-bottom: 35px;
font-weight: bold;
}
.text-bg span {
color: #fff;
font-size: 17px;
line-height: 28px;
font-weight: 500;
padding-bottom: 20px;
display: block;
padding-bottom: 20px !important;
padding: 0 20px;
}
.text-bg figure {
margin: 0;
margin-bottom: -206px;
}
.text-bg figure img {
width: 100%;
padding-top: 70px;
padding-left: 40px;
}
.text-img figure {
margin: 0;
}
.text-img figure img {
width: 100%;
max-width: 564px;
}
.text-bg a {
font-size: 17px;
background-color: #fff;
color: #000;
font-weight: 500;
padding: 13px 0px;
width: 100%;
max-width: 190px;
text-align: center;
display: inline-block;
transition: ease-in all 0.5s;
}
.text-bg a:hover {
background-color: #292e39;
color: #fff;
transition: ease-in all 0.5s;
}
.titlepage {
text-align: center;
padding-bottom: 60px;
}
.titlepage h2 {
font-size: 50px;
color: #090807;
line-height: 55px;
font-weight: bold;
padding: 0;
text-transform: uppercase;
}
.d_flex {
display: flex;
align-items: center;
flex-wrap: wrap;
}
.blu {
color: #0808ff;
}
.read_more {
font-size: 17px;
background-color: #090807;
color: #fff !important;
padding: 13px 0px;
width: 100%;
max-width: 190px;
text-align: center;
display: inline-block;
transition: ease-in all 0.5s;
border-radius: 30px;
font-weight: 500;
}
.read_more:hover {
background: #0808ff;
color: #fff;
transition: ease-in all 0.5s;
}
/** banner section **/
/** about section **/
.about {
background: #fff;
box-shadow: inset 0px 1px 87px -60px #6D6D6D;
padding: 90px 0;
}
.about .titlepage {
text-align: right;
padding: 0;
max-width: 541px;
width: 100%;
float: left;
}
.about .titlepage h2 {
margin-bottom: 20px;
}
.about .titlepage p {
color: #030303;
font-size: 17px;
line-height: 28px;
font-weight: 500;
padding-bottom: 30px;
}
.about .titlepage .read_more:hover {
color: #fff;
}
.about_img {
max-width: 600px;
width: 100%;
float: right;
}
.about_img figure {
margin: 0;
}
.about_img figure img {
width: 100%;
}
/** end about section **/
/** classified section **/
.classified {
margin-top: 90px;
}
.blu2 {
color: #3a3aff;
font-weight: bold;
}
.classified .classified_box {
margin-bottom: 45px;
}
.classified .classified_box span {
color: #141629;
display: block;
font-size: 70px;
font-weight: bold;
text-align: center;
}
.classified .classified_box .fornt h3 {
color: #030303;
font-size: 25px;
line-height: 28px;
font-weight: 700;
padding-bottom: 10px;
}
.classified .classified_box .fornt p {
color: #030303;
font-size: 19px;
line-height: 28px;
font-weight: 500;
}
/** end classified section **/
/** review section **/
.review {
margin-top: 40px;
padding: 90px 0px 140px 0px;
background: #fff;
box-shadow: inset 0px 1px 87px -60px #6D6D6D;
}
.review .titlepage p {
color: #141629;
line-height: 28px;
font-weight: 500;
font-size: 17px;
padding-top: 10px;
}
.review_Carousel .carousel-caption {
position: inherit;
padding: 0;
}
.review_box {
text-align: center;
}
.test_box {
padding: 40px 25px;
background: #0808ff;
}
.review_Carousel .test_box h4 {
font-size: 25px;
color: #fff;
line-height: 18px;
display: block;
text-align: center;
text-transform: uppercase;
font-weight: 500;
padding: 16px 0px 10px 0px;
}
.review_Carousel .test_box span {
color: #fff;
display: block;
}
.review_Carousel .test_box i {
font-size: 17px;
line-height: 28px;
display: block;
}
.review_Carousel .test_box p {
font-size: 17px;
line-height: 28px;
color: #fff;
text-align: center;
padding-top: 20px;
}
.review_Carousel .carousel-indicators {
bottom: -50px;
}
.review_Carousel .carousel-indicators li {
width: 45px;
height: 10px;
background: #052501;
}
.review_Carousel .carousel-indicators li.active {
background: #0808ff;
}
.carousel-control-next-icon,
.carousel-control-prev-icon {
display: none;
}
/** end review section **/
/** footer **/
.footer {
background: #212120;
padding-top: 85px;
text-align: center;
}
.footer .titlepage {
text-align: left;
padding-bottom: 0px;
}
.footer .titlepage h2 {
color: #fff;
}
ul.location_icon {
padding-top: 12px;
}
ul.location_icon li {
display: inline-block;
font-size: 18px;
line-height: 20px;
color: #fff;
padding-left: 62px;
}
ul.location_icon li a {
font-size: 30px;
color: #fff;
line-height: 30px;
padding-right: 15px;
}
ul.location_icon li a:hover {
color: #0808ff;
}
.main_form {
padding: 50px 0px 0px 0px;
}
.main_form .contactus {
border: inherit;
padding: 0px 15px;
margin-bottom: 20px;
width: 100%;
height: 60px;
background: transparent;
color: #777977;
font-size: 18px;
font-weight: normal;
border-bottom: #ddd solid 1px;
}
.main_form .textarea {
border: inherit;
padding: 0px 15px;
margin-bottom: 20px;
width: 100%;
background: transparent;
color: #777977;
font-size: 18px;
font-weight: normal;
border-bottom: #ddd solid 1px;
padding-top: 30px;
}
.main_form .send_btn {
font-size: 17px;
transition: ease-in all 0.5s;
background-color: #fff;
color: #000;
padding: 13px 0px;
max-width: 200px;
width: 100%;
display: block;
margin-top: 30px;
border-radius: 30px;
}
.main_form .send_btn:hover {
background-color: #0808ff;
transition: ease-in all 0.5s;
color: #fff;
}
#request *::placeholder {
color: #777977;
opacity: 1;
}
ul.social_icon {
padding-top: 37px;
}
ul.social_icon li {
display: inline-block;
}
ul.social_icon li a {
background: #fff;
width: 45px;
height: 45px;
display: flex;
align-items: center;
justify-content: center;
font-size: 25px;
border-radius: 30px;
margin: 0 3px;
}
ul.social_icon li a:hover {
background-color: #0808ff;
color: #fff;
}
.map {
padding-top: 60px;
}
.map figure {
margin: 0;
}
.map figure img {
width: 100%;
}
.bottom_form {
padding-top: 29px;
}
.bottom_form h3 {
font-weight: 600;
font-size: 20px;
text-align: left;
color: #fff;
padding-bottom: 15px;
}
.bottom_form .enter {
border: inherit;
padding: 0px 19px;
width: 62%;
height: 53px;
background: #fff;
color: #000;
font-size: 18px;
font-weight: 600;
float: left;
}
.sub_btn {
font-size: 17px;
transition: ease-in all 0.5s;
background-color: #0808ff;
color: #fff;
padding: 11px 0px;
max-width: 200px;
width: 100%;
display: block;
font-weight: 500;
text-transform: uppercase;
margin-left: -2px;
}
.sub_btn:hover {
background-color: #0e0b0a;
transition: ease-in all 0.5s;
color: #fff;
}
.copyright {
margin-top: 90px;
padding: 20px 0px;
}
.copyright p {
color: #fff;
font-size: 18px;
line-height: 22px;
text-align: center;
border-top: #ddd solid 1px;
padding-top: 25px;
}
.copyright a {
color: #fff;
}
.copyright a:hover {
color: #0808ff;
}
/** end footer **/

12
utils/config.ts Normal file
View 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
View File

@ -0,0 +1,5 @@
export async function getHost(request: Request) {
// 获取请求头中的 Host
const host = request.headers.get('host');
return host;
}

76
utils/rpc-client.ts Normal file
View File

@ -0,0 +1,76 @@
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(),
}
console.log(req)
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)
})
})
}
}

98
utils/rpc.ts Normal file
View File

@ -0,0 +1,98 @@
import { JsonRpcClient } from './rpc-client.ts'
interface images {
src:string
}
interface result<T> {
code : number
message : string
data : T
}
interface data<T> {
page_title: string
page_module: 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
}
export async function newsIndex(websiteId:number = 0):Promise<result<InewsIndex[]>>{
console.log(websiteId)
const client = getRpcClient()
const result = await client.call('news/index', {
id:websiteId
})
return result
}
// 新闻详情
export interface InewsDetail {
title: string
keywords: string
description: string
content: string
created_at: string
updated_at: string
about: {
id: number
title: string
}[]
prevNews: {
id: number
title: string
}
nextNews: {
id: number
title: string
}
}
export async function newsDetail(id:string):Promise<result<InewsDetail>>{
const client = getRpcClient()
const result = await client.call('news/view', {
id: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
}
export async function websiteConfig(host:string):Promise<result<IWebsiteConfig>>{
const client = getRpcClient()
const result = await client.call('website/config', {
host:host
})
return result
}