refactor: 专题 - 电力品线
All checks were successful
Gitea Actions Official-website / deploy-dev (push) Successful in 3s

This commit is contained in:
2025-11-25 17:36:09 +08:00
parent 7c87ea07ed
commit 7a987cd672
10 changed files with 741 additions and 719 deletions

View File

@@ -300,8 +300,10 @@
<a class="product-left" href="{$cts_lf.link}"> <a class="product-left" href="{$cts_lf.link}">
<img src="{$cts_lf.image}" alt="{$cts_lf.title}" class="product-img"> <img src="{$cts_lf.image}" alt="{$cts_lf.title}" class="product-img">
<!-- 公共类+定位类:尺寸统一,定位不同 --> <!-- 公共类+定位类:尺寸统一,定位不同 -->
<div class="product-img-hover product-img-1"> <!--style="display:flex;justify-content: center;"-->
<img src="{$cts_lf.extra_image}" alt="{$cts_lf.title}"> <div class="product-img-hover product-img-1" >
<!--style="width:70%"-->
<img src="{$cts_lf.extra_image}" alt="{$cts_lf.title}" >
</div> </div>
</a> </a>
{/notempty} {/notempty}
@@ -463,8 +465,9 @@
productRights.forEach((rightContainer) => { productRights.forEach((rightContainer) => {
const img = rightContainer.querySelector('.right-img'); const img = rightContainer.querySelector('.right-img');
const video = rightContainer.querySelector('.right-video'); const video = rightContainer.querySelector('.right-video');
const videoSrc = video.src.trim()
if (!img || !video) return; if (!img || !video) return;
if(!videoSrc) return;
const rect = rightContainer.getBoundingClientRect(); const rect = rightContainer.getBoundingClientRect();
// 视口判断容器进入视口50%以上视为活跃 // 视口判断容器进入视口50%以上视为活跃
const isInView = const isInView =

View File

@@ -194,7 +194,7 @@
<a class="product-left" href="{$tc_first_section_lf.link}"> <a class="product-left" href="{$tc_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" >
<img src="{$dc_first_section_lf.extra_image}" alt="{$dc_first_section_lf.short_title}"> <img src="{$dc_first_section_lf.extra_image}" alt="{$dc_first_section_lf.short_title}">
</div> </div>
</a> </a>
@@ -299,8 +299,10 @@
{notempty name="cts_lf"} {notempty name="cts_lf"}
<a class="product-left" href="{$cts_lf.link}"> <a class="product-left" href="{$cts_lf.link}">
<img src="{$cts_lf.image}" alt="{$cts_lf.title}" class="product-img"> <img src="{$cts_lf.image}" alt="{$cts_lf.title}" class="product-img">
<!-- 公共类+定位类:尺寸统一,定位不同 --> <!-- 公共类+定位类:尺寸统一,定位不同 -->
<div class="product-img-hover product-img-1"> <!--style="display:flex;justify-content: center;"-->
<div class="product-img-hover product-img-1" >
<!-- style="width:70%"-->
<img src="{$cts_lf.extra_image}" alt="{$cts_lf.title}"> <img src="{$cts_lf.extra_image}" alt="{$cts_lf.title}">
</div> </div>
</a> </a>
@@ -400,24 +402,24 @@
// 点击卡片显示详情 // 点击卡片显示详情
advantageItems.forEach((item) => { advantageItems.forEach((item) => {
item.addEventListener('click', (e) => { item.addEventListener('click', (e) => {
// 获取当前点击卡片内的.mack-conten-text元素 // 获取当前点击卡片内的.mack-conten-text元素
const currentMackContent = e.currentTarget.querySelector('.mack-conten-text'); const currentMackContent = e.currentTarget.querySelector('.mack-conten-text');
if (currentMackContent) { if (currentMackContent) {
// 关键修改获取该元素的子内容innerHTML 本身就是内部HTML不含当前元素标签 // 关键修改获取该元素的子内容innerHTML 本身就是内部HTML不含当前元素标签
// 若想更彻底,可遍历子节点拼接内容(兼容特殊场景) // 若想更彻底,可遍历子节点拼接内容(兼容特殊场景)
let contentHtml = ''; let contentHtml = '';
Array.from(currentMackContent.childNodes).forEach(child => { Array.from(currentMackContent.childNodes).forEach(child => {
// 只保留元素节点和文本节点(过滤空节点) // 只保留元素节点和文本节点(过滤空节点)
if (child.nodeType === 1 || child.nodeType === 3) { if (child.nodeType === 1 || child.nodeType === 3) {
contentHtml += child.outerHTML || child.textContent; contentHtml += child.outerHTML || child.textContent;
} }
}); });
// 显示蒙版并传入纯净的子内容 // 显示蒙版并传入纯净的子内容
showMask(contentHtml); showMask(contentHtml);
} }
});
}); });
});
// 关闭按钮事件 // 关闭按钮事件
closeBtn.addEventListener('click', hideMask); closeBtn.addEventListener('click', hideMask);
// 点击蒙版背景关闭(可选) // 点击蒙版背景关闭(可选)
@@ -463,8 +465,9 @@
productRights.forEach((rightContainer) => { productRights.forEach((rightContainer) => {
const img = rightContainer.querySelector('.right-img'); const img = rightContainer.querySelector('.right-img');
const video = rightContainer.querySelector('.right-video'); const video = rightContainer.querySelector('.right-video');
const videoSrc = video.src.trim()
if (!img || !video) return; if (!img || !video) return;
if(!videoSrc) return;
const rect = rightContainer.getBoundingClientRect(); const rect = rightContainer.getBoundingClientRect();
// 视口判断容器进入视口50%以上视为活跃 // 视口判断容器进入视口50%以上视为活跃
const isInView = const isInView =

View File

@@ -1,229 +1,231 @@
/* 核心模块固定90%宽度PC端优化移动端边距 */ /* 核心模块固定90%宽度PC端优化移动端边距 */
.advantage-section { .advantage-section {
width: 90%; width: 90%;
margin: 0 auto; margin: 0 auto;
padding: 4rem 0 3rem 0; padding: 4rem 0 3rem 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 { .advantage-card {
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);
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);
transition: transform 0.3s ease; transition: transform 0.3s ease;
cursor: pointer; cursor: pointer;
background: #fff; background: #fff;
position: relative; position: relative;
z-index: 1; z-index: 1;
aspect-ratio: 1 / 1.7; aspect-ratio: 1 / 1.7;
/* PC端卡片高度略缩短更紧凑 */ /* 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;
/* 箭头尺寸跟随标题放大,避免不协调 */ /* 箭头尺寸跟随标题放大,避免不协调 */
transition: transform 0.3s ease; transition: transform 0.3s ease;
display: inline-block; display: inline-block;
width: 24px; width: 24px;
/* 箭头宽度同步增加 */ /* 箭头宽度同步增加 */
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: #78787a;
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); */ /* box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.15); */
} }
/* 移动端适配 */ /* 移动端适配 */
@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.1rem;
} }
.advantage-card { .advantage-card {
aspect-ratio: 1 / 1.8; aspect-ratio: 1 / 1.8;
/* 移动端恢复更高的卡片高度 */ /* 移动端恢复更高的卡片高度 */
} }
.advantage-card__img { .advantage-card__img {
height: 62%; height: 62%;
/* 移动端图片占比回到62% */ /* 移动端图片占比回到62% */
} }
.advantage-card__content { .advantage-card__content {
height: 38%; height: 38%;
/* 移动端文字区域占比回到38% */ /* 移动端文字区域占比回到38% */
padding: 0.2rem 0.15rem; padding: 0.2rem 0.15rem;
gap: 6px; gap: 6px;
/* 移动端间距略大,易读性更好 */ /* 移动端间距略大,易读性更好 */
} }
/* 移动端标题容器宽度放宽 */ /* 移动端标题容器宽度放宽 */
.advantage-card__heading-wrap { .advantage-card__heading-wrap {
width: 90%; width: 90%;
} }
.advantage-card__description { .advantage-card__description {
line-height: 1.2; line-height: 1.2;
width: 90%; width: 90%;
-webkit-line-clamp: 2; -webkit-line-clamp: 2;
/* 移动端同步添加最小高度 */ /* 移动端同步添加最小高度 */
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);
} display: flex;
align-items: flex-start;
/* 移动端箭头和文字尺寸缩小 */ }
.card-arrow {
font-size: clamp(0.45rem, 0.7vw, 0.8rem); /* 移动端箭头和文字尺寸缩小 */
width: 10px; .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__heading {
font-size: clamp(0.6rem, 1vw, 1rem);
.advantage-card__description { }
font-size: clamp(0.5rem, 0.8vw, 0.8rem);
} .advantage-card__description {
} font-size: clamp(0.5rem, 0.8vw, 0.8rem);
}
/* 超小屏适配 */ }
@media (max-width: 374px) {
.advantage-section { /* 超小屏适配 */
width: 98%; @media (max-width: 374px) {
} .advantage-section {
width: 98%;
.advantage-card__heading { }
font-size: clamp(0.55rem, 0.9vw, 0.9rem);
} .advantage-card__heading {
font-size: clamp(0.55rem, 0.9vw, 0.9rem);
.advantage-card__heading-wrap { }
width: 95%;
gap: 5px; .advantage-card__heading-wrap {
} width: 95%;
gap: 5px;
.advantage-card__description { }
width: 95%;
/* 超小屏保持最小高度 */ .advantage-card__description {
min-height: calc(clamp(0.5rem, 0.8vw, 0.8rem) * 2 * 1.5); width: 95%;
} /* 超小屏保持最小高度 */
} min-height: calc(clamp(0.5rem, 0.8vw, 0.8rem) * 2 * 1.5);
}
}

View File

@@ -1,246 +1,256 @@
/* 容器布局:通用基础样式(仅宽度、外边距,不涉及高度) */ /* 容器布局:通用基础样式(仅宽度、外边距,不涉及高度) */
.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; padding: 0;
} }
.product-card-container { .product-card-container {
width: 100%; width: 100%;
margin: 0 auto; margin: 0 auto;
display: flex; display: flex;
flex-wrap: nowrap; flex-wrap: nowrap;
overflow: hidden; overflow: hidden;
padding: 0 clamp(0.2rem, 0.6vw, 0.3rem); padding: 0 clamp(0.2rem, 0.6vw, 0.3rem);
} }
/* ######################################################################### */ /* ######################################################################### */
/* 移动端样式单独配置max-width: 1023px- 后续修改仅改这里 */ /* 移动端样式单独配置max-width: 1023px- 后续修改仅改这里 */
/* ######################################################################### */ /* ######################################################################### */
@media (max-width: 1023px) { @media (max-width: 1023px) {
/* 卡片容器:移动端特有 */ /* 卡片容器:移动端特有 */
.product-card-container { .product-card-container {
align-items: stretch; align-items: stretch;
} }
/* 卡片核心:移动端固定宽高比 */ /* 卡片核心:移动端固定宽高比 */
.product-card { .product-card {
background: rgb(242, 243, 245); background: rgb(242, 243, 245);
border-radius: clamp(0.375rem, 1vw, 0.5rem); border-radius: clamp(0.375rem, 1vw, 0.5rem);
cursor: pointer; cursor: pointer;
width: calc(25% - clamp(0.3rem, 0.5vw, 0.36rem)); width: calc(25% - clamp(0.3rem, 0.5vw, 0.36rem));
flex: none; flex: none;
box-shadow: 0 clamp(0.1rem, 0.2vw, 0.125rem) box-shadow: 0 clamp(0.1rem, 0.2vw, 0.125rem)
clamp(0.3rem, 0.8vw, 0.5rem) rgba(0, 0, 0, 0.05); clamp(0.3rem, 0.8vw, 0.5rem) rgba(0, 0, 0, 0.05);
margin: 0 clamp(0.16rem, 0.24vw, 0.2rem); margin: 0 clamp(0.16rem, 0.24vw, 0.2rem);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
aspect-ratio: 3 / 4.2; aspect-ratio: 3 / 4.2;
/* 移动端固定宽高比 */ /* 移动端固定宽高比 */
} }
/* 卡片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;
} }
/* 图片容器:移动端固定占比 */ /* 图片容器:用视口单位固定高度,彻底不受图片影响 */
.product-card-img { .product-card-img {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
width: 100%; width: 100%;
flex: 0 0 72%; /* 关键用vw固定高度基于屏幕宽度计算和图片本身尺寸无关 */
/* 移动端图片区占比 */ height: clamp(8rem, 28vw, 12rem); /* 移动端适配小屏8rem大屏12rem中间按28vw缩放 */
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);
} }
/* 产品图片:强制填充容器,消除尺寸差异 */
/* 产品图片:移动端特有 */ .product-card img {
.product-card img { width: 100%;
width: 100%; height: 100%;
height: 100%; object-fit: contain; /* 保留完整图片如果需要裁剪用cover */
object-fit: contain; object-position: center;
object-position: center; /* 强制图片适应容器,不管原图尺寸 */
} min-width: 80%; /* 防止图片过窄(可选,根据需求调整) */
max-width: 100%;
/* 文字容器:移动端固定占比 */ }
.product-card-text {
flex: 0 0 20%; /* 文字容器:移动端固定占比 */
/* 移动端文字区占比 */ /*.product-card-text {*/
display: flex; /* flex: 0 0 20%;*/
flex-direction: column; /* 移动端文字区占比 */
justify-content: center; /* display: flex;*/
padding-left: clamp(0.8rem, 2vw, 1.5rem); /* flex-direction: column;*/
padding-right: clamp(0.8rem, 2vw, 1.5rem); /* justify-content: center;*/
} /* padding-left: clamp(0.8rem, 2vw, 1.5rem);*/
/* padding-right: clamp(0.8rem, 2vw, 1.5rem);*/
/* 标题样式:移动端特有 */ /*}*/
.product-card-title { .product-card-text {
font-size: clamp(0.8rem, 1.3vw, 1.2rem); width: 100%;
font-weight: 600; /* 用vw固定文字区域高度和图片容器高度解耦 */
color: #333; height: clamp(3rem, 10vw, 4.5rem); /* 小屏3rem大屏4.5rem中间按10vw缩放 */
white-space: nowrap; display: flex;
overflow: hidden; flex-direction: column;
text-overflow: ellipsis; justify-content: flex-start;
height: 35%; overflow: hidden; /* 防止文字溢出 */
/* 移动端标题固定高度 */ padding-left: clamp(0.8rem, 2vw, 1.5rem);
line-height: 1.2; padding-right: clamp(0.8rem, 2vw, 1.5rem);
} }
/* 标题样式:移动端特有 */
/* 描述样式移动端固定2行高度 */ .product-card-title {
.product-card-desc { font-size: clamp(0.75rem, 1.2vw, 0.875rem);
font-size: clamp(0.7rem, 1.1vw, 0.9rem); color: #333;
color: #656565; margin-bottom: clamp(0.2rem, 0.3vw, 0.25rem);
word-break: break-word; /* 最多2行溢出省略避免文字过多挤压 */
height: 65%; overflow: hidden;
/* 移动端描述固定高度2行 */ text-overflow: ellipsis;
overflow: hidden; white-space: nowrap;
display: -webkit-box; }
-webkit-line-clamp: 2;
-webkit-box-orient: vertical; /* 描述样式移动端固定2行高度 */
line-height: 1.4; .product-card-desc {
} font-size: clamp(0.7rem, 1.1vw, 0.9rem);
color: #656565;
/* 链接图标容器:移动端固定占比 */ word-break: break-word;
.product-card-link { height: 65%;
width: 100%; /* 移动端描述固定高度2行 */
display: flex; overflow: hidden;
align-items: center; display: -webkit-box;
flex: 0 0 10%; -webkit-line-clamp: 2;
/* 移动端链接区占比 */ -webkit-box-orient: vertical;
padding: clamp(0.8rem, 2vw, 1.5rem); line-height: 1.4;
} }
/* 链接图标:移动端特有 */ /* 链接图标容器:移动端固定占比 */
.product-card-link img { .product-card-link {
width: clamp(2.5rem, 5vw, 4.5rem); width: 100%;
height: auto; display: flex;
object-fit: contain; align-items: center;
} flex: 0 0 10%;
/* 移动端链接区占比 */
/* 移动端768px以上补充样式 */ padding: clamp(0.8rem, 2vw, 1.5rem);
@media (min-width: 768px) and (max-width: 1023px) { }
.product-card-img {
flex: 0 0 72%; /* 链接图标:移动端特有 */
} .product-card-link img {
width: clamp(2.5rem, 5vw, 4.5rem);
.product-card-link img { height: auto;
width: clamp(5rem, 4vw, 6rem); object-fit: contain;
} }
}
} /* 移动端768px以上补充样式 */
@media (min-width: 768px) and (max-width: 1023px) {
/* ######################################################################### */ .product-card-img {
/* PC端样式单独配置min-width: 1024px- 后续修改仅改这里 */ flex: 0 0 72%;
/* ######################################################################### */ }
@media (min-width: 1024px) {
/* 卡片容器PC端特有高度自适应 */ .product-card-link img {
.product-card-container { width: clamp(5rem, 4vw, 6rem);
align-items: stretch; }
height: clamp(30vw, 35vw, 480px); }
/* PC端容器高度自适应 */ }
}
/* ######################################################################### */
/* 卡片核心PC端高度自适应 */ /* PC端样式单独配置min-width: 1024px- 后续修改仅改这里 */
.product-card { /* ######################################################################### */
background: rgb(242, 243, 245); @media (min-width: 1024px) {
border-radius: clamp(0.375rem, 1vw, 0.5rem); /* 卡片容器PC端特有高度自适应 */
cursor: pointer; .product-card-container {
width: calc(25% - clamp(0.3rem, 0.5vw, 0.36rem)); align-items: stretch;
flex: none; height: clamp(30vw, 35vw, 480px);
box-shadow: 0 clamp(0.1rem, 0.2vw, 0.125rem) /* PC端容器高度自适应 */
clamp(0.3rem, 0.8vw, 0.5rem) rgba(0, 0, 0, 0.05); }
margin: 0 clamp(0.16rem, 0.24vw, 0.2rem);
display: flex; /* 卡片核心PC端高度自适应 */
flex-direction: column; .product-card {
height: 100%; background: rgb(242, 243, 245);
/* PC端卡片高度继承父容器 */ border-radius: clamp(0.375rem, 1vw, 0.5rem);
} cursor: pointer;
width: calc(25% - clamp(0.3rem, 0.5vw, 0.36rem));
/* 卡片hover效果PC端特有 */ flex: none;
.product-card:hover { box-shadow: 0 clamp(0.1rem, 0.2vw, 0.125rem)
transform: scale(clamp(1.01, 1.02, 1.03)); clamp(0.3rem, 0.8vw, 0.5rem) rgba(0, 0, 0, 0.05);
transition: transform 0.3s ease; margin: 0 clamp(0.16rem, 0.24vw, 0.2rem);
} display: flex;
flex-direction: column;
/* 图片容器PC端固定占比 */ height: 100%;
.product-card-img { /* PC端卡片高度继承父容器 */
display: flex; }
justify-content: center;
align-items: center; /* 卡片hover效果PC端特有 */
width: 100%; .product-card:hover {
flex: 0 0 72%; transform: scale(clamp(1.01, 1.02, 1.03));
/* PC端图片区占比 */ transition: transform 0.3s ease;
margin-bottom: clamp(0.4rem, 0.6vw, 0.5rem); }
overflow: hidden;
border-radius: clamp(0.2rem, 0.4vw, 0.25rem); /* 图片容器PC端固定占比 */
} .product-card-img {
display: flex;
/* 产品图片PC端特有 */ justify-content: center;
.product-card img { align-items: center;
width: 100%; width: 100%;
height: 100%; flex: 0 0 72%;
object-fit: contain; /* PC端图片区占比 */
object-position: center; margin-bottom: clamp(0.4rem, 0.6vw, 0.5rem);
} overflow: hidden;
border-radius: clamp(0.2rem, 0.4vw, 0.25rem);
/* 文字容器PC端固定占比 */ }
.product-card-text {
flex: 0 0 15%; /* 产品图片PC端特有 */
/* PC端文字区占比 */ .product-card img {
/* display: flex; */ width: 100%;
flex-direction: column; height: 100%;
justify-content: center; object-fit: contain;
padding-left: clamp(0.8rem, 2vw, 1.5rem); object-position: center;
padding-right: clamp(0.8rem, 2vw, 1.5rem); }
}
/* 文字容器PC端固定占比 */
/* 标题样式PC端特有 */ .product-card-text {
.product-card-title { flex: 0 0 15%;
font-size: clamp(0.8rem, 1.3vw, 1.2rem); /* PC端文字区占比 */
font-weight: 600; /* display: flex; */
color: #333; flex-direction: column;
white-space: nowrap; justify-content: center;
overflow: hidden; padding-left: clamp(0.8rem, 2vw, 1.5rem);
text-overflow: ellipsis; padding-right: clamp(0.8rem, 2vw, 1.5rem);
/* height: 35%; */ }
/* PC端标题固定高度 */
line-height: 1.2; /* 标题样式PC端特有 */
display: flex; .product-card-title {
align-items: center; font-size: clamp(0.8rem, 1.3vw, 1.2rem);
} font-weight: 600;
color: #333;
/* 描述样式PC端固定2行高度 */ white-space: nowrap;
.product-card-desc { overflow: hidden;
font-size: clamp(0.7rem, 1.1vw, 0.9rem); text-overflow: ellipsis;
color: #656565; /* height: 35%; */
word-break: break-word; /* PC端标题固定高度 */
/* height: 65%; */ line-height: 1.2;
/* PC端描述固定高度2行 */ display: flex;
overflow: hidden; align-items: center;
display: -webkit-box; }
-webkit-line-clamp: 2;
-webkit-box-orient: vertical; /* 描述样式PC端固定2行高度 */
line-height: 1.4; .product-card-desc {
} font-size: clamp(0.7rem, 1.1vw, 0.9rem);
color: #656565;
/* 链接图标容器PC端固定占比 */ word-break: break-word;
.product-card-link { /* height: 65%; */
width: 100%; /* PC端描述固定高度2行 */
/* display: flex; */ overflow: hidden;
/* align-items: center; */ display: -webkit-box;
flex: 0 0 12%; -webkit-line-clamp: 2;
/* PC端链接区占比 */ -webkit-box-orient: vertical;
padding-left: clamp(0.8rem, 2vw, 1.5rem); line-height: 1.4;
} }
/* 链接图标PC端特有 */ /* 链接图标容器PC端固定占比 */
.product-card-link img { .product-card-link {
width: clamp(2.5rem, 5vw, 4.5rem); width: 100%;
height: auto; /* display: flex; */
object-fit: contain; /* align-items: center; */
} flex: 0 0 12%;
} /* PC端链接区占比 */
padding-left: clamp(0.8rem, 2vw, 1.5rem);
}
/* 链接图标PC端特有 */
.product-card-link img {
width: clamp(2.5rem, 5vw, 4.5rem);
height: auto;
object-fit: contain;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -1,73 +1,73 @@
* { * {
margin: 0; margin: 0;
padding: 0; padding: 0;
box-sizing: border-box; box-sizing: border-box;
} }
/* 1. 根字体适配限制最小根字体为14px从源头避免文字过小 */ /* 1. 根字体适配限制最小根字体为14px从源头避免文字过小 */
html { html {
/* PC端≥1024px1rem=16px原尺寸 */ /* PC端≥1024px1rem=16px原尺寸 */
font-size: 16px; font-size: 16px;
} }
/* 平板端768px~1023px15px→16px过渡最小15px */ /* 平板端768px~1023px15px→16px过渡最小15px */
@media (max-width: 1023px) and (min-width: 768px) { @media (max-width: 1023px) and (min-width: 768px) {
html { html {
font-size: calc(15px + (16 - 15) * (100vw - 768px) / (1023 - 768)); font-size: calc(15px + (16 - 15) * (100vw - 768px) / (1023 - 768));
} }
} }
/* 移动端320px~767px固定14px不随屏幕缩小而变小避免文字<12px */ /* 移动端320px~767px固定14px不随屏幕缩小而变小避免文字<12px */
@media (max-width: 767px) { @media (max-width: 767px) {
html { html {
font-size: 14px; font-size: 14px;
} }
} }
/* 超小屏≤320px仍固定14px彻底杜绝文字过小 */ /* 超小屏≤320px仍固定14px彻底杜绝文字过小 */
@media (max-width: 320px) { @media (max-width: 320px) {
html { html {
font-size: 14px; font-size: 14px;
} }
} }
body { body {
background: rgb(242, 243, 245); background: rgb(242, 243, 245);
} }
a { a {
text-decoration: none; text-decoration: none;
display: block; display: block;
} }
.more { .more {
width: 90%; width: 90%;
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-top: clamp(1.5rem, 3vw, 3rem);
} }
.more-img { .more-img {
background: #000; background: #000;
color: #fff; color: #fff;
font-size: clamp(0.6rem, 0.9vw, 0.9rem); font-size: clamp(0.6rem, 0.9vw, 0.9rem);
border-radius: clamp(0.875rem, 1.5vw, 1.125rem); border-radius: clamp(0.875rem, 1.5vw, 1.125rem);
padding: clamp(0.1rem, 0.3vw, 0.2rem); padding: clamp(0.1rem, 0.3vw, 0.2rem);
width: 5rem; width: 5rem;
display: flex; display: flex;
justify-content: center; justify-content: center;
} }
.line { .line {
width: 100%; width: 100%;
height: clamp(1.5rem, 3vw, 3rem); height: clamp(2.5rem, 5vw, 15rem);
} }
.header { .header {
width: 100%; width: 100%;
background: #fff; background: #fff;
} }
.header-img { .header-img {
margin: 0 auto; margin: 0 auto;
width: 90%; width: 90%;
display: flex; display: flex;
align-items: center; align-items: center;
padding-top: 0.5rem; padding-top: 0.5rem;
padding-bottom: 0.5rem; padding-bottom: 0.5rem;
} }

View File

@@ -1,147 +1,151 @@
.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%;
/* 图片尺寸100%,无区别 */ /*max-width: 340px;*/
height: auto; /* 图片尺寸100%,无区别 */
/* max-height: 70%; */ height: auto;
border-radius: 10px; /* max-height: 70%; */
} border-radius: 10px;
}
/* 第一个产品:悬浮图居中上移(仅定位差异) */
.product-img-1 {
top: -10%;
left: 50%;
transform: translateX(-50%); /* 第一个产品:悬浮图居中上移(仅定位差异) */
} .product-img-1 {
top: -10%;
/* 第二个产品:悬浮图上右超出(仅定位差异) */ left: 50%;
.product-img-2 { transform: translateX(-50%);
top: -10%; }
/* 上超出 */
transform: none; /* 第二个产品:悬浮图上右超出(仅定位差异) */
width: 108%; .product-img-2 {
/* 取消居中 */ top: -10%;
} /* 上超出 */
transform: none;
/* 右侧容器:两个产品通用 */ width: 108%;
.product-right { /* 取消居中 */
flex: 3.2; }
position: relative;
border-radius: 10px; /* 右侧容器:两个产品通用 */
overflow: hidden; .product-right {
width: 100%; flex: 3.2;
background-color: #f5f5f5; position: relative;
align-self: stretch; border-radius: 10px;
} overflow: hidden;
width: 100%;
.right-content { background-color: #f5f5f5;
position: absolute; align-self: stretch;
top: 0; }
left: 0;
width: 100%; .right-content {
height: 100%; position: absolute;
object-fit: cover; top: 0;
transition: opacity 0.3s ease; left: 0;
} width: 100%;
height: 100%;
.right-video { object-fit: cover;
display: none; transition: opacity 0.3s ease;
} }
/* PC端适配仅微调定位参数尺寸不变 */ .right-video {
@media (min-width: 1024px) { display: none;
.product-container { }
width: 90%;
} /* PC端适配仅微调定位参数尺寸不变 */
@media (min-width: 1024px) {
.product-left { .product-container {
flex: 2; width: 90%;
} }
.product-right { .product-left {
flex: 5; flex: 2;
} }
/* 宽度保持一致,仅调定位偏移 */ .product-right {
.product-img-1 { flex: 5;
top: -11%; }
}
/* 宽度保持一致,仅调定位偏移 */
.product-img-2 { .product-img-1 {
top: -12%; top: -11%;
} }
}
.product-img-2 {
/* 超小屏适配:尺寸不变,微调定位 */ top: -12%;
@media (max-width: 375px) { }
.product-left { }
flex: 1.5;
} /* 超小屏适配:尺寸不变,微调定位 */
@media (max-width: 375px) {
.product-right { .product-left {
flex: 3.5; flex: 1.5;
} }
/* 宽度仍保持一致 */ .product-right {
.product-img-1 { flex: 3.5;
top: -6%; }
}
/* 宽度仍保持一致 */
.product-img-2 { .product-img-1 {
top: -8%; top: -6%;
} }
}
.product-img-2 {
top: -8%;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB