refactor: 专题 - 电力品线 修改
All checks were successful
Gitea Actions Official-website / deploy-dev (push) Successful in 4s
All checks were successful
Gitea Actions Official-website / deploy-dev (push) Successful in 4s
This commit is contained in:
@@ -24,11 +24,12 @@
|
||||
{notempty name="data.focus_image"}
|
||||
<div class="swiper-wrapper">
|
||||
{volist name="data.focus_image" id="fo"}
|
||||
<a class="swiper-slide auto-swiper-slide">
|
||||
<img src="{$fo.image}" alt="{$fo.title}" href="{$fo.link}" />
|
||||
<a class="swiper-slide auto-swiper-slide" href="{$fo.link}">
|
||||
<img src="{$fo.image}" alt="{$fo.title}" />
|
||||
</a>
|
||||
{/volist}
|
||||
</div>
|
||||
<div class="swiper-pagination"></div>
|
||||
{/notempty}
|
||||
</div>
|
||||
<!-- 分类 -->
|
||||
@@ -49,6 +50,8 @@
|
||||
<h2 class="advantage-section__title">{$why_choose_title.title|default=''}</h2>
|
||||
<div class="advantage-section__list">
|
||||
{volist name="data.why_choose" id="ch"}
|
||||
|
||||
<div class="advantage-card-wrap">
|
||||
<div class="advantage-card" data-target="design">
|
||||
<img src="{$ch.image}" alt="{$ch.title}:{$ch.short_title}" class="advantage-card__img">
|
||||
<div class="advantage-card__content">
|
||||
@@ -61,6 +64,7 @@
|
||||
<div style="display:none;" class="mack-conten-text">{$ch.desc|raw}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/volist}
|
||||
</div>
|
||||
</div>
|
||||
@@ -99,7 +103,8 @@
|
||||
<div class="product-card-box">
|
||||
<div class="product-card-container">
|
||||
{volist name="tc_second_section" id="tss"}
|
||||
<a class="product-card" href="{$tss.link}">
|
||||
<a class="product-card-wrap" href="{$tss.link}">
|
||||
<div class="product-card" >
|
||||
<div class="product-card-img">
|
||||
<img src="{$tss.image}" alt="{$tss.title}">
|
||||
</div>
|
||||
@@ -110,6 +115,7 @@
|
||||
<div class="product-card-link">
|
||||
<img src="__IMAGES__/ljgd.png" alt="查看更多">
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
{/volist}
|
||||
</div>
|
||||
@@ -159,7 +165,8 @@
|
||||
<div class="product-card-box">
|
||||
<div class="product-card-container">
|
||||
{volist name="hc_second_section" id="hcs"}
|
||||
<a class="product-card" href="#">
|
||||
<a class="product-card-wrap" href="{$tss.link}">
|
||||
<div class="product-card" href="#">
|
||||
<div class="product-card-img">
|
||||
<img src="{$hcs.image}" alt="{$hcs.short_title}">
|
||||
</div>
|
||||
@@ -170,6 +177,7 @@
|
||||
<div class="product-card-link">
|
||||
<img src="__IMAGES__/ljgd.png" alt="查看更多">
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
{/volist}
|
||||
</div>
|
||||
@@ -208,9 +216,10 @@
|
||||
<div class="product-right">
|
||||
<img src="{$dc_first_section_lr.image}"
|
||||
alt="使用场景" class="right-content right-img">
|
||||
<!--muted loop playsinline controls-->
|
||||
<video
|
||||
src="https://www.orico.com.cn/storage/videos/banner/20250712/403305b404b4b46f5ef6b43e3f2e8761.mp4"
|
||||
class="right-content right-video" muted loop playsinline controls style="display: none;">
|
||||
src="{$dc_first_section_lr.video}"
|
||||
class="right-content right-video" style="display: none;">
|
||||
您的浏览器不支持HTML5视频播放,请升级浏览器
|
||||
</video>
|
||||
</div>
|
||||
@@ -348,64 +357,89 @@
|
||||
<div class="mask" id="mask">
|
||||
<div class="mask-content" >
|
||||
<span class="close-btn">×</span>
|
||||
<div class="mask-scroll-content"></div>
|
||||
</div>
|
||||
</div>
|
||||
{/block}
|
||||
{block name="script"}
|
||||
<script type="text/javascript">
|
||||
|
||||
let swiper=null;
|
||||
const advantageItems = document.querySelectorAll('.advantage-card');
|
||||
const mask = document.getElementById('mask');
|
||||
const closeBtn = document.querySelector('.close-btn');
|
||||
const maskContent = document.querySelector('.mask-content');
|
||||
const mackContentText = document.querySelector('.mack-conten-text');
|
||||
let closeBtnHtml = null
|
||||
let scrollTop = 0; // 保存页面滚动位置
|
||||
// 显示蒙版:禁止滚动 + 保存滚动位置
|
||||
let closeBtnHtml = null; // 关闭按钮元素(全局变量,避免重复创建)
|
||||
const mask = document.getElementById('mask');
|
||||
const maskContent = document.querySelector('.mask-content');
|
||||
const maskScrollContent = document.querySelector('.mask-scroll-content'); // 滚动容器(关键!)
|
||||
const closeBtn = document.querySelector('.close-btn')
|
||||
// 初始化:确保 maskScrollContent 存在于 maskContent 中(避免被清空)
|
||||
if (!maskScrollContent) {
|
||||
// 如果页面没有 mask-scroll-content,动态创建(确保结构稳定)
|
||||
const scrollContent = document.createElement('div');
|
||||
scrollContent.className = 'mask-scroll-content';
|
||||
maskContent.appendChild(scrollContent);
|
||||
}
|
||||
|
||||
|
||||
function createCloseBtn() {
|
||||
if (closeBtnHtml) {
|
||||
closeBtnHtml.remove();
|
||||
}
|
||||
|
||||
// 创建关闭按钮元素
|
||||
closeBtnHtml = document.createElement('span');
|
||||
closeBtnHtml.className = 'close-btn';
|
||||
closeBtnHtml.innerHTML = '×'; // 关闭符号(×)
|
||||
closeBtnHtml.innerHTML = '×';
|
||||
|
||||
// 绑定关闭事件
|
||||
closeBtnHtml.addEventListener('click', hideMask);
|
||||
|
||||
// 添加到maskScrollContent(作为第一个子元素)
|
||||
// 挂载到 maskContent(而非 scrollContent),避免被滚动影响位置
|
||||
maskContent.prepend(closeBtnHtml);
|
||||
}
|
||||
|
||||
function showMask(contentHtml) {
|
||||
// 保存当前页面滚动位置(避免 fixed 导致页面跳顶)
|
||||
// 保存页面滚动位置
|
||||
scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
|
||||
maskContent.innerHTML = contentHtml;
|
||||
createCloseBtn()
|
||||
|
||||
// 关键:将内容填充到 scrollContent 中(而非直接替换 maskContent)
|
||||
maskScrollContent.innerHTML = contentHtml;
|
||||
createCloseBtn();
|
||||
|
||||
// 显示蒙版
|
||||
mask.style.display = 'flex';
|
||||
|
||||
// 禁止 html + body 滚动
|
||||
// 禁止滚动(复用你的逻辑)
|
||||
document.documentElement.classList.add('no-scroll');
|
||||
document.body.classList.add('no-scroll');
|
||||
// 强制让页面停留在原滚动位置(关键!)
|
||||
document.body.style.top = `-${scrollTop}px`;
|
||||
|
||||
// 额外:打开蒙版时就重置滚动位置(避免残留上次滚动状态)
|
||||
maskScrollContent.scrollTop = 0;
|
||||
}
|
||||
|
||||
// 隐藏蒙版:恢复滚动 + 还原滚动位置
|
||||
function hideMask() {
|
||||
// 关键步骤 1:先重置 scrollContent 的滚动位置(此时元素还未被销毁)
|
||||
maskScrollContent.scrollTop = 0;
|
||||
|
||||
// 关键步骤 2:清空 scrollContent 的内容(而非 maskContent)
|
||||
maskScrollContent.innerHTML = "";
|
||||
|
||||
// 隐藏蒙版
|
||||
mask.style.display = 'none';
|
||||
// 恢复 html + body 滚动
|
||||
|
||||
// 恢复滚动(复用你的逻辑)
|
||||
document.documentElement.classList.remove('no-scroll');
|
||||
document.body.classList.remove('no-scroll');
|
||||
maskContent.innerHTML = ""
|
||||
// 还原页面到之前的滚动位置
|
||||
window.scrollTo(0, scrollTop);
|
||||
document.body.style.top = ''; // 清除临时样式
|
||||
}
|
||||
document.body.style.top = '';
|
||||
|
||||
// 还原页面滚动位置
|
||||
window.scrollTo(0, scrollTop);
|
||||
|
||||
// 移除关闭按钮(可选,避免残留)
|
||||
if (closeBtnHtml) {
|
||||
closeBtnHtml.remove();
|
||||
closeBtnHtml = null;
|
||||
}
|
||||
}
|
||||
// 点击卡片显示详情
|
||||
advantageItems.forEach((item) => {
|
||||
item.addEventListener('click', (e) => {
|
||||
@@ -505,5 +539,47 @@
|
||||
stopAllVideos(); // 无活跃视频时停止所有播放
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
window.onload = function () {
|
||||
if (typeof Swiper === 'undefined') {
|
||||
console.error('Swiper加载失败,请刷新页面重试');
|
||||
return;
|
||||
}
|
||||
|
||||
swiper = new Swiper('.auto-swiper-container', {
|
||||
autoplay: {
|
||||
delay: 113000, // 3秒切换
|
||||
disableOnInteraction: false,
|
||||
},
|
||||
loop: true,
|
||||
slidesPerView: 1,
|
||||
spaceBetween: 0,
|
||||
// 启用分页指示标(核心配置)
|
||||
pagination: {
|
||||
el: '.swiper-pagination', // 对应 HTML 中的指示标容器
|
||||
clickable: true, // 允许点击指示标切换
|
||||
// dynamicBullets: true, // 动态指示标(当前激活放大)
|
||||
//dynamicMainBullets: 3, // 动态模式显示3个核心指示标
|
||||
},
|
||||
navigation: false,
|
||||
scrollbar: false,
|
||||
on: {
|
||||
resize: function () {
|
||||
this.update();
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
window.addEventListener('resize', function () {
|
||||
swiper.update();
|
||||
});
|
||||
|
||||
// 初始化时触发滚动事件,确保状态正确
|
||||
window.dispatchEvent(new Event('scroll'));
|
||||
};
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
{/block}
|
||||
@@ -24,18 +24,19 @@
|
||||
{notempty name="data.focus_image"}
|
||||
<div class="swiper-wrapper">
|
||||
{volist name="data.focus_image" id="fo"}
|
||||
<a class="swiper-slide auto-swiper-slide">
|
||||
<img src="{$fo.image}" alt="{$fo.title}" href="{$fo.link}" />
|
||||
<a class="swiper-slide auto-swiper-slide" href="{$fo.link}">
|
||||
<img src="{$fo.image}" alt="{$fo.title}" />
|
||||
</a>
|
||||
{/volist}
|
||||
</div>
|
||||
<div class="swiper-pagination"></div>
|
||||
{/notempty}
|
||||
</div>
|
||||
<!-- 分类 -->
|
||||
{notempty name="data.category"}
|
||||
<div class="nav-box">
|
||||
{volist name="data.category" id="ca"}
|
||||
<a class="nav-item" href="https://www.baidu.com">
|
||||
<a class="nav-item" href="{$ca.link}">
|
||||
<img src="{$ca.image}" alt="{$ca.title}">
|
||||
<p {:style(['color'=>$ca.title_txt_color])}>{$ca.title}</p>
|
||||
</a>
|
||||
@@ -45,9 +46,12 @@
|
||||
<!-- 500万 -->
|
||||
{notempty name="data.why_choose"}
|
||||
<div class="advantage-section">
|
||||
<h2 class="advantage-section__title">为什么500万+消费者 选择奥睿科?</h2>
|
||||
{assign name="why_choose_title" value=":array_shift($data.why_choose)" /}
|
||||
<h2 class="advantage-section__title">{$why_choose_title.title|default=''}</h2>
|
||||
<div class="advantage-section__list">
|
||||
{volist name="data.why_choose" id="ch"}
|
||||
|
||||
<div class="advantage-card-wrap">
|
||||
<div class="advantage-card" data-target="design">
|
||||
<img src="{$ch.image}" alt="{$ch.title}:{$ch.short_title}" class="advantage-card__img">
|
||||
<div class="advantage-card__content">
|
||||
@@ -60,6 +64,7 @@
|
||||
<div style="display:none;" class="mack-conten-text">{$ch.desc|raw}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/volist}
|
||||
</div>
|
||||
</div>
|
||||
@@ -67,9 +72,10 @@
|
||||
<!-- 产品差旅充 -->
|
||||
{notempty name="data.travel_charger"}
|
||||
<div class="product-box">
|
||||
{assign name="tc_title" value=":array_shift($data.travel_charger)" /}
|
||||
<div class="product-title">
|
||||
<h2 class="product-title-h2">差旅充</h2>
|
||||
<p class="product-title-p">出差旅行, 一收就走</p>
|
||||
<h2 class="product-title-h2">{$tc_title.title|default=''}</h2>
|
||||
<p class="product-title-p">{$tc_title.short_title|default=''}</p>
|
||||
</div>
|
||||
<div class="product-container" >
|
||||
{assign name="tc_first_section_lf" value=":array_shift($data.travel_charger)" /}
|
||||
@@ -97,7 +103,8 @@
|
||||
<div class="product-card-box">
|
||||
<div class="product-card-container">
|
||||
{volist name="tc_second_section" id="tss"}
|
||||
<a class="product-card" href="{$tss.link}">
|
||||
<a class="product-card-wrap" href="{$tss.link}">
|
||||
<div class="product-card" >
|
||||
<div class="product-card-img">
|
||||
<img src="{$tss.image}" alt="{$tss.title}">
|
||||
</div>
|
||||
@@ -108,6 +115,7 @@
|
||||
<div class="product-card-link">
|
||||
<img src="__IMAGES__/ljgd.png" alt="查看更多">
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
{/volist}
|
||||
</div>
|
||||
@@ -126,9 +134,10 @@
|
||||
<!-- 产品 家居充-->
|
||||
{notempty name="data.home_charger"}
|
||||
<div class="product-box">
|
||||
{assign name="hc_title" value=":array_shift($data.home_charger)" /}
|
||||
<div class="product-title">
|
||||
<h2 class="product-title-h2">家居充</h2>
|
||||
<p class="product-title-p">自在充能, 邂逅生活美学</p>
|
||||
<h2 class="product-title-h2">{$hc_title.title|default=''}</h2>
|
||||
<p class="product-title-p">{$hc_title.short_title|default=''}</p>
|
||||
</div>
|
||||
<div class="product-container">
|
||||
{assign name="hc_first_section_lf" value=":array_shift($data.home_charger)" /}
|
||||
@@ -156,7 +165,8 @@
|
||||
<div class="product-card-box">
|
||||
<div class="product-card-container">
|
||||
{volist name="hc_second_section" id="hcs"}
|
||||
<a class="product-card" href="#">
|
||||
<a class="product-card-wrap" href="{$tss.link}">
|
||||
<div class="product-card" href="#">
|
||||
<div class="product-card-img">
|
||||
<img src="{$hcs.image}" alt="{$hcs.short_title}">
|
||||
</div>
|
||||
@@ -167,6 +177,7 @@
|
||||
<div class="product-card-link">
|
||||
<img src="__IMAGES__/ljgd.png" alt="查看更多">
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
{/volist}
|
||||
</div>
|
||||
@@ -184,9 +195,10 @@
|
||||
{/notempty}
|
||||
<!-- 产品 桌面充(悬浮图上右超出)底部列表样式不一样(左文右图) -->
|
||||
<div class="product-box">
|
||||
{assign name="dc_title" value=":array_shift($data.desktop_charger)" /}
|
||||
<div class="product-title">
|
||||
<h2 class="product-title-h2">桌面充</h2>
|
||||
<p class="product-title-p">精致桌面 高效美学</p>
|
||||
<h2 class="product-title-h2">{$dc_title.title|default=''}</h2>
|
||||
<p class="product-title-p">{$dc_title.short_title|default=''}</p>
|
||||
</div>
|
||||
<div class="product-container">
|
||||
{assign name="dc_first_section_lf" value=":array_shift($data.desktop_charger)" /}
|
||||
@@ -204,9 +216,10 @@
|
||||
<div class="product-right">
|
||||
<img src="{$dc_first_section_lr.image}"
|
||||
alt="使用场景" class="right-content right-img">
|
||||
<!--muted loop playsinline controls-->
|
||||
<video
|
||||
src="https://www.orico.com.cn/storage/videos/banner/20250712/403305b404b4b46f5ef6b43e3f2e8761.mp4"
|
||||
class="right-content right-video" muted loop playsinline controls style="display: none;">
|
||||
src="{$dc_first_section_lr.video}"
|
||||
class="right-content right-video" style="display: none;">
|
||||
您的浏览器不支持HTML5视频播放,请升级浏览器
|
||||
</video>
|
||||
</div>
|
||||
@@ -248,9 +261,10 @@
|
||||
<!-- 墙插 -->
|
||||
{notempty name="data.wall_charger"}
|
||||
<div class="product-box">
|
||||
{assign name="wc_title" value=":array_shift($data.wall_charger)" /}
|
||||
<div class="product-title">
|
||||
<h2 class="product-title-h2">墙插</h2>
|
||||
<p class="product-title-p">1转多</p>
|
||||
<h2 class="product-title-h2">{$wc_title.title|default=''}</h2>
|
||||
<p class="product-title-p">{$wc_title.short_title|default=''}</p>
|
||||
</div>
|
||||
<div class="product-container">
|
||||
{assign name="wc_first_section_lf" value=":array_shift($data.wall_charger)" /}
|
||||
@@ -286,9 +300,10 @@
|
||||
{notempty name="data.converter"}
|
||||
<!-- 转换器 -->
|
||||
<div class="product-box">
|
||||
{assign name="ct_title" value=":array_shift($data.converter)" /}
|
||||
<div class="product-title">
|
||||
<h2 class="product-title-h2">转换器</h2>
|
||||
<p class="product-title-p">随你看世界</p>
|
||||
<h2 class="product-title-h2">{$ct_title.title|default=''}</h2>
|
||||
<p class="product-title-p">{$ct_title.short_title|default=''}</p>
|
||||
</div>
|
||||
{assign name="ct_more_section" value=":array_pop($data.converter)" /}
|
||||
{assign name="ct_chunk_section" value=":array_chunk($data.converter, 2)" /}
|
||||
@@ -342,64 +357,89 @@
|
||||
<div class="mask" id="mask">
|
||||
<div class="mask-content" >
|
||||
<span class="close-btn">×</span>
|
||||
<div class="mask-scroll-content"></div>
|
||||
</div>
|
||||
</div>
|
||||
{/block}
|
||||
{block name="script"}
|
||||
<script type="text/javascript">
|
||||
|
||||
let swiper=null;
|
||||
const advantageItems = document.querySelectorAll('.advantage-card');
|
||||
const mask = document.getElementById('mask');
|
||||
const closeBtn = document.querySelector('.close-btn');
|
||||
const maskContent = document.querySelector('.mask-content');
|
||||
const mackContentText = document.querySelector('.mack-conten-text');
|
||||
let closeBtnHtml = null
|
||||
let scrollTop = 0; // 保存页面滚动位置
|
||||
// 显示蒙版:禁止滚动 + 保存滚动位置
|
||||
let closeBtnHtml = null; // 关闭按钮元素(全局变量,避免重复创建)
|
||||
const mask = document.getElementById('mask');
|
||||
const maskContent = document.querySelector('.mask-content');
|
||||
const maskScrollContent = document.querySelector('.mask-scroll-content'); // 滚动容器(关键!)
|
||||
const closeBtn = document.querySelector('.close-btn')
|
||||
// 初始化:确保 maskScrollContent 存在于 maskContent 中(避免被清空)
|
||||
if (!maskScrollContent) {
|
||||
// 如果页面没有 mask-scroll-content,动态创建(确保结构稳定)
|
||||
const scrollContent = document.createElement('div');
|
||||
scrollContent.className = 'mask-scroll-content';
|
||||
maskContent.appendChild(scrollContent);
|
||||
}
|
||||
|
||||
|
||||
function createCloseBtn() {
|
||||
if (closeBtnHtml) {
|
||||
closeBtnHtml.remove();
|
||||
}
|
||||
|
||||
// 创建关闭按钮元素
|
||||
closeBtnHtml = document.createElement('span');
|
||||
closeBtnHtml.className = 'close-btn';
|
||||
closeBtnHtml.innerHTML = '×'; // 关闭符号(×)
|
||||
closeBtnHtml.innerHTML = '×';
|
||||
|
||||
// 绑定关闭事件
|
||||
closeBtnHtml.addEventListener('click', hideMask);
|
||||
|
||||
// 添加到maskScrollContent(作为第一个子元素)
|
||||
// 挂载到 maskContent(而非 scrollContent),避免被滚动影响位置
|
||||
maskContent.prepend(closeBtnHtml);
|
||||
}
|
||||
|
||||
function showMask(contentHtml) {
|
||||
// 保存当前页面滚动位置(避免 fixed 导致页面跳顶)
|
||||
// 保存页面滚动位置
|
||||
scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
|
||||
maskContent.innerHTML = contentHtml;
|
||||
createCloseBtn()
|
||||
|
||||
// 关键:将内容填充到 scrollContent 中(而非直接替换 maskContent)
|
||||
maskScrollContent.innerHTML = contentHtml;
|
||||
createCloseBtn();
|
||||
|
||||
// 显示蒙版
|
||||
mask.style.display = 'flex';
|
||||
|
||||
// 禁止 html + body 滚动
|
||||
// 禁止滚动(复用你的逻辑)
|
||||
document.documentElement.classList.add('no-scroll');
|
||||
document.body.classList.add('no-scroll');
|
||||
// 强制让页面停留在原滚动位置(关键!)
|
||||
document.body.style.top = `-${scrollTop}px`;
|
||||
|
||||
// 额外:打开蒙版时就重置滚动位置(避免残留上次滚动状态)
|
||||
maskScrollContent.scrollTop = 0;
|
||||
}
|
||||
|
||||
// 隐藏蒙版:恢复滚动 + 还原滚动位置
|
||||
function hideMask() {
|
||||
// 关键步骤 1:先重置 scrollContent 的滚动位置(此时元素还未被销毁)
|
||||
maskScrollContent.scrollTop = 0;
|
||||
|
||||
// 关键步骤 2:清空 scrollContent 的内容(而非 maskContent)
|
||||
maskScrollContent.innerHTML = "";
|
||||
|
||||
// 隐藏蒙版
|
||||
mask.style.display = 'none';
|
||||
// 恢复 html + body 滚动
|
||||
|
||||
// 恢复滚动(复用你的逻辑)
|
||||
document.documentElement.classList.remove('no-scroll');
|
||||
document.body.classList.remove('no-scroll');
|
||||
maskContent.innerHTML = ""
|
||||
// 还原页面到之前的滚动位置
|
||||
window.scrollTo(0, scrollTop);
|
||||
document.body.style.top = ''; // 清除临时样式
|
||||
}
|
||||
document.body.style.top = '';
|
||||
|
||||
// 还原页面滚动位置
|
||||
window.scrollTo(0, scrollTop);
|
||||
|
||||
// 移除关闭按钮(可选,避免残留)
|
||||
if (closeBtnHtml) {
|
||||
closeBtnHtml.remove();
|
||||
closeBtnHtml = null;
|
||||
}
|
||||
}
|
||||
// 点击卡片显示详情
|
||||
advantageItems.forEach((item) => {
|
||||
item.addEventListener('click', (e) => {
|
||||
@@ -499,5 +539,47 @@
|
||||
stopAllVideos(); // 无活跃视频时停止所有播放
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
window.onload = function () {
|
||||
if (typeof Swiper === 'undefined') {
|
||||
console.error('Swiper加载失败,请刷新页面重试');
|
||||
return;
|
||||
}
|
||||
|
||||
swiper = new Swiper('.auto-swiper-container', {
|
||||
autoplay: {
|
||||
delay: 113000, // 3秒切换
|
||||
disableOnInteraction: false,
|
||||
},
|
||||
loop: true,
|
||||
slidesPerView: 1,
|
||||
spaceBetween: 0,
|
||||
// 启用分页指示标(核心配置)
|
||||
pagination: {
|
||||
el: '.swiper-pagination', // 对应 HTML 中的指示标容器
|
||||
clickable: true, // 允许点击指示标切换
|
||||
// dynamicBullets: true, // 动态指示标(当前激活放大)
|
||||
//dynamicMainBullets: 3, // 动态模式显示3个核心指示标
|
||||
},
|
||||
navigation: false,
|
||||
scrollbar: false,
|
||||
on: {
|
||||
resize: function () {
|
||||
this.update();
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
window.addEventListener('resize', function () {
|
||||
swiper.update();
|
||||
});
|
||||
|
||||
// 初始化时触发滚动事件,确保状态正确
|
||||
window.dispatchEvent(new Event('scroll'));
|
||||
};
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
{/block}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
.advantage-section {
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
padding: 4rem 0 3rem 0;
|
||||
padding: 2rem 0;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
@@ -29,21 +29,30 @@
|
||||
padding: 0 0.1rem;
|
||||
}
|
||||
|
||||
/* 卡片核心:优化宽高比和尺寸计算 */
|
||||
.advantage-card {
|
||||
/* 新增:卡片外层容器(专门控制圆角,避免缩放时丢失) */
|
||||
.advantage-card-wrap {
|
||||
flex: 0 0 calc((100% - 4 * clamp(0.1rem, 0.3vw, 0.8rem)) / 5);
|
||||
min-width: calc((100% - 4 * clamp(0.1rem, 0.3vw, 0.8rem)) / 5);
|
||||
max-width: calc((100% - 4 * clamp(0.1rem, 0.3vw, 0.8rem)) / 5);
|
||||
border-radius: 0.5rem;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 0.125rem 0.5rem rgba(0, 0, 0, 0.1);
|
||||
transition: transform 0.3s ease;
|
||||
border-radius: 0.5rem; /* 外层容器承担圆角 */
|
||||
overflow: hidden; /* 裁剪内部缩放的卡片 */
|
||||
box-shadow: 0 0.125rem 0.5rem rgba(0, 0, 0, 0.1); /* 阴影移到外层,避免缩放时阴影变形 */
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
aspect-ratio: 1 / 1.7;
|
||||
}
|
||||
|
||||
/* 卡片核心:优化宽高比和尺寸计算 */
|
||||
.advantage-card {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
cursor: pointer;
|
||||
background: #fff;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
aspect-ratio: 1 / 1.7;
|
||||
/* PC端卡片高度略缩短,更紧凑 */
|
||||
/* 关键修复:添加will-change优化渲染,移除原圆角和阴影(移到外层) */
|
||||
will-change: transform; /* 告知浏览器准备变换,避免圆角渲染异常 */
|
||||
transition: transform 0.3s ease;
|
||||
}
|
||||
|
||||
.advantage-card__img {
|
||||
@@ -101,11 +110,11 @@
|
||||
/* 卡片标题右侧箭头:居右显示 */
|
||||
.card-arrow {
|
||||
color: #409eff;
|
||||
|
||||
font-size: clamp(0.7rem, 1vw, 1rem);
|
||||
/* 箭头尺寸跟随标题放大,避免不协调 */
|
||||
transition: transform 0.3s ease;
|
||||
display: inline-block;
|
||||
width: 24px;
|
||||
width: 16px;
|
||||
/* 箭头宽度同步增加 */
|
||||
text-align: center;
|
||||
}
|
||||
@@ -119,7 +128,7 @@
|
||||
.advantage-card__description {
|
||||
font-size: clamp(0.6rem, 0.9vw, 0.9rem);
|
||||
/* PC端描述文字略放大 */
|
||||
color: #78787a;
|
||||
color: #666;
|
||||
line-height: 1.2;
|
||||
/* PC端行高略紧凑 */
|
||||
white-space: normal;
|
||||
@@ -138,14 +147,18 @@
|
||||
justify-content: left;
|
||||
}
|
||||
|
||||
/* 卡片hover效果 */
|
||||
/* 卡片hover效果(仅保留缩放,阴影移到外层) */
|
||||
.advantage-card:hover {
|
||||
transform: scale(1.03);
|
||||
/* z-index: 10; */
|
||||
/* box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.15); */
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
/* 移动端适配 */
|
||||
/* 外层容器hover时增强阴影(更自然的浮起效果) */
|
||||
.advantage-card-wrap:hover {
|
||||
box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
|
||||
/* 移动端适配 - 核心修改:一行2个,显示2行,隐藏第5个 */
|
||||
@media (max-width: 767px) {
|
||||
.advantage-card:active {
|
||||
transform: scale(1.01);
|
||||
@@ -157,12 +170,24 @@
|
||||
}
|
||||
|
||||
.advantage-section__list {
|
||||
gap: 0.1rem;
|
||||
gap: 0.5rem; /* 优化间距,更美观 */
|
||||
flex-wrap: wrap; /* 允许换行 */
|
||||
overflow: visible; /* 取消溢出隐藏,显示多行 */
|
||||
justify-content: space-between; /* 两端对齐,确保2个卡片均匀分布 */
|
||||
}
|
||||
|
||||
.advantage-card {
|
||||
/* 移动端卡片宽度:一行2个 */
|
||||
.advantage-card-wrap {
|
||||
flex: 0 0 calc(50% - 0.25rem); /* 50%宽度减去一半间距,避免溢出 */
|
||||
min-width: calc(50% - 0.25rem);
|
||||
max-width: calc(50% - 0.25rem);
|
||||
aspect-ratio: 1 / 1.8;
|
||||
/* 移动端恢复更高的卡片高度 */
|
||||
margin-bottom: 0.5rem; /* 行与行之间的间距 */
|
||||
}
|
||||
|
||||
/* 隐藏第5个卡片 */
|
||||
.advantage-card-wrap:nth-child(5) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.advantage-card__img {
|
||||
|
||||
@@ -31,7 +31,8 @@ html {
|
||||
}
|
||||
}
|
||||
body {
|
||||
background: rgb(242, 243, 245);
|
||||
|
||||
background: #f2f3f5;
|
||||
}
|
||||
a {
|
||||
text-decoration: none;
|
||||
@@ -70,4 +71,5 @@ a {
|
||||
align-items: center;
|
||||
padding-top: 0.5rem;
|
||||
padding-bottom: 0.5rem;
|
||||
|
||||
}
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
overflow: hidden; /* 阻止蒙版自身滚动 */
|
||||
touch-action: none; /* 禁止触摸行为 */
|
||||
pointer-events: auto; /* 确保蒙版能接收事件 */
|
||||
backdrop-filter: blur(8px); /* 模糊半径,可调整(4px-15px为宜) */
|
||||
-webkit-backdrop-filter: blur(8px); /* 兼容Safari */
|
||||
}
|
||||
|
||||
/* 蒙版内容容器 - 新增触摸事件传递控制 */
|
||||
@@ -28,17 +30,26 @@
|
||||
max-height: 90vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
pointer-events: auto; /* 确保内容区域能正常交互 */
|
||||
}
|
||||
|
||||
/* 滚动内容容器 - 保持不变 */
|
||||
.mask-e-scroll-content {
|
||||
/* 内容滚动容器 - 禁止横向滚动,仅纵向滚动 */
|
||||
.mask-scroll-content {
|
||||
flex: 1;
|
||||
overflow-y: auto;
|
||||
padding: 20px;
|
||||
-webkit-overflow-scrolling: touch; /* 移动端顺滑滚动 */
|
||||
overflow-y: auto; /* 仅纵向滚动 */
|
||||
overflow-x: hidden !important; /* 强制禁止横向滚动(关键) */
|
||||
width: 100%; /* 确保容器宽度不超出父级 */
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
/* 关键:图片自适应,不撑开容器 */
|
||||
.mask-scroll-content img {
|
||||
max-width: 100% !important; /* 图片最大宽度=容器宽度,不溢出 */
|
||||
height: auto !important; /* 保持图片宽高比,不拉伸 */
|
||||
display: block; /* 消除图片底部多余空白(可选) */
|
||||
object-fit: contain; /* 若图片比例特殊,完整显示图片不裁剪 */
|
||||
}
|
||||
/* 升级:同时禁止 html 和 body 滚动(关键兼容) */
|
||||
.no-scroll {
|
||||
overflow: hidden !important;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
.product-card-container2 {
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
gap: 10px;
|
||||
gap: 24px;
|
||||
align-items: stretch;
|
||||
}
|
||||
|
||||
@@ -147,7 +147,7 @@
|
||||
}
|
||||
|
||||
.product-card-container2 {
|
||||
gap: 8px;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.product-card2 {
|
||||
|
||||
@@ -11,7 +11,21 @@
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
overflow: hidden;
|
||||
padding: 0 clamp(0.2rem, 0.6vw, 0.3rem);
|
||||
/* 关键修改1:增大间距值(原 clamp(0.3rem, 0.5vw, 0.36rem) → 现在放大2倍左右) */
|
||||
gap: clamp(0.6rem, 1vw, 0.8rem);
|
||||
padding: 0; /* 保持无内边距,避免间距叠加 */
|
||||
}
|
||||
|
||||
/* 新增:外层容器(承载圆角、阴影、尺寸,避免缩放时圆角丢失) */
|
||||
.product-card-wrap {
|
||||
/* 原卡片的宽度计算逻辑移到外层 */
|
||||
width: calc(25% - (clamp(0.6rem, 1vw, 0.8rem) * 3 / 4));
|
||||
flex: none;
|
||||
border-radius: clamp(0.375rem, 1vw, 0.5rem); /* 外层承载圆角 */
|
||||
overflow: hidden; /* 裁剪内层缩放的卡片 */
|
||||
box-shadow: 0 clamp(0.1rem, 0.2vw, 0.125rem) clamp(0.3rem, 0.8vw, 0.5rem) rgba(0, 0, 0, 0.05); /* 外层承载阴影 */
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
/* ######################################################################### */
|
||||
@@ -23,20 +37,22 @@
|
||||
align-items: stretch;
|
||||
}
|
||||
|
||||
/* 卡片核心:移动端固定宽高比 */
|
||||
/* 外层容器移动端适配:宽高比移到外层 */
|
||||
.product-card-wrap {
|
||||
aspect-ratio: 3 / 4.2;
|
||||
}
|
||||
|
||||
/* 卡片核心:移动端调整(移除圆角、阴影,添加will-change) */
|
||||
.product-card {
|
||||
background: rgb(242, 243, 245);
|
||||
border-radius: clamp(0.375rem, 1vw, 0.5rem);
|
||||
cursor: pointer;
|
||||
width: calc(25% - clamp(0.3rem, 0.5vw, 0.36rem));
|
||||
width: 100%; /* 内层卡片占满外层容器 */
|
||||
height: 100%;
|
||||
flex: none;
|
||||
box-shadow: 0 clamp(0.1rem, 0.2vw, 0.125rem)
|
||||
clamp(0.3rem, 0.8vw, 0.5rem) rgba(0, 0, 0, 0.05);
|
||||
margin: 0 clamp(0.16rem, 0.24vw, 0.2rem);
|
||||
margin: 0; /* 保持无margin,间距由gap控制 */
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
aspect-ratio: 3 / 4.2;
|
||||
/* 移动端固定宽高比 */
|
||||
will-change: transform; /* 优化渲染,避免圆角异常 */
|
||||
}
|
||||
|
||||
/* 卡片hover效果:移动端特有 */
|
||||
@@ -45,6 +61,11 @@
|
||||
transition: transform 0.3s ease;
|
||||
}
|
||||
|
||||
/* 外层容器hover增强阴影(更自然的浮起效果) */
|
||||
.product-card-wrap:hover {
|
||||
box-shadow: 0 clamp(0.2rem, 0.4vw, 0.25rem) clamp(0.5rem, 1vw, 0.8rem) rgba(0, 0, 0, 0.08);
|
||||
}
|
||||
|
||||
/* 图片容器:移动端固定占比 */
|
||||
.product-card-img {
|
||||
display: flex;
|
||||
@@ -52,7 +73,6 @@
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
flex: 0 0 72%;
|
||||
/* 移动端图片区占比 */
|
||||
margin-bottom: clamp(0.4rem, 0.6vw, 0.5rem);
|
||||
overflow: hidden;
|
||||
border-radius: clamp(0.2rem, 0.4vw, 0.25rem);
|
||||
@@ -69,7 +89,6 @@
|
||||
/* 文字容器:移动端固定占比 */
|
||||
.product-card-text {
|
||||
flex: 0 0 20%;
|
||||
/* 移动端文字区占比 */
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
@@ -86,7 +105,6 @@
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
height: 35%;
|
||||
/* 移动端标题固定高度 */
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
@@ -96,7 +114,6 @@
|
||||
color: #656565;
|
||||
word-break: break-word;
|
||||
height: 65%;
|
||||
/* 移动端描述固定高度(2行) */
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
@@ -110,7 +127,6 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex: 0 0 10%;
|
||||
/* 移动端链接区占比 */
|
||||
padding: clamp(0.8rem, 2vw, 1.5rem);
|
||||
}
|
||||
|
||||
@@ -141,23 +157,27 @@
|
||||
.product-card-container {
|
||||
align-items: stretch;
|
||||
height: clamp(30vw, 35vw, 480px);
|
||||
/* PC端容器高度自适应 */
|
||||
/* 关键修改3:PC端同步增大gap间距(与通用容器一致) */
|
||||
gap: clamp(0.6rem, 1vw, 0.8rem);
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/* 卡片核心:PC端高度自适应 */
|
||||
/* 外层容器PC端适配:高度占满容器 */
|
||||
.product-card-wrap {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
/* 卡片核心:PC端调整(移除圆角、阴影,添加will-change) */
|
||||
.product-card {
|
||||
background: rgb(242, 243, 245);
|
||||
border-radius: clamp(0.375rem, 1vw, 0.5rem);
|
||||
cursor: pointer;
|
||||
width: calc(25% - clamp(0.3rem, 0.5vw, 0.36rem));
|
||||
width: 100%; /* 内层卡片占满外层容器 */
|
||||
height: 100%;
|
||||
flex: none;
|
||||
box-shadow: 0 clamp(0.1rem, 0.2vw, 0.125rem)
|
||||
clamp(0.3rem, 0.8vw, 0.5rem) rgba(0, 0, 0, 0.05);
|
||||
margin: 0 clamp(0.16rem, 0.24vw, 0.2rem);
|
||||
margin: 0; /* 保持无margin */
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
/* PC端卡片高度继承父容器 */
|
||||
will-change: transform; /* 优化渲染,避免圆角异常 */
|
||||
}
|
||||
|
||||
/* 卡片hover效果:PC端特有 */
|
||||
@@ -166,6 +186,11 @@
|
||||
transition: transform 0.3s ease;
|
||||
}
|
||||
|
||||
/* 外层容器hover增强阴影 */
|
||||
.product-card-wrap:hover {
|
||||
box-shadow: 0 clamp(0.2rem, 0.4vw, 0.25rem) clamp(0.5rem, 1vw, 0.8rem) rgba(0, 0, 0, 0.08);
|
||||
}
|
||||
|
||||
/* 图片容器:PC端固定占比 */
|
||||
.product-card-img {
|
||||
display: flex;
|
||||
@@ -173,7 +198,6 @@
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
flex: 0 0 72%;
|
||||
/* PC端图片区占比 */
|
||||
margin-bottom: clamp(0.4rem, 0.6vw, 0.5rem);
|
||||
overflow: hidden;
|
||||
border-radius: clamp(0.2rem, 0.4vw, 0.25rem);
|
||||
@@ -190,8 +214,7 @@
|
||||
/* 文字容器:PC端固定占比 */
|
||||
.product-card-text {
|
||||
flex: 0 0 15%;
|
||||
/* PC端文字区占比 */
|
||||
/* display: flex; */
|
||||
display: flex; /* 补充display: flex,原代码遗漏 */
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
padding-left: clamp(0.8rem, 2vw, 1.5rem);
|
||||
@@ -206,8 +229,6 @@
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
/* height: 35%; */
|
||||
/* PC端标题固定高度 */
|
||||
line-height: 1.2;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -218,8 +239,6 @@
|
||||
font-size: clamp(0.7rem, 1.1vw, 0.9rem);
|
||||
color: #656565;
|
||||
word-break: break-word;
|
||||
/* height: 65%; */
|
||||
/* PC端描述固定高度(2行) */
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
@@ -230,11 +249,10 @@
|
||||
/* 链接图标容器:PC端固定占比 */
|
||||
.product-card-link {
|
||||
width: 100%;
|
||||
/* display: flex; */
|
||||
/* align-items: center; */
|
||||
flex: 0 0 12%;
|
||||
/* PC端链接区占比 */
|
||||
padding-left: clamp(0.8rem, 2vw, 1.5rem);
|
||||
display: flex; /* 补充display: flex,确保图标垂直居中 */
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
/* 链接图标:PC端特有 */
|
||||
|
||||
@@ -2,28 +2,70 @@
|
||||
.auto-swiper-container {
|
||||
width: 100%;
|
||||
/* 关键:高度 = 视口高度的百分比(可调整,如60vh=屏幕高度60%) */
|
||||
height: 60vh;
|
||||
max-height: 800px; /* 限制最大高度(避免大屏过高) */
|
||||
min-height: 300px; /* 限制最小高度(避免小屏过低) */
|
||||
overflow: hidden;
|
||||
|
||||
margin-bottom: 5.625rem;
|
||||
}
|
||||
max-height: 900px;
|
||||
min-height: 300px;
|
||||
|
||||
/* 轮播项 - 填充容器高度 */
|
||||
.auto-swiper-slide {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
/*height: 100%;*/
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: #333; /* 图片加载前占位 */
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* 图片自适应核心:填充屏幕比例高度,保持比例 */
|
||||
.auto-swiper-slide img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover; /* 优先填充容器,裁剪超出部分(无拉伸) */
|
||||
/* object-fit: contain; 可选:完整显示图片,不裁剪(可能留黑边) */
|
||||
object-fit: contain; /* 替换 cover 为 contain,完整显示图片 */
|
||||
display: block;
|
||||
background-color: #f5f5f5; /* 图片未填充区域用浅色背景,避免黑边 */
|
||||
}
|
||||
|
||||
/* 轮播容器保持相对定位 */
|
||||
.auto-swiper-container {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* 轮播容器保持相对定位 */
|
||||
.auto-swiper-container {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* 指示标容器:居中排列 */
|
||||
.swiper-pagination {
|
||||
position: absolute;
|
||||
bottom: 10%; /* 距离底部的距离,可调整 */
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
width:100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
/* 激活状态:白色长条 */
|
||||
.swiper-pagination-bullet-active {
|
||||
background:#fff !important;
|
||||
}
|
||||
|
||||
/* 未激活状态:黑色透明圆点(可调整透明度) */
|
||||
.swiper-pagination-bullet {
|
||||
display: inline-block;
|
||||
width: 16px !important;
|
||||
height: 16px !important;
|
||||
border-radius: 8px;
|
||||
/*background: #555;*/
|
||||
margin: 0 5px;
|
||||
/*opacity: 0.8;*/
|
||||
border: 1px solid #fff;
|
||||
/*cursor: pointer;*/
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user