尺寸调整

This commit is contained in:
2025-11-27 18:38:58 +08:00
parent 288c86ffbc
commit c8d5661856
11 changed files with 635 additions and 575 deletions

View File

@@ -1,5 +1,8 @@
{extend name="public/base" /} {extend name="public/base" /}
{block name="style"} {block name="style"}
<link rel="stylesheet" href="__CSS__/topic_power_prodline/index.css"> <link rel="stylesheet" href="__CSS__/topic_power_prodline/index.css">
<link rel="stylesheet" href="__CSS__/topic_power_prodline/swiper.css"> <link rel="stylesheet" href="__CSS__/topic_power_prodline/swiper.css">
<link rel="stylesheet" href="__CSS__/topic_power_prodline/nav.css"> <link rel="stylesheet" href="__CSS__/topic_power_prodline/nav.css">
@@ -9,6 +12,7 @@
<link rel="stylesheet" href="__CSS__/topic_power_prodline/product_list.css"> <link rel="stylesheet" href="__CSS__/topic_power_prodline/product_list.css">
<link rel="stylesheet" href="__CSS__/topic_power_prodline/product_card.css"> <link rel="stylesheet" href="__CSS__/topic_power_prodline/product_card.css">
<link rel="stylesheet" href="__CSS__/topic_power_prodline/footer.css"> <link rel="stylesheet" href="__CSS__/topic_power_prodline/footer.css">
{/block} {/block}
{block name="header"} {block name="header"}
<!-- 重置header头为空 --> <!-- 重置header头为空 -->
@@ -92,9 +96,25 @@
{notempty name="tc_first_section_lr"} {notempty name="tc_first_section_lr"}
<div class="product-right"> <div class="product-right">
<img src="{$tc_first_section_lr.image}" alt="{$tc_first_section_lr.title}" class="right-content right-img"> <img src="{$tc_first_section_lr.image}" alt="{$tc_first_section_lr.title}" class="right-content right-img">
<video src="{$tc_first_section_lr.video}" class="right-content right-video" muted loop playsinline controls> <video src="{$tc_first_section_lr.video}" class="right-content right-video" muted loop playsinline>
您的浏览器不支持HTML5视频播放请升级浏览器 您的浏览器不支持HTML5视频播放请升级浏览器
</video> </video>
<button class="video-play-btn">
<span class="play-icon">
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="12" cy="12" r="10" fill="rgba(0,0,0,0.5)" />
<path d="M9 7L16 12L9 17V7Z" fill="white" />
</svg>
</span>
<!-- 暂停图标(默认隐藏) -->
<span class="pause-icon">
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="12" cy="12" r="10" fill="rgba(0,0,0,0.5)" />
<rect x="8" y="7" width="3" height="10" fill="white" />
<rect x="13" y="7" width="3" height="10" fill="white" />
</svg>
</span>
</button>
</div> </div>
{/notempty} {/notempty}
</div> </div>
@@ -142,7 +162,7 @@
<div class="product-container"> <div class="product-container">
{assign name="hc_first_section_lf" value=":array_shift($data.home_charger)" /} {assign name="hc_first_section_lf" value=":array_shift($data.home_charger)" /}
{notempty name="hc_first_section_lf"} {notempty name="hc_first_section_lf"}
<a class="product-left" href="{$tc_first_section_lf.link}"> <a class="product-left" href="{$hc_first_section_lf.link}">
<img src="{$hc_first_section_lf.image}" alt="{$hc_first_section_lf.title}" class="product-img"> <img src="{$hc_first_section_lf.image}" alt="{$hc_first_section_lf.title}" class="product-img">
<!-- 公共类+定位类:尺寸统一,定位不同 --> <!-- 公共类+定位类:尺寸统一,定位不同 -->
<div class="product-img-hover product-img-1"> <div class="product-img-hover product-img-1">
@@ -154,9 +174,25 @@
{notempty name="hc_first_section_lr"} {notempty name="hc_first_section_lr"}
<div class="product-right"> <div class="product-right">
<img src="{$hc_first_section_lr.image}" alt="{$hc_first_section_lr.title}" class="right-content right-img"> <img src="{$hc_first_section_lr.image}" alt="{$hc_first_section_lr.title}" class="right-content right-img">
<video src="{$hc_first_section_lr.video}" class="right-content right-video" muted loop playsinline controls> <video src="{$hc_first_section_lr.video}" class="right-content right-video" muted loop playsinline >
您的浏览器不支持HTML5视频播放请升级浏览器 您的浏览器不支持HTML5视频播放请升级浏览器
</video> </video>
<button class="video-play-btn">
<span class="play-icon">
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="12" cy="12" r="10" fill="rgba(0,0,0,0.5)" />
<path d="M9 7L16 12L9 17V7Z" fill="white" />
</svg>
</span>
<!-- 暂停图标(默认隐藏) -->
<span class="pause-icon">
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="12" cy="12" r="10" fill="rgba(0,0,0,0.5)" />
<rect x="8" y="7" width="3" height="10" fill="white" />
<rect x="13" y="7" width="3" height="10" fill="white" />
</svg>
</span>
</button>
</div> </div>
{/notempty} {/notempty}
</div> </div>
@@ -165,7 +201,7 @@
<div class="product-card-box"> <div class="product-card-box">
<div class="product-card-container"> <div class="product-card-container">
{volist name="hc_second_section" id="hcs"} {volist name="hc_second_section" id="hcs"}
<a class="product-card-wrap" href="{$tss.link}"> <a class="product-card-wrap" href="{$hcs.link}">
<div class="product-card" href="#"> <div class="product-card" href="#">
<div class="product-card-img"> <div class="product-card-img">
<img src="{$hcs.image}" alt="{$hcs.short_title}"> <img src="{$hcs.image}" alt="{$hcs.short_title}">
@@ -203,7 +239,7 @@
<div class="product-container"> <div class="product-container">
{assign name="dc_first_section_lf" value=":array_shift($data.desktop_charger)" /} {assign name="dc_first_section_lf" value=":array_shift($data.desktop_charger)" /}
{notempty name="dc_first_section_lf"} {notempty name="dc_first_section_lf"}
<a class="product-left" href="{$tc_first_section_lf.link}"> <a class="product-left" href="{$dc_first_section_lf.link}">
<img src="{$dc_first_section_lf.image}" alt="{$dc_first_section_lf.short_title}" class="product-img"> <img src="{$dc_first_section_lf.image}" alt="{$dc_first_section_lf.short_title}" class="product-img">
<!-- 公共类+定位类:尺寸和第一个完全一致,仅定位不同 --> <!-- 公共类+定位类:尺寸和第一个完全一致,仅定位不同 -->
<div class="product-img-hover product-img-2" > <div class="product-img-hover product-img-2" >
@@ -219,9 +255,25 @@
<!--muted loop playsinline controls--> <!--muted loop playsinline controls-->
<video <video
src="{$dc_first_section_lr.video}" src="{$dc_first_section_lr.video}"
class="right-content right-video" style="display: none;"> class="right-content right-video" muted loop playsinline >
您的浏览器不支持HTML5视频播放请升级浏览器 您的浏览器不支持HTML5视频播放请升级浏览器
</video> </video>
<button class="video-play-btn">
<span class="play-icon">
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="12" cy="12" r="10" fill="rgba(0,0,0,0.5)" />
<path d="M9 7L16 12L9 17V7Z" fill="white" />
</svg>
</span>
<!-- 暂停图标(默认隐藏) -->
<span class="pause-icon">
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="12" cy="12" r="10" fill="rgba(0,0,0,0.5)" />
<rect x="8" y="7" width="3" height="10" fill="white" />
<rect x="13" y="7" width="3" height="10" fill="white" />
</svg>
</span>
</button>
</div> </div>
{/notempty} {/notempty}
</div> </div>
@@ -281,9 +333,25 @@
{notempty name="wc_first_section_lr"} {notempty name="wc_first_section_lr"}
<div class="product-right"> <div class="product-right">
<img src="{$wc_first_section_lr.image}" alt="{$wc_first_section_lr.title}" class="right-content right-img"> <img src="{$wc_first_section_lr.image}" alt="{$wc_first_section_lr.title}" class="right-content right-img">
<video src="{$wc_first_section_lr.video}" class="right-content right-video" muted loop playsinline controls> <video src="{$wc_first_section_lr.video}" class="right-content right-video" muted loop playsinline>
您的浏览器不支持HTML5视频播放请升级浏览器 您的浏览器不支持HTML5视频播放请升级浏览器
</video> </video>
<button class="video-play-btn">
<span class="play-icon">
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="12" cy="12" r="10" fill="rgba(0,0,0,0.5)" />
<path d="M9 7L16 12L9 17V7Z" fill="white" />
</svg>
</span>
<!-- 暂停图标(默认隐藏) -->
<span class="pause-icon">
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="12" cy="12" r="10" fill="rgba(0,0,0,0.5)" />
<rect x="8" y="7" width="3" height="10" fill="white" />
<rect x="13" y="7" width="3" height="10" fill="white" />
</svg>
</span>
</button>
</div> </div>
{/notempty} {/notempty}
</div> </div>
@@ -326,9 +394,26 @@
{notempty name="cts_lr"} {notempty name="cts_lr"}
<div class="product-right"> <div class="product-right">
<img src="{$cts_lr.image}" alt="{$cts_lr.title}" class="right-content right-img"> <img src="{$cts_lr.image}" alt="{$cts_lr.title}" class="right-content right-img">
<video src="{$cts_lr.video}" class="right-content right-video" muted loop playsinline controls> <video src="{$cts_lr.video}" class="right-content right-video" muted loop playsinline>
您的浏览器不支持HTML5视频播放请升级浏览器 您的浏览器不支持HTML5视频播放请升级浏览器
</video> </video>
<!-- 播放图标 -->
<button class="video-play-btn">
<span class="play-icon">
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="12" cy="12" r="10" fill="rgba(0,0,0,0.5)" />
<path d="M9 7L16 12L9 17V7Z" fill="white" />
</svg>
</span>
<!-- 暂停图标(默认隐藏) -->
<span class="pause-icon">
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="12" cy="12" r="10" fill="rgba(0,0,0,0.5)" />
<rect x="8" y="7" width="3" height="10" fill="white" />
<rect x="13" y="7" width="3" height="10" fill="white" />
</svg>
</span>
</button>
</div> </div>
{/notempty} {/notempty}
</div> </div>
@@ -380,8 +465,7 @@
maskContent.appendChild(scrollContent); maskContent.appendChild(scrollContent);
} }
function createCloseBtn() {
function createCloseBtn() {
if (closeBtnHtml) { if (closeBtnHtml) {
closeBtnHtml.remove(); closeBtnHtml.remove();
} }
@@ -484,71 +568,136 @@
}, },
{ passive: false } { passive: false }
); // passive: false 必须,否则 preventDefault 无效 ); // passive: false 必须,否则 preventDefault 无效
document.addEventListener('DOMContentLoaded', () => {
// 初始化所有视频容器
function initVideoContainers() {
const productRights = document.querySelectorAll('.product-right');
const allVideos = document.querySelectorAll('.right-video'); productRights.forEach((container, index) => {
let scrollTimer = null; // 防抖定时器 const video = container.querySelector('.right-video');
// 停止所有视频播放 const btn = container.querySelector('.video-play-btn');
function stopAllVideos() { const img = container.querySelector('.right-img');
allVideos.forEach((video) => { if (!video || !btn || !img) return;
video.pause(); const videoSrc = video.src.trim()
video.style.display = 'none'; // 修复:正确检测有效视频地址
// 显示对应图片 // 排除空字符串、null、undefined
const img = video.parentElement.querySelector('.right-img'); const hasValidVideo = !!videoSrc && videoSrc.trim() !== '' && videoSrc !== 'undefined' && videoSrc !== 'null';
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(); // 初始化状态:无视频则保持图片显示,永不切换
// 视口判断容器进入视口50%以上视为活跃 if (!hasValidVideo) {
const isInView =
rect.top < window.innerHeight * 0.7 &&
rect.bottom > window.innerHeight * 0.3;
if (isInView) {
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'; img.style.display = 'block';
video.style.display = 'none';
btn.style.display = 'none';
// 绑定空方法,防止调用报错
video.switchMedia = function() {};
console.log(`容器${index}:无有效视频(src="${videoSrc}"),保持图片显示`);
return;
}
// 有有效视频的情况
console.log(`容器${index}:有有效视频(src="${videoSrc}"),初始化播放逻辑`);
// 初始状态
video.style.display = 'none';
video.pause();
img.style.display = 'block';
btn.style.display = 'none';
btn.style.opacity = '0';
// 同步状态函数
function syncMediaState() {
if (img.style.display === 'block') {
btn.style.display = 'none';
btn.style.opacity = '0';
} else {
btn.style.display = 'block';
btn.style.opacity = '1';
btn.classList.toggle('paused', !video.paused && !video.ended);
}
}
// 按钮点击事件
btn.addEventListener('click', () => {
if (video.paused) {
video.play().catch(() => syncMediaState());
} else {
video.pause();
}
syncMediaState();
}); });
}
} else { // 视频事件监听
stopAllVideos(); // 无活跃视频时停止所有播放 ['play', 'pause', 'ended', 'playing', 'waiting'].forEach(event => {
video.addEventListener(event, syncMediaState);
});
// 滚动切换函数
video.switchMedia = function(showVideo) {
// 只处理有有效视频的情况
if (showVideo) {
img.style.display = 'none';
video.style.display = 'block';
video.play().catch(() => {
console.log(`容器${index}:自动播放失败,需要用户交互`);
syncMediaState();
});
} else {
video.pause();
img.style.display = 'block';
video.style.display = 'none';
}
syncMediaState();
};
// 初始同步
syncMediaState();
});
} }
}
// 滚动事件添加防抖移动端推荐100-200ms延迟 // 滚动监听 - 优化版
window.addEventListener('scroll', function () { function setupScrollWatcher() {
// 清除上一次的定时器 let ticking = false;
clearTimeout(scrollTimer);
// 滚动停止后150ms再执行核心逻辑 function updateVideoVisibility() {
scrollTimer = setTimeout(handleVideoActive, 150); const productRights = document.querySelectorAll('.product-right');
});
productRights.forEach(container => {
const video = container.querySelector('.right-video');
if (!video || !video.switchMedia) return;
// 检查是否在视口中
const rect = container.getBoundingClientRect();
const viewHeight = window.innerHeight || document.documentElement.clientHeight;
const isInView = rect.top < viewHeight * 0.7 && rect.bottom > viewHeight * 0.3;
// 只对有有效视频的元素调用switchMedia
video.switchMedia(isInView);
});
ticking = false;
}
// 使用requestAnimationFrame优化性能
window.addEventListener('scroll', () => {
if (!ticking) {
requestAnimationFrame(updateVideoVisibility);
ticking = true;
}
});
}
// 初始化
initVideoContainers();
setupScrollWatcher();
// 初始检查一次
setTimeout(() => {
const event = new Event('scroll');
window.dispatchEvent(event);
}, 300);
});
window.onload = function () { window.onload = function () {
if (typeof Swiper === 'undefined') { if (typeof Swiper === 'undefined') {
console.error('Swiper加载失败请刷新页面重试'); console.error('Swiper加载失败请刷新页面重试');

View File

@@ -142,7 +142,7 @@
<div class="product-container"> <div class="product-container">
{assign name="hc_first_section_lf" value=":array_shift($data.home_charger)" /} {assign name="hc_first_section_lf" value=":array_shift($data.home_charger)" /}
{notempty name="hc_first_section_lf"} {notempty name="hc_first_section_lf"}
<a class="product-left" href="{$tc_first_section_lf.link}"> <a class="product-left" href="{$hc_first_section_lf.link}">
<img src="{$hc_first_section_lf.image}" alt="{$hc_first_section_lf.title}" class="product-img"> <img src="{$hc_first_section_lf.image}" alt="{$hc_first_section_lf.title}" class="product-img">
<!-- 公共类+定位类:尺寸统一,定位不同 --> <!-- 公共类+定位类:尺寸统一,定位不同 -->
<div class="product-img-hover product-img-1"> <div class="product-img-hover product-img-1">
@@ -165,7 +165,7 @@
<div class="product-card-box"> <div class="product-card-box">
<div class="product-card-container"> <div class="product-card-container">
{volist name="hc_second_section" id="hcs"} {volist name="hc_second_section" id="hcs"}
<a class="product-card-wrap" href="{$tss.link}"> <a class="product-card-wrap" href="{$hcs.link}">
<div class="product-card" href="#"> <div class="product-card" href="#">
<div class="product-card-img"> <div class="product-card-img">
<img src="{$hcs.image}" alt="{$hcs.short_title}"> <img src="{$hcs.image}" alt="{$hcs.short_title}">
@@ -203,7 +203,7 @@
<div class="product-container"> <div class="product-container">
{assign name="dc_first_section_lf" value=":array_shift($data.desktop_charger)" /} {assign name="dc_first_section_lf" value=":array_shift($data.desktop_charger)" /}
{notempty name="dc_first_section_lf"} {notempty name="dc_first_section_lf"}
<a class="product-left" href="{$tc_first_section_lf.link}"> <a class="product-left" href="{$dc_first_section_lf.link}">
<img src="{$dc_first_section_lf.image}" alt="{$dc_first_section_lf.short_title}" class="product-img"> <img src="{$dc_first_section_lf.image}" alt="{$dc_first_section_lf.short_title}" class="product-img">
<!-- 公共类+定位类:尺寸和第一个完全一致,仅定位不同 --> <!-- 公共类+定位类:尺寸和第一个完全一致,仅定位不同 -->
<div class="product-img-hover product-img-2" > <div class="product-img-hover product-img-2" >

View File

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

View File

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

View File

@@ -9,23 +9,22 @@
width: 100%; width: 100%;
margin: 0 auto; margin: 0 auto;
display: flex; display: flex;
flex-wrap: nowrap; flex-wrap: wrap; /* 修改为可换行 */
overflow: hidden; overflow: visible; /* 改为可见,显示所有内容 */
/* 关键修改1增大间距值原 clamp(0.3rem, 0.5vw, 0.36rem) → 现在放大2倍左右 */
gap: clamp(0.6rem, 1vw, 0.8rem); gap: clamp(0.6rem, 1vw, 0.8rem);
padding: 0; /* 保持无内边距,避免间距叠加 */ padding: 0;
} }
/* 新增:外层容器(承载圆角、阴影、尺寸,避免缩放时圆角丢失) */ /* 新增:外层容器(承载圆角、阴影、尺寸,避免缩放时圆角丢失) */
.product-card-wrap { .product-card-wrap {
/* 原卡片的宽度计算逻辑移到外层 */
width: calc(25% - (clamp(0.6rem, 1vw, 0.8rem) * 3 / 4)); width: calc(25% - (clamp(0.6rem, 1vw, 0.8rem) * 3 / 4));
flex: none; flex: none;
border-radius: clamp(0.375rem, 1vw, 0.5rem); /* 外层承载圆角 */ border-radius: clamp(0.375rem, 1vw, 0.5rem);
overflow: hidden; /* 裁剪内层缩放的卡片 */ 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); /* 外层承载阴影 */ 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; position: relative;
z-index: 1; z-index: 1;
margin-bottom: clamp(1rem, 2vw, 1.5rem); /* 添加底部间距 */
} }
/* ######################################################################### */ /* ######################################################################### */
@@ -35,38 +34,39 @@
/* 卡片容器:移动端特有 */ /* 卡片容器:移动端特有 */
.product-card-container { .product-card-container {
align-items: stretch; align-items: stretch;
justify-content: flex-start; /* 左对齐 */
} }
/* 外层容器移动端适配:宽高比移到外层 */ /* 外层容器移动端适配:一行2个 */
.product-card-wrap { .product-card-wrap {
width: calc(50% - (clamp(0.6rem, 1vw, 0.8rem) * 1 / 2));
aspect-ratio: 3 / 4.2; aspect-ratio: 3 / 4.2;
} }
/* 卡片核心:移动端调整移除圆角、阴影添加will-change */ /* 卡片核心:移动端调整 */
.product-card { .product-card {
background: rgb(242, 243, 245); background: rgb(242, 243, 245);
cursor: pointer; cursor: pointer;
width: 100%; /* 内层卡片占满外层容器 */ width: 100%;
height: 100%; height: 100%;
flex: none; flex: none;
margin: 0; /* 保持无margin间距由gap控制 */ margin: 0;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
will-change: transform; /* 优化渲染,避免圆角异常 */ will-change: transform;
} }
/* 卡片hover效果:移动端特有 */ /* 卡片hover效果 */
.product-card:hover { .product-card:hover {
transform: scale(clamp(1.01, 1.02, 1.03)); transform: scale(clamp(1.01, 1.02, 1.03));
transition: transform 0.3s ease; transition: transform 0.3s ease;
} }
/* 外层容器hover增强阴影更自然的浮起效果 */
.product-card-wrap: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); 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 { .product-card-img {
display: flex; display: flex;
justify-content: center; justify-content: center;
@@ -78,7 +78,7 @@
border-radius: clamp(0.2rem, 0.4vw, 0.25rem); border-radius: clamp(0.2rem, 0.4vw, 0.25rem);
} }
/* 产品图片:移动端特有 */ /* 产品图片 */
.product-card img { .product-card img {
width: 100%; width: 100%;
height: 100%; height: 100%;
@@ -86,51 +86,51 @@
object-position: center; 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); padding-right: clamp(0.8rem, 2vw, 1.5rem);
} }
/* 标题样式:移动端特有 */ /* 标题样式 */
.product-card-title { .product-card-title {
font-size: clamp(0.8rem, 1.3vw, 1.2rem); font-size:clamp(0.8rem, 1.3vw, 1.9rem);
font-weight: 600; font-weight: 600;
color: #333; color: #333;
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
height: 35%; /* height: 35%; */
line-height: 1.2; /* line-height: 1.2; */
} }
/* 描述样式移动端固定2行高度 */ /* 描述样式 */
.product-card-desc { .product-card-desc {
font-size: clamp(0.7rem, 1.1vw, 0.9rem); font-size: clamp(0.8rem, 1.3vw, 1.5rem);
color: #656565; color: #656565;
word-break: break-word; word-break: break-word;
height: 65%; /* height: 65%; */
overflow: hidden; overflow: hidden;
display: -webkit-box; display: -webkit-box;
-webkit-line-clamp: 2; -webkit-line-clamp: 2;
padding-top:clamp(0.4rem, 3vw, 0.6rem);
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
line-height: 1.4;
} }
/* 链接图标容器:移动端固定占比 */ /* 链接图标容器 */
.product-card-link { .product-card-link {
width: 100%; width: 100%;
display: flex; display: flex;
align-items: center; align-items: center;
flex: 0 0 10%; flex: 1;
padding: clamp(0.8rem, 2vw, 1.5rem); padding-left: clamp(0.8rem, 2vw, 1.5rem);
} }
/* 链接图标:移动端特有 */ /* 链接图标 */
.product-card-link img { .product-card-link img {
width: clamp(2.5rem, 5vw, 4.5rem); width: clamp(2.5rem, 5vw, 4.5rem);
height: auto; height: auto;
@@ -153,45 +153,47 @@
/* PC端样式单独配置min-width: 1024px- 后续修改仅改这里 */ /* PC端样式单独配置min-width: 1024px- 后续修改仅改这里 */
/* ######################################################################### */ /* ######################################################################### */
@media (min-width: 1024px) { @media (min-width: 1024px) {
/* 卡片容器PC端特有(高度自适应) */ /* 卡片容器PC端特有 */
.product-card-container { .product-card-container {
align-items: stretch; align-items: stretch;
height: clamp(30vw, 35vw, 480px); height: clamp(30vw, 35vw, 480px);
/* 关键修改3PC端同步增大gap间距与通用容器一致 */
gap: clamp(0.6rem, 1vw, 0.8rem); gap: clamp(0.6rem, 1vw, 0.8rem);
padding: 0; padding: 0;
flex-wrap: nowrap; /* PC端保持不换行 */
overflow: hidden; /* PC端隐藏溢出 */
} }
/* 外层容器PC端适配:高度占满容器 */ /* 外层容器PC端适配 */
.product-card-wrap { .product-card-wrap {
width: calc(25% - (clamp(0.6rem, 1vw, 0.8rem) * 3 / 4));
height: 100%; height: 100%;
margin-bottom: 0; /* PC端移除底部间距 */
} }
/* 卡片核心PC端调整移除圆角、阴影添加will-change */ /* 卡片核心 */
.product-card { .product-card {
background: rgb(242, 243, 245); background: rgb(242, 243, 245);
cursor: pointer; cursor: pointer;
width: 100%; /* 内层卡片占满外层容器 */ width: 100%;
height: 100%; height: 100%;
flex: none; flex: none;
margin: 0; /* 保持无margin */ margin: 0;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
will-change: transform; /* 优化渲染,避免圆角异常 */ will-change: transform;
} }
/* 卡片hover效果PC端特有 */ /* 卡片hover效果 */
.product-card:hover { .product-card:hover {
transform: scale(clamp(1.01, 1.02, 1.03)); transform: scale(clamp(1.01, 1.02, 1.03));
transition: transform 0.3s ease; transition: transform 0.3s ease;
} }
/* 外层容器hover增强阴影 */
.product-card-wrap: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); 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 { .product-card-img {
display: flex; display: flex;
justify-content: center; justify-content: center;
@@ -203,7 +205,7 @@
border-radius: clamp(0.2rem, 0.4vw, 0.25rem); border-radius: clamp(0.2rem, 0.4vw, 0.25rem);
} }
/* 产品图片PC端特有 */ /* 产品图片 */
.product-card img { .product-card img {
width: 100%; width: 100%;
height: 100%; height: 100%;
@@ -211,17 +213,17 @@
object-position: center; object-position: center;
} }
/* 文字容器PC端固定占比 */ /* 文字容器 */
.product-card-text { .product-card-text {
flex: 0 0 15%; flex: 0 0 15%;
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);
padding-right: clamp(0.8rem, 2vw, 1.5rem); padding-right: clamp(0.8rem, 2vw, 1.5rem);
} }
/* 标题样式PC端特有 */ /* 标题样式 */
.product-card-title { .product-card-title {
font-size: clamp(0.8rem, 1.3vw, 1.2rem); font-size: clamp(0.8rem, 1.3vw, 1.2rem);
font-weight: 600; font-weight: 600;
@@ -234,7 +236,7 @@
align-items: center; align-items: center;
} }
/* 描述样式PC端固定2行高度 */ /* 描述样式 */
.product-card-desc { .product-card-desc {
font-size: clamp(0.7rem, 1.1vw, 0.9rem); font-size: clamp(0.7rem, 1.1vw, 0.9rem);
color: #656565; color: #656565;
@@ -246,16 +248,16 @@
line-height: 1.4; line-height: 1.4;
} }
/* 链接图标容器PC端固定占比 */ /* 链接图标容器 */
.product-card-link { .product-card-link {
width: 100%; width: 100%;
flex: 0 0 12%; flex: 0 0 12%;
padding-left: clamp(0.8rem, 2vw, 1.5rem); padding-left: clamp(0.8rem, 2vw, 1.5rem);
display: flex; /* 补充display: flex确保图标垂直居中 */ display: flex;
align-items: center; align-items: center;
} }
/* 链接图标PC端特有 */ /* 链接图标 */
.product-card-link img { .product-card-link img {
width: clamp(2.5rem, 5vw, 4.5rem); width: clamp(2.5rem, 5vw, 4.5rem);
height: auto; height: auto;

View File

@@ -1,20 +1,25 @@
/* 核心模块固定90%宽度PC端优化移动端边距 */ /* 核心模块固定90%宽度PC端优化移动端边距 */
.advantage-section { .advantage-section {
width: 90%; /* width: 80%; */
margin: 0 auto; margin: 0 auto;
padding: 2rem 0;
position: relative; position: relative;
z-index: 1; z-index: 1;
max-width: 1690px;
padding-bottom: 105px;
/* padding-left: 115px; */
} }
/* 标题容器:恢复原有居中样式 */ /* 标题容器:恢复原有居中样式 */
.advantage-section__title { .advantage-section__title {
font-size: clamp(1.5rem, 3vw, 2rem); font-size: 50px;
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); */
padding-top: 55px;
padding-bottom: 65px;
} }
/* 列表容器优化gap确保移动端5列不溢出 */ /* 列表容器优化gap确保移动端5列不溢出 */
@@ -32,8 +37,10 @@
/* 新增:卡片外层容器(专门控制圆角,避免缩放时丢失) */ /* 新增:卡片外层容器(专门控制圆角,避免缩放时丢失) */
.advantage-card-wrap { .advantage-card-wrap {
flex: 0 0 calc((100% - 4 * clamp(0.1rem, 0.3vw, 0.8rem)) / 5); 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); /* 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); max-width: calc((100% - 4 * clamp(0.1rem, 0.3vw, 0.8rem)) / 5); */
width: 330px;
height:470px;
border-radius: 0.5rem; /* 外层容器承担圆角 */ border-radius: 0.5rem; /* 外层容器承担圆角 */
overflow: hidden; /* 裁剪内部缩放的卡片 */ overflow: hidden; /* 裁剪内部缩放的卡片 */
box-shadow: 0 0.125rem 0.5rem rgba(0, 0, 0, 0.1); /* 阴影移到外层,避免缩放时阴影变形 */ box-shadow: 0 0.125rem 0.5rem rgba(0, 0, 0, 0.1); /* 阴影移到外层,避免缩放时阴影变形 */
@@ -97,7 +104,7 @@
/* 卡片标题:居左显示 */ /* 卡片标题:居左显示 */
.advantage-card__heading { .advantage-card__heading {
font-size: clamp(0.85rem, 1.5vw, 1.4rem); font-size: 30px;
/* 比原尺寸放大PC端更醒目移动端自适应 */ /* 比原尺寸放大PC端更醒目移动端自适应 */
font-weight: 600; font-weight: 600;
color: #333; color: #333;
@@ -114,7 +121,7 @@
/* 箭头尺寸跟随标题放大,避免不协调 */ /* 箭头尺寸跟随标题放大,避免不协调 */
transition: transform 0.3s ease; transition: transform 0.3s ease;
display: inline-block; display: inline-block;
width: 16px; width: 32px;
/* 箭头宽度同步增加 */ /* 箭头宽度同步增加 */
text-align: center; text-align: center;
} }
@@ -126,7 +133,7 @@
/* 描述文字:水平+垂直居中,与标题容器对齐(仅添加最小高度修复对齐问题) */ /* 描述文字:水平+垂直居中,与标题容器对齐(仅添加最小高度修复对齐问题) */
.advantage-card__description { .advantage-card__description {
font-size: clamp(0.6rem, 0.9vw, 0.9rem); font-size: 22px;
/* PC端描述文字略放大 */ /* PC端描述文字略放大 */
color: #666; color: #666;
line-height: 1.2; line-height: 1.2;
@@ -145,6 +152,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: left; justify-content: left;
margin-top:clamp(10px, 0.9vw, 30px)
} }
/* 卡片hover效果仅保留缩放阴影移到外层 */ /* 卡片hover效果仅保留缩放阴影移到外层 */
@@ -191,15 +199,19 @@
} }
.advantage-card__img { .advantage-card__img {
height: 62%; width: 330px;
height:330px;
/* height: 62%; */
/* 移动端图片占比回到62% */ /* 移动端图片占比回到62% */
} }
.advantage-card__content { .advantage-card__content {
/* width: 330px;
height:150px; */
height: 38%; height: 38%;
/* 移动端文字区域占比回到38% */ /* 移动端文字区域占比回到38% */
padding: 0.2rem 0.15rem; /* padding: 0.2rem 0.15rem;
gap: 6px; gap: 6px; */
/* 移动端间距略大,易读性更好 */ /* 移动端间距略大,易读性更好 */
} }

View File

@@ -43,7 +43,8 @@ a {
margin: 0 auto; margin: 0 auto;
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
padding-top: clamp(1.5rem, 3vw, 3rem); padding: 40px 0;
/* padding-top: clamp(1.5rem, 3vw, 3rem); */
} }
.more-img { .more-img {
background: #000; background: #000;

View File

@@ -1,96 +1,83 @@
.nav-box { .nav-box {
display: flex; display: flex;
justify-content: space-around; justify-content: space-between; /* 两端对齐紧贴父容器padding */
width: 90%; width: 90%;
/* 平板/PC端限制最大宽度 */ max-width: 1700px;
margin: 0 auto; margin: 0 auto;
background-color: #fff; background-color: #fff;
border-radius: 3.125rem; border-radius:70px;
/* 50px→3.125rem */
box-shadow: 0 0.125rem 0.9375rem rgba(0, 0, 0, 0.05); box-shadow: 0 0.125rem 0.9375rem rgba(0, 0, 0, 0.05);
/* 2px→0.125rem15px→0.9375rem */
position: relative; position: relative;
z-index: 1; z-index: 1;
padding: 0.625rem 0; margin-top: 170px;
/* 10px→0.625rem(原内边距不变) */ margin-bottom: 78px;
overflow: visible; overflow: visible;
padding-left: clamp(20px, 12vw, 238px);
padding-right: clamp(20px, 12vw, 238px);
} }
.nav-item { .nav-item {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
gap: 0.625rem;
/* 10px→0.625rem */
cursor: pointer; cursor: pointer;
padding: 0.625rem 0 1.25rem;
/* 10px→0.625rem20px→1.25rem */
position: relative; position: relative;
z-index: 2; z-index: 2;
flex: 1; flex: 0 0 auto; /* 宽度由内容决定 */
min-width: 3rem; width: fit-content; /* 关键:宽度等于内容宽度 */
/* 48px→3rem适配14px根字体 */ padding-bottom: 35px;
max-width: 5rem;
/* 80px→5rem */
text-align: center; text-align: center;
/* 可选:添加左右内边距,避免内容贴边 */
/* padding: 0 0.5rem; */
}
/* 可选如果需要第一个和最后一个元素完全贴紧父容器padding移除它们的左右内边距 */
.nav-item:first-child {
padding-left: 0;
}
.nav-item:last-child {
padding-right: 0;
} }
.nav-item img { .nav-item img {
width: 4rem; width: 9rem;
height: 4rem; height:9rem;
/* 60px→3.75rem16px基准14px根字体下≈52.5px,仍清晰 */
object-fit: contain; object-fit: contain;
border-radius: 0.75rem; border-radius: 0.75rem;
/* 12px→0.75rem */ margin-top: -70px;
position: absolute;
top: -3.125rem;
/* -50px→-3.125rem14px根字体下≈43.75px,超出效果不变) */
transform: translateY(0.625rem); transform: translateY(0.625rem);
/* 10px→0.625rem */
transition: transform 0.3s ease, box-shadow 0.3s ease; transition: transform 0.3s ease, box-shadow 0.3s ease;
} }
.nav-item:hover img { .nav-item:hover img {
transform: translateY(0.3125rem); transform: translateY(0.3125rem);
/* 5px→0.3125rem */
} }
.nav-item:active img { .nav-item:active img {
transform: translateY(0.4375rem); transform: translateY(0.4375rem);
/* 7px→0.4375rem */
box-shadow: 0 0.125rem 0.5rem rgba(0, 0, 0, 0.06); box-shadow: 0 0.125rem 0.5rem rgba(0, 0, 0, 0.06);
} }
/* 关键文字单独控制确保最小12px */
.nav-item p { .nav-item p {
margin: 0; margin: 0;
/* PC端15px→0.9375rem16px根字体 */ font-size: 30px;
font-size: 0.9375rem;
color: #37373e; color: #37373e;
font-weight: 500; font-weight: 500;
position: relative;
z-index: 3;
top: 1.125rem;
/* 18px→1.125rem */
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
padding: 0 0.125rem;
} }
/* 平板端文字14px→0.9375rem15px根字体下=14px */ /* 平板端文字 */
@media (max-width: 1023px) and (min-width: 768px) { @media (max-width: 1023px) and (min-width: 768px) {
.nav-item p { .nav-item p {
font-size: 0.9375rem; font-size: 0.9375rem;
} }
} }
/* 移动端文字强制12px用px兜底避免rem计算后过小 */ /* 移动端文字 */
@media (max-width: 767px) { @media (max-width: 767px) {
.nav-item p { .nav-item p {
font-size: 12px;
/* 直接用px固定最小尺寸优先级最高 */
font-size: clamp(12px, 0.857rem, 0.9375rem); font-size: clamp(12px, 0.857rem, 0.9375rem);
/* 增强版最小12px默认0.857rem14px根字体下≈12px最大0.9375rem */
} }
} }

View File

@@ -1,24 +1,34 @@
.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%;
max-width: 1690px;
margin: 0 auto; margin: 0 auto;
padding-bottom: clamp(1.5rem, 3vw, 3rem);
} }
.product-title-h2 { .product-title-h2 {
font-size: clamp(1.5rem, 3vw, 2.25rem); /* 字体大小小屏最小30px大屏最大50px中间按视口宽度自适应 */
/* padding-top: clamp(1.5rem, 3vw, 3rem); */ font-size: clamp(30px, 4vw, 50px);
/* 顶部内边距小屏最小80px大屏最大160px自适应缩放 */
padding-top: clamp(80px, 10vw, 160px);
/* 底部内边距小屏最小15px大屏最大30px自适应缩放 */
padding-bottom: clamp(15px, 2vw, 30px);
/* 可选:限制最大宽度并居中,优化大屏显示 */
max-width: 1690px;
margin: 0 auto;
} }
.product-title-p { .product-title-p {
font-size: clamp(0.875rem, 1.5vw, 1.125rem); /* max-width: 1690px; */
font-size: clamp(16px, 2vw, 32px);
color: #646464; color: #646464;
margin-top: clamp(0.5rem, 1vw, 0.75rem); padding-bottom: clamp(40px, 6vw, 110px);
/* margin: 0 auto; */
} }
/* 容器布局:两个产品通用 */ /* 容器布局:两个产品通用 */
@@ -94,7 +104,8 @@
left: 0; left: 0;
width: 100%; width: 100%;
height: 100%; height: 100%;
object-fit: cover; object-fit: contain;
object-position: center; /* 内容居中显示(默认值) */
transition: opacity 0.3s ease; transition: opacity 0.3s ease;
} }
@@ -106,6 +117,7 @@
@media (min-width: 1024px) { @media (min-width: 1024px) {
.product-container { .product-container {
width: 90%; width: 90%;
max-width: 1690px;
} }
.product-left { .product-left {

View File

@@ -14,10 +14,12 @@
flex: 1 1 50%; flex: 1 1 50%;
/* 一行2个 */ /* 一行2个 */
min-width: 180px; min-width: 180px;
max-width: 836px;
max-height:530px;
/* 保证图片显示 */ /* 保证图片显示 */
/* max-width: calc(50% - 10px); */ /* max-width: calc(50% - 10px); */
/* 适配gap */ /* 适配gap */
height: 240px; /* height: 240px; */
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
display: flex; display: flex;
text-decoration: none; text-decoration: none;
@@ -51,7 +53,7 @@
/* 标题:超出一行显示省略号(左对齐) */ /* 标题:超出一行显示省略号(左对齐) */
.product-card-title2 { .product-card-title2 {
font-size: clamp(12px, 2vw, 18px); font-size:clamp(0.8rem, 1.3vw, 1.9rem);
font-weight: 600; font-weight: 600;
color: #333; color: #333;
margin-bottom: 5px; margin-bottom: 5px;
@@ -66,9 +68,10 @@
/* 描述超出2行显示省略号左对齐 */ /* 描述超出2行显示省略号左对齐 */
.product-card-desc2 { .product-card-desc2 {
font-size: clamp(12px, 1.8vw, 14px); font-size: clamp(1rem, 1.3vw, 1.5rem);
color: #656565; color: #656565;
margin-bottom: 15px; margin-top: clamp(12px,1vw, 15px);
margin-bottom: clamp(20px,1vw, 50px);
letter-spacing: 0.1px; letter-spacing: 0.1px;
/* 超出2行显示省略号核心样式 */ /* 超出2行显示省略号核心样式 */
display: -webkit-box; display: -webkit-box;
@@ -85,20 +88,24 @@
/* 图片容器:确保移动端显示 */ /* 图片容器:确保移动端显示 */
.product-card-img2 { .product-card-img2 {
flex: 1; /* flex: 1; */
display: flex; /* display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
min-width: 70px; min-width: 70px; */
flex:1;
max-width: 510px;
max-height:510px ;
/* 强制保留图片区域,避免被挤压 */ /* 强制保留图片区域,避免被挤压 */
} }
.product-card-img2 img { .product-card-img2 img {
width: 100%; width: 100%;
height: auto; height: auto;
max-height: 144px; object-fit: contain
min-height: 80px; /* object-fit: contain;
object-fit: contain; max-width: 510px;
max-width: 510px; */
/* 保持图片比例完整,不拉伸 */ /* 保持图片比例完整,不拉伸 */
} }
@@ -111,8 +118,9 @@
} }
.product-card-link2 img { .product-card-link2 img {
width: clamp(60px, 4vw, 76px); width: clamp(2.5rem, 5vw, 4.5rem);
margin: 0; height: auto;
object-fit: contain;
/* 清除居中margin */ /* 清除居中margin */
} }

View File

@@ -1,8 +1,11 @@
/* 容器布局:通用基础样式(仅宽度、外边距,不涉及高度) */ /* 容器布局:通用基础样式(仅宽度、外边距,不涉及高度) */
.product-card-box { .product-card-box {
width: 90%; width: 90%;
margin: clamp(1rem, 2vw, 1.5rem) auto 0; /* margin: clamp(1rem, 2vw, 1.5rem) auto 0; */
padding: 0; margin:0 auto;
padding-top: 40px;
max-width: 1690px;
padding-bottom:45px;
} }
.product-card-container { .product-card-container {
@@ -12,20 +15,23 @@
flex-wrap: nowrap; flex-wrap: nowrap;
overflow: hidden; overflow: hidden;
/* 关键修改1增大间距值原 clamp(0.3rem, 0.5vw, 0.36rem) → 现在放大2倍左右 */ /* 关键修改1增大间距值原 clamp(0.3rem, 0.5vw, 0.36rem) → 现在放大2倍左右 */
gap: clamp(0.6rem, 1vw, 0.8rem); /* gap: clamp(0.6rem, 1vw, 0.8rem); */
padding: 0; /* 保持无内边距,避免间距叠加 */ padding: 0; /* 保持无内边距,避免间距叠加 */
max-width: 1690px;
} }
/* 新增:外层容器(承载圆角、阴影、尺寸,避免缩放时圆角丢失) */ /* 新增:外层容器(承载圆角、阴影、尺寸,避免缩放时圆角丢失) */
.product-card-wrap { .product-card-wrap {
/* 原卡片的宽度计算逻辑移到外层 */ /* 原卡片的宽度计算逻辑移到外层 */
width: calc(25% - (clamp(0.6rem, 1vw, 0.8rem) * 3 / 4)); width: calc(25% - (clamp(0.6rem, 1vw, 0.8rem) * 3 / 4));
flex: none; flex: 1;
border-radius: clamp(0.375rem, 1vw, 0.5rem); /* 外层承载圆角 */ border-radius: clamp(0.375rem, 1vw, 0.5rem); /* 外层承载圆角 */
overflow: hidden; /* 裁剪内层缩放的卡片 */ 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); /* 外层承载阴影 */ 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; position: relative;
z-index: 1; z-index: 1;
max-width: 410px;
max-height: 560px;
} }
/* ######################################################################### */ /* ######################################################################### */
@@ -33,6 +39,7 @@
/* ######################################################################### */ /* ######################################################################### */
@media (max-width: 1023px) { @media (max-width: 1023px) {
/* 卡片容器:移动端特有 */ /* 卡片容器:移动端特有 */
.product-card-container { .product-card-container {
align-items: stretch; align-items: stretch;
} }
@@ -160,11 +167,17 @@
/* 关键修改3PC端同步增大gap间距与通用容器一致 */ /* 关键修改3PC端同步增大gap间距与通用容器一致 */
gap: clamp(0.6rem, 1vw, 0.8rem); gap: clamp(0.6rem, 1vw, 0.8rem);
padding: 0; padding: 0;
max-width: 1690px;
display: flex;
justify-content: space-between;
} }
/* 外层容器PC端适配高度占满容器 */ /* 外层容器PC端适配高度占满容器 */
.product-card-wrap { .product-card-wrap {
height: 100%; height: 100%;
max-width: 410px;
max-height: 560px;
flex:1
} }
/* 卡片核心PC端调整移除圆角、阴影添加will-change */ /* 卡片核心PC端调整移除圆角、阴影添加will-change */
@@ -178,6 +191,8 @@
display: flex; display: flex;
flex-direction: column; flex-direction: column;
will-change: transform; /* 优化渲染,避免圆角异常 */ will-change: transform; /* 优化渲染,避免圆角异常 */
max-width: 410px;
max-height: 560px;
} }
/* 卡片hover效果PC端特有 */ /* 卡片hover效果PC端特有 */
@@ -201,6 +216,8 @@
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);
max-width: 410px;
max-height: 350px;
} }
/* 产品图片PC端特有 */ /* 产品图片PC端特有 */
@@ -213,17 +230,16 @@
/* 文字容器PC端固定占比 */ /* 文字容器PC端固定占比 */
.product-card-text { .product-card-text {
flex: 0 0 15%; /* flex: 0 0 15%; */
display: flex; /* 补充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(1.5rem, 2vw, 3rem);
padding-right: clamp(0.8rem, 2vw, 1.5rem);
} }
/* 标题样式PC端特有 */ /* 标题样式PC端特有 clamp(0.8rem, 1.3vw, 1.5rem);*/
.product-card-title { .product-card-title {
font-size: clamp(0.8rem, 1.3vw, 1.2rem); font-size:clamp(0.8rem, 1.3vw, 1.9rem);
font-weight: 600; font-weight: 600;
color: #333; color: #333;
white-space: nowrap; white-space: nowrap;
@@ -234,25 +250,28 @@
align-items: center; align-items: center;
} }
/* 描述样式PC端固定2行高度 */ /* 描述样式PC端固定2行高度 clamp(0.7rem, 1.1vw, 0.9rem);*/
.product-card-desc { .product-card-desc {
font-size: clamp(0.7rem, 1.1vw, 0.9rem); font-size: clamp(1rem, 1.3vw, 1.5rem);
color: #656565; color: #656565;
word-break: break-word; word-break: break-word;
overflow: hidden; overflow: hidden;
display: -webkit-box; display: -webkit-box;
-webkit-line-clamp: 2; -webkit-line-clamp: 2;
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
line-height: 1.4; padding-top:clamp(0.4rem, 3vw, 0.9rem) ;
} }
/* 链接图标容器PC端固定占比 */ /* 链接图标容器PC端固定占比 */
.product-card-link { .product-card-link {
width: 100%; width: 100%;
flex: 0 0 12%; flex: 1;
padding-left: clamp(0.8rem, 2vw, 1.5rem); padding-left: clamp(1.5rem, 2vw, 3rem);
display: flex; /* 补充display: flex确保图标垂直居中 */ display: flex;
align-items: center; align-items: center;
/* 1rem=16px3.125rem=50px */
/* padding-top: clamp(1rem, 2vw, 3.125rem);
padding-bottom: clamp(1rem, 5vw, 3.125rem); */
} }
/* 链接图标PC端特有 */ /* 链接图标PC端特有 */