更新网站架构

This commit is contained in:
2026-03-09 16:35:17 +08:00
parent 4cbc52c51b
commit bf0daf987b
180 changed files with 60682 additions and 491 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
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 it is too large Load Diff
@@ -0,0 +1,3 @@
.tns-outer{padding:0 !important}.tns-outer [hidden]{display:none !important}.tns-outer [aria-controls],.tns-outer [data-action]{cursor:pointer}.tns-slider{-webkit-transition:all 0s;-moz-transition:all 0s;transition:all 0s}.tns-slider>.tns-item{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.tns-horizontal.tns-subpixel{white-space:nowrap}.tns-horizontal.tns-subpixel>.tns-item{display:inline-block;vertical-align:top;white-space:normal}.tns-horizontal.tns-no-subpixel:after{content:'';display:table;clear:both}.tns-horizontal.tns-no-subpixel>.tns-item{float:left}.tns-horizontal.tns-carousel.tns-no-subpixel>.tns-item{margin-right:-100%}.tns-no-calc{position:relative;left:0}.tns-gallery{position:relative;left:0;min-height:1px}.tns-gallery>.tns-item{position:absolute;left:-100%;-webkit-transition:transform 0s, opacity 0s;-moz-transition:transform 0s, opacity 0s;transition:transform 0s, opacity 0s}.tns-gallery>.tns-slide-active{position:relative;left:auto !important}.tns-gallery>.tns-moving{-webkit-transition:all 0.25s;-moz-transition:all 0.25s;transition:all 0.25s}.tns-autowidth{display:inline-block}.tns-lazy-img{-webkit-transition:opacity 0.6s;-moz-transition:opacity 0.6s;transition:opacity 0.6s;opacity:0.6}.tns-lazy-img.tns-complete{opacity:1}.tns-ah{-webkit-transition:height 0s;-moz-transition:height 0s;transition:height 0s}.tns-ovh{overflow:hidden}.tns-visually-hidden{position:absolute;left:-10000em}.tns-transparent{opacity:0;visibility:hidden}.tns-fadeIn{opacity:1;filter:alpha(opacity=100);z-index:0}.tns-normal,.tns-fadeOut{opacity:0;filter:alpha(opacity=0);z-index:-1}.tns-vpfix{white-space:nowrap}.tns-vpfix>div,.tns-vpfix>li{display:inline-block}.tns-t-subp2{margin:0 auto;width:310px;position:relative;height:10px;overflow:hidden}.tns-t-ct{width:2333.3333333%;width:-webkit-calc(100% * 70 / 3);width:-moz-calc(100% * 70 / 3);width:calc(100% * 70 / 3);position:absolute;right:0}.tns-t-ct:after{content:'';display:table;clear:both}.tns-t-ct>div{width:1.4285714%;width:-webkit-calc(100% / 70);width:-moz-calc(100% / 70);width:calc(100% / 70);height:10px;float:left}
/*# sourceMappingURL=sourcemaps/tiny-slider.css.map */
Binary file not shown.
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 596 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 43 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 26 KiB

@@ -0,0 +1 @@
<svg fill="none" height="44" viewBox="0 0 45 44" width="45" xmlns="http://www.w3.org/2000/svg"><g fill="#0067f4"><path d="m28.9548 22.4531v-.8684c0-6.4427-2.106-12.74067-6.0912-18.20787-.2052-.27872-.5292-.44488-.8748-.44488s-.6696.16616-.8748.44488c-3.9852 5.4672-6.0912 11.76517-6.0912 18.20787v.8684c-4.9356 2.7068-5.65384 9.0423-5.68084 9.3264-.0324.3001.0702.6003.27.8254.2052.2251.49684.3538.79924.3538h23.139c.3078 0 .5994-.1287.7992-.3538.2052-.2251.3024-.5253.27-.8254-.0162-.2841-.729-6.6196-5.6646-9.3264zm-13.932 2.5835v5.7781h-3.3102c.3618-1.5008 1.2474-4.1004 3.3102-5.7781zm2.16-3.4519c0-5.4993 1.6578-10.8915 4.806-15.68331 3.1482 4.79181 4.806 10.18401 4.806 15.68331v9.23h-9.612zm11.772 9.23v-5.7781c2.052 1.6777 2.9484 4.2773 3.3102 5.7781z"/><path d="m23.112 15.0294h-2.7378c-.594 0-1.08.4824-1.08 1.072s.486 1.072 1.08 1.072h2.7378c.594 0 1.08-.4824 1.08-1.072s-.4806-1.072-1.08-1.072z"/><path d="m18.2088 35.3975c-.594 0-1.08.4824-1.08 1.072v6.0943c0 .5896.486 1.072 1.08 1.072s1.08-.4824 1.08-1.072v-6.0943c0-.5896-.486-1.072-1.08-1.072z"/><path d="m21.9888 35.3975c-.594 0-1.08.4824-1.08 1.072v6.0943c0 .5896.486 1.072 1.08 1.072s1.08-.4824 1.08-1.072v-6.0943c0-.5896-.486-1.072-1.08-1.072z"/><path d="m25.7688 35.3975c-.594 0-1.08.4824-1.08 1.072v6.0943c0 .5896.486 1.072 1.08 1.072s1.08-.4824 1.08-1.072v-6.0943c0-.5896-.4806-1.072-1.08-1.072z"/><path d="m6.4476 16.8733h-1.6038v-1.5919c0-.5896-.486-1.072-1.08-1.072s-1.08.4824-1.08 1.072v1.5919h-1.6038c-.594 0-1.08.4824-1.08 1.072s.486 1.072 1.08 1.072h1.6038v1.5919c0 .5896.486 1.072 1.08 1.072s1.08-.4824 1.08-1.072v-1.5919h1.6038c.594 0 1.08-.4824 1.08-1.072s-.4806-1.072-1.08-1.072z"/><path d="m28.3824 3.92888h.7182v.71288c0 .5896.486 1.072 1.08 1.072s1.08-.4824 1.08-1.072v-.71288h.7182c.594 0 1.08-.4824 1.08-1.072s-.486-1.072-1.08-1.072h-.7182v-.71288c0-.5896-.486-1.072-1.08-1.072s-1.08.4824-1.08 1.072v.71288h-.7182c-.594 0-1.08.4824-1.08 1.072s.4806 1.072 1.08 1.072z"/><path d="m43.1676 10.3073h-2.7432v-2.72291c0-.5896-.486-1.072-1.08-1.072s-1.08.4824-1.08 1.072v2.72291h-2.7432c-.594 0-1.08.4824-1.08 1.072s.486 1.072 1.08 1.072h2.7432v2.7229c0 .5896.486 1.072 1.08 1.072s1.08-.4824 1.08-1.072v-2.7229h2.7432c.594 0 1.08-.4824 1.08-1.072s-.486-1.072-1.08-1.072z"/></g></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -0,0 +1 @@
<svg fill="none" height="767" viewBox="0 0 1440 767" width="1440" xmlns="http://www.w3.org/2000/svg"><path d="m-14.8936 273.223c3.6985-23.916 20.64073-43.806 39.6425-58.829 52.1994-41.35 125.4821-54.514 188.8431-33.939 63.362 20.576 126.106 43.663 143.978 107.78 6.113 21.881 8.527 44.758 16.167 66.152 20.043 56.063 78.466 96.02 138.04 94.405 76.273-2.058 128.14-59.891 191.368-93.277 45.844-24.204 114.163-1.515 139.233 56.119 22.523 51.749-14.13 106.529-25.956 156.132-12.114 50.842 7.818 101.153 49.232 133.123 41.746 32.257 105.13 48.452 156.846 35.797 50.03-12.235 84.13-49.846 122.07-81.861 49.16-41.483 127.43-43.319 187.69-35.443 28.79 3.761 58.22 9.823 86.53 3.407 49.23-11.15 57.18-52.412 57.67-95.776.68-60.09.02-120.202-1.11-180.27-2.24-118.233-6.42-236.444-6.42-354.72131h-1483.8014v281.20131z" fill="#ebf4ff"/><path d="m1524.87 305.304c-22.19 75.665-103.56 116.861-179.92 136.795-49.59 12.943-101.32 20.687-152.17 14.16s-100.97-28.518-134.41-67.325c-29.47-34.204-44.4-79.028-74.01-113.122-41.481-47.811-107.788-68.674-171.105-67.435s-124.552 22.102-183.13 46.151c-33.84 13.895-68.61 29.227-105.196 28.143-43.252-1.284-82.562-25.488-115.317-53.741-32.755-28.23-61.457-61.306-96.847-86.174-96.78-68.055-240.0465-60.0459-328.6549 18.341v-169.09706h1511.8599z" fill="#2f80ed" opacity=".3"/><path d="m623.282 521.593c2.635 9.624 7.264 18.938 13.088 27.169 23.587 33.363 62.144 64.094 105.174 47.412 32.777-12.699 57.183-48.872 70.869-79.891 10.343-23.43 11.561-49.514-2.103-72.059-23.299-38.452-72.375-43.276-109.958-24.713-25.004 12.345-50.428 31.77-68.212 53.342-11.914 14.491-13.398 32.08-8.858 48.74z" fill="#ebf4ff"/><g fill="#2f80ed"><path d="m1234.25 386.58c0-4.47-3.08-7.545-7.55-7.545 4.47 0 7.55-3.075 7.55-7.544 0 4.469 3.08 7.544 7.55 7.544-4.47 0-7.55 3.075-7.55 7.545z"/><path d="m1286.11 440.453c0-4.469-3.07-7.545-7.55-7.545 4.48 0 7.55-3.075 7.55-7.544 0 4.469 3.08 7.544 7.56 7.544-4.45 0-7.56 3.076-7.56 7.545z"/><path d="m1313.64 305.073c0-4.469-3.08-7.544-7.55-7.544 4.47 0 7.55-3.075 7.55-7.545 0 4.47 3.08 7.545 7.55 7.545-4.47 0-7.55 3.075-7.55 7.544z"/><path d="m1101.55 354.875c0-4.469-3.08-7.544-7.56-7.544 4.48 0 7.56-3.075 7.56-7.544 0 4.469 3.07 7.544 7.55 7.544-4.48 0-7.55 3.097-7.55 7.544z"/><path d="m1180.63 270.537c0-4.469-3.08-7.544-7.55-7.544 4.47 0 7.55-3.076 7.55-7.545 0 4.469 3.08 7.545 7.55 7.545-4.47 0-7.55 3.097-7.55 7.544z"/><path d="m1135.52 318.791c0-7.987-5.52-13.496-13.51-13.496 7.99 0 13.51-5.509 13.51-13.496 0 7.987 5.51 13.496 13.51 13.496-7.98 0-13.51 5.509-13.51 13.496z"/><path d="m1250.61 297.529c0-7.987-5.51-13.496-13.51-13.496 8 0 13.51-5.509 13.51-13.496 0 7.987 5.52 13.496 13.51 13.496-7.97 0-13.51 5.509-13.51 13.496z"/><path d="m1293.67 365.252c0-6.128-4.26-10.376-10.39-10.376 6.16 0 10.39-4.248 10.39-10.377 0 6.151 4.25 10.377 10.38 10.377-6.13 0-10.38 4.248-10.38 10.376z"/><path d="m1200.78 324.985c0-5.31-3.67-8.96-8.97-8.96 5.32 0 8.97-3.651 8.97-8.96 0 5.309 3.66 8.96 8.97 8.96-5.29-.022-8.97 3.65-8.97 8.96z"/><path d="m859.646 718.325c0-4.004 2.769-6.77 6.777-6.77-4.008 0-6.777-2.765-6.777-6.77 0 4.005-2.768 6.77-6.777 6.77 4.009 0 6.777 2.766 6.777 6.77z"/><path d="m813.05 766.711c0-4.004 2.768-6.77 6.777-6.77-4.009 0-6.777-2.765-6.777-6.77 0 4.005-2.768 6.77-6.777 6.77 4.009 0 6.777 2.766 6.777 6.77z"/><path d="m788.334 645.116c0-4.005 2.769-6.77 6.777-6.77-4.008 0-6.777-2.766-6.777-6.77 0 4.004-2.768 6.77-6.776 6.77 4.008 0 6.776 2.765 6.776 6.77z"/><path d="m978.861 689.852c0-4.005 2.769-6.771 6.777-6.771-4.008 0-6.777-2.765-6.777-6.77 0 4.005-2.768 6.77-6.776 6.77 4.008 0 6.776 2.766 6.776 6.771z"/><path d="m907.837 614.097c0-4.004 2.769-6.77 6.777-6.77-4.008 0-6.777-2.765-6.777-6.77 0 4.005-2.768 6.77-6.777 6.77 4.009 0 6.777 2.766 6.777 6.77z"/><path d="m948.344 657.438c0-7.168 4.96-12.124 12.136-12.124-7.176 0-12.136-4.956-12.136-12.124 0 7.168-4.961 12.124-12.137 12.124 7.176 0 12.137 4.956 12.137 12.124z"/><path d="m844.941 638.346c0-7.169 4.961-12.124 12.137-12.124-7.176 0-12.137-4.956-12.137-12.125 0 7.169-4.961 12.125-12.136 12.125 7.175 0 12.136 4.955 12.136 12.124z"/><path d="m806.273 699.188c0-5.509 3.809-9.315 9.324-9.315-5.515 0-9.324-3.805-9.324-9.314 0 5.509-3.809 9.314-9.346 9.314 5.537-.022 9.346 3.806 9.346 9.315z"/><path d="m889.699 662.992c0-4.757 3.3-8.054 8.062-8.054-4.762 0-8.062-3.296-8.062-8.053 0 4.757-3.299 8.053-8.061 8.053 4.784 0 8.061 3.297 8.061 8.054z"/></g></svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 22 KiB

@@ -0,0 +1 @@
<svg fill="none" height="43" viewBox="0 0 173 43" width="173" xmlns="http://www.w3.org/2000/svg"><g fill="#2f80ed"><path d="m63.375 37.6-21.6-36c-.5-1.1-1.6-1.6-2.9-1.6-1.1 0-2.1.5-2.9 1.6l-9.3 16.3-4.5-7.2c-.5-1.1-1.6-1.6-2.9-1.6-1.1 0-2.1.5-2.9 1.6l-16 26.9c-.5 1.1-.5 2.4 0 3.5.8 1.1 1.9 1.6 3.2 1.6h57.1c1.3 0 2.4-.5 2.9-1.6.3-1.1.3-2.5-.2-3.5zm-56.8-.3 12.5-21.1 4.5 7.5c.5 1.1 1.6 1.6 2.9 1.6 1.1 0 2.4-.5 2.9-1.6l9.6-16.3 18 29.9z"/><path d="m79.339 14.558-2.646-4.94899h-.196l.49 4.94899v22.442h-3.822v-34.83899h2.156l16.415 22.88299 2.548 4.704h.245l-.539-4.704v-22.34399h3.822v34.83899h-2.156z"/><path d="m104.371 24.75c0-4.1487.914-7.3173 2.744-9.506 1.862-2.2213 4.524-3.332 7.987-3.332 1.829 0 3.413.3103 4.753.931 1.372.588 2.499 1.4537 3.381 2.597.882 1.1107 1.535 2.4663 1.96 4.067.424 1.568.637 3.3157.637 5.243 0 4.1487-.931 7.3337-2.793 9.555-1.83 2.1887-4.476 3.283-7.938 3.283-1.83 0-3.43-.294-4.802-.882-1.34-.6207-2.45-1.4863-3.332-2.597-.882-1.1433-1.536-2.499-1.96-4.067-.425-1.6007-.637-3.3647-.637-5.292zm4.067 0c0 1.2413.114 2.4337.343 3.577.261 1.1433.653 2.1397 1.176 2.989.522.8493 1.208 1.5353 2.058 2.058.849.5227 1.878.784 3.087.784 4.442.0327 6.664-3.1033 6.664-9.408 0-1.274-.131-2.4827-.392-3.626-.229-1.1433-.605-2.1397-1.127-2.989-.523-.8493-1.209-1.519-2.058-2.009-.85-.5227-1.879-.784-3.087-.784-4.443-.0327-6.664 3.1033-6.664 9.408z"/><path d="m138.495 26.857 1.372 4.655h.049l1.225-4.753 5.488-14.259h4.214l-10.437 25.039h-1.666l-10.633-25.039h4.508z"/><path d="m154.686 14.313c1.241-.7513 2.678-1.3067 4.312-1.666 1.666-.3593 3.397-.539 5.194-.539 1.698 0 3.054.2287 4.067.686 1.045.4573 1.829 1.0617 2.352 1.813.555.7187.914 1.519 1.078 2.401.196.882.294 1.764.294 2.646 0 1.96-.049 3.871-.147 5.733s-.147 3.626-.147 5.292c0 1.2087.049 2.352.147 3.43s.277 2.0743.539 2.989h-2.891l-1.029-3.43h-.245c-.294.4573-.67.9147-1.127 1.372-.425.4247-.948.8167-1.568 1.176-.621.3267-1.34.6043-2.156.833-.817.2287-1.748.343-2.793.343-1.046 0-2.026-.1633-2.94-.49-.882-.3267-1.65-.784-2.303-1.372-.654-.6207-1.176-1.3557-1.568-2.205-.36-.8493-.539-1.813-.539-2.891 0-1.4373.294-2.6297.882-3.577.588-.98 1.404-1.7477 2.45-2.303 1.078-.588 2.352-.9963 3.822-1.225 1.502-.2613 3.152-.392 4.949-.392h1.323c.457 0 .914.0327 1.372.098.098-.98.147-1.862.147-2.646 0-1.7967-.36-3.0543-1.078-3.773-.719-.7187-2.026-1.078-3.92-1.078-.556 0-1.16.049-1.813.147-.621.0653-1.274.1797-1.96.343-.654.1307-1.291.3103-1.911.539-.588.196-1.111.4247-1.568.686zm6.958 19.649c.914 0 1.731-.1143 2.45-.343.718-.2613 1.339-.5717 1.862-.931.522-.392.947-.8167 1.274-1.274.359-.4573.62-.8983.784-1.323v-4.067c-.458-.0327-.931-.049-1.421-.049-.458-.0327-.915-.049-1.372-.049-1.013 0-2.009.0653-2.989.196-.948.098-1.797.3103-2.548.637-.719.294-1.307.7187-1.764 1.274-.425.5227-.637 1.1923-.637 2.009 0 1.1433.408 2.0907 1.225 2.842.816.7187 1.862 1.078 3.136 1.078z"/></g></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
function counterUp(t){"use strict";this.defaults={duration:3e3,prepend:"",append:"%",selector:".countup",start:0,end:100,intvalues:!1,interval:100};var e=this;this.upating=!1,this.intervalID=null,this.props={};for(var r in this.defaults)"undefined"!=typeof r&&(e.props[r]=e.defaults[r],t.hasOwnProperty(r)&&e.props.hasOwnProperty(r)&&(e.props[r]=t[r]));this.domelems=document.querySelectorAll(this.props.selector),this.elems=[];var n={};this.domelems.forEach(function(t){n.obj=t;var r=parseInt(t.getAttribute("cup-start"));isNaN(r)?n.start=e.props.start:n.start=r;var p=parseInt(t.getAttribute("cup-end"));isNaN(p)?n.end=e.props.end:n.end=p;var a=parseInt(t.getAttribute("cup-duration"));isNaN(a)?n.duration=e.props.duration:n.duration=a;var s=t.getAttribute("cup-prepend");null==s?n.prepend=e.props.prepend:n.prepend=s;var i=t.getAttribute("cup-append");null==i?n.append=e.props.append:n.append=i;var o=t.getAttribute("cup-intval");null==o?n.intvalues=e.props.intvalues:n.intvalues=o,n.step=(n.end-n.start)/(n.duration/e.props.interval),n.val=n.start,e.elems.push(n),n={}})}counterUp.prototype.start=function(){"use strict";var t=this;this.intervalID=setInterval(function(){t.updating||t.update()},t.props.interval)},counterUp.prototype.update=function(){"use strict";this.updating=!0;var t=!0;this.elems.forEach(function(e){e.val+=e.step,e.val<e.end?(1==e.intvalues?e.obj.innerHTML=e.prepend+Math.floor(e.val).toString()+e.append:e.obj.innerHTML=e.prepend+(Math.round(100*e.val)/100).toString()+e.append,t=!1):e.obj.innerHTML=e.prepend+e.end.toString()+e.append}),1==t&&clearInterval(this.intervalID),this.updating=!1};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+104
View File
@@ -0,0 +1,104 @@
(function() {
/* ====================
Preloader
======================= */
window.onload = function () {
window.setTimeout(fadeout, 300);
}
function fadeout() {
document.querySelector('.preloader').style.opacity = '0';
document.querySelector('.preloader').style.display = 'none';
}
// =========== sticky menu
window.onscroll = function () {
var header_navbar = document.querySelector(".hero-section-wrapper-5 .header");
var sticky = header_navbar.offsetTop;
if (window.pageYOffset > sticky) {
header_navbar.classList.add("sticky");
} else {
header_navbar.classList.remove("sticky");
}
// show or hide the back-top-top button
var backToTo = document.querySelector(".scroll-top");
if (document.body.scrollTop > 50 || document.documentElement.scrollTop > 50) {
backToTo.style.display = "flex";
} else {
backToTo.style.display = "none";
}
};
// header-6 toggler-icon
let navbarToggler6 = document.querySelector(".header-6 .navbar-toggler");
var navbarCollapse6 = document.querySelector(".header-6 .navbar-collapse");
document.querySelectorAll(".header-6 .page-scroll").forEach(e =>
e.addEventListener("click", () => {
navbarToggler6.classList.remove("active");
navbarCollapse6.classList.remove('show')
})
);
navbarToggler6.addEventListener('click', function() {
navbarToggler6.classList.toggle("active");
})
// section menu active
function onScroll(event) {
var sections = document.querySelectorAll('.page-scroll');
var scrollPos = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
for (var i = 0; i < sections.length; i++) {
var currLink = sections[i];
var val = currLink.getAttribute('href');
var refElement = document.querySelector(val);
var scrollTopMinus = scrollPos + 73;
if (refElement.offsetTop <= scrollTopMinus && (refElement.offsetTop + refElement.offsetHeight > scrollTopMinus)) {
document.querySelector('.page-scroll').classList.remove('active');
currLink.classList.add('active');
} else {
currLink.classList.remove('active');
}
}
};
window.document.addEventListener('scroll', onScroll);
// ===== pricing-style-4 slider
tns({
container: '.pricing-active',
autoplay: false,
mouseDrag: true,
gutter: 0,
nav: false,
controls: true,
controlsText: [
'<i class="lni lni-chevron-left prev"></i>',
'<i class="lni lni-chevron-right prev"></i>',
],
responsive: {
0: {
items: 1,
},
768: {
items: 2,
},
992: {
items: 1.2,
},
1200: {
items: 2,
}
}
});
// WOW active
new WOW().init();
})();
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-13
View File
@@ -1,13 +0,0 @@
{
"name": "默认模板",
"description": "标准企业官网模板,适用于各类企业展示",
"version": "1.0.0",
"author": "System",
"fields": {
"site_name": "网站名称",
"banner": "轮播图列表",
"news": "新闻列表",
"solutions": "解决方案",
"partners": "合作伙伴"
}
}
-82
View File
@@ -1,82 +0,0 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title data-field="site_name">企业官网</title>
<link rel="stylesheet" href="./styles/main.css">
</head>
<body>
<!-- 头部 -->
<header class="header">
<div class="container">
<h1 data-field="site_name">企业官网</h1>
<nav class="nav">
<a href="/">首页</a>
<a href="/news">新闻资讯</a>
<a href="/solutions">解决方案</a>
<a href="/contact">联系我们</a>
</nav>
</div>
</header>
<!-- 轮播图 -->
<section class="banner">
<div class="banner-slides">
<div class="slide active" data-field="banner">
<img src="./images/banner1.jpg" alt="Banner 1">
<div class="banner-content">
<h2>欢迎来到我们的网站</h2>
<p>专业的企业数字化解决方案提供商</p>
</div>
</div>
</div>
</section>
<!-- 新闻资讯 -->
<section class="news section">
<div class="container">
<h2 class="section-title">新闻资讯</h2>
<div class="news-list" data-field="news">
<div class="news-item">
<h3>公司动态</h3>
<p>这里是新闻内容...</p>
</div>
</div>
</div>
</section>
<!-- 解决方案 -->
<section class="solutions section">
<div class="container">
<h2 class="section-title">解决方案</h2>
<div class="solutions-grid" data-field="solutions">
<div class="solution-card">
<h3>解决方案一</h3>
<p>详细描述...</p>
</div>
</div>
</div>
</section>
<!-- 合作伙伴 -->
<section class="partners section">
<div class="container">
<h2 class="section-title">合作伙伴</h2>
<div class="partners-grid" data-field="partners">
<div class="partner-logo">Partner Logo</div>
</div>
</div>
</section>
<!-- 底部 -->
<footer class="footer">
<div class="container">
<p>&copy; 2024 <span data-field="site_name">企业官网</span>. All rights reserved.</p>
</div>
</footer>
<!-- 数据注入脚本 -->
<script src="./js/theme-loader.js"></script>
</body>
</html>
+527
View File
@@ -0,0 +1,527 @@
<!DOCTYPE html>
<html class="no-js" lang="">
<head>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<title>Nova - Bootstrap 5 Template</title>
<meta name="description" content="" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!-- Place favicon.ico in the root directory -->
<!-- ========================= CSS here ========================= -->
<link rel="stylesheet" href="assets/css/bootstrap-5.0.0-beta1.min.css" />
<link rel="stylesheet" href="assets/css/LineIcons.2.0.css"/>
<link rel="stylesheet" href="assets/css/tiny-slider.css"/>
<link rel="stylesheet" href="assets/css/animate.css"/>
<link rel="stylesheet" href="assets/css/lindy-uikit.css"/>
</head>
<body>
<!--[if lte IE 9]>
<p class="browserupgrade">
You are using an <strong>outdated</strong> browser. Please
<a href="https://browsehappy.com/">upgrade your browser</a> to improve
your experience and security.
</p>
<![endif]-->
<!-- ========================= preloader start ========================= -->
<div class="preloader">
<div class="loader">
<div class="spinner">
<div class="spinner-container">
<div class="spinner-rotator">
<div class="spinner-left">
<div class="spinner-circle"></div>
</div>
<div class="spinner-right">
<div class="spinner-circle"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- ========================= preloader end ========================= -->
<!-- ========================= hero-section-wrapper-5 start ========================= -->
<section id="home" class="hero-section-wrapper-5">
<!-- ========================= header-6 start ========================= -->
<header class="header header-6">
<div class="navbar-area">
<div class="container">
<div class="row align-items-center">
<div class="col-lg-12">
<nav class="navbar navbar-expand-lg">
<a class="navbar-brand" href="index.html">
<img src="assets/img/logo/logo.svg" alt="Logo" />
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent6" aria-controls="navbarSupportedContent6" aria-expanded="false" aria-label="Toggle navigation">
<span class="toggler-icon"></span>
<span class="toggler-icon"></span>
<span class="toggler-icon"></span>
</button>
<div class="collapse navbar-collapse sub-menu-bar" id="navbarSupportedContent6">
<ul id="nav6" class="navbar-nav ms-auto">
<li class="nav-item">
<a class="page-scroll active" href="#home">Home</a>
</li>
<li class="nav-item">
<a class="page-scroll" href="#feature">Feature</a>
</li>
<li class="nav-item">
<a class="page-scroll" href="#about">About</a>
</li>
<li class="nav-item">
<a class="page-scroll" href="#pricing">Pricing</a>
</li>
<li class="nav-item">
<a class="page-scroll" href="#contact">Contact</a>
</li>
</ul>
</div>
<div class="header-action d-flex">
<a href="#0"> <i class="lni lni-cart"></i> </a>
<a href="#0"> <i class="lni lni-alarm"></i> </a>
</div>
<!-- navbar collapse -->
</nav>
<!-- navbar -->
</div>
</div>
<!-- row -->
</div>
<!-- container -->
</div>
<!-- navbar area -->
</header>
<!-- ========================= header-6 end ========================= -->
<!-- ========================= hero-5 start ========================= -->
<div class="hero-section hero-style-5 img-bg" style="background-image: url('assets/img/hero/hero-5/hero-bg.svg')">
<div class="container">
<div class="row">
<div class="col-lg-6">
<div class="hero-content-wrapper">
<h2 class="mb-30 wow fadeInUp" data-wow-delay=".2s">You're Using Free Lite Version</h2>
<p class="mb-30 wow fadeInUp" data-wow-delay=".4s">Please purchase full version of the template to get all sections and permission to use with commercial projects.</p>
<a href="#0" class="button button-lg radius-50 wow fadeInUp" data-wow-delay=".6s">Get Started <i class="lni lni-chevron-right"></i> </a>
</div>
</div>
<div class="col-lg-6 align-self-end">
<div class="hero-image wow fadeInUp" data-wow-delay=".5s">
<img src="assets/img/hero/hero-5/hero-img.svg" alt="">
</div>
</div>
</div>
</div>
</div>
<!-- ========================= hero-5 end ========================= -->
</section>
<!-- ========================= hero-section-wrapper-6 end ========================= -->
<!-- ========================= feature style-5 start ========================= -->
<section id="feature" class="feature-section feature-style-5">
<div class="container">
<div class="row justify-content-center">
<div class="col-xxl-5 col-xl-5 col-lg-7 col-md-8">
<div class="section-title text-center mb-60">
<h3 class="mb-15 wow fadeInUp" data-wow-delay=".2s">Specializing In</h3>
<p class="wow fadeInUp" data-wow-delay=".4s">Stop wasting time and money designing and managing a website that doesnt get results. Happiness guaranteed!</p>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-4 col-md-6">
<div class="single-feature wow fadeInUp" data-wow-delay=".2s">
<div class="icon">
<i class="lni lni-vector"></i>
<svg width="110" height="72" viewBox="0 0 110 72" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M110 54.7589C110 85.0014 85.3757 66.2583 55 66.2583C24.6243 66.2583 0 85.0014 0 54.7589C0 24.5164 24.6243 0 55 0C85.3757 0 110 24.5164 110 54.7589Z" fill="#EBF4FF"/>
</svg>
</div>
<div class="content">
<h5>Graphics Design</h5>
<p>Short description for the ones who look for something new.</p>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6">
<div class="single-feature wow fadeInUp" data-wow-delay=".4s">
<div class="icon">
<i class="lni lni-pallet"></i>
<svg width="110" height="72" viewBox="0 0 110 72" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M110 54.7589C110 85.0014 85.3757 66.2583 55 66.2583C24.6243 66.2583 0 85.0014 0 54.7589C0 24.5164 24.6243 0 55 0C85.3757 0 110 24.5164 110 54.7589Z" fill="#EBF4FF"/>
</svg>
</div>
<div class="content">
<h5>Print Design</h5>
<p>Short description for the ones who look for something new.</p>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6">
<div class="single-feature wow fadeInUp" data-wow-delay=".6s">
<div class="icon">
<i class="lni lni-stats-up"></i>
<svg width="110" height="72" viewBox="0 0 110 72" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M110 54.7589C110 85.0014 85.3757 66.2583 55 66.2583C24.6243 66.2583 0 85.0014 0 54.7589C0 24.5164 24.6243 0 55 0C85.3757 0 110 24.5164 110 54.7589Z" fill="#EBF4FF"/>
</svg>
</div>
<div class="content">
<h5>Business Analysis</h5>
<p>Short description for the ones who look for something new.</p>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6">
<div class="single-feature wow fadeInUp" data-wow-delay=".2s">
<div class="icon">
<i class="lni lni-code-alt"></i>
<svg width="110" height="72" viewBox="0 0 110 72" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M110 54.7589C110 85.0014 85.3757 66.2583 55 66.2583C24.6243 66.2583 0 85.0014 0 54.7589C0 24.5164 24.6243 0 55 0C85.3757 0 110 24.5164 110 54.7589Z" fill="#EBF4FF"/>
</svg>
</div>
<div class="content">
<h5>Web Development</h5>
<p>Short description for the ones who look for something new.</p>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6">
<div class="single-feature wow fadeInUp" data-wow-delay=".4s">
<div class="icon">
<i class="lni lni-lock"></i>
<svg width="110" height="72" viewBox="0 0 110 72" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M110 54.7589C110 85.0014 85.3757 66.2583 55 66.2583C24.6243 66.2583 0 85.0014 0 54.7589C0 24.5164 24.6243 0 55 0C85.3757 0 110 24.5164 110 54.7589Z" fill="#EBF4FF"/>
</svg>
</div>
<div class="content">
<h5>Best Security</h5>
<p>Short description for the ones who look for something new.</p>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6">
<div class="single-feature wow fadeInUp" data-wow-delay=".6s">
<div class="icon">
<i class="lni lni-code"></i>
<svg width="110" height="72" viewBox="0 0 110 72" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M110 54.7589C110 85.0014 85.3757 66.2583 55 66.2583C24.6243 66.2583 0 85.0014 0 54.7589C0 24.5164 24.6243 0 55 0C85.3757 0 110 24.5164 110 54.7589Z" fill="#EBF4FF"/>
</svg>
</div>
<div class="content">
<h5>Web Design</h5>
<p>Short description for the ones who look for something new.</p>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- ========================= feature style-5 end ========================= -->
<!-- ========================= about style-4 start ========================= -->
<section id="about" class="about-section about-style-4">
<div class="container">
<div class="row align-items-center">
<div class="col-xl-5 col-lg-6">
<div class="about-content-wrapper">
<div class="section-title mb-30">
<h3 class="mb-25 wow fadeInUp" data-wow-delay=".2s">The future of designing starts here</h3>
<p class="wow fadeInUp" data-wow-delay=".3s">Stop wasting time and money designing and managing a website that doesnt get results. Happiness guaranteed,</p>
</div>
<ul>
<li class="wow fadeInUp" data-wow-delay=".35s">
<i class="lni lni-checkmark-circle"></i>
Stop wasting time and money designing and managing a website that doesnt get results.
</li>
<li class="wow fadeInUp" data-wow-delay=".4s">
<i class="lni lni-checkmark-circle"></i>
Stop wasting time and money designing and managing.
</li>
<li class="wow fadeInUp" data-wow-delay=".45s">
<i class="lni lni-checkmark-circle"></i>
Stop wasting time and money designing and managing a website that doesnt get results.
</li>
</ul>
<a href="#0" class="button button-lg radius-10 wow fadeInUp" data-wow-delay=".5s">Learn More</a>
</div>
</div>
<div class="col-xl-7 col-lg-6">
<div class="about-image text-lg-right wow fadeInUp" data-wow-delay=".5s">
<img src="assets/img/about/about-4/about-img.svg" alt="">
</div>
</div>
</div>
</div>
</section>
<!-- ========================= about style-4 end ========================= -->
<!-- ========================= pricing style-4 start ========================= -->
<section id="pricing" class="pricing-section pricing-style-4 bg-light">
<div class="container">
<div class="row align-items-center">
<div class="col-xl-5 col-lg-6">
<div class="section-title mb-60">
<h3 class="mb-15 wow fadeInUp" data-wow-delay=".2s">Pricing Plan</h3>
<p class="wow fadeInUp" data-wow-delay=".4s">Stop wasting time and money designing and managing a website that doesnt get results. Happiness guaranteed!Stop wasting time and money designing and managing a website that doesnt get results. Happiness guaranteed!</p>
</div>
</div>
<div class="col-xl-7 col-lg-6">
<div class="pricing-active-wrapper wow fadeInUp" data-wow-delay=".4s">
<div class="pricing-active">
<div class="single-pricing-wrapper">
<div class="single-pricing">
<h6>Basic Design</h6>
<h4>Web Design</h4>
<h3>$ 29.00</h3>
<ul>
<li>Carefully crafted components</li>
<li>Amazing page examples</li>
<li>Super friendly support team</li>
<li>Awesome Support</li>
</ul>
<a href="#0" class="button radius-30">Get Started</a>
</div>
</div>
<div class="single-pricing-wrapper">
<div class="single-pricing">
<h6>Standard Design</h6>
<h4>Web Development</h4>
<h3>$ 89.00</h3>
<ul>
<li>Carefully crafted components</li>
<li>Amazing page examples</li>
<li>Super friendly support team</li>
<li>Awesome Support</li>
</ul>
<a href="#0" class="button radius-30">Get Started</a>
</div>
</div>
<div class="single-pricing-wrapper">
<div class="single-pricing">
<h6>Pro Design</h6>
<h4>Design & Develop</h4>
<h3>$ 199.00</h3>
<ul>
<li>Carefully crafted components</li>
<li>Amazing page examples</li>
<li>Super friendly support team</li>
<li>Awesome Support</li>
</ul>
<a href="#0" class="button radius-30">Get Started</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- ========================= pricing style-4 end ========================= -->
<!-- ========================= contact-style-3 start ========================= -->
<section id="contact" class="contact-section contact-style-3">
<div class="container">
<div class="row justify-content-center">
<div class="col-xxl-5 col-xl-5 col-lg-7 col-md-10">
<div class="section-title text-center mb-50">
<h3 class="mb-15">Get in touch</h3>
<p>Stop wasting time and money designing and managing a website that doesnt get results. Happiness guaranteed!</p>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-8">
<div class="contact-form-wrapper">
<form action="" method="">
<div class="row">
<div class="col-md-6">
<div class="single-input">
<input type="text" id="name" name="name" class="form-input" placeholder="Name">
<i class="lni lni-user"></i>
</div>
</div>
<div class="col-md-6">
<div class="single-input">
<input type="email" id="email" name="email" class="form-input" placeholder="Email">
<i class="lni lni-envelope"></i>
</div>
</div>
<div class="col-md-6">
<div class="single-input">
<input type="text" id="number" name="number" class="form-input" placeholder="Number">
<i class="lni lni-phone"></i>
</div>
</div>
<div class="col-md-6">
<div class="single-input">
<input type="text" id="subject" name="subject" class="form-input" placeholder="Subject">
<i class="lni lni-text-format"></i>
</div>
</div>
<div class="col-md-12">
<div class="single-input">
<textarea name="message" id="message" class="form-input" placeholder="Message" rows="6"></textarea>
<i class="lni lni-comments-alt"></i>
</div>
</div>
<div class="col-md-12">
<div class="form-button">
<button type="submit" class="button"> <i class="lni lni-telegram-original"></i> Submit</button>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="col-lg-4">
<div class="left-wrapper">
<div class="row">
<div class="col-lg-12 col-md-6">
<div class="single-item">
<div class="icon">
<i class="lni lni-phone"></i>
</div>
<div class="text">
<p>0045939863784</p>
<p>+004389478327</p>
</div>
</div>
</div>
<div class="col-lg-12 col-md-6">
<div class="single-item">
<div class="icon">
<i class="lni lni-envelope"></i>
</div>
<div class="text">
<p>yourmail@gmail.com</p>
<p>admin@yourwebsite.com</p>
</div>
</div>
</div>
<div class="col-lg-12 col-md-6">
<div class="single-item">
<div class="icon">
<i class="lni lni-map-marker"></i>
</div>
<div class="text">
<p>John's House, 13/5 Road, Sidny United State Of America</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- ========================= contact-style-3 end ========================= -->
<!-- ========================= clients-logo start ========================= -->
<section class="clients-logo-section pt-100 pb-100">
<div class="container">
<div class="row">
<div class="col-lg-12">
<div class="client-logo wow fadeInUp" data-wow-delay=".2s">
<img src="assets/img/clients/brands.svg" alt="" class="w-100">
</div>
</div>
</div>
</div>
</section>
<!-- ========================= clients-logo end ========================= -->
<!-- ========================= footer style-4 start ========================= -->
<footer class="footer footer-style-4">
<div class="container">
<div class="widget-wrapper">
<div class="row">
<div class="col-xl-3 col-lg-4 col-md-6">
<div class="footer-widget wow fadeInUp" data-wow-delay=".2s">
<div class="logo">
<a href="#0"> <img src="assets/img/logo/logo.svg" alt=""> </a>
</div>
<p class="desc">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Facilisis nulla placerat amet amet congue.</p>
<ul class="socials">
<li> <a href="#0"> <i class="lni lni-facebook-filled"></i> </a> </li>
<li> <a href="#0"> <i class="lni lni-twitter-filled"></i> </a> </li>
<li> <a href="#0"> <i class="lni lni-instagram-filled"></i> </a> </li>
<li> <a href="#0"> <i class="lni lni-linkedin-original"></i> </a> </li>
</ul>
</div>
</div>
<div class="col-xl-2 offset-xl-1 col-lg-2 col-md-6 col-sm-6">
<div class="footer-widget wow fadeInUp" data-wow-delay=".3s">
<h6>Quick Link</h6>
<ul class="links">
<li> <a href="#0">Home</a> </li>
<li> <a href="#0">About</a> </li>
<li> <a href="#0">Service</a> </li>
<li> <a href="#0">Testimonial</a> </li>
<li> <a href="#0">Contact</a> </li>
</ul>
</div>
</div>
<div class="col-xl-3 col-lg-3 col-md-6 col-sm-6">
<div class="footer-widget wow fadeInUp" data-wow-delay=".4s">
<h6>Services</h6>
<ul class="links">
<li> <a href="#0">Web Design</a> </li>
<li> <a href="#0">Web Development</a> </li>
<li> <a href="#0">Seo Optimization</a> </li>
<li> <a href="#0">Blog Writing</a> </li>
</ul>
</div>
</div>
<div class="col-xl-3 col-lg-3 col-md-6">
<div class="footer-widget wow fadeInUp" data-wow-delay=".5s">
<h6>Download App</h6>
<ul class="download-app">
<li>
<a href="#0">
<span class="icon"><i class="lni lni-apple"></i></span>
<span class="text">Download on the <b>App Store</b> </span>
</a>
</li>
<li>
<a href="#0">
<span class="icon"><i class="lni lni-play-store"></i></span>
<span class="text">GET IT ON <b>Play Store</b> </span>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="copyright-wrapper wow fadeInUp" data-wow-delay=".2s">
<p>Design and Developed by <a href="https://uideck.com" rel="nofollow" target="_blank">UIdeck</a> Built-with <a href="https://uideck.com" rel="nofollow" target="_blank">Lindy UI Kit</a>. Distributed by <a href="https://themewagon.com" target="_blank">ThemeWagon</a></p>
</div>
</div>
</footer>
<!-- ========================= footer style-4 end ========================= -->
<!-- ========================= scroll-top start ========================= -->
<a href="#" class="scroll-top"> <i class="lni lni-chevron-up"></i> </a>
<!-- ========================= scroll-top end ========================= -->
<!-- ========================= JS here ========================= -->
<script src="assets/js/bootstrap-5.0.0-beta1.min.js"></script>
<script src="assets/js/tiny-slider.js"></script>
<script src="assets/js/wow.min.js"></script>
<script src="assets/js/main.js"></script>
</body>
</html>
-213
View File
@@ -1,213 +0,0 @@
/**
* 模板数据注入脚本
* 功能监听 postMessage 事件当收到 SET_SITE_DATA
* 自动寻找带有 data-field 属性的 HTML 标签替换为对应的数据
*/
(function() {
'use strict';
// 日志开关
const DEBUG = false;
function log(...args) {
if (DEBUG) {
console.log('[ThemeLoader]', ...args);
}
}
/**
* 替换元素内容或属性
* @param {HTMLElement} element - 目标元素
* @param {string} field - 字段名
* @param {any} value - 数据值
*/
function applyDataToElement(element, field, value) {
if (value === undefined || value === null) {
log(`字段 ${field} 值为空,跳过`);
return;
}
// 如果是数组或对象,尝试解析
if (typeof value === 'string') {
try {
const parsed = JSON.parse(value);
if (parsed) {
value = parsed;
}
} catch (e) {
// 保持原值
}
}
// 处理数组类型(用于轮播图、列表等)
if (Array.isArray(value)) {
handleArrayField(element, field, value);
return;
}
// 处理对象类型
if (typeof value === 'object') {
handleObjectField(element, field, value);
return;
}
// 处理基础类型(字符串、数字)
// 1. 如果是 input/textarea/select,设置为 value
const tagName = element.tagName.toLowerCase();
if (tagName === 'input' || tagName === 'textarea' || tagName === 'select') {
element.value = value;
return;
}
// 2. 如果有 src 属性,设置为 src(图片等)
if (element.hasAttribute('src') && !element.hasAttribute('data-keep-src')) {
// 检查是否是占位符图片
const currentSrc = element.getAttribute('src');
if (!currentSrc || currentSrc.indexOf('placeholder') > -1) {
element.src = value;
}
return;
}
// 3. 否则设置为 innerText
element.innerText = value;
}
/**
* 处理数组类型的字段如轮播图列表
*/
function handleArrayField(container, field, dataList) {
// 查找模板元素(带有 data-template 属性的元素)
const templateElement = container.querySelector('[data-template]');
if (!templateElement) {
log(`字段 ${field} 未找到模板元素`);
return;
}
const template = templateElement.cloneNode(true);
template.removeAttribute('data-template');
template.style.display = '';
// 清空容器
container.innerHTML = '';
// 渲染每个数据项
dataList.forEach((item, index) => {
const itemElement = template.cloneNode(true);
applyDataToObject(itemElement, item, index);
container.appendChild(itemElement);
});
}
/**
* 处理对象类型的字段
*/
function handleObjectField(element, field, data) {
// 递归处理对象属性
applyDataToObject(element, data);
}
/**
* 将数据应用到元素及其子元素
*/
function applyDataToObject(element, data, index = 0) {
// 处理 data-field 属性
const fieldElements = element.querySelectorAll('[data-field]');
fieldElements.forEach(el => {
const field = el.getAttribute('data-field');
// 支持点号分隔的路径,如 "banner.0.image"
const value = getNestedValue(data, field);
if (value !== undefined) {
applyDataToElement(el, field, value);
}
});
// 也处理元素本身的 data-field
if (element.hasAttribute('data-field')) {
const field = element.getAttribute('data-field');
const value = getNestedValue(data, field);
if (value !== undefined) {
applyDataToElement(element, field, value);
}
}
}
/**
* 获取嵌套属性值
* @param {object} obj - 数据对象
* @param {string} path - 属性路径 "banner.0.image"
* @returns {any}
*/
function getNestedValue(obj, path) {
if (!path) return obj;
const keys = path.split('.');
let value = obj;
for (const key of keys) {
if (value === null || value === undefined) {
return undefined;
}
value = value[key];
}
return value;
}
/**
* 初始化数据注入
*/
function init() {
log('ThemeLoader 初始化');
// 监听来自父窗口的消息
window.addEventListener('message', function(event) {
log('收到消息:', event.data);
// 验证消息类型
if (!event.data || event.data.type !== 'SET_SITE_DATA') {
return;
}
const siteData = event.data.data;
if (!siteData) {
log('未收到有效数据');
return;
}
log('开始注入数据:', siteData);
// 查找所有带有 data-field 属性的元素
const elements = document.querySelectorAll('[data-field]');
elements.forEach(element => {
const field = element.getAttribute('data-field');
const value = siteData[field];
if (value !== undefined) {
applyDataToElement(element, field, value);
}
});
// 触发自定义事件,通知数据已加载
window.dispatchEvent(new CustomEvent('themeDataLoaded', {
detail: siteData
}));
log('数据注入完成');
});
// 发送就绪消息给父窗口
window.parent.postMessage({
type: 'THEME_READY'
}, '*');
}
// DOM 加载完成后初始化
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
})();
Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

-153
View File
@@ -1,153 +0,0 @@
/* 基础样式 */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
line-height: 1.6;
color: #333;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 0 20px;
}
.section {
padding: 60px 0;
}
.section-title {
text-align: center;
font-size: 32px;
margin-bottom: 40px;
color: #333;
}
/* 头部 */
.header {
background: #fff;
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 1000;
}
.header .container {
display: flex;
justify-content: space-between;
align-items: center;
height: 70px;
}
.header h1 {
font-size: 24px;
color: #1890ff;
}
.nav a {
margin-left: 30px;
text-decoration: none;
color: #333;
transition: color 0.3s;
}
.nav a:hover {
color: #1890ff;
}
/* 轮播图 */
.banner {
margin-top: 70px;
height: 500px;
overflow: hidden;
position: relative;
}
.banner-slides .slide {
display: none;
}
.banner-slides .slide.active {
display: block;
}
.banner-slides .slide img {
width: 100%;
height: 500px;
object-fit: cover;
}
.banner-content {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
color: #fff;
}
.banner-content h2 {
font-size: 48px;
margin-bottom: 20px;
}
.banner-content p {
font-size: 20px;
}
/* 新闻 */
.news-list {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 30px;
}
.news-item {
background: #f5f5f5;
padding: 20px;
border-radius: 8px;
}
/* 解决方案 */
.solutions-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 20px;
}
.solution-card {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
padding: 40px 20px;
border-radius: 8px;
text-align: center;
color: #fff;
}
/* 合作伙伴 */
.partners-grid {
display: grid;
grid-template-columns: repeat(5, 1fr);
gap: 20px;
}
.partner-logo {
background: #f5f5f5;
padding: 30px;
text-align: center;
border-radius: 8px;
}
/* 底部 */
.footer {
background: #333;
color: #fff;
padding: 30px 0;
text-align: center;
}