将 Markdown 文章转换为微信公众号兼容的纯 HTML 格式。当用户要求"转成微信格式"、"生成公众号文章 HTML"、"排版到微信草稿箱"、"微信粘贴格式"时触发。输出带内联样式的纯 HTML,微信编辑器可直接渲染,无需额外适配。支持标题、段落、列表、粗体、行内代码、表格、引用块、代码块、配图的完整转换。
picture标签不能实现响应式背景图,因其是内容替换容器,语义属前景元素,无法应用background-position等背景属性;真正可行的是CSS媒体查询切换background-image,且容器需有明确高度。

为什么 picture 无法替代 background-image
img 元素(或其降级),语义上属于页面「内容流」,而非「装饰层」。这意味着:
- 你无法对
picture应用background-position、background-attachment或z-index等背景相关属性 - 即使用
position: absolute把它盖在某个div上,它仍是前景元素,和父容器的background-image完全无关 - 常见错误写法:
<div style="background: url(...)"> <picture>...</picture> </div>——这里picture和背景毫无关系,只是叠在上面的一张图
真正能响应式切换背景图的只有 CSS 媒体查询
响应式背景图的核心逻辑是:**同一容器,在不同断点下更换background-image 的 URL**。关键实操点:
- 容器必须有明确高度,例如
min-height: 100vh或height: 400px,否则背景不可见 - 每个
@media块内重写background-image,路径需真实可访问(网络请求不返回 404) - 暗黑模式切换可用
@media (prefers-color-scheme: dark),但注意:这仅控制 CSS 背景,和picture的media="(prefers-color-scheme: dark)"是两套机制 - 示例:
body { background-image: url('/images/banner-light.jpg'); background-size: cover; background-position: center; } @media (prefers-color-scheme: dark) { body { background-image: url('/images/banner-dark.jpg'); } }
什么时候该用 picture,而不是背景图
picture 的价值在于「内容级响应」,不是「装饰级响应」:
- 需要为不同视口宽度提供不同构图(比如竖屏用特写,横屏用全景):
<source media="(max-width: 600px)" srcset="portrait.jpg"></source> - 需要按浏览器支持切换格式(WebP → JPEG):
<source type="image/webp" srcset="banner.webp"></source> - 需要响应分辨率(2x 屏幕加载高倍图):
srcset="banner@2x.jpg 2x" - 兜底的
<img>必须存在,且src和alt不可省略——它才是实际渲染的内容节点
移动端和性能上最容易被忽略的坑
这些细节不报错,但会让效果失效或体验变差:-
background-attachment: fixed在 iOS Safari 和部分安卓 WebView 中会卡顿甚至完全失效;建议用媒体查询关掉:@media (pointer: coarse) { .hero { background-attachment: scroll; } } -
height: 100vh在 iOS Safari 中因地址栏显示/隐藏导致高度跳变;如需稳定,改用min-height: 100vh或 JS 动态设置 - 大背景图(>1MB)直接设为
background-image会拖慢首屏;若它是关键视觉内容(如首页 Banner),优先考虑用picture+img替代,并配合loading="eager" - CSS 背景图无法通过
srcset或sizes控制资源选择——浏览器永远下载声明的那一个 URL,无论设备多小
picture 和 background-image 解决的是两类问题:一个是「内容怎么呈现」,一个是「容器怎么装饰」。混用它们不会增强功能,只会增加不可控的层叠和语义混乱。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










