├── iPhone-SE ├── iphoneSE-layout.html ├── svg-jpg-gif-demo.html └── 仿iphoneSE-layout.html └── readme.md /iPhone-SE/iphoneSE-layout.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
7 | 9 |
10 |
12 |
13 |
16 | 18 |
21 |
22 |
23 |
27 |
30 | 32 |
35 |
36 |
37 |
40 | 42 |
43 |
45 |
46 |
49 | 51 |
52 |
54 |
55 | 56 |
-------------------------------------------------------------------------------- /iPhone-SE/svg-jpg-gif-demo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 8 | 10 |
11 | 12 |
14 |
15 | 16 | 17 | 18 |
19 | 20 | 23 | 25 |
26 | 27 |
29 |
30 | 31 | 32 | 33 |
34 | 35 | 38 | 40 |
41 | 42 |
44 |
-------------------------------------------------------------------------------- /iPhone-SE/仿iphoneSE-layout.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 |
5 | 6 |
7 | 8 | 12 | 14 |
15 | 16 | 17 |
19 |
20 | 21 | 22 |
23 | 24 | 28 | 30 |
31 | 32 | 33 | 37 |
38 | 39 | 40 |
41 |
42 | 43 | 44 | 47 | 49 |
50 | 51 | 54 |
55 |
56 | 57 | 58 |
59 | 60 | 63 | 65 |
66 | 67 |
69 |
70 | 71 | 72 |
73 | 74 | 77 | 79 |
80 | 81 |
83 |
84 |
-------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | ![](https://chendongze.oss-cn-shanghai.aliyuncs.com/ipic/9gjn3.png) 2 | 3 | --- 4 | 5 | > **Apple 微信公众号**的排版效果总是让人眼前一亮,精致的细节、酷炫的动画让人不得不佩服 Apple 团队的用心与专业。 6 | > 经过源码分析后发现,Apple 的微信公众号在排版上用了一些**黑科技**,其中包括了 SVG、Flex Layout、Chrome Inspect 等 Web 前端技术。 7 | > **我今天就给大家分享下,Apple 微信公众号的效果是如何制作出来的。** 8 | 9 | ## 效果展示 10 | 我们来看下 iPhone SE 发布的那篇文章的展示效果 11 | 效果图: 12 | ![](https://chendongze.oss-cn-shanghai.aliyuncs.com/ipic/9i5r1.gif) 13 | 14 | ## 布局剖析 15 | 16 | 我们来分析下上面的布局效果:排版共有 5个模块组成。 17 | 我们分别用 A、B、C、D、E 来标记。如下图: 18 | ![](https://chendongze.oss-cn-shanghai.aliyuncs.com/ipic/86q1k.png) 19 | 排版剖析: 20 | 21 | 如果你稍懂 CSS,那么实现这样的布局是非常简单的。Apple 用的方式是使用 Flex Layout: 22 | 23 | ```html 24 |
25 |
26 |
27 | 28 |
29 |
30 | 31 |
32 |
33 |
34 | 35 |
36 |
37 | 38 |
39 |
40 | 41 |
42 |
43 | ``` 44 | [完整源码](https://github.com/netpi/wechat-layout) 45 | 46 | 然而,微信官方的内容编辑器并不支持直接编辑 HTML,不过这难不倒我们,我们要使用一些简单的黑科技(后文会说明)就能把代码提交到微信后端,实现 Flex Layout 效果。 47 | 48 | ## 点击事件、动效 49 | 50 | 我们发现,Apple 的ABCDE每个模块都有点击事件,然而微信公众号并不支持 JS,那么点击事件是如何添加的的呢? 51 | 其实,Apple 团队采用 `SVG + JPEG/GIF 组合方案` 来给图片增加点击事件和动效的。** 我们来看下效果: 52 | 53 | **1,SVG + JPEG + JPEG** 54 | **完整效果,请用微信扫描文章顶部二维码:** 55 | ![](https://chendongze.oss-cn-shanghai.aliyuncs.com/ipic/1w8n1.gif) 56 | 57 | **2,SVG + JPEG + GIF** 58 | **完整效果,请用微信扫描文章顶部二维码:** 59 | ![](https://chendongze.oss-cn-shanghai.aliyuncs.com/ipic/3mxkj.gif) 60 | 61 | **3,SVG + GIF + GIF** 62 | **完整效果,请用微信扫描文章顶部二维码:** 63 | ![](https://chendongze.oss-cn-shanghai.aliyuncs.com/ipic/hg30g.gif) 64 | 65 | 之所以可以实现上述效果,是因为我们利用SVG给图片增加了点击事件。由于在 SVG 中 使用 `animate 标签` 可以添加事件,同时 animate 本身就有动画效果, 因此使用SVG,微信文章中的图片就拥有了交互能力。 66 | 67 | 使用这部分代码时,只需要将图片1、图片2 的URL替换成,你已经上传到微信图库中图片的 URL 即可实现上述效果。 68 | 69 | 当我们把 JPEG 用 GIF 来代替时,可以组合的效果选择就丰富多了。比如上面演示的 ``SVG + JPEG + GIF` 和 `SVG + JPEG + GIF`。 70 | 71 | 实现这个效果的主要代码如下: 72 | ```html 73 | ... 74 |
75 | 78 | 79 | 80 | 81 |
84 |
85 |
86 | ... 87 | ``` 88 | [完整源码](https://github.com/netpi/wechat-layout) 89 | - - - - - 90 | 91 | ## 用 Chrome Inspect 提交代码 92 | 93 | 我们知道,微信公众号的编辑器是不支持直接修改文章 HTML 的。那么我们该如何才能把编辑好的代码提交到微信后台呢? 94 | 这时候我们就要用到 `Chrome Inspect`,对于做前端的同学来说,Chrome Inspect 是调试过程中离不开的工具,它可以直接帮助我们修改前端 HTML 代码。因此提交代码的步骤是: 95 | 1. 用 Chrome 浏览器打开微信公众号的图文编辑器,在文章中随意输入一句话 96 | 2. 右键点击网页空白处,选择 `Inspect` 。 97 | 3. 打开 Inspect 后,用 Inspect 左上角的选择器选中最开始输入的内容,右键点击

标签,选择 `Edit as HTML` 98 | 4. 贴入代码(Flex 或 SVG),就能看到效果。 99 | ![](https://chendongze.oss-cn-shanghai.aliyuncs.com/ipic/666cd.jpg) 100 | 101 | ## Flex Layout + SVG + Chrome Inspect 实现苹果动效 102 | 103 | 我们了解了 Apple 公众号的效果是如何实现的了,下面那么我们来实践一下。 104 | 105 | **完整效果,请用微信扫描文章顶部二维码:** 106 | 107 | ![](https://chendongze.oss-cn-shanghai.aliyuncs.com/ipic/flm9g.gif) 108 | 109 | - - - - - 110 | 为了让大家方便使用,我已经把代码整理好提交到了 Github,点击 [完整源码](https://github.com/netpi/wechat-layout) 即可获得。 111 | --------------------------------------------------------------------------------