修复bug

This commit is contained in:
2025-11-27 09:42:18 +08:00
parent 72f5d18545
commit 5db0b37db0
10 changed files with 546 additions and 459 deletions

View File

@@ -486,6 +486,7 @@
); // passive: false 必须,否则 preventDefault 无效 ); // passive: false 必须,否则 preventDefault 无效
const allVideos = document.querySelectorAll('.right-video'); const allVideos = document.querySelectorAll('.right-video');
let scrollTimer = null; // 防抖定时器
// 停止所有视频播放 // 停止所有视频播放
function stopAllVideos() { function stopAllVideos() {
allVideos.forEach((video) => { allVideos.forEach((video) => {
@@ -496,49 +497,56 @@
if (img) img.style.display = 'block'; if (img) img.style.display = 'block';
}); });
} }
// 处理视频/图片切换的核心逻辑(抽离为独立函数)
// 处理视频/图片切换的核心逻辑(抽离为独立函数)
function handleVideoActive() {
const productRights = document.querySelectorAll('.product-right');
let activeVideo = null;
// 找出当前在视口中的视频容器
productRights.forEach((rightContainer) => {
const img = rightContainer.querySelector('.right-img');
const video = rightContainer.querySelector('.right-video');
const videoSrc = video.src.trim();
if (!img || !video || !videoSrc) return;
// 滚动切换图片/视频(核心逻辑) const rect = rightContainer.getBoundingClientRect();
window.addEventListener('scroll', function () { // 视口判断容器进入视口50%以上视为活跃
const productRights = document.querySelectorAll('.product-right'); const isInView =
let activeVideo = null; rect.top < window.innerHeight * 0.7 &&
// 找出当前在视口中的视频容器 rect.bottom > window.innerHeight * 0.3;
productRights.forEach((rightContainer) => {
const img = rightContainer.querySelector('.right-img');
const video = rightContainer.querySelector('.right-video');
const videoSrc = video.src.trim()
if (!img || !video) return;
if(!videoSrc) return;
const rect = rightContainer.getBoundingClientRect();
// 视口判断容器进入视口50%以上视为活跃
const isInView =
rect.top < window.innerHeight * 0.7 &&
rect.bottom > window.innerHeight * 0.3;
if (isInView) { if (isInView) {
activeVideo = video; activeVideo = video;
} }
});
// 处理活跃视频
if (activeVideo) {
stopAllVideos(); // 先停止其他视频
const img = activeVideo.parentElement.querySelector('.right-img');
img.style.display = 'none';
activeVideo.style.display = 'block';
// 自动播放(兼容原生控制栏,用户手动暂停后不会强制播放)
if (activeVideo.paused) {
activeVideo.play().catch((err) => {
console.log('视频播放失败(浏览器限制):', err);
// 播放失败时回退到图片
activeVideo.style.display = 'none';
img.style.display = 'block';
});
}
} else {
stopAllVideos(); // 无活跃视频时停止所有播放
}
}); });
// 处理活跃视频
if (activeVideo) {
stopAllVideos(); // 先停止其他视频
const img = activeVideo.parentElement.querySelector('.right-img');
img.style.display = 'none';
activeVideo.style.display = 'block';
// 自动播放(兼容原生控制栏,用户手动暂停后不会强制播放)
if (activeVideo.paused) {
activeVideo.play().catch((err) => {
console.log('视频播放失败(浏览器限制):', err);
// 播放失败时回退到图片
activeVideo.style.display = 'none';
img.style.display = 'block';
});
}
} else {
stopAllVideos(); // 无活跃视频时停止所有播放
}
}
// 滚动事件添加防抖移动端推荐100-200ms延迟
window.addEventListener('scroll', function () {
// 清除上一次的定时器
clearTimeout(scrollTimer);
// 滚动停止后150ms再执行核心逻辑
scrollTimer = setTimeout(handleVideoActive, 150);
});
window.onload = function () { window.onload = function () {
@@ -549,10 +557,10 @@
swiper = new Swiper('.auto-swiper-container', { swiper = new Swiper('.auto-swiper-container', {
autoplay: { autoplay: {
delay: 113000, // 3秒切换 delay: 3000, // 3秒切换
disableOnInteraction: false, disableOnInteraction: false,
}, },
loop: true, loop: false,
slidesPerView: 1, slidesPerView: 1,
spaceBetween: 0, spaceBetween: 0,
// 启用分页指示标(核心配置) // 启用分页指示标(核心配置)
@@ -582,4 +590,4 @@
</script> </script>
{/block} {/block}

View File

@@ -549,10 +549,10 @@
swiper = new Swiper('.auto-swiper-container', { swiper = new Swiper('.auto-swiper-container', {
autoplay: { autoplay: {
delay: 113000, // 3秒切换 delay: 3000, // 3秒切换
disableOnInteraction: false, disableOnInteraction: false,
}, },
loop: true, loop: false,
slidesPerView: 1, slidesPerView: 1,
spaceBetween: 0, spaceBetween: 0,
// 启用分页指示标(核心配置) // 启用分页指示标(核心配置)

View File

@@ -1,231 +1,254 @@
/* 核心模块固定90%宽度PC端优化移动端边距 */ /* 核心模块固定90%宽度PC端优化移动端边距 */
.advantage-section { .advantage-section {
width: 90%; width: 90%;
margin: 0 auto; margin: 0 auto;
padding: 4rem 0 3rem 0; padding: 2rem 0;
position: relative; position: relative;
z-index: 1; z-index: 1;
} }
/* 标题容器:恢复原有居中样式 */ /* 标题容器:恢复原有居中样式 */
.advantage-section__title { .advantage-section__title {
font-size: clamp(1.5rem, 3vw, 2rem); font-size: clamp(1.5rem, 3vw, 2rem);
font-weight: 700; font-weight: 700;
text-align: center; text-align: center;
color: #333; color: #333;
line-height: 1.2; line-height: 1.2;
margin-bottom: clamp(1.5rem, 2vw, 2.5rem); margin-bottom: clamp(1.5rem, 2vw, 2.5rem);
} }
/* 列表容器优化gap确保移动端5列不溢出 */ /* 列表容器优化gap确保移动端5列不溢出 */
.advantage-section__list { .advantage-section__list {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: flex-start; align-items: flex-start;
gap: clamp(0.1rem, 0.3vw, 0.8rem); gap: clamp(0.1rem, 0.3vw, 0.8rem);
width: 100%; width: 100%;
flex-wrap: nowrap; flex-wrap: nowrap;
overflow: hidden; overflow: hidden;
padding: 0 0.1rem; padding: 0 0.1rem;
}
/* 新增:卡片外层容器(专门控制圆角,避免缩放时丢失) */
.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); /* 阴影移到外层,避免缩放时阴影变形 */
position: relative;
z-index: 1;
aspect-ratio: 1 / 1.7;
} }
/* 卡片核心:优化宽高比和尺寸计算 */ /* 卡片核心:优化宽高比和尺寸计算 */
.advantage-card { .advantage-card {
flex: 0 0 calc((100% - 4 * clamp(0.1rem, 0.3vw, 0.8rem)) / 5); width: 100%;
min-width: calc((100% - 4 * clamp(0.1rem, 0.3vw, 0.8rem)) / 5); height: 100%;
max-width: calc((100% - 4 * clamp(0.1rem, 0.3vw, 0.8rem)) / 5); cursor: pointer;
border-radius: 0.5rem; background: #fff;
overflow: hidden; position: relative;
box-shadow: 0 0.125rem 0.5rem rgba(0, 0, 0, 0.1); z-index: 1;
transition: transform 0.3s ease; /* 关键修复添加will-change优化渲染移除原圆角和阴影移到外层 */
cursor: pointer; will-change: transform; /* 告知浏览器准备变换,避免圆角渲染异常 */
background: #fff; transition: transform 0.3s ease;
position: relative;
z-index: 1;
aspect-ratio: 1 / 1.7;
/* PC端卡片高度略缩短更紧凑 */
} }
.advantage-card__img { .advantage-card__img {
width: 100%; width: 100%;
height: 72%; height: 72%;
/* PC端图片占比提升至72%,文字区域压缩 */ /* PC端图片占比提升至72%,文字区域压缩 */
object-fit: cover; object-fit: cover;
background-color: #f9f9f9; background-color: #f9f9f9;
display: block; display: block;
} }
/* 文字区域flex垂直分布确保标题和描述都垂直居中 */ /* 文字区域flex垂直分布确保标题和描述都垂直居中 */
.advantage-card__content { .advantage-card__content {
width: 100%; width: 100%;
height: 28%; height: 28%;
/* PC端文字区域占比降至28% */ /* PC端文字区域占比降至28% */
padding: clamp(0.3rem, 0.4vw, 0.75rem); padding: clamp(0.3rem, 0.4vw, 0.75rem);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
/* 整体垂直居中 */ /* 整体垂直居中 */
align-items: center; align-items: center;
/* 子元素水平居中(关键) */ /* 子元素水平居中(关键) */
/* text-align: center; */ /* text-align: center; */
flex-shrink: 0; flex-shrink: 0;
gap: 4px; gap: 4px;
/* 标题和描述之间的垂直间距,避免贴边 */ /* 标题和描述之间的垂直间距,避免贴边 */
} }
/* 标题容器:水平居中+内部两端对齐,同时垂直居中 */ /* 标题容器:水平居中+内部两端对齐,同时垂直居中 */
.advantage-card__heading-wrap { .advantage-card__heading-wrap {
display: flex; display: flex;
align-items: center; align-items: center;
/* 内部标题和箭头垂直对齐 */ /* 内部标题和箭头垂直对齐 */
justify-content: space-between; justify-content: space-between;
/* 文字左、箭头右 */ /* 文字左、箭头右 */
gap: 8px; gap: 8px;
width: 80%; width: 80%;
/* 限制宽度,体现居中效果 */ /* 限制宽度,体现居中效果 */
/* 移除底部margin通过父容器gap控制间距 */ /* 移除底部margin通过父容器gap控制间距 */
} }
/* 卡片标题:居左显示 */ /* 卡片标题:居左显示 */
.advantage-card__heading { .advantage-card__heading {
font-size: clamp(0.85rem, 1.5vw, 1.4rem); font-size: clamp(0.85rem, 1.5vw, 1.4rem);
/* 比原尺寸放大PC端更醒目移动端自适应 */ /* 比原尺寸放大PC端更醒目移动端自适应 */
font-weight: 600; font-weight: 600;
color: #333; color: #333;
line-height: 1.3; line-height: 1.3;
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
/* 卡片标题右侧箭头:居右显示 */ /* 卡片标题右侧箭头:居右显示 */
.card-arrow { .card-arrow {
color: #409eff; color: #409eff;
font-size: clamp(0.7rem, 1vw, 1rem);
/* 箭头尺寸跟随标题放大,避免不协调 */ /* 箭头尺寸跟随标题放大,避免不协调 */
transition: transform 0.3s ease; transition: transform 0.3s ease;
display: inline-block; display: inline-block;
width: 24px; width: 16px;
/* 箭头宽度同步增加 */ /* 箭头宽度同步增加 */
text-align: center; text-align: center;
} }
/* 卡片hover时箭头动画 */ /* 卡片hover时箭头动画 */
.advantage-card:hover .card-arrow { .advantage-card:hover .card-arrow {
transform: translateX(3px); transform: translateX(3px);
} }
/* 描述文字:水平+垂直居中,与标题容器对齐(仅添加最小高度修复对齐问题) */ /* 描述文字:水平+垂直居中,与标题容器对齐(仅添加最小高度修复对齐问题) */
.advantage-card__description { .advantage-card__description {
font-size: clamp(0.6rem, 0.9vw, 0.9rem); font-size: clamp(0.6rem, 0.9vw, 0.9rem);
/* PC端描述文字略放大 */ /* PC端描述文字略放大 */
color: #78787a; color: #666;
line-height: 1.2; line-height: 1.2;
/* PC端行高略紧凑 */ /* PC端行高略紧凑 */
white-space: normal; white-space: normal;
overflow: hidden; overflow: hidden;
width: 80%; width: 80%;
/* 与标题容器宽度一致 */ /* 与标题容器宽度一致 */
display: -webkit-box; display: -webkit-box;
-webkit-line-clamp: 2; -webkit-line-clamp: 2;
/* 最多2行避免高度溢出 */ /* 最多2行避免高度溢出 */
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
/* 核心修复:固定最小高度=2行文字高度确保1行时也占满空间 */ /* 核心修复:固定最小高度=2行文字高度确保1行时也占满空间 */
min-height: calc(clamp(0.6rem, 0.9vw, 0.9rem) * 2 * 1.4); min-height: calc(clamp(0.6rem, 0.9vw, 0.9rem) * 2 * 1.4);
/* 确保文字垂直居中 */ /* 确保文字垂直居中 */
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: left; justify-content: left;
} }
/* 卡片hover效果 */ /* 卡片hover效果(仅保留缩放,阴影移到外层) */
.advantage-card:hover { .advantage-card:hover {
transform: scale(1.03); transform: scale(1.03);
/* z-index: 10; */ z-index: 10;
/* box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.15); */
} }
/* 移动端适配 */ /* 外层容器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) { @media (max-width: 767px) {
.advantage-card:active { .advantage-card:active {
transform: scale(1.01); transform: scale(1.01);
} }
.advantage-section { .advantage-section {
width: 95%; width: 95%;
/* 移动端扩大容器宽度 */ /* 移动端扩大容器宽度 */
} }
.advantage-section__list { .advantage-section__list {
gap: 0.1rem; gap: 0.5rem; /* 优化间距,更美观 */
} flex-wrap: wrap; /* 允许换行 */
overflow: visible; /* 取消溢出隐藏,显示多行 */
justify-content: space-between; /* 两端对齐确保2个卡片均匀分布 */
}
.advantage-card { /* 移动端卡片宽度一行2个 */
aspect-ratio: 1 / 1.8; .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; /* 行与行之间的间距 */
}
.advantage-card__img { /* 隐藏第5个卡片 */
height: 62%; .advantage-card-wrap:nth-child(5) {
/* 移动端图片占比回到62% */ display: none;
} }
.advantage-card__content { .advantage-card__img {
height: 38%; height: 62%;
/* 移动端文字区域占比回到38% */ /* 移动端图片占比回到62% */
padding: 0.2rem 0.15rem; }
gap: 6px;
/* 移动端间距略大,易读性更好 */
}
/* 移动端标题容器宽度放宽 */ .advantage-card__content {
.advantage-card__heading-wrap { height: 38%;
width: 90%; /* 移动端文字区域占比回到38% */
} padding: 0.2rem 0.15rem;
gap: 6px;
/* 移动端间距略大,易读性更好 */
}
.advantage-card__description { /* 移动端标题容器宽度放宽 */
line-height: 1.2; .advantage-card__heading-wrap {
width: 90%; width: 90%;
-webkit-line-clamp: 2; }
/* 移动端同步添加最小高度 */
min-height: calc(clamp(0.5rem, 0.8vw, 0.8rem) * 2 * 1.5);
display: flex;
align-items: flex-start;
}
/* 移动端箭头和文字尺寸缩小 */ .advantage-card__description {
.card-arrow { line-height: 1.2;
font-size: clamp(0.45rem, 0.7vw, 0.8rem); width: 90%;
width: 10px; -webkit-line-clamp: 2;
} /* 移动端同步添加最小高度 */
min-height: calc(clamp(0.5rem, 0.8vw, 0.8rem) * 2 * 1.5);
}
.advantage-card__heading { /* 移动端箭头和文字尺寸缩小 */
font-size: clamp(0.6rem, 1vw, 1rem); .card-arrow {
} font-size: clamp(0.45rem, 0.7vw, 0.8rem);
width: 10px;
}
.advantage-card__description { .advantage-card__heading {
font-size: clamp(0.5rem, 0.8vw, 0.8rem); font-size: clamp(0.6rem, 1vw, 1rem);
} }
.advantage-card__description {
font-size: clamp(0.5rem, 0.8vw, 0.8rem);
}
} }
/* 超小屏适配 */ /* 超小屏适配 */
@media (max-width: 374px) { @media (max-width: 374px) {
.advantage-section { .advantage-section {
width: 98%; width: 98%;
} }
.advantage-card__heading { .advantage-card__heading {
font-size: clamp(0.55rem, 0.9vw, 0.9rem); font-size: clamp(0.55rem, 0.9vw, 0.9rem);
} }
.advantage-card__heading-wrap { .advantage-card__heading-wrap {
width: 95%; width: 95%;
gap: 5px; gap: 5px;
} }
.advantage-card__description { .advantage-card__description {
width: 95%; width: 95%;
/* 超小屏保持最小高度 */ /* 超小屏保持最小高度 */
min-height: calc(clamp(0.5rem, 0.8vw, 0.8rem) * 2 * 1.5); min-height: calc(clamp(0.5rem, 0.8vw, 0.8rem) * 2 * 1.5);
} }
} }

View File

@@ -62,6 +62,7 @@ a {
.header { .header {
width: 100%; width: 100%;
background: #fff; background: #fff;
height: 60px;
} }
.header-img { .header-img {
margin: 0 auto; margin: 0 auto;

View File

@@ -13,6 +13,8 @@
overflow: hidden; /* 阻止蒙版自身滚动 */ overflow: hidden; /* 阻止蒙版自身滚动 */
touch-action: none; /* 禁止触摸行为 */ touch-action: none; /* 禁止触摸行为 */
pointer-events: auto; /* 确保蒙版能接收事件 */ pointer-events: auto; /* 确保蒙版能接收事件 */
backdrop-filter: blur(8px); /* 模糊半径可调整4px-15px为宜 */
-webkit-backdrop-filter: blur(8px); /* 兼容Safari */
} }
/* 蒙版内容容器 - 新增触摸事件传递控制 */ /* 蒙版内容容器 - 新增触摸事件传递控制 */

View File

@@ -11,7 +11,21 @@
display: flex; display: flex;
flex-wrap: nowrap; flex-wrap: nowrap;
overflow: hidden; 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; align-items: stretch;
} }
/* 卡片核心:移动端固定宽高比 */ /* 外层容器移动端适配:宽高比移到外层 */
.product-card-wrap {
aspect-ratio: 3 / 4.2;
}
/* 卡片核心移动端调整移除圆角、阴影添加will-change */
.product-card { .product-card {
background: rgb(242, 243, 245); background: rgb(242, 243, 245);
border-radius: clamp(0.375rem, 1vw, 0.5rem);
cursor: pointer; cursor: pointer;
width: calc(25% - clamp(0.3rem, 0.5vw, 0.36rem)); width: 100%; /* 内层卡片占满外层容器 */
height: 100%;
flex: none; flex: none;
box-shadow: 0 clamp(0.1rem, 0.2vw, 0.125rem) margin: 0; /* 保持无margin间距由gap控制 */
clamp(0.3rem, 0.8vw, 0.5rem) rgba(0, 0, 0, 0.05);
margin: 0 clamp(0.16rem, 0.24vw, 0.2rem);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
aspect-ratio: 3 / 4.2; will-change: transform; /* 优化渲染,避免圆角异常 */
/* 移动端固定宽高比 */
} }
/* 卡片hover效果移动端特有 */ /* 卡片hover效果移动端特有 */
@@ -45,59 +61,51 @@
transition: transform 0.3s ease; transition: transform 0.3s ease;
} }
/* 图片容器:用视口单位固定高度,彻底不受图片影响 */ /* 外层容器hover增强阴影更自然的浮起效果 */
.product-card-img { .product-card-wrap:hover {
display: flex; box-shadow: 0 clamp(0.2rem, 0.4vw, 0.25rem) clamp(0.5rem, 1vw, 0.8rem) rgba(0, 0, 0, 0.08);
justify-content: center;
align-items: center;
width: 100%;
/* 关键用vw固定高度基于屏幕宽度计算和图片本身尺寸无关 */
height: clamp(8rem, 28vw, 12rem); /* 移动端适配小屏8rem大屏12rem中间按28vw缩放 */
margin-bottom: clamp(0.4rem, 0.6vw, 0.5rem);
overflow: hidden;
border-radius: clamp(0.2rem, 0.4vw, 0.25rem);
}
/* 产品图片:强制填充容器,消除尺寸差异 */
.product-card img {
width: 100%;
height: 100%;
object-fit: contain; /* 保留完整图片如果需要裁剪用cover */
object-position: center;
/* 强制图片适应容器,不管原图尺寸 */
min-width: 80%; /* 防止图片过窄(可选,根据需求调整) */
max-width: 100%;
} }
/* 图片容器:移动端固定占比 */
.product-card-img {
display: flex;
justify-content: center;
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);
}
/* 产品图片:移动端特有 */
.product-card img {
width: 100%;
height: 100%;
object-fit: contain;
object-position: center;
}
/* 文字容器:移动端固定占比 */ /* 文字容器:移动端固定占比 */
/*.product-card-text {*/ .product-card-text {
/* flex: 0 0 20%;*/ flex: 0 0 20%;
/* 移动端文字区占比 */ display: flex;
/* display: flex;*/ flex-direction: column;
/* flex-direction: column;*/ justify-content: center;
/* justify-content: center;*/ padding-left: clamp(0.8rem, 2vw, 1.5rem);
/* padding-left: clamp(0.8rem, 2vw, 1.5rem);*/
/* padding-right: clamp(0.8rem, 2vw, 1.5rem);*/
/*}*/
.product-card-text {
width: 100%;
/* 用vw固定文字区域高度和图片容器高度解耦 */
height: clamp(3rem, 10vw, 4.5rem); /* 小屏3rem大屏4.5rem中间按10vw缩放 */
display: flex;
flex-direction: column;
justify-content: flex-start;
overflow: hidden; /* 防止文字溢出 */
padding-left: clamp(0.8rem, 2vw, 1.5rem);
padding-right: clamp(0.8rem, 2vw, 1.5rem); padding-right: clamp(0.8rem, 2vw, 1.5rem);
} }
/* 标题样式:移动端特有 */ /* 标题样式:移动端特有 */
.product-card-title { .product-card-title {
font-size: clamp(0.75rem, 1.2vw, 0.875rem); font-size: clamp(0.8rem, 1.3vw, 1.2rem);
color: #333; font-weight: 600;
margin-bottom: clamp(0.2rem, 0.3vw, 0.25rem); color: #333;
/* 最多2行溢出省略避免文字过多挤压 */ white-space: nowrap;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; height: 35%;
line-height: 1.2;
} }
/* 描述样式移动端固定2行高度 */ /* 描述样式移动端固定2行高度 */
@@ -106,7 +114,6 @@
color: #656565; color: #656565;
word-break: break-word; word-break: break-word;
height: 65%; height: 65%;
/* 移动端描述固定高度2行 */
overflow: hidden; overflow: hidden;
display: -webkit-box; display: -webkit-box;
-webkit-line-clamp: 2; -webkit-line-clamp: 2;
@@ -120,7 +127,6 @@
display: flex; display: flex;
align-items: center; align-items: center;
flex: 0 0 10%; flex: 0 0 10%;
/* 移动端链接区占比 */
padding: clamp(0.8rem, 2vw, 1.5rem); padding: clamp(0.8rem, 2vw, 1.5rem);
} }
@@ -151,23 +157,27 @@
.product-card-container { .product-card-container {
align-items: stretch; align-items: stretch;
height: clamp(30vw, 35vw, 480px); height: clamp(30vw, 35vw, 480px);
/* PC端容器高度自适应 */ /* 关键修改3PC端同步增大gap间距与通用容器一致 */
gap: clamp(0.6rem, 1vw, 0.8rem);
padding: 0;
} }
/* 卡片核心PC端高度自适应 */ /* 外层容器PC端适配高度占满容器 */
.product-card-wrap {
height: 100%;
}
/* 卡片核心PC端调整移除圆角、阴影添加will-change */
.product-card { .product-card {
background: rgb(242, 243, 245); background: rgb(242, 243, 245);
border-radius: clamp(0.375rem, 1vw, 0.5rem);
cursor: pointer; cursor: pointer;
width: calc(25% - clamp(0.3rem, 0.5vw, 0.36rem)); width: 100%; /* 内层卡片占满外层容器 */
height: 100%;
flex: none; flex: none;
box-shadow: 0 clamp(0.1rem, 0.2vw, 0.125rem) margin: 0; /* 保持无margin */
clamp(0.3rem, 0.8vw, 0.5rem) rgba(0, 0, 0, 0.05);
margin: 0 clamp(0.16rem, 0.24vw, 0.2rem);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
height: 100%; will-change: transform; /* 优化渲染,避免圆角异常 */
/* PC端卡片高度继承父容器 */
} }
/* 卡片hover效果PC端特有 */ /* 卡片hover效果PC端特有 */
@@ -176,6 +186,11 @@
transition: transform 0.3s ease; 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端固定占比 */ /* 图片容器PC端固定占比 */
.product-card-img { .product-card-img {
display: flex; display: flex;
@@ -183,7 +198,6 @@
align-items: center; align-items: center;
width: 100%; width: 100%;
flex: 0 0 72%; flex: 0 0 72%;
/* PC端图片区占比 */
margin-bottom: clamp(0.4rem, 0.6vw, 0.5rem); margin-bottom: clamp(0.4rem, 0.6vw, 0.5rem);
overflow: hidden; overflow: hidden;
border-radius: clamp(0.2rem, 0.4vw, 0.25rem); border-radius: clamp(0.2rem, 0.4vw, 0.25rem);
@@ -200,8 +214,7 @@
/* 文字容器PC端固定占比 */ /* 文字容器PC端固定占比 */
.product-card-text { .product-card-text {
flex: 0 0 15%; flex: 0 0 15%;
/* PC端文字区占比 */ display: flex; /* 补充display: flex原代码遗漏 */
/* display: flex; */
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
padding-left: clamp(0.8rem, 2vw, 1.5rem); padding-left: clamp(0.8rem, 2vw, 1.5rem);
@@ -216,8 +229,6 @@
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
/* height: 35%; */
/* PC端标题固定高度 */
line-height: 1.2; line-height: 1.2;
display: flex; display: flex;
align-items: center; align-items: center;
@@ -228,8 +239,6 @@
font-size: clamp(0.7rem, 1.1vw, 0.9rem); font-size: clamp(0.7rem, 1.1vw, 0.9rem);
color: #656565; color: #656565;
word-break: break-word; word-break: break-word;
/* height: 65%; */
/* PC端描述固定高度2行 */
overflow: hidden; overflow: hidden;
display: -webkit-box; display: -webkit-box;
-webkit-line-clamp: 2; -webkit-line-clamp: 2;
@@ -240,11 +249,10 @@
/* 链接图标容器PC端固定占比 */ /* 链接图标容器PC端固定占比 */
.product-card-link { .product-card-link {
width: 100%; width: 100%;
/* display: flex; */
/* align-items: center; */
flex: 0 0 12%; flex: 0 0 12%;
/* PC端链接区占比 */
padding-left: clamp(0.8rem, 2vw, 1.5rem); padding-left: clamp(0.8rem, 2vw, 1.5rem);
display: flex; /* 补充display: flex确保图标垂直居中 */
align-items: center;
} }
/* 链接图标PC端特有 */ /* 链接图标PC端特有 */
@@ -253,4 +261,4 @@
height: auto; height: auto;
object-fit: contain; object-fit: contain;
} }
} }

View File

@@ -1,29 +1,76 @@
.swiper-container {
padding: 0 !important;
}
/* 轮播容器 - 核心:基于视口高度自适应 */ /* 轮播容器 - 核心:基于视口高度自适应 */
.auto-swiper-container { .auto-swiper-container {
width: 100%; width: 100%;
/* 关键:高度 = 视口高度的百分比可调整如60vh=屏幕高度60% */ /* 关键:高度 = 视口高度的百分比可调整如60vh=屏幕高度60% */
height: 60vh;
max-height: 800px; /* 限制最大高度(避免大屏过高) */
min-height: 300px; /* 限制最小高度(避免小屏过低) */
overflow: hidden;
margin-bottom: 5.625rem; margin-bottom: 5.625rem;
max-height: 900px;
min-height: 300px;
position: relative;
margin-top:60px;
} }
/* 轮播项 - 填充容器高度 */ /* 轮播项 - 填充容器高度 */
.auto-swiper-slide { .auto-swiper-slide {
width: 100%; width: 100%;
height: 100%; /*height: 100%;*/
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
background: #333; /* 图片加载前占位 */
} }
/* 图片自适应核心:填充屏幕比例高度,保持比例 */ /* 图片自适应核心:填充屏幕比例高度,保持比例 */
.auto-swiper-slide img { .auto-swiper-slide img {
width: 100%; width: 100%;
height: 100%; height: 100%;
object-fit: cover; /* 优先填充容器,裁剪超出部分(无拉伸) */ object-fit: contain; /* 替换 cover 为 contain完整显示图片 */
/* object-fit: contain; 可选:完整显示图片,不裁剪(可能留黑边) */ display: block;
display: block;
} }
/* 轮播容器保持相对定位 */
.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;*/
}

View File

@@ -63,6 +63,7 @@ a {
.header { .header {
width: 100%; width: 100%;
background: #fff; background: #fff;
height: 60px;
} }
.header-img { .header-img {
margin: 0 auto; margin: 0 auto;

View File

@@ -1,151 +1,147 @@
.product-box { .product-box {
background: #fff; background: #fff;
padding: clamp(1.5rem, 3vw, 3rem) 0; padding: clamp(1.5rem, 3vw, 3rem) 0;
/* 产品块之间留间距 */ /* 产品块之间留间距 */
} }
.product-title { .product-title {
width: 90%; width: 90%;
margin: 0 auto; margin: 0 auto;
padding-bottom: clamp(1.5rem, 3vw, 3rem); padding-bottom: clamp(1.5rem, 3vw, 3rem);
} }
.product-title-h2 { .product-title-h2 {
font-size: clamp(1.5rem, 3vw, 2.25rem); font-size: clamp(1.5rem, 3vw, 2.25rem);
/* padding-top: clamp(1.5rem, 3vw, 3rem); */ /* padding-top: clamp(1.5rem, 3vw, 3rem); */
} }
.product-title-p { .product-title-p {
font-size: clamp(0.875rem, 1.5vw, 1.125rem); font-size: clamp(0.875rem, 1.5vw, 1.125rem);
color: #646464; color: #646464;
margin-top: clamp(0.5rem, 1vw, 0.75rem); margin-top: clamp(0.5rem, 1vw, 0.75rem);
} }
/* 容器布局:两个产品通用 */ /* 容器布局:两个产品通用 */
.product-container { .product-container {
display: flex; display: flex;
gap: clamp(0.4rem, 1vw, 0.71rem); gap: clamp(0.4rem, 1vw, 0.71rem);
margin: 0 auto; margin: 0 auto;
width: 90%; width: 90%;
align-items: flex-start; align-items: flex-start;
} }
/* 左侧容器:两个产品通用 */ /* 左侧容器:两个产品通用 */
.product-left { .product-left {
flex: 1.8; flex: 1.8;
position: relative; position: relative;
width: 100%; width: 100%;
} }
.product-img { .product-img {
width: 100%; width: 100%;
height: auto; height: auto;
border-radius: 10px; border-radius: 10px;
display: block; display: block;
/* 取消图片底部空隙 */ /* 取消图片底部空隙 */
} }
/* 悬浮图公共样式两个产品尺寸完全一致100%宽度) */ /* 悬浮图公共样式两个产品尺寸完全一致100%宽度) */
.product-img-hover { .product-img-hover {
position: absolute; position: absolute;
width: 100%; width: 100%;
/* 两个产品悬浮图宽度相同 */ /* 两个产品悬浮图宽度相同 */
z-index: 1; z-index: 1;
} }
.product-img-hover img { .product-img-hover img {
width: 100%; width: 100%;
/*max-width: 340px;*/ /* 图片尺寸100%,无区别 */
/* 图片尺寸100%,无区别 */ height: auto;
height: auto; /* max-height: 70%; */
/* max-height: 70%; */ border-radius: 10px;
border-radius: 10px; }
}
/* 第一个产品:悬浮图居中上移(仅定位差异) */
.product-img-1 {
top: -10%;
left: 50%;
/* 第一个产品:悬浮图居中上移(仅定位差异) */ transform: translateX(-50%);
.product-img-1 { }
top: -10%;
left: 50%; /* 第二个产品:悬浮图上右超出(仅定位差异) */
transform: translateX(-50%); .product-img-2 {
} top: -10%;
/* 上超出 */
/* 第二个产品:悬浮图上右超出(仅定位差异) */ transform: none;
.product-img-2 { width: 108%;
top: -10%; /* 取消居中 */
/* 上超出 */ }
transform: none;
width: 108%; /* 右侧容器:两个产品通用 */
/* 取消居中 */ .product-right {
} flex: 3.2;
position: relative;
/* 右侧容器:两个产品通用 */ border-radius: 10px;
.product-right { overflow: hidden;
flex: 3.2; width: 100%;
position: relative; background-color: #f5f5f5;
border-radius: 10px; align-self: stretch;
overflow: hidden; }
width: 100%;
background-color: #f5f5f5; .right-content {
align-self: stretch; position: absolute;
} top: 0;
left: 0;
.right-content { width: 100%;
position: absolute; height: 100%;
top: 0; object-fit: cover;
left: 0; transition: opacity 0.3s ease;
width: 100%; }
height: 100%;
object-fit: cover; .right-video {
transition: opacity 0.3s ease; display: none;
} }
.right-video { /* PC端适配仅微调定位参数尺寸不变 */
display: none; @media (min-width: 1024px) {
} .product-container {
width: 90%;
/* PC端适配仅微调定位参数尺寸不变 */ }
@media (min-width: 1024px) {
.product-container { .product-left {
width: 90%; flex: 2;
} }
.product-left { .product-right {
flex: 2; flex: 5;
} }
.product-right { /* 宽度保持一致,仅调定位偏移 */
flex: 5; .product-img-1 {
} top: -11%;
}
/* 宽度保持一致,仅调定位偏移 */
.product-img-1 { .product-img-2 {
top: -11%; top: -12%;
} }
}
.product-img-2 {
top: -12%; /* 超小屏适配:尺寸不变,微调定位 */
} @media (max-width: 375px) {
} .product-left {
flex: 1.5;
/* 超小屏适配:尺寸不变,微调定位 */ }
@media (max-width: 375px) {
.product-left { .product-right {
flex: 1.5; flex: 3.5;
} }
.product-right { /* 宽度仍保持一致 */
flex: 3.5; .product-img-1 {
} top: -6%;
}
/* 宽度仍保持一致 */
.product-img-1 { .product-img-2 {
top: -6%; top: -8%;
} }
}
.product-img-2 {
top: -8%;
}
}

View File

@@ -1,12 +1,13 @@
/* 轮播容器 - 核心:基于视口高度自适应 */ /* 轮播容器 - 核心:基于视口高度自适应 */
.auto-swiper-container { .auto-swiper-container {
width: 100%; width: 100%;
/* 关键:高度 = 视口高度的百分比可调整如60vh=屏幕高度60% */ /* 关键:高度 = 视口高度的百分比可调整如60vh=屏幕高度60% */
margin-bottom: 5.625rem; margin-bottom: 5.625rem;
max-height: 900px; max-height: 900px;
min-height: 300px; min-height: 300px;
position: relative;
}
/* 轮播项 - 填充容器高度 */ /* 轮播项 - 填充容器高度 */
.auto-swiper-slide { .auto-swiper-slide {
width: 100%; width: 100%;
@@ -24,7 +25,7 @@
height: 100%; height: 100%;
object-fit: contain; /* 替换 cover 为 contain完整显示图片 */ object-fit: contain; /* 替换 cover 为 contain完整显示图片 */
display: block; display: block;
background-color: #f5f5f5; /* 图片未填充区域用浅色背景,避免黑边 */
} }
/* 轮播容器保持相对定位 */ /* 轮播容器保持相对定位 */
@@ -45,9 +46,9 @@
bottom: 10%; /* 距离底部的距离,可调整 */ bottom: 10%; /* 距离底部的距离,可调整 */
left: 50%; left: 50%;
transform: translateX(-50%); transform: translateX(-50%);
width:100%; /* width:100%;
display: flex; display: flex; */
justify-content: center; /* justify-content: center; */
z-index: 10; z-index: 10;
} }