

Apple 微信公众号的排版效果总是让人眼前一亮,精致的细节、酷炫的动画让人不得不佩服 Apple 团队的用心与专业。 经过源码分析后发现,Apple 的微信公众号在排版上用了一些黑科技,其中包括了 SVG 、Flex Layout 、Chrome Inspect 等 Web 前端技术。 我今天就给大家分享下,Apple 微信公众号的效果是如何制作出来的。
我们来看下 iPhone SE 发布的那篇文章的展示效果 效果图: 
我们来分析下上面的布局效果:排版共有 5 个模块组成。 我们分别用 A 、B 、C 、D 、E 来标记。如下图:
排版剖析:
如果你稍懂 CSS,那么实现这样的布局是非常简单的。Apple 用的方式是使用 Flex Layout:
<div style="display: flex"> <div style="display: flex;width: 50%; flex-direction: column;"> <div style="display: block;"> <!-- 内容 A --> </div> <div style="display: block;"> <!-- 内容 B --> </div> </div> <div style="display: flex;width: 50%;flex-direction:column;"> <!-- 内容 C --> </div> <div style="display: flex;flex-direction:column;"> <!-- 内容 D --> </div> <div style="display: flex; flex-direction:column;"> <!-- 内容 E --> </div> </div> 然而,微信官方的内容编辑器并不支持直接编辑 HTML,不过这难不倒我们,我们要使用一些简单的黑科技(后文会说明)就能把代码提交到微信后端,实现 Flex Layout 效果。
我们发现,Apple 的 ABCDE 每个模块都有点击事件,然而微信公众号并不支持 JS,那么点击事件是如何添加的的呢? 其实,Apple 团队采用 SVG + JPEG/GIF 组合方案 来给图片增加点击事件和动效的。** 我们来看下效果:
1,SVG + JPEG + JPEG 完整效果,请用微信扫描文章顶部二维码: 
2,SVG + JPEG + GIF 完整效果,请用微信扫描文章顶部二维码: 
3,SVG + GIF + GIF 完整效果,请用微信扫描文章顶部二维码: 
之所以可以实现上述效果,是因为我们利用 SVG 给图片增加了点击事件。由于在 SVG 中 使用 animate 标签 可以添加事件,同时 animate 本身就有动画效果, 因此使用 SVG,微信文章中的图片就拥有了交互能力。
使用这部分代码时,只需要将图片 1 、图片 2 的 URL 替换成,你已经上传到微信图库中图片的 URL 即可实现上述效果。
当我们把 JPEG 用 GIF 来代替时,可以组合的效果选择就丰富多了。比如上面演示的 ``SVG + JPEG + GIF和SVG + JPEG + GIF`。
实现这个效果的主要代码如下:
... <div style="display: flex;width: 100%;flex-direction: column;"> <svg xmlns="http://www.w3.org/2000/svg" style="background-image: url(图片 2 微信图库 URL);"> <animate attributeName="opacity"begin="click"> </animate> </svg> <div background-image: url("图片 1 微信图库 URL");"> </div> </div> ... 我们知道,微信公众号的编辑器是不支持直接修改文章 HTML 的。那么我们该如何才能把编辑好的代码提交到微信后台呢? 这时候我们就要用到 Chrome Inspect,对于做前端的同学来说,Chrome Inspect 是调试过程中离不开的工具,它可以直接帮助我们修改前端 HTML 代码。因此提交代码的步骤是:
Inspect 。 标签,选择 Edit as HTML

我们了解了 Apple 公众号的效果是如何实现的了,下面那么我们来实践一下。
完整效果,请用微信扫描文章顶部二维码:

为了让大家方便使用,我已经把代码整理好提交到了 Github,点击 完整源码 即可获得**。
1 huazhu 2020-06-12 12:50:41 +08:00 赞 |
2 stillyu 2020-06-12 14:15:20 +08:00 apple 牛逼 |
3 toomwan 2020-06-12 14:38:14 +08:00 二维码错误。 |
4 netpi OP |
5 leoleoasd 2020-06-12 14:42:27 +08:00 微信公众号的添加文章的 api 是可以直接提交 html 的 |
6 murmur 2020-06-12 14:44:23 +08:00 让小编震惊的苹果 惊了又惊 |
8 chairuosen 2020-06-12 14:48:23 +08:00 Chrome Inspect ?????? 提交代码????? |
9 netpi OP |
10 Telegram 2020-06-12 15:05:35 +08:00 用 chrome 的 F12 提交内容,怎么感觉有点像黑客作风啊,哈哈 |
11 Dogergo 2020-06-12 15:17:59 +08:00 也就是说他们家的微信编辑其实背地里是个程序员??? |
13 Qiss 2020-06-12 15:22:27 +08:00 会玩。。。3W 值 |
15 kergee 2020-06-12 15:46:53 +08:00 苹果估计有自己公众号后台接入微信后台的,因为本来 API 就支持的。 |
16 rioshikelong121 2020-06-12 15:52:47 +08:00 我只想问掌握了这个技巧的楼主月薪多少。 |
17 CODEWEA 2020-06-12 16:00:31 +08:00 牛逼哦,这都被你发现了 |
18 netpi OP @rioshikelong121 哈哈 怎么还不得比苹果编辑高点 |
19 Sngo 2020-06-12 17:13:43 +08:00 via iPhone 好文干货,赞一个 |
20 kingliang123 2020-06-12 17:27:49 +08:00 cool,很干货。 |
21 d5 2020-06-12 17:31:09 +08:00 这个很酷,点个 star |
23 explore365 2020-06-12 17:49:09 +08:00 微信 6.X 中,二维码无法扫,需要反色 |
24 netpi OP @explore365 原来如此 看来二维码还是白底黑码最稳妥 |
25 jswh 2020-06-12 17:51:35 +08:00 经常帮一个广告公司做这种特效。这种微信文章特效基本都是 svg,而且还有很多限制,即使是 api 提交也会过滤掉很多关键字非常坑。 |
26 casparchen 2020-06-12 18:13:15 +08:00 太棒了,原来可以这样啊,我怎么就没想到呢! |
27 ariza 2020-06-12 20:13:49 +08:00 via iPhone cool |
28 dragonszy 2020-06-12 20:37:20 +08:00 战略马克。 |
29 chotow 2020-06-12 21:06:11 +08:00 via iPhone 开发者工具里编辑再提交这个方法,很久之前(忘记什么时候了)被官方「堵」上了一点点编辑完后,鼠标点击页面,过一秒钟左右编辑器里的内容会被重置回去。不过,只要手速快,还是可以保存的。 |
32 Hades300 2020-06-14 10:11:49 +08:00 via Android 既然 html 被解析。。。那么意味着这里可以 self xss...如果是 hacker 的公众号,意味着可以塞一些淘口令啊等等到用户剪切板里... |
35 zdb1115 2020-06-16 00:45:26 +08:00 谢谢 分享 |