refactor: 专题 - 电力品线mobile端

This commit is contained in:
2025-11-25 16:14:23 +08:00
parent 476a238d27
commit ffa6f29af8
10 changed files with 1194 additions and 89 deletions

View File

@@ -1,4 +1,4 @@
{extend name="public/nas_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">
@@ -73,6 +73,7 @@
</div> </div>
<div class="product-container" > <div class="product-container" >
{assign name="tc_first_section_lf" value=":array_shift($data.travel_charger)" /} {assign name="tc_first_section_lf" value=":array_shift($data.travel_charger)" /}
{notempty name="tc_first_section_lf"}
<a class="product-left" href="{$tc_first_section_lf.link}"> <a class="product-left" href="{$tc_first_section_lf.link}">
<img src="{$tc_first_section_lf.image}" alt="{$tc_first_section_lf.title}" class="product-img"> <img src="{$tc_first_section_lf.image}" alt="{$tc_first_section_lf.title}" class="product-img">
<!-- 公共类+定位类:尺寸统一,定位不同 --> <!-- 公共类+定位类:尺寸统一,定位不同 -->
@@ -80,13 +81,16 @@
<img src="{$tc_first_section_lf.extra_image}" alt="{$tc_first_section_lf.short_title}"> <img src="{$tc_first_section_lf.extra_image}" alt="{$tc_first_section_lf.short_title}">
</div> </div>
</a> </a>
{/notempty}
{assign name="tc_first_section_lr" value=":array_shift($data.travel_charger)" /} {assign name="tc_first_section_lr" value=":array_shift($data.travel_charger)" /}
{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 controls>
您的浏览器不支持HTML5视频播放请升级浏览器 您的浏览器不支持HTML5视频播放请升级浏览器
</video> </video>
</div> </div>
{/notempty}
</div> </div>
{assign name="tc_second_section" value=":array_splice($data.travel_charger, 0, 4)" /} {assign name="tc_second_section" value=":array_splice($data.travel_charger, 0, 4)" /}
{notempty name="tc_second_section"} {notempty name="tc_second_section"}
@@ -208,150 +212,136 @@
</div> </div>
{/notempty} {/notempty}
</div> </div>
{assign name="dc_second_section" value=":array_splice($data.desktop_charger, 0, 2)" /}
{notempty name="dc_second_section"}
<div class="product-card-box"> <div class="product-card-box">
<div class="product-card-container2"> <div class="product-card-container2">
<a class="product-card2" href="#"> {volist name="dc_second_section" id="dcs"}
<a class="product-card2" href="{$dcs.link}">
<div class="product-text2"> <div class="product-text2">
<!-- 新增内部容器,确保所有内容左对齐一致性 --> <!-- 新增内部容器,确保所有内容左对齐一致性 -->
<div class="product-text-content2"> <div class="product-text-content2">
<div class="product-card-title2">安全 精准掌控 超长标题测试示例内容</div> <!-- 测试超出一行省略 --> <div class="product-card-title2">{$dcs.title}</div> <!-- 测试超出一行省略 -->
<div class="product-card-desc2">12口合1 分控插排 支持多设备同时供电 安全防护更放心 过载保护不跳闸</div> <!-- 测试超出2行省略 --> <div class="product-card-desc2">{$dcs.short_title}</div> <!-- 测试超出2行省略 -->
<div class="product-card-link2"> <div class="product-card-link2">
<img src="./img/ljgd.png" alt="了解更多"> <img src="__IMAGES__/ljgd.png" alt="了解更多">
</div> </div>
</div> </div>
</div> </div>
<div class="product-card-img2"> <div class="product-card-img2">
<img src="./img/zm-2.png" alt="10口合1双向取电插排"> <img src="{$dcs.image}" alt="{$dcs.title}">
</div> </div>
</a> </a>
<a class="product-card2" href="#"> {/volist}
<div class="product-text2">
<!-- 新增内部容器,确保所有内容左对齐一致性 -->
<div class="product-text-content2">
<div class="product-card-title2">安全 精准掌控 超长标题测试示例内容</div> <!-- 测试超出一行省略 -->
<div class="product-card-desc2">12口合1 分控插排 支持多设备同时供电 安全防护更放心 过载保护不跳闸</div> <!-- 测试超出2行省略 -->
<div class="product-card-link2">
<img src="./img/ljgd.png" alt="了解更多">
</div> </div>
</div> </div>
</div> {/notempty}
<div class="product-card-img2"> {assign name="dc_three_section" value=":array_shift($data.desktop_charger)" /}
<img src="./img/zm-2.png" alt="10口合1双向取电插排"> {notempty name="dc_three_section"}
</div> <a href="{$dc_three_section.link}" class="more">
</a>
</div>
</div>
<a href="#" class="more">
<div class="more-img"> <div class="more-img">
查看更多 查看更多
</div> </div>
</a> </a>
{/notempty}
</div> </div>
<!-- 墙插 --> <!-- 墙插 -->
{notempty name="data.wall_charger"}
<div class="product-box"> <div class="product-box">
<div class="product-title"> <div class="product-title">
<h2 class="product-title-h2">墙插</h2> <h2 class="product-title-h2">墙插</h2>
<p class="product-title-p">1转多</p> <p class="product-title-p">1转多</p>
</div> </div>
<div class="product-container"> <div class="product-container">
<a class="product-left" href="{$tc_first_section_lf.link}"> {assign name="wc_first_section_lf" value=":array_shift($data.wall_charger)" /}
<img src="./img/jjbj.png" alt="65W快充插座" class="product-img"> {notempty name="wc_first_section_lf"}
<a class="product-left" href="{$wc_first_section_lf.link}">
<img src="{$wc_first_section_lf.image}" alt="{$wc_first_section_lf.title}" class="product-img">
<!-- 公共类+定位类:尺寸统一,定位不同 --> <!-- 公共类+定位类:尺寸统一,定位不同 -->
<div class="product-img-hover product-img-1"> <div class="product-img-hover product-img-1">
<img src="./img/jj-4.png" alt="产品细节图"> <img src="{$wc_first_section_lf.extra_image}" alt="{$wc_first_section_lf.title}">
</div> </div>
</a> </a>
{/notempty}
{assign name="wc_first_section_lr" value=":array_shift($data.wall_charger)" /}
{notempty name="wc_first_section_lr"}
<div class="product-right"> <div class="product-right">
<img src="https://www.orico.com.cn/storage/images/product/20250512/f54b4ac2ac53e6df8bf411e0d2d2947d.jpg" <img src="{$wc_first_section_lr.image}" alt="{$wc_first_section_lr.title}" class="right-content right-img">
alt="使用场景" class="right-content right-img"> <video src="{$wc_first_section_lr.video}" class="right-content right-video" muted loop playsinline controls>
<video
src="https://www.orico.com.cn/storage/videos/banner/20250712/403305b404b4b46f5ef6b43e3f2e8761.mp4"
class="right-content right-video" muted loop playsinline controls>
您的浏览器不支持HTML5视频播放请升级浏览器 您的浏览器不支持HTML5视频播放请升级浏览器
</video> </video>
</div> </div>
{/notempty}
</div> </div>
<a href="#" class="more"> {assign name="wc_more_section" value=":array_shift($data.wall_charger)" /}
{notempty name="wc_more_section"}
<a href="{$wc_more_section.link}" class="more">
<div class="more-img"> <div class="more-img">
查看更多 查看更多
</div> </div>
</a> </a>
{/notempty}
</div> </div>
{/notempty}
{notempty name="data.converter"}
<!-- 转换器 --> <!-- 转换器 -->
<div class="product-box"> <div class="product-box">
<div class="product-title"> <div class="product-title">
<h2 class="product-title-h2">转换器</h2> <h2 class="product-title-h2">转换器</h2>
<p class="product-title-p">随你看世界</p> <p class="product-title-p">随你看世界</p>
</div> </div>
{assign name="ct_more_section" value=":array_pop($data.converter)" /}
{assign name="ct_chunk_section" value=":array_chunk($data.converter, 2)" /}
{assign name="ct_chunk_section_len" value=":count($ct_chunk_section)" /}
{volist name="ct_chunk_section" id="cts" key="k"}
<div class="product-container"> <div class="product-container">
<a class="product-left" href="{$tc_first_section_lf.link}"> {assign name="cts_lf" value=":array_shift($cts)" /}
<img src="./img/jjbj.png" alt="65W快充插座" class="product-img"> {notempty name="cts_lf"}
<a class="product-left" href="{$cts_lf.link}">
<img src="{$cts_lf.image}" alt="{$cts_lf.title}" class="product-img">
<!-- 公共类+定位类:尺寸统一,定位不同 --> <!-- 公共类+定位类:尺寸统一,定位不同 -->
<div class="product-img-hover product-img-1"> <div class="product-img-hover product-img-1">
<img src="./img/jj-4.png" alt="产品细节图"> <img src="{$cts_lf.extra_image}" alt="{$cts_lf.title}">
</div> </div>
</a> </a>
{/notempty}
{assign name="cts_lr" value=":array_shift($cts)" /}
{notempty name="cts_lr"}
<div class="product-right"> <div class="product-right">
<img src="https://www.orico.com.cn/storage/images/product/20250512/f54b4ac2ac53e6df8bf411e0d2d2947d.jpg" <img src="{$cts_lr.image}" alt="{$cts_lr.title}" class="right-content right-img">
alt="使用场景" class="right-content right-img"> <video src="{$cts_lr.video}" class="right-content right-video" muted loop playsinline controls>
<video
src="https://www.orico.com.cn/storage/videos/banner/20250712/403305b404b4b46f5ef6b43e3f2e8761.mp4"
class="right-content right-video" muted loop playsinline controls>
您的浏览器不支持HTML5视频播放请升级浏览器 您的浏览器不支持HTML5视频播放请升级浏览器
</video> </video>
</div> </div>
{/notempty}
</div> </div>
{neq name="k" value="$ct_chunk_section_len"}
<div class="line"></div> <div class="line"></div>
<div class="product-container"> {/neq}
<a class="product-left" href="{$tc_first_section_lf.link}"> {/volist}
<img src="./img/jjbj.png" alt="65W快充插座" class="product-img"> {notempty name="ct_more_section"}
<!-- 公共类+定位类:尺寸统一,定位不同 --> <a href="{$ct_more_section.link}" class="more">
<div class="product-img-hover product-img-1">
<img src="./img/jj-4.png" alt="产品细节图">
</div>
</a>
<div class="product-right">
<img src="https://www.orico.com.cn/storage/images/product/20250512/f54b4ac2ac53e6df8bf411e0d2d2947d.jpg"
alt="使用场景" class="right-content right-img">
<video
src="https://www.orico.com.cn/storage/videos/banner/20250712/403305b404b4b46f5ef6b43e3f2e8761.mp4"
class="right-content right-video" muted loop playsinline controls>
您的浏览器不支持HTML5视频播放请升级浏览器
</video>
</div>
</div>
<a href="#" class="more">
<div class="more-img"> <div class="more-img">
查看更多 查看更多
</div> </div>
</a> </a>
{/notempty}
</div> </div>
{/notempty}
{notempty name="data.footer_info"}
<!-- 底部 --> <!-- 底部 -->
<div class="footer"> <div class="footer">
<div class="footer-img"> <div class="footer-img">
<img src="./img/footer.png" alt=""> <img src="{$data.footer_info.0.image}" alt="">
</div> </div>
</div> </div>
{/notempty}
<!-- 蒙版 --> <!-- 蒙版 -->
<div class="mask" id="mask"> <div class="mask" id="mask">
<div class="mask-content" > <div class="mask-content" >
<span class="close-btn">&times;</span> <span class="close-btn">&times;</span>
</div> </div>
</div> </div>
{/block}
{block name="footer"}
<!-- 重置footer头为空 -->
{/block} {/block}
{block name="script"} {block name="script"}
<script type="text/javascript"> <script type="text/javascript">
@@ -453,9 +443,6 @@
{ passive: false } { passive: false }
); // passive: false 必须,否则 preventDefault 无效 ); // passive: false 必须,否则 preventDefault 无效
const allVideos = document.querySelectorAll('.right-video'); const allVideos = document.querySelectorAll('.right-video');
// 停止所有视频播放 // 停止所有视频播放
function stopAllVideos() { function stopAllVideos() {

View File

@@ -0,0 +1,229 @@
/* 核心模块固定90%宽度PC端优化移动端边距 */
.advantage-section {
width: 90%;
margin: 0 auto;
padding: 4rem 0 3rem 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 {
flex: 0 0 calc((100% - 4 * clamp(0.1rem, 0.3vw, 0.8rem)) / 5);
min-width: calc((100% - 4 * clamp(0.1rem, 0.3vw, 0.8rem)) / 5);
max-width: calc((100% - 4 * clamp(0.1rem, 0.3vw, 0.8rem)) / 5);
border-radius: 0.5rem;
overflow: hidden;
box-shadow: 0 0.125rem 0.5rem rgba(0, 0, 0, 0.1);
transition: transform 0.3s ease;
cursor: pointer;
background: #fff;
position: relative;
z-index: 1;
aspect-ratio: 1 / 1.7;
/* PC端卡片高度略缩短更紧凑 */
}
.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;
/* 箭头尺寸跟随标题放大,避免不协调 */
transition: transform 0.3s ease;
display: inline-block;
width: 24px;
/* 箭头宽度同步增加 */
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: #78787a;
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; */
/* box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.15); */
}
/* 移动端适配 */
@media (max-width: 767px) {
.advantage-card:active {
transform: scale(1.01);
}
.advantage-section {
width: 95%;
/* 移动端扩大容器宽度 */
}
.advantage-section__list {
gap: 0.1rem;
}
.advantage-card {
aspect-ratio: 1 / 1.8;
/* 移动端恢复更高的卡片高度 */
}
.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

@@ -0,0 +1,11 @@
.footer {
width: 100%;
padding: 3rem 0;
}
.footer-img {
width: 90%;
margin: 0 auto;
}
.footer-img img {
width: 100%;
}

View File

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

View File

@@ -0,0 +1,80 @@
/* 蒙版样式 - 新增触摸事件禁止 */
.mask {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.7);
display: none;
justify-content: center;
align-items: center;
z-index: 99999;
overflow: hidden; /* 阻止蒙版自身滚动 */
touch-action: none; /* 禁止触摸行为 */
pointer-events: auto; /* 确保蒙版能接收事件 */
}
/* 蒙版内容容器 - 新增触摸事件传递控制 */
.mask-content {
width: 80%;
height: 100% !important;
padding: 3% 5%;
background: rgb(242, 243, 245);
border-radius: 12px;
overflow: hidden; /* 内容容器不滚动 */
position: relative;
animation: popIn 0.3s ease;
max-height: 90vh;
display: flex;
flex-direction: column;
pointer-events: auto; /* 确保内容区域能正常交互 */
}
/* 滚动内容容器 - 保持不变 */
.mask-e-scroll-content {
flex: 1;
overflow-y: auto;
padding: 20px;
-webkit-overflow-scrolling: touch; /* 移动端顺滑滚动 */
}
/* 升级:同时禁止 html 和 body 滚动(关键兼容) */
.no-scroll {
overflow: hidden !important;
position: fixed !important;
width: 100% !important;
height: 100% !important;
}
/* 其他原有样式保持不变 */
@keyframes popIn {
from {
transform: scale(0.8);
opacity: 0;
}
to {
transform: scale(1);
opacity: 1;
}
}
.close-btn {
position: absolute;
top: 20px;
right: 20px;
width: 40px;
height: 40px;
background-color: rgba(0, 0, 0, 0.3);
border-radius: 50%;
color: #fff;
font-size: 30px;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
transition: background-color 0.3s ease;
z-index: 10;
}
.close-btn:hover {
background-color: #ff4d4f;
}

View File

@@ -0,0 +1,96 @@
.nav-box {
display: flex;
justify-content: space-around;
width: 90%;
/* 平板/PC端限制最大宽度 */
margin: 0 auto;
background-color: #fff;
border-radius: 3.125rem;
/* 50px→3.125rem */
box-shadow: 0 0.125rem 0.9375rem rgba(0, 0, 0, 0.05);
/* 2px→0.125rem15px→0.9375rem */
position: relative;
z-index: 1;
padding: 0.625rem 0;
/* 10px→0.625rem(原内边距不变) */
overflow: visible;
}
.nav-item {
display: flex;
flex-direction: column;
align-items: center;
gap: 0.625rem;
/* 10px→0.625rem */
cursor: pointer;
padding: 0.625rem 0 1.25rem;
/* 10px→0.625rem20px→1.25rem */
position: relative;
z-index: 2;
flex: 1;
min-width: 3rem;
/* 48px→3rem适配14px根字体 */
max-width: 5rem;
/* 80px→5rem */
text-align: center;
}
.nav-item img {
width: 4rem;
height: 4rem;
/* 60px→3.75rem16px基准14px根字体下≈52.5px,仍清晰 */
object-fit: contain;
border-radius: 0.75rem;
/* 12px→0.75rem */
position: absolute;
top: -3.125rem;
/* -50px→-3.125rem14px根字体下≈43.75px,超出效果不变) */
transform: translateY(0.625rem);
/* 10px→0.625rem */
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.nav-item:hover img {
transform: translateY(0.3125rem);
/* 5px→0.3125rem */
}
.nav-item:active img {
transform: translateY(0.4375rem);
/* 7px→0.4375rem */
box-shadow: 0 0.125rem 0.5rem rgba(0, 0, 0, 0.06);
}
/* 关键文字单独控制确保最小12px */
.nav-item p {
margin: 0;
/* PC端15px→0.9375rem16px根字体 */
font-size: 0.9375rem;
color: #37373e;
font-weight: 500;
position: relative;
z-index: 3;
top: 1.125rem;
/* 18px→1.125rem */
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
padding: 0 0.125rem;
}
/* 平板端文字14px→0.9375rem15px根字体下=14px */
@media (max-width: 1023px) and (min-width: 768px) {
.nav-item p {
font-size: 0.9375rem;
}
}
/* 移动端文字强制12px用px兜底避免rem计算后过小 */
@media (max-width: 767px) {
.nav-item p {
font-size: 12px;
/* 直接用px固定最小尺寸优先级最高 */
font-size: clamp(12px, 0.857rem, 0.9375rem);
/* 增强版最小12px默认0.857rem14px根字体下≈12px最大0.9375rem */
}
}

View File

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

View File

@@ -0,0 +1,206 @@
.product-card-container2 {
display: flex;
flex-wrap: nowrap;
gap: 10px;
align-items: stretch;
}
/* 产品卡片样式 */
.product-card2 {
box-sizing: border-box;
background: rgb(242, 243, 245);
border-radius: 8px;
cursor: pointer;
flex: 1 1 50%;
/* 一行2个 */
min-width: 180px;
/* 保证图片显示 */
/* max-width: calc(50% - 10px); */
/* 适配gap */
height: 240px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
display: flex;
text-decoration: none;
transition: transform 0.3s ease, box-shadow 0.3s ease;
overflow: hidden;
}
/* 核心修改:文字区域相对于父盒子居中,内部内容左对齐 */
.product-text2 {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
/* 文字区域整体水平居中相对于product-card1 */
justify-content: center;
/* 文字区域整体垂直居中相对于product-card1 */
text-align: left;
/* 内部文字左对齐 */
min-width: 70px;
box-sizing: border-box;
width: 100%;
}
/* 内部内容容器:统一承载标题、描述、链接,确保左对齐一致性 */
.product-text-content2 {
width: 100%;
/* 继承product-text的宽度确保左对齐范围完整 */
max-width: 280px;
/* 新增限制最大宽度避免PC端父容器过宽时内容排版松散 */
}
/* 标题:超出一行显示省略号(左对齐) */
.product-card-title2 {
font-size: clamp(12px, 2vw, 18px);
font-weight: 600;
color: #333;
margin-bottom: 5px;
letter-spacing: 0.2px;
/* 超出一行省略号核心样式 */
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: 100%;
/* 基于内部容器左对齐,省略号生效 */
}
/* 描述超出2行显示省略号左对齐 */
.product-card-desc2 {
font-size: clamp(12px, 1.8vw, 14px);
color: #656565;
margin-bottom: 15px;
letter-spacing: 0.1px;
/* 超出2行显示省略号核心样式 */
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
white-space: normal;
overflow: hidden;
text-overflow: ellipsis;
width: 100%;
/* 基于内部容器左对齐 */
line-height: 1.4;
/* 优化行高2行高度适中 */
}
/* 图片容器:确保移动端显示 */
.product-card-img2 {
flex: 1;
display: flex;
justify-content: center;
align-items: center;
min-width: 70px;
/* 强制保留图片区域,避免被挤压 */
}
.product-card-img2 img {
width: 100%;
height: auto;
max-height: 144px;
min-height: 80px;
object-fit: contain;
/* 保持图片比例完整,不拉伸 */
}
/* 链接图标:左对齐(基于内部容器) */
.product-card-link2 {
width: 100%;
display: flex;
justify-content: flex-start;
/* 图标左对齐 */
}
.product-card-link2 img {
width: clamp(60px, 4vw, 76px);
margin: 0;
/* 清除居中margin */
}
/* hover效果 */
.product-card2:hover {
transform: scale(1.03);
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.12);
}
/* 媒体查询平板端768px ~ 1023px */
@media (max-width: 1023px) and (min-width: 768px) {
.product-card2 {
height: 224px;
min-width: 170px;
}
.product-text2 {
padding-left: 20px;
}
.product-card-img2 img {
max-height: 128px;
}
}
/* 媒体查询移动端≤767px */
@media (max-width: 767px) {
.product-card-box2 {
margin-top: 19px;
}
.product-card2 {
padding: 0 8px;
}
.product-card-container2 {
gap: 8px;
}
.product-card2 {
height: 208px;
min-width: 160px;
}
.product-card-img2 img {
max-height: 120px;
min-height: 72px;
}
}
/* 媒体查询小屏手机≤375px */
@media (max-width: 375px) {
.product-card2 {
height: 192px;
min-width: 140px;
}
/* 强制文字最小12px保证可读性 */
.product-card-title2,
.product-card-desc2 {
font-size: 12px;
}
.product-card-img2 img {
max-height: 104px;
min-height: 64px;
}
.product-card2 {
padding: 0 5px;
}
.product-card-link2 img {
width: 40px;
/* 固定图标尺寸,节省空间 */
}
}
/* 媒体查询超小屏手机≤320px */
@media (max-width: 320px) {
.product-card2 {
min-width: 120px;
}
.product-text2 {
padding: 0 5px;
}
.product-card-img2 {
min-width: 60px;
/* 缩小图片区域最小宽度,平衡文字空间 */
}
}

View File

@@ -0,0 +1,246 @@
/* 容器布局:通用基础样式(仅宽度、外边距,不涉及高度) */
.product-card-box {
width: 90%;
margin: clamp(1rem, 2vw, 1.5rem) auto 0;
padding: 0;
}
.product-card-container {
width: 100%;
margin: 0 auto;
display: flex;
flex-wrap: nowrap;
overflow: hidden;
padding: 0 clamp(0.2rem, 0.6vw, 0.3rem);
}
/* ######################################################################### */
/* 移动端样式单独配置max-width: 1023px- 后续修改仅改这里 */
/* ######################################################################### */
@media (max-width: 1023px) {
/* 卡片容器:移动端特有 */
.product-card-container {
align-items: stretch;
}
/* 卡片核心:移动端固定宽高比 */
.product-card {
background: rgb(242, 243, 245);
border-radius: clamp(0.375rem, 1vw, 0.5rem);
cursor: pointer;
width: calc(25% - clamp(0.3rem, 0.5vw, 0.36rem));
flex: none;
box-shadow: 0 clamp(0.1rem, 0.2vw, 0.125rem)
clamp(0.3rem, 0.8vw, 0.5rem) rgba(0, 0, 0, 0.05);
margin: 0 clamp(0.16rem, 0.24vw, 0.2rem);
display: flex;
flex-direction: column;
aspect-ratio: 3 / 4.2;
/* 移动端固定宽高比 */
}
/* 卡片hover效果移动端特有 */
.product-card:hover {
transform: scale(clamp(1.01, 1.02, 1.03));
transition: transform 0.3s ease;
}
/* 图片容器:移动端固定占比 */
.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 {
flex: 0 0 20%;
/* 移动端文字区占比 */
display: flex;
flex-direction: column;
justify-content: center;
padding-left: clamp(0.8rem, 2vw, 1.5rem);
padding-right: clamp(0.8rem, 2vw, 1.5rem);
}
/* 标题样式:移动端特有 */
.product-card-title {
font-size: clamp(0.8rem, 1.3vw, 1.2rem);
font-weight: 600;
color: #333;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
height: 35%;
/* 移动端标题固定高度 */
line-height: 1.2;
}
/* 描述样式移动端固定2行高度 */
.product-card-desc {
font-size: clamp(0.7rem, 1.1vw, 0.9rem);
color: #656565;
word-break: break-word;
height: 65%;
/* 移动端描述固定高度2行 */
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
line-height: 1.4;
}
/* 链接图标容器:移动端固定占比 */
.product-card-link {
width: 100%;
display: flex;
align-items: center;
flex: 0 0 10%;
/* 移动端链接区占比 */
padding: clamp(0.8rem, 2vw, 1.5rem);
}
/* 链接图标:移动端特有 */
.product-card-link img {
width: clamp(2.5rem, 5vw, 4.5rem);
height: auto;
object-fit: contain;
}
/* 移动端768px以上补充样式 */
@media (min-width: 768px) and (max-width: 1023px) {
.product-card-img {
flex: 0 0 72%;
}
.product-card-link img {
width: clamp(5rem, 4vw, 6rem);
}
}
}
/* ######################################################################### */
/* PC端样式单独配置min-width: 1024px- 后续修改仅改这里 */
/* ######################################################################### */
@media (min-width: 1024px) {
/* 卡片容器PC端特有高度自适应 */
.product-card-container {
align-items: stretch;
height: clamp(30vw, 35vw, 480px);
/* PC端容器高度自适应 */
}
/* 卡片核心PC端高度自适应 */
.product-card {
background: rgb(242, 243, 245);
border-radius: clamp(0.375rem, 1vw, 0.5rem);
cursor: pointer;
width: calc(25% - clamp(0.3rem, 0.5vw, 0.36rem));
flex: none;
box-shadow: 0 clamp(0.1rem, 0.2vw, 0.125rem)
clamp(0.3rem, 0.8vw, 0.5rem) rgba(0, 0, 0, 0.05);
margin: 0 clamp(0.16rem, 0.24vw, 0.2rem);
display: flex;
flex-direction: column;
height: 100%;
/* PC端卡片高度继承父容器 */
}
/* 卡片hover效果PC端特有 */
.product-card:hover {
transform: scale(clamp(1.01, 1.02, 1.03));
transition: transform 0.3s ease;
}
/* 图片容器PC端固定占比 */
.product-card-img {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
flex: 0 0 72%;
/* PC端图片区占比 */
margin-bottom: clamp(0.4rem, 0.6vw, 0.5rem);
overflow: hidden;
border-radius: clamp(0.2rem, 0.4vw, 0.25rem);
}
/* 产品图片PC端特有 */
.product-card img {
width: 100%;
height: 100%;
object-fit: contain;
object-position: center;
}
/* 文字容器PC端固定占比 */
.product-card-text {
flex: 0 0 15%;
/* PC端文字区占比 */
/* display: flex; */
flex-direction: column;
justify-content: center;
padding-left: clamp(0.8rem, 2vw, 1.5rem);
padding-right: clamp(0.8rem, 2vw, 1.5rem);
}
/* 标题样式PC端特有 */
.product-card-title {
font-size: clamp(0.8rem, 1.3vw, 1.2rem);
font-weight: 600;
color: #333;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
/* height: 35%; */
/* PC端标题固定高度 */
line-height: 1.2;
display: flex;
align-items: center;
}
/* 描述样式PC端固定2行高度 */
.product-card-desc {
font-size: clamp(0.7rem, 1.1vw, 0.9rem);
color: #656565;
word-break: break-word;
/* height: 65%; */
/* PC端描述固定高度2行 */
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
line-height: 1.4;
}
/* 链接图标容器PC端固定占比 */
.product-card-link {
width: 100%;
/* display: flex; */
/* 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;
}
}

View File

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