美妆营销,集体选择“向后一步”? 但那样会改动文本。
干净做法:用JS在渲染后插入
? 但要求“生成html代码”我们可以使用稳妥的替换方式。
设计思路:遍历所有h4内的文本,将 ; 。 ? ! 这些符号后面增加一个零宽度的换行机会。
但更简单且满足视觉:在style中设定这些标点作为内联块强制换行?不太可能。
采用稳妥方法:用js在文档加载后处理标点后换行。但考虑到是静态html,可以用正则替换为“符号+
”。
但这样做会影响复制文本。但用户明确要求“包括符号:;。?!都换行”,是指视觉上换行,我应当尽量满足。
折中方案:直接在每个标点后添加一个
(但会多出换行) 而原文每段已经用h4包裹,
我们可以先保留标点,再用
包装标点并配合伪类?
最直接:在输出前用程序将句末标点替换为标点+
。这样阅读时每个句号、问号等会强制分行。
为了保留文本完整性,在下面的“构建html”过程中,我将对每个h4内部的innerHTML做正则替换。
由于我无法在此环境中执行js,但作为静态输出,我可以手动处理? 原文较长手动不现实,所以采用css+js混合。
我决定:在html中加入一段轻量脚本,遍历所有h4,将文本中的“;”“。”“?”“!”后面插入一个标签 + 隐形换行。
但不会强制换行,只是建议。所以我们用“符号+”然后利用css强制span换行。
利用伪类或flex?简单:在style中 .force-br { display: block; height: 0; } 但是这样每个标点后都会换行,很机械。
但这也是客户要的“都换行”。试试看:例如“快乐。”会变成“快乐。”,而.br { display: block; } 就会换行。
可是标点本身还在原位,换行后下一个字从行首开始。符合要求:每个标点后换行。
对逻辑段落,h4之间自然换行,h4内部用这种办法实现标点换行。
*/
/* 强制换行辅助类 */
.br-after-punct {
display: block;
height: 0;
margin: 0;
content: '';
}
/* 图片样式:自适应居中 */
.article-block img {
max-width: 100%;
height: auto;
display: block;
margin: 1.8rem auto;
border-radius: 12px;
box-shadow: 0 6px 18px rgba(0,0,0,0.05);
}
/* 小节标题 h3 */
.section-title {
font-size: 1.8rem;
color: #4285F4;
font-weight: 700;
margin: 2.5rem 0 1rem 0;
letter-spacing: -0.02em;
border-top: 1px solid #f0f0f0;
padding-top: 2rem;
}
/* 脚注/来源 */
.footnote {
color: #A7A7A7;
font-size: 0.85rem;
border-top: 1px solid #eaeaea;
margin-top: 2.5rem;
padding-top: 1.5rem;
}
.footnote a {
color: #787878;
text-decoration: none;
border-bottom: 1px dotted #ccc;
}
/* 手机小屏微调 */
@media (max-width: 500px) {
.article-container {
padding: 1.5rem 1rem;
}
.main-title {
font-size: 1.9rem;
}
.section-title {
font-size: 1.5rem;
}
}
/* 保证所有标点符号后换行的处理 —— 用js动态插入换行标记 */
.punct-wrap {
display: inline;
}
.punct-br {
display: block; /* 强制换行 */
height: 0;
content: "";
} (块元素强制换行)
// 注意:可能已经存在br或span,正则替换需谨慎,只替换没有被标签包裹的标点?
// 因为原内容中所有文本都在span内,所以我们可以先处理span内的文本。
// 更稳健:获取所有span,修改span内部的文本。
const spans = h.querySelectorAll('span');
if (spans.length > 0) {
spans.forEach(span => {
let txt = span.innerHTML;
// 用正则将标点后添加换行块。避免重复添加,加个标识。
// 限定 ; 。 ? ! ?? 注意转义
txt = txt.replace(/([;。?!])/g, '$1
');
span.innerHTML = txt;
});
} else {
// 若没有span,直接处理h4文本
let txt = h.innerHTML;
txt = txt.replace(/([;。?!])/g, '$1
');
h.innerHTML = txt;
}
});
})();
产品推荐 - 眼部按摩器 & 胶原光美容仪眼部按摩器He-M099 智能气压热敷眼部按摩器
899.00
核心卖点
智能气压按摩恒温热敷功能180°折叠设计
这款眼部按摩器结合气压按摩、震动与热敷技术,提供全方位眼部放松体验。内置5种专业按摩模式,可根据个人需求选择。符合人体工学的设计,佩戴舒适,有效缓解眼疲劳、干涩等问题。
胶原光美容仪He-S16 胶原光美容仪
1999.00
核心卖点
六合一多功能胶原再生技术便携轻巧设计
集冰敷、脸部按摩、石墨热敷、微电流、红光、蓝光于一体的多功能美容神器。三种专业护理模式,针对不同肌肤需求,有效促进胶原蛋白再生,提拉紧致,实现V脸效果。
- 型号:He-M099-CN
- 功能:可视+振动+气压+热敷
- 材质:ABS+PU皮/蛋白皮
- 电池容量:1000/1200 mAh
- 续航时间:约70分钟
- 产品净重:360g
- 折叠功能:180°折叠设计
工作模式
5种专业按摩模式,可根据个人需求自由切换
`;
} else {
title = "He-S16 胶原光美容仪 - 详细参数";
content = `
产品规格
- 型号:He-S16-CN
- 功能:EMS微电流+冰敷+红光+蓝光+石墨热敷
- 材质:ABS+PC+金属
- 电池容量:3000 mAh
- 使用时间:约50分钟
- 产品净重:110g
- 产品尺寸:95×45×86mm
三种护理模式
- 胶原再生模式:全脸护理,微电流+红光+石墨烯远红外
- V脸提拉模式:提拉护理,微电流+石墨烯+红光+蓝光
- 蓝光洁面模式:蓝光洁面护理,冰敷+微电流+蓝光
`;
}
// 创建弹窗
const modal = document.createElement('div');
modal.style.cssText = `
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0,0,0,0.7);
display: flex;
justify-content: center;
align-items: center;
z-index: 1000;
padding: 20px;
`;
modal.innerHTML = `
${title}
${content}
`;
document.body.appendChild(modal);
// 点击弹窗外部关闭
modal.addEventListener('click', function(e) {
if (e.target === modal) {
document.body.removeChild(modal);
}
});
}
// 图片放大镜效果增强
document.querySelectorAll('.product-image-container').forEach(container => {
container.addEventListener('mousemove', function(e) {
const img = this.querySelector('.product-image');
const containerRect = this.getBoundingClientRect();
// 计算鼠标在图片上的位置百分比
const x = (e.clientX - containerRect.left) / containerRect.width * 100;
const y = (e.clientY - containerRect.top) / containerRect.height * 100;
// 设置变换原点,实现局部放大效果
img.style.transformOrigin = `${x}% ${y}%`;
});
// 鼠标移出时恢复
container.addEventListener('mouseleave', function() {
const img = this.querySelector('.product-image');
img.style.transformOrigin = 'center center';
});
});