Files
orico-official-website/app/index/view/mobile/topic_laptop/index.html
liqian 48e3d7f846
All checks were successful
Gitea Actions Official-website / deploy-dev (push) Successful in 3s
笔记本移动端
2025-12-24 14:48:57 +08:00

1130 lines
45 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{extend name="public/base" /}
{block name="style"}
<link rel="stylesheet" href="__CSS__/topic_laptop/index.css">
<link rel="stylesheet" href="__CSS__/topic_laptop/swiper.css">
<link rel="stylesheet" href="__CSS__/topic_laptop/amd.css">
<link rel="stylesheet" href="__CSS__/topic_laptop/cpu.css">
<link rel="stylesheet" href="__CSS__/topic_laptop/progress.css">
<link rel="stylesheet" href="__CSS__/topic_laptop/gpu.css">
<link rel="stylesheet" href="__CSS__/topic_laptop/memory.css">
<link rel="stylesheet" href="__CSS__/topic_laptop/m2.css">
<link rel="stylesheet" href="__CSS__/topic_laptop/fs.css">
<link rel="stylesheet" href="__CSS__/topic_laptop/xn.css">
<link rel="stylesheet" href="__CSS__/topic_laptop/ips.css">
<link rel="stylesheet" href="__CSS__/topic_laptop/rgb.css">
<link rel="stylesheet" href="__CSS__/topic_laptop/bly.css">
<link rel="stylesheet" href="__CSS__/topic_laptop/qb.css">
<link rel="stylesheet" href="__CSS__/topic_laptop/wift.css">
<link rel="stylesheet" href="__CSS__/topic_laptop/endurance.css">
<link rel="stylesheet" href="__CSS__/topic_laptop/zoom.css">
<link rel="stylesheet" href="__CSS__/topic_laptop/tabs.css">
<link rel="stylesheet" href="__CSS__/topic_laptop/window.css">
<link rel="stylesheet" href="__CSS__/topic_laptop/footer.css">
<script type="text/javascript">
(function (doc, win)
{
var docEl = doc.documentElement;
var resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize';
function setRootFontSize ()
{
var clientWidth = docEl.clientWidth;
if (!clientWidth) return;
var fontSize = clientWidth / 7.5; // 750px/7.5=100px375px/7.5=50px
// 直接修改内联样式,优先级最高
docEl.setAttribute('style', 'font-size: ' + fontSize + 'px !important;');
}
setRootFontSize();
win.addEventListener(resizeEvt, setRootFontSize);
doc.addEventListener('DOMContentLoaded', setRootFontSize);
})(document, window);
</script>
{/block}
{block name="header"}
<!-- 重置header头为空 -->
{/block}
{block name="main"}
<!-- 顶部轮播 -->
<div class="swiper-container auto-swiper-container" style="margin-top:60px;">
<div class="swiper-wrapper">
<div class="swiper-slide auto-swiper-slide">
<div class="swiper-container-texts" style="color:#fff">
<div class="swiper-container-texts-t">轻启强大 跃级体验</div>
<div class="swiper-container-texts-p">
<div>锐龙R7 7735HS标压处理器</div>
<div style="width: 1px; height: 0.16rem;background: #fff;margin: 0 0.15rem;"></div>
<div>IPS柔光舒适屏</div>
<div style="width: 1px; height: 0.16rem;background: #fff;margin: 0 0.15rem;"></div>
<div>轻至1.45kg</div>
</div>
<div class="swiper-container-texts-img">
<a href="">
<img src="__IMAGES__/topic_laptop/ljgd.png" alt="">
</a>
</div>
</div>
<img src="__IMAGES__/topic_laptop/banner.png" alt="" />
</div>
</div>
</div>
<!-- 笔记本配置图 -->
<div class="amd-box">
<div class="amd-img-header">
<img src="__IMAGES__/topic_laptop/amd1.png" alt="" loading="lazy">
</div>
<div class="amd-img-main " data-order="2" data-name="">
<div class="amd-img-main-left">
<img src="__IMAGES__/topic_laptop/amd-l-1-1.png" alt="" loading="lazy">
<img src="__IMAGES__/topic_laptop/amd-l-1-2.png" alt="" loading="lazy">
<img src="__IMAGES__/topic_laptop/amd-l-1-3.png" alt="" loading="lazy">
<img src="__IMAGES__/topic_laptop/amd-l-1-4.png" alt="" loading="lazy">
</div>
<div class="amd-img-main-right">
<img src="__IMAGES__/topic_laptop/amd-r-1-1.png" alt="" loading="lazy">
<img src="__IMAGES__/topic_laptop/amd-r-1-2.png" alt="" loading="lazy">
<img src="__IMAGES__/topic_laptop/amd-r-1-3.png" alt="" loading="lazy">
<img src="__IMAGES__/topic_laptop/amd-r-1-4.png" alt="" loading="lazy">
</div>
</div>
<div class="amd-img-footer">
<img src="__IMAGES__/topic_laptop/amd10.png" alt="" loading="lazy">
</div>
</div>
<!-- 超能引擎 -->
<div class="cpu">
<div class="cpu-main" style="background: url('__IMAGES__/topic_laptop/cpu.png');background-size:100% auto">
<div class="cpu-texts">
<div class="cpu-texts-t">超能引擎 性能拉满</div>
<p class="cpu-texts-p">强悍「芯」实力 定义性能新标杆</p>
</div>
<div class="cpu-footer">
<div class="cpu-footer-img">
<img src="__IMAGES__/topic_laptop/cpu-1.png" alt="" loading="lazy">
<img src="__IMAGES__/topic_laptop/cpu-2.png" alt="" loading="lazy">
<img src="__IMAGES__/topic_laptop/cpu-3.png" alt="" loading="lazy">
</div>
<div class="cpu-footer-desc">
搭载高性能CPU与GPU多任务并行流畅不卡顿
</div>
</div>
</div>
</div>
<!-- 进度条 -->
<div class="progress">
<div class="progress-title">CineBench R23 多核跑分</div>
<div class="progress-section">
<div class="progress-item">
<div class="progress-bar-container">
<div class="progress-bar">
<div class="progress-fill m4-max" data-value="100"></div>
</div>
</div>
<div class="label ">
<span class="device-name colorLinearGradient font20">Ryzen7 7735HS:</span>
<span class="value m4-max colorLinearGradient font20">13766</span>
</div>
</div>
<div class="progress-item w645">
<div class="progress-bar-container ">
<div class="progress-bar">
<div class="progress-fill m2-max" data-value="100"></div>
</div>
</div>
<div class="label">
<span class="device-name colorCBCFD8 font18">Ryzen5 7640HS:</span>
<span class="value colorCBCFD8 font18">12950</span>
</div>
</div>
<div class="progress-item w585">
<div class="progress-bar-container ">
<div class="progress-bar">
<div class="progress-fill m2-max" data-value="100"></div>
</div>
</div>
<div class="label">
<span class="device-name font18 colorCBCFD8 font18">锐龙9 6900HX:</span>
<span class="value font18 colorCBCFD8 font18">13183</span>
</div>
</div>
<div class="progress-item w454">
<div class="progress-bar-container">
<div class="progress-bar">
<div class="progress-fill m2-max" data-value="100"></div>
</div>
</div>
<div class="label">
<span class="device-name font18 colorCBCFD8">酷睿i5-12450H:</span>
<span class="value font18 colorCBCFD8">10200</span>
</div>
</div>
<div class="progress-item w321">
<div class="progress-bar-container">
<div class="progress-bar">
<div class="progress-fill m2-max" data-value="100"></div>
</div>
</div>
<div class="label">
<span class="device-name m2-max font18 colorCBCFD8">Ryzen5 6600H:</span>
<span class="value font18 colorCBCFD8">10297</span>
</div>
</div>
</div>
<div class="progress-p">*此跑分为ORICO实验室测定所得请以实际使用为准</div>
</div>
<!-- 显卡 GPU -->
<div class="gpu">
<div class="gpu-texts">
<div class="gpu-texts-t">
Radeon 680M</br>
独显级显卡 低延迟 全能创作力
</div>
<div class="gpu-texts-p">
搭配高效架构与先进制程,在低功耗下实现游戏创作场景的</br>
逼真光影渲染与流畅性能输出
</div>
</div>
<div class="gpu-main-img"
style="background: url('__IMAGES__/topic_laptop/gpu-main.png');background-size:100% auto">
<div class="gpu-amd-img">
<img src="__IMAGES__/topic_laptop/gpu-amd.png" alt="" loading="lazy">
</div>
<div class="gpu-footer-imgs">
<img src="__IMAGES__/topic_laptop/gpu-imgs-1.png" alt="" loading="lazy">
<img src="__IMAGES__/topic_laptop/gpu-imgs-2.png" alt="" loading="lazy">
<img src="__IMAGES__/topic_laptop/gpu-imgs-3.png" alt="" loading="lazy">
<img src="__IMAGES__/topic_laptop/gpu-imgs-4.png" alt="" loading="lazy">
</div>
</div>
</div>
<!-- 进度条 -->
<div class="progress">
<div class="progress-title">3DMARK Time Spy显卡得分</div>
<div class="progress-section">
<div class="progress-item">
<div class="progress-bar-container">
<div class="progress-bar">
<div class="progress-fill m4-max" data-value="100"></div>
</div>
</div>
<div class="label ">
<span class="device-name colorLinearGradient font20">Ryzen7 7735HS:</span>
<span class="value m4-max colorLinearGradient font20">1700</span>
</div>
</div>
<div class="progress-item w596">
<div class="progress-bar-container ">
<div class="progress-bar">
<div class="progress-fill m2-max" data-value="100"></div>
</div>
</div>
<div class="label">
<span class="device-name colorCBCFD8 font18">NVIDIA GTX 750:</span>
<span class="value colorCBCFD8 font18">1000</span>
</div>
</div>
<div class="progress-item w596">
<div class="progress-bar-container ">
<div class="progress-bar">
<div class="progress-fill m2-max" data-value="100"></div>
</div>
</div>
<div class="label">
<span class="device-name font18 colorCBCFD8 font18">i7-13620H:</span>
<span class="value font18 colorCBCFD8 font18">1000</span>
</div>
</div>
<div class="progress-item w467">
<div class="progress-bar-container">
<div class="progress-bar">
<div class="progress-fill m2-max" data-value="100"></div>
</div>
</div>
<div class="label">
<span class="device-name font18 colorCBCFD8">Ryzen5 6600H:</span>
<span class="value font18 colorCBCFD8">950</span>
</div>
</div>
</div>
<div class="progress-p">*此跑分为ORICO实验室测定所得请以实际使用为准</div>
</div>
<!-- 内存 memory-->
<div class="memory">
<div class="memory-t">
6400MT/s</br>高频狂飙 超大带宽,游戏创作飞快
</div>
<div class="memory-img"
style="background: url('__IMAGES__/topic_laptop/memory-1.png'); background-size:100% auto">
<div class="memory-p">
搭载新一代DDR5架构性能频率跃升至6400MHz
</br>16GB/32GB运行内存双通道高带宽设计叠加低延迟优化大型软件秒加</br>载;多任务多窗口同步并行也能流程无卡顿,尽情释放你的创作潜能。
</div>
<div class="memory-footer-img">
<img src="__IMAGES__/topic_laptop/memory-2.png">
</div>
</div>
</div>
<!-- ssd -->
<div class="m2">
<div class="m2-bg" style="background: url('__IMAGES__/topic_laptop/ssd-img-1.png');background-size:100% auto">
<div class="m2-bg-t1">
支持PCle 4.0 M.2 扩容</br>释放存储潜能
</div>
<div class="m2-img-box">
<img src="__IMAGES__/topic_laptop/ssd-img-2.png" alt="" loading="lazy">
<img src="__IMAGES__/topic_laptop/ssd-img-3.png" alt="" loading="lazy">
<img src="__IMAGES__/topic_laptop/ssd-img-4.png" alt="" loading="lazy">
</div>
</div>
</div>
<!-- fs -->
<div class="fs">
<div class="dl">
<div class="dl-t">
静享 45W强悍性能</br>
“飓冷”轻音散热系统
</div>
<p class="dl-p">
牛角形双热管架构搭配定制高性能涡轮风扇,超强的散热能力,长时</br>间运行不降频;在创作、游戏等高负载场景,性能拉满 全程高能
</p>
</div>
<div class="fs-box">
<video
src="https://ow.static.f2b211.com/storage/videos/banner/20251219/584940a4e2f48d0c08345ce84b93826a_dmlkZW9fcWluaXU=.mp4"
class="fs-video" muted loop playsinline autoplay
poster="https://dev.ow.f2b211.com/storage/images/banner/20251220/bd1f918627eecb7ff2898229e275729c.png"
preload="auto" style="width: 100%;">
您的浏览器不支持HTML5视频播放请升级浏览器
</video>
<div class="fs-ts">*散热图仅为示意,具体以实物为准</div>
<div class="fs-box-img">
<div class="fs-h-img">
<img src="__IMAGES__/topic_laptop/fs-img-1.png" alt="">
<img src="__IMAGES__/topic_laptop/fs-img-2.png" alt="">
</div>
<div class="fs-b-img" style="min-height: 20px;">
<img src="__IMAGES__/topic_laptop/fs-img-3.png" alt="">
</div>
</div>
</div>
</div>
<!-- 性能大拿 -->
<div class="xn">
<div class="xn-t">性能大跃级 拿捏多场景</div>
<div class="xn-container">
<div class="xn-image-section">
<img src="https://dev.ow.f2b211.com/storage/images/banner/20251215/60cac336860c8b69e34bb7de81cc9c17.png"
alt="" class="zoom-image first-image">
</div>
</div>
<div class="xn-p">
<p>游戏软件: ELDÀ、逆水寒、DIABLO、AION、无悔华夏、E- sports Game、原神</p>
<p>设计/编程: python、C语言、CAD、mysql、PS、Pr、DW、3Dmax、C4D、Ai、Au、Ae、Fw、En</p>
<p> 办公/娱乐: 钉钉、WPS、XMind、有道云笔记、爱奇艺、音乐软件、同花顺</p>
</div>
</div>
<!-- IPS -->
<div class="ips">
<div class="ips-t">
14寸IPS 柔光舒适屏</br>
细腻 真实 沉浸
</div>
<div class="ips-bg" style="background: url('__IMAGES__/topic_laptop/ips-img-1.png');background-size:100% auto">
<p>超清IPS屏专业级色彩表现画面显示生动细腻。 </br>办公、学习、创作、游戏、观影,长时间专注眼部依然舒适</p>
</div>
<div class="ips-imgs">
<img src="__IMAGES__/topic_laptop/ips-img-2.png" alt="">
<img src="__IMAGES__/topic_laptop/ips-img-3.png" alt="">
<img src="__IMAGES__/topic_laptop/ips-img-4.png" alt="">
<img src="__IMAGES__/topic_laptop/ips-img-5.png" alt="">
</div>
</div>
<!-- 色彩RGB -->
<div class="rgb">
<div class="rgb-t">100%sRGB超广色域</br>斑斓色彩跃然眼前</div>
<div class="rgb-bg" style="background: url('__IMAGES__/topic_laptop/rgb-img-1.png');background-size:100% auto">
<p class="rgb-p">色彩丰富真实、细节生动逼真,还原万物本色, </br>画面更出彩。每台电脑出厂前专业调校,算法硬件助力,色彩精准度高。</p>
</div>
<div class="rgb-imgs">
<img src="__IMAGES__/topic_laptop/rgb-img-2.png" alt="">
<img src="__IMAGES__/topic_laptop/rgb-img-3.png" alt="">
<img src="__IMAGES__/topic_laptop/rgb-img-4.png" alt="">
</div>
</div>
<!-- 对比图 -->
<div class="bly">
<div class="bly-texts">
<div class="bly-t">舒适不累眼</div>
<div class="bly-p">有效防眩光,显示清晰不刺眼,强光下依然表现出色</br>搭配类自然光护眼科技,呵护双眼,久看不累</div>
</div>
<div class="beforeafter ba-slider">
<img src="https://dev.ow.f2b211.com/storage/images/banner/20251215/70f84be28ec96250a7c44ae51ffecdf0.webp"
loading="lazy">
<div class="resize">
<img src="https://dev.ow.f2b211.com/storage/images/banner/20251215/09d2f45344a3f28db4e5f767888a845d.webp"
loading="lazy">
</div>
<span class="handle"></span>
</div>
</div>
<!-- 轮播图 -->
<div class="qb">
<div class="qb-text">
<div class="qb-t">轻薄有型 便捷随行</div>
<div class="qb-p">外观优雅简约 ,黄金比例机身,棱角分明,</br>
诠释利落风格。表面精密喷砂复刻Mac级出众质感</div>
<div class="swiper-container auto-swiper-container">
<div class="swiper-wrapper">
<a class="swiper-slide auto-swiper-slide">
<img src="__IMAGES__/topic_laptop/qb-img-1.png" alt="" loading="lazy">
</a>
</div>
</div>
</div>
</div>
<!-- wift -->
<div class="wifi" style="background: url('__IMAGES__/topic_laptop/wifi-img-1.png');background-size:100% auto">
<div class="wifi-texts">
<div class="wifi-t">网速时刻在线 跃级流畅 </br>千兆有线网+WiFi6</div>
<div class="wifi-p">折叠式千兆有线网口和Wi-Fi6无线超能网卡速度快、抗干扰、低延时</br>足多种学习和办公场合需要,带来前所未有的畅连体验,学习,办公流畅不</br>卡顿,拒绝掉线尴尬
</div>
</div>
<div class="wifi-img">
<img src="__IMAGES__/topic_laptop/wifi-img-2.png" alt="" loading="lazy">
<img src="__IMAGES__/topic_laptop/wifi-img-3.png" alt="" loading="lazy">
</div>
</div>
<!-- 长久续航 -->
<div class="endurance"
style="background: url('__IMAGES__/topic_laptop/endurance-img-3.png');background-size:100% auto">
<div class="endurance-texts">
<div class="endurance-t">
<span>11.4h</span>
<span>长久续航 电量满满</span>
</div>
<div class="endurance-p">配备57.5Wh大电池续航长达11.4h搭配100W闪充充电器充一次用一天</div>
</div>
<div class="endurance-img">
<img src="__IMAGES__/topic_laptop/endurance-img-1.png" alt="" loading="lazy">
<img src="__IMAGES__/topic_laptop/endurance-img-2.png" alt="" loading="lazy">
</div>
<div class="endurance-footer-p">*此数据为ORICO实验室测定所得请以实际使用为准</div>
</div>
<!-- 接口大满贯 -->
<div class="zoom-t">接口大满贯</div>
<div class="zoom-container" id="zoomContainer">
<div class="img-wrapper">
<p class="zoom-p">标配多种接口,会议室连接电脑、</br>U盘传输文件、TF卡读取等全都轻松搞定</p>
<img src="__IMAGES__/topic_laptop/zoom-img-1.png" alt="接口图" class="bg-img" id="bgImg" loading="lazy">
</div>
<!-- 左边 -->
<div class="annotation anno-delay-1" style="top:60%; left: 37.5%;">
<span style="text-align: center; font-size: 0.18rem;">肯辛通锁孔</span>
</div>
<div class="annotation anno-delay-1 anno-up" style="top: 31.5%; left: 32%;"><span
style="text-align: center; font-size: 0.18rem;">千兆网口</span>
</div>
<div class="annotation anno-delay-1" style="top: 68%; left: 26%;"><span
style="text-align: center; font-size: 0.16rem;">USB-A<br />(5Gbps)</span></div>
<div class="annotation anno-delay-1 anno-up1" style="top:35.5%; left:18%;"><span
style="text-align: center; font-size: 0.18rem;">USB-A<br />(480Mbps)</span></div>
<div class="annotation anno-delay-1" style="top: 73%; left: 14.5%;"><span
style="text-align: center; font-size: 0.18rem;">3.5mm<br />耳麦合一</span></div>
<div class="annotation anno-delay-1 anno-up" style="top: 43%; left: 9%;"><span
style="text-align: center; font-size: 0.18rem;">TF口3.0</span></div>
<!-- 右边 -->
<div class="annotation anno-delay-1" style="top: 64%; left: 58%;"><span
style="text-align: center; font-size: 0.18rem;">全功能<br />USB-C</span></div>
<div class="annotation anno-up anno-delay-1" style="top: 34%; left: 65%;"><span
style="text-align: center; font-size: 0.18rem;">HDMI</span></div>
<div class="annotation anno-delay-1" style="top: 70.5%; left: 70.5%;"><span
style="text-align: center; font-size: 0.18rem;">USB-A<br />(5Gbps)</span></div>
<div class="annotation anno-up1 anno-delay-1" style="top:38.5%; left: 77%;"><span
style="text-align: center; font-size: 0.18rem;">USB-C<br />(5Gbps)</span></div>
</div>
<!-- 滑块 -->
<div class="swiper swiper-container-1" style="width: 6.82rem;margin: 0 auto;">
<div class="swiper-wrapper">
<!-- 滑块1 -->
<div class="swiper-slide" style="width: 4.5rem;">
<img src="__IMAGES__/topic_laptop/hk-img-1.png" alt="" style="width: 4.5rem;">
<div>
<div class="swiper-slide-t">高效 时刻在线</div>
<div class="swiper-slide-p">长续航, 随时随地自在办公
</div>
</div>
</div>
<!-- 滑块2 -->
<div class="swiper-slide" style="width: 4.5rem;">
<img src="__IMAGES__/topic_laptop/hk-img-1.png" alt="图片2" style="width: 4.5rem;">
<div>
<div class="swiper-slide-t">高效 时刻在线</div>
<div class="swiper-slide-p">长续航, 随时随地自在办公
</div>
</div>
</div>
<!-- 滑块3 -->
<div class="swiper-slide" style="width: 4.5rem;">
<img src="__IMAGES__/topic_laptop/hk-img-1.png" alt="" style="width: 4.5rem;">
<div>
<div class="swiper-slide-t">高效 时刻在线</div>
<div class="swiper-slide-p">长续航, 随时随地自在办公
</div>
</div>
</div>
</div>
</div>
<!-- tabs -->
<div class="tabs-container">
<div class="tab-t active" data-index="0">清晰通话 尽兴畅聊</div>
<div class="tab-t" data-index="1">更安全 更私密</div>
<div class="tab-content">
<div class="tab-panel active">
<div class="tab-panel-img">
<img src="__IMAGES__/topic_laptop/tabs-img-1.png" alt="" class="content-image" loading="lazy">
</div>
</div>
<div class="tab-panel">
<video
src="https://ow.static.f2b211.com/storage/videos/banner/20251215/f3223da3e06367fd417dd983a5382912_dmlkZW9fcWluaXU=.mp4"
id="securityVideo" class="content-video" muted loop playsinline autoplay
style="width: 100%;margin:0 auto;">
您的浏览器不支持HTML5视频播放请升级浏览器
</video>
</div>
</div>
<div class="tabs-header-box">
<div class="tabs-header">
<div class="tab-item active" data-index="0">清晰通话</div>
<div class="tab-item" data-index="1">安护密收</div>
<div class="tab-indicator"></div>
</div>
</div>
<div class="tabs-p active" data-index="0">配置1080p前置高清摄像头, 矩阵式降噪麦克风, 噪音环境亦享受清晰通话</div>
<div class="tabs-p" data-index="1">物理防窥拨片,防止软件恶意开启摄像头</div>
</div>
<!-- windows11-->
<div class="window">
<img src="__IMAGES__/topic_laptop/windows-1.png" alt="">
</div>
<!-- 六宫格 -->
<div class="footer-imgs">
<img src="__IMAGES__/topic_laptop/footer-img-1.png">
<img src="__IMAGES__/topic_laptop/footer-img-2.png">
<img src="__IMAGES__/topic_laptop/footer-img-3.png">
<img src="__IMAGES__/topic_laptop/footer-img-4.png">
<img src="__IMAGES__/topic_laptop/footer-img-5.png">
<img src="__IMAGES__/topic_laptop/footer-img-6.png">
</div>
<!-- 底部文字 -->
<div class="footer-texts">
</div>
{/block}
{block name="script"}
<script src="__JS__/before-after.min.js" type="text/javascript"></script>
<script>
// 轮播初始化
let swiper;
let swiper1;
window.onload = function ()
{
if (typeof Swiper === 'undefined') {
console.error('Swiper加载失败请刷新页面重试');
return;
}
swiper = new Swiper('.auto-swiper-container', {
autoplay: {
delay: 3000,
disableOnInteraction: false,
},
loop: true,
slidesPerView: 1,
spaceBetween: 0,
pagination: false,
navigation: false,
scrollbar: false,
on: {
resize: function ()
{
this.update();
},
},
});
swiper1 = new Swiper('.swiper-container-1', {
slidesPerView: 'auto', // 关键让Swiper识别你设置的4.5rem宽度,不自动计算
freeMode: true, // 自由滑动,跟手
grabCursor: true, // 手势提示
touchMoveStopPropagation: true, // 防滑动穿透
spaceBetween: 10 // 图片间距(可选)
});
};
// 进度条动画 - 零HTML改动仅优化性能
function animateProgressBars (container)
{
// 性能优化1用WeakMap管理状态避免污染DOM属性
const animationState = new WeakMap();
const state = animationState.get(container) || { isAnimating: false };
// 防止重复触发
if (state.isAnimating) return;
state.isAnimating = true;
animationState.set(container, state);
const progressFills = container.querySelectorAll('.progress-fill');
console.log(progressFills, '=progressFills=')
progressFills.forEach(fill =>
{
clearTimeout(fill._animateTimer);
// 性能优化2重置用transform而非width
fill.style.transform = 'scaleX(0)';
// 性能优化3用requestAnimationFrame替代setTimeout对齐浏览器刷新
fill._animateTimer = requestAnimationFrame(() =>
{
const targetValue = fill.getAttribute('data-value');
console.log(targetValue, '=targetValue=')
console.log(fill.style)
// 性能优化4用transform替代width消除重排
fill.style.transform = `scaleX(${targetValue / 100})`;
});
});
}
function isElementInView (el)
{
const rect = el.getBoundingClientRect();
const viewportHeight = window.innerHeight;
const viewportWidth = window.innerWidth;
const intersects = (
rect.bottom > 0 &&
rect.top < viewportHeight &&
rect.right > 0 &&
rect.left < viewportWidth
);
if (!intersects) return false;
const visibleHeight = Math.min(rect.bottom, viewportHeight) - Math.max(rect.top, 0);
const visibleWidth = Math.min(rect.right, viewportWidth) - Math.max(rect.left, 0);
const visibleRatio = (visibleHeight * visibleWidth) / (rect.height * rect.width);
return visibleRatio >= 0.1;
}
function isProgressContainerAbove (container)
{
const rect = container.getBoundingClientRect();
return rect.bottom <= 0 || isElementInView(container);
}
const debounce = (fn, delay = 16) =>
{
let timer = null;
return (isResize = false) =>
{
clearTimeout(timer);
timer = setTimeout(() => fn(isResize), delay);
};
};
// 修复1修正选择器匹配HTML中的.progress-section
const progressContainers = document.querySelectorAll('.progress-section');
const progressAnimatedMap = new Map();
const progressPermanentMap = new Map();
progressContainers.forEach(container =>
{
progressAnimatedMap.set(container, false);
progressPermanentMap.set(container, false);
});
const handleProgressScroll = debounce((isResize) =>
{
if (isResize) return;
progressContainers.forEach(container =>
{
if (progressPermanentMap.get(container)) return;
const isAnimated = progressAnimatedMap.get(container);
if (isElementInView(container) && !isAnimated) {
animateProgressBars(container);
progressAnimatedMap.set(container, true);
progressPermanentMap.set(container, true);
}
});
});
let progressResizeTimer = null;
const handleProgressResize = () =>
{
clearTimeout(progressResizeTimer);
progressResizeTimer = setTimeout(() =>
{
progressContainers.forEach(container =>
{
const isPermanent = progressPermanentMap.get(container);
if (isPermanent) {
const progressFills = container.querySelectorAll('.progress-fill');
progressFills.forEach(fill =>
{
clearTimeout(fill._animateTimer);
const targetValue = fill.getAttribute('data-value');
fill.style.transform = `scaleX(${targetValue / 100})`;
});
}
});
}, 200);
};
const initAllProgressContainers = () =>
{
setTimeout(() =>
{
progressContainers.forEach(container =>
{
if (!progressPermanentMap.get(container) && isProgressContainerAbove(container)) {
animateProgressBars(container);
progressAnimatedMap.set(container, true);
progressPermanentMap.set(container, true);
}
});
}, 100);
};
window.addEventListener('scroll', () => handleProgressScroll(false), { passive: true });
window.addEventListener('resize', handleProgressResize);
document.addEventListener('DOMContentLoaded', initAllProgressContainers);
// Tab切换
const tabItems = document.querySelectorAll('.tab-item');
const tabPanels = document.querySelectorAll('.tab-panel');
const tabPs = document.querySelectorAll('.tabs-p');
const tabT = document.querySelectorAll('.tab-t');
const indicator = document.querySelector('.tab-indicator');
const securityVideo = document.getElementById('securityVideo');
let prevIndex = 0;
const tabRects = [];
function cacheTabRects ()
{
tabRects.length = 0;
tabItems.forEach(item =>
{
tabRects.push({
left: item.offsetLeft,
width: item.offsetWidth
});
});
const initRect = tabRects[0];
indicator.style.width = initRect.width + 'px';
indicator.style.transform = `translateX(${initRect.left}px)`;
}
cacheTabRects();
function resetVideo ()
{
if (securityVideo) {
securityVideo.pause();
securityVideo.currentTime = 0;
}
}
function playVideo ()
{
if (securityVideo) {
securityVideo.muted = true;
securityVideo.play().catch(err =>
{
console.log('自动播放失败,请手动点击播放:', err);
});
}
}
tabItems.forEach(item =>
{
item.addEventListener('click', () =>
{
const index = parseInt(item.dataset.index);
if (index === prevIndex) return;
tabItems[prevIndex].classList.remove('active');
item.classList.add('active');
tabPanels[prevIndex].classList.remove('active');
tabPanels[index].classList.add('active');
tabPs[prevIndex].classList.remove('active');
tabPs[index].classList.add('active');
tabT[prevIndex].classList.remove('active');
tabT[index].classList.add('active');
if (index === 1) {
playVideo();
} else if (prevIndex === 1) {
resetVideo();
}
const rect = tabRects[index];
indicator.style.width = rect.width + 'px';
indicator.style.transform = `translateX(${rect.left}px)`;
prevIndex = index;
});
});
// 接口模块动画
(function ()
{
const TRIGGER_RATIO = 0.1;
let lastScrollY = window.scrollY;
let isResizing = false;
let resizeTimer = null;
const zoomContainer = document.getElementById('zoomContainer');
const annotations = document.querySelectorAll('.annotation');
const bgImg = document.getElementById('bgImg');
const elState = new Map();
if (zoomContainer) {
elState.set(zoomContainer, {
isInView: false,
isFadedIn: false
});
}
const isElementInView = (el) =>
{
const rect = el.getBoundingClientRect();
const viewportHeight = window.innerHeight;
const viewportWidth = window.innerWidth;
const intersects = (
rect.bottom > 0 &&
rect.top < viewportHeight &&
rect.right > 0 &&
rect.left < viewportWidth
);
if (!intersects) return false;
const visibleHeight = Math.min(rect.bottom, viewportHeight) - Math.max(rect.top, 0);
const visibleWidth = Math.min(rect.right, viewportWidth) - Math.max(rect.left, 0);
const visibleRatio = (visibleHeight * visibleWidth) / (rect.height * rect.width);
return visibleRatio >= TRIGGER_RATIO;
};
const isElementAboveViewport = (el) =>
{
const rect = el.getBoundingClientRect();
return rect.bottom <= 0 || isElementInView(el);
};
const fadeInInterface = (el) =>
{
if (!el || elState.get(el).isFadedIn) return;
annotations.forEach(anno => anno.classList.add('anno-show'));
bgImg.classList.add('zoom-out');
elState.get(el).isFadedIn = true;
};
const hideInterface = (el) =>
{
if (isResizing) return;
if (!el || !elState.get(el).isFadedIn) return;
annotations.forEach(anno => anno.classList.remove('anno-show'));
bgImg.classList.remove('zoom-out');
elState.get(el).isFadedIn = false;
};
const debounce = (fn, delay = 16) =>
{
let timer = null;
return (isResize = false) =>
{
clearTimeout(timer);
isResizing = isResize;
timer = setTimeout(() =>
{
fn();
isResizing = false;
}, delay);
};
};
const handleScroll = debounce((isResize) =>
{
if (isResize) return;
const currentScrollY = window.scrollY;
const isScrollUp = currentScrollY < lastScrollY;
const isScrollDown = currentScrollY > lastScrollY;
if (!zoomContainer) return;
const prevInView = elState.get(zoomContainer).isInView;
const currentInView = isElementInView(zoomContainer);
elState.set(zoomContainer, { ...elState.get(zoomContainer), isInView: currentInView });
if (isScrollDown) {
if (currentInView && !prevInView) {
fadeInInterface(zoomContainer);
}
}
if (isScrollUp) {
if (!currentInView && prevInView) {
hideInterface(zoomContainer);
}
}
lastScrollY = currentScrollY;
});
const handleResize = () =>
{
clearTimeout(resizeTimer);
isResizing = true;
resizeTimer = setTimeout(() =>
{
isResizing = false;
if (zoomContainer && elState.get(zoomContainer).isFadedIn) {
annotations.forEach(anno => anno.classList.add('anno-show'));
bgImg.classList.add('zoom-out');
}
}, 200);
};
const initInterfaceElement = () =>
{
setTimeout(() =>
{
if (zoomContainer && isElementAboveViewport(zoomContainer)) {
fadeInInterface(zoomContainer);
}
}, 100);
};
window.addEventListener('scroll', () => handleScroll(false), { passive: true });
window.addEventListener('resize', handleResize);
window.addEventListener('load', initInterfaceElement);
document.addEventListener('DOMContentLoaded', initInterfaceElement);
})();
// 图片对比滑块
$(document).ready(function ()
{
$('.ba-slider').beforeAfter({
startPercent: 50,
handle: '.handle',
resize: '.resize'
});
});
// 视频自动播放(移除显隐逻辑,仅保留播放/暂停核心)
(function ()
{
const allVideos = document.querySelectorAll('.fs-video');
const fsBox = document.querySelector('.fs-box');
let isVideoPlaying = false;
let videoTip = null;
// 初始化视频提示
const initVideoTip = () =>
{
if (!fsBox || videoTip) return;
videoTip = document.createElement('div');
videoTip.className = 'video-tip';
videoTip.innerText = '点击播放视频';
fsBox.appendChild(videoTip);
videoTip.style.display = 'none';
};
// 停止所有视频(仅暂停,无显隐)
function stopAllVideos ()
{
allVideos.forEach((video) =>
{
video.pause(); // 仅暂停删除display修改
});
isVideoPlaying = false;
if (videoTip) videoTip.style.display = 'none';
}
// 播放指定视频(仅播放,无显隐)
const playTargetVideo = (video) =>
{
if (!video) return;
stopAllVideos();
// 强制静音+播放
video.muted = true;
video.play().then(() =>
{
isVideoPlaying = true;
if (videoTip) videoTip.style.display = 'none';
}).catch((err) =>
{
console.log('视频自动播放失败:', err);
if (videoTip) videoTip.style.display = 'block';
// 点击视频手动播放(仅执行一次)
video.addEventListener('click', () =>
{
video.play();
isVideoPlaying = true;
if (videoTip) videoTip.style.display = 'none';
}, { once: true });
});
};
// 可视区判断(优化触发时机)
const isFsBoxInView = () =>
{
if (!fsBox) return false;
const rect = fsBox.getBoundingClientRect();
return rect.top < window.innerHeight * 0.8 && rect.bottom > window.innerHeight * 0.2;
};
// 滚动处理(防抖+节流)
let lastVideoScrollTime = 0;
const handleVideoScroll = () =>
{
const now = Date.now();
if (now - lastVideoScrollTime < 50) return; // 节流50ms
lastVideoScrollTime = now;
if (isFsBoxInView() && !isVideoPlaying) {
const video = fsBox.querySelector('.fs-video');
playTargetVideo(video);
} else if (!isFsBoxInView() && isVideoPlaying) {
stopAllVideos();
}
};
// 页面交互后自动播放(仅执行一次)
document.addEventListener('click', () =>
{
if (isFsBoxInView() && !isVideoPlaying) {
const video = fsBox.querySelector('.fs-video');
playTargetVideo(video);
}
}, { once: true });
// 窗口缩放处理(移除显隐相关,仅保留状态判断)
let isVideoResizing = false;
let videoResizeTimer = null;
const handleVideoResize = () =>
{
clearTimeout(videoResizeTimer);
isVideoResizing = true;
videoResizeTimer = setTimeout(() =>
{
isVideoResizing = false;
// 移除显隐逻辑,仅保留状态标记
}, 200);
};
// 初始化执行
initVideoTip();
window.addEventListener('scroll', handleVideoScroll, { passive: true });
window.addEventListener('resize', handleVideoResize);
// 页面加载完成后尝试播放视频
window.addEventListener('load', () =>
{
if (isFsBoxInView()) {
const video = fsBox.querySelector('.fs-video');
playTargetVideo(video);
}
});
})();
// 图片放大动效
document.addEventListener('DOMContentLoaded', function ()
{
const zoomImages = document.querySelectorAll('.zoom-image');
let isResizing = false;
let resizeTimer = null;
const isImageAboveViewport = (image) =>
{
const rect = image.getBoundingClientRect();
return rect.bottom <= 0 || (rect.top < window.innerHeight * (2 / 3) && rect.bottom > 0);
};
const debounce = (fn) =>
{
let timer = null;
return () =>
{
clearTimeout(timer);
timer = setTimeout(() =>
{
if (!isResizing) fn();
}, 16);
};
};
const handleScroll = debounce(() =>
{
zoomImages.forEach(image =>
{
const imageRect = image.getBoundingClientRect();
const windowHeight = window.innerHeight;
const triggerPoint = windowHeight * (2 / 3);
if (imageRect.top < triggerPoint && imageRect.bottom > 0) {
image.classList.add('active');
} else {
image.classList.remove('active');
}
});
});
const handleResize = () =>
{
clearTimeout(resizeTimer);
isResizing = true;
resizeTimer = setTimeout(() =>
{
isResizing = false;
zoomImages.forEach(image =>
{
if (image.classList.contains('active')) {
image.classList.add('active');
}
});
}, 200);
};
const initZoomImages = () =>
{
zoomImages.forEach(image =>
{
if (isImageAboveViewport(image)) {
image.classList.add('active');
}
});
};
window.addEventListener('scroll', handleScroll, { passive: true });
window.addEventListener('resize', handleResize);
window.addEventListener('load', initZoomImages);
document.addEventListener('DOMContentLoaded', initZoomImages);
window.dispatchEvent(new Event('scroll'));
});
</script>
{/block}