From 517aa9fd011c6a90ef684ba4e71a22d587c2cc57 Mon Sep 17 00:00:00 2001 From: liqian <735273025@qq.com> Date: Tue, 25 Nov 2025 17:36:09 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=B8=93=E9=A2=98=20-=20=E7=94=B5?= =?UTF-8?q?=E5=8A=9B=E5=93=81=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mobile/topic_power_prodline/index.html | 9 +- .../view/pc/topic_power_prodline/index.html | 45 +- .../css/topic_power_prodline/advantage.css | 460 ++++++++-------- .../css/topic_power_prodline/product_list.css | 502 +++++++++--------- public/static/index/mobile/images/jiant.png | Bin 0 -> 696 bytes public/static/index/mobile/images/ljgd.png | Bin 0 -> 1287 bytes .../pc/css/topic_power_prodline/index.css | 146 ++--- .../pc/css/topic_power_prodline/product.css | 298 ++++++----- public/static/index/pc/images/jiant.png | Bin 0 -> 696 bytes public/static/index/pc/images/ljgd.png | Bin 0 -> 1287 bytes 10 files changed, 741 insertions(+), 719 deletions(-) create mode 100644 public/static/index/mobile/images/jiant.png create mode 100644 public/static/index/mobile/images/ljgd.png create mode 100644 public/static/index/pc/images/jiant.png create mode 100644 public/static/index/pc/images/ljgd.png diff --git a/app/index/view/mobile/topic_power_prodline/index.html b/app/index/view/mobile/topic_power_prodline/index.html index 3ed0b1d5..a31dc90d 100644 --- a/app/index/view/mobile/topic_power_prodline/index.html +++ b/app/index/view/mobile/topic_power_prodline/index.html @@ -300,8 +300,10 @@ {$cts_lf.title} -
- {$cts_lf.title} + +
+ + {$cts_lf.title}
{/notempty} @@ -463,8 +465,9 @@ productRights.forEach((rightContainer) => { const img = rightContainer.querySelector('.right-img'); const video = rightContainer.querySelector('.right-video'); + const videoSrc = video.src.trim() if (!img || !video) return; - + if(!videoSrc) return; const rect = rightContainer.getBoundingClientRect(); // 视口判断:容器进入视口50%以上视为活跃 const isInView = diff --git a/app/index/view/pc/topic_power_prodline/index.html b/app/index/view/pc/topic_power_prodline/index.html index 01f654c6..93157658 100644 --- a/app/index/view/pc/topic_power_prodline/index.html +++ b/app/index/view/pc/topic_power_prodline/index.html @@ -194,7 +194,7 @@ {$dc_first_section_lf.short_title} -
+
{$dc_first_section_lf.short_title}
@@ -299,8 +299,10 @@ {notempty name="cts_lf"} {$cts_lf.title} - -
+ + +
+ {$cts_lf.title}
@@ -400,24 +402,24 @@ // 点击卡片显示详情 advantageItems.forEach((item) => { - item.addEventListener('click', (e) => { - // 获取当前点击卡片内的.mack-conten-text元素 - const currentMackContent = e.currentTarget.querySelector('.mack-conten-text'); - if (currentMackContent) { - // 关键修改:获取该元素的子内容(innerHTML 本身就是内部HTML,不含当前元素标签) - // 若想更彻底,可遍历子节点拼接内容(兼容特殊场景) - let contentHtml = ''; - Array.from(currentMackContent.childNodes).forEach(child => { - // 只保留元素节点和文本节点(过滤空节点) - if (child.nodeType === 1 || child.nodeType === 3) { - contentHtml += child.outerHTML || child.textContent; - } - }); - // 显示蒙版并传入纯净的子内容 - showMask(contentHtml); - } + item.addEventListener('click', (e) => { + // 获取当前点击卡片内的.mack-conten-text元素 + const currentMackContent = e.currentTarget.querySelector('.mack-conten-text'); + if (currentMackContent) { + // 关键修改:获取该元素的子内容(innerHTML 本身就是内部HTML,不含当前元素标签) + // 若想更彻底,可遍历子节点拼接内容(兼容特殊场景) + let contentHtml = ''; + Array.from(currentMackContent.childNodes).forEach(child => { + // 只保留元素节点和文本节点(过滤空节点) + if (child.nodeType === 1 || child.nodeType === 3) { + contentHtml += child.outerHTML || child.textContent; + } + }); + // 显示蒙版并传入纯净的子内容 + showMask(contentHtml); + } + }); }); -}); // 关闭按钮事件 closeBtn.addEventListener('click', hideMask); // 点击蒙版背景关闭(可选) @@ -463,8 +465,9 @@ productRights.forEach((rightContainer) => { const img = rightContainer.querySelector('.right-img'); const video = rightContainer.querySelector('.right-video'); + const videoSrc = video.src.trim() if (!img || !video) return; - + if(!videoSrc) return; const rect = rightContainer.getBoundingClientRect(); // 视口判断:容器进入视口50%以上视为活跃 const isInView = diff --git a/public/static/index/mobile/css/topic_power_prodline/advantage.css b/public/static/index/mobile/css/topic_power_prodline/advantage.css index 36ea9c81..79274690 100644 --- a/public/static/index/mobile/css/topic_power_prodline/advantage.css +++ b/public/static/index/mobile/css/topic_power_prodline/advantage.css @@ -1,229 +1,231 @@ -/* 核心模块:固定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); - } -} +/* 核心模块:固定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); + display: flex; + align-items: flex-start; + } + + /* 移动端箭头和文字尺寸缩小 */ + .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); + } +} diff --git a/public/static/index/mobile/css/topic_power_prodline/product_list.css b/public/static/index/mobile/css/topic_power_prodline/product_list.css index 7dbf8968..a630932a 100644 --- a/public/static/index/mobile/css/topic_power_prodline/product_list.css +++ b/public/static/index/mobile/css/topic_power_prodline/product_list.css @@ -1,246 +1,256 @@ -/* 容器布局:通用基础样式(仅宽度、外边距,不涉及高度) */ -.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; - } -} +/* 容器布局:通用基础样式(仅宽度、外边距,不涉及高度) */ +.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%; + /* 关键:用vw固定高度,基于屏幕宽度计算,和图片本身尺寸无关 */ + height: clamp(8rem, 28vw, 12rem); /* 移动端适配:小屏8rem,大屏12rem,中间按28vw缩放 */ + margin-bottom: clamp(0.4rem, 0.6vw, 0.5rem); + overflow: hidden; + border-radius: clamp(0.2rem, 0.4vw, 0.25rem); + } + /* 产品图片:强制填充容器,消除尺寸差异 */ + .product-card img { + width: 100%; + height: 100%; + object-fit: contain; /* 保留完整图片(如果需要裁剪用cover) */ + object-position: center; + /* 强制图片适应容器,不管原图尺寸 */ + min-width: 80%; /* 防止图片过窄(可选,根据需求调整) */ + max-width: 100%; + } + + /* 文字容器:移动端固定占比 */ + /*.product-card-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-text { + width: 100%; + /* 用vw固定文字区域高度,和图片容器高度解耦 */ + height: clamp(3rem, 10vw, 4.5rem); /* 小屏3rem,大屏4.5rem,中间按10vw缩放 */ + display: flex; + flex-direction: column; + justify-content: flex-start; + overflow: hidden; /* 防止文字溢出 */ + padding-left: clamp(0.8rem, 2vw, 1.5rem); + padding-right: clamp(0.8rem, 2vw, 1.5rem); + } + /* 标题样式:移动端特有 */ + .product-card-title { + font-size: clamp(0.75rem, 1.2vw, 0.875rem); + color: #333; + margin-bottom: clamp(0.2rem, 0.3vw, 0.25rem); + /* 最多2行,溢出省略(避免文字过多挤压) */ + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + /* 描述样式:移动端固定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; + } +} diff --git a/public/static/index/mobile/images/jiant.png b/public/static/index/mobile/images/jiant.png new file mode 100644 index 0000000000000000000000000000000000000000..ef08f043d8286b73bf1fa959a5e1f96944068bc4 GIT binary patch literal 696 zcmV;p0!RIcP)8SyaT(Its^ zkrxuBQD~Ad;)N%aNXmmkid@Q_l$7N1Ag`lwYt+m*XU4-mhcm}MW6v>XezhO|d;RzS zyVm-*|LeaJ>e|KBFswi=rlT5FXhk#L;t{UnNt^`}G2jzWkF}_b>F9eL!daw?O-gpN zK!AOCjg373!z7%-bIk53d^ql4FZ%TWTBsR#fK5@xAmZIf+{2Xrfaa@Gn1w1d<{Jtl z?~kj!2+r4GtnLne1ar#(hJ-K!lcV7Cu(eF!oCe}#6#PKeyK<{G`}~H_z~WL@n>sGx z+>VsN17d%&Js-ZdRPcx)T;7wiW>M1p!-4UmVY#Qj*1!Fgc;FeXhJJR5hq{C&rCTxU@TE!k9nAYtK5YYs_eA{cHN|zu@UB z6{XXQ=+(zgD;qLCHg$G^C-Jq{X$7jOPI!DYFn>yyJ@_8r12VGv{-vcn4pgMLv^%in zM8?%;9q=x9nRtPj<-r!!s@(r@vyZ`P**%8~eGI>W<{bQ`@aEE2I!@QBR*%leslBT^ zxK#*$f)iy1|G<{qpzr|RiKk@(cVaW%6@#~8Io^~3z6%%gUqqFjPgsciy##F&M%-9v zC|38Hg*Ti1h}};`=%p}_(^1Cmif&riu}s4m;g-bJ8)3Awgs8QTzpKu7!he&;lR;0000shbFBn!LF40tngeT zhQMRdO~rMrF>LCcSHa(Xw60j)Hr9noQl$iHO{WL6lQh}WK1#+XGhYMG2h95$_zUK^w^ zfj_Wu@tg#LNwyzTdw=ZG_bW786=7X^_r}~-tm)9#+3D`f&vG?UP>Wm;PNH(0H69mA z!uXwd-8lp=f%oSmFthGWGfy2?sC8=n=UY^aI7xyuF8MF6>t06g3$G{2q{Jz-Hr>%K zWoC$L1&Kjp1h05&k5M=mfrpyUlKHu;bUy}$3UF6cXNaZfxIC&^E{dSFr*ws6&r4iF z^~`&w&OH@*C&TFplq@d;c9`TkQbweN8SyaT(Its^ zkrxuBQD~Ad;)N%aNXmmkid@Q_l$7N1Ag`lwYt+m*XU4-mhcm}MW6v>XezhO|d;RzS zyVm-*|LeaJ>e|KBFswi=rlT5FXhk#L;t{UnNt^`}G2jzWkF}_b>F9eL!daw?O-gpN zK!AOCjg373!z7%-bIk53d^ql4FZ%TWTBsR#fK5@xAmZIf+{2Xrfaa@Gn1w1d<{Jtl z?~kj!2+r4GtnLne1ar#(hJ-K!lcV7Cu(eF!oCe}#6#PKeyK<{G`}~H_z~WL@n>sGx z+>VsN17d%&Js-ZdRPcx)T;7wiW>M1p!-4UmVY#Qj*1!Fgc;FeXhJJR5hq{C&rCTxU@TE!k9nAYtK5YYs_eA{cHN|zu@UB z6{XXQ=+(zgD;qLCHg$G^C-Jq{X$7jOPI!DYFn>yyJ@_8r12VGv{-vcn4pgMLv^%in zM8?%;9q=x9nRtPj<-r!!s@(r@vyZ`P**%8~eGI>W<{bQ`@aEE2I!@QBR*%leslBT^ zxK#*$f)iy1|G<{qpzr|RiKk@(cVaW%6@#~8Io^~3z6%%gUqqFjPgsciy##F&M%-9v zC|38Hg*Ti1h}};`=%p}_(^1Cmif&riu}s4m;g-bJ8)3Awgs8QTzpKu7!he&;lR;0000shbFBn!LF40tngeT zhQMRdO~rMrF>LCcSHa(Xw60j)Hr9noQl$iHO{WL6lQh}WK1#+XGhYMG2h95$_zUK^w^ zfj_Wu@tg#LNwyzTdw=ZG_bW786=7X^_r}~-tm)9#+3D`f&vG?UP>Wm;PNH(0H69mA z!uXwd-8lp=f%oSmFthGWGfy2?sC8=n=UY^aI7xyuF8MF6>t06g3$G{2q{Jz-Hr>%K zWoC$L1&Kjp1h05&k5M=mfrpyUlKHu;bUy}$3UF6cXNaZfxIC&^E{dSFr*ws6&r4iF z^~`&w&OH@*C&TFplq@d;c9`TkQbweN