惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Tailwind CSS Blog
有赞技术团队
有赞技术团队
爱范儿
爱范儿
Engineering at Meta
Engineering at Meta
J
Java Code Geeks
雷峰网
雷峰网
WordPress大学
WordPress大学
L
LangChain Blog
D
DataBreaches.Net
The GitHub Blog
The GitHub Blog
博客园 - 三生石上(FineUI控件)
Microsoft Security Blog
Microsoft Security Blog
P
Proofpoint News Feed
腾讯CDC
GbyAI
GbyAI
罗磊的独立博客
Blog — PlanetScale
Blog — PlanetScale
月光博客
月光博客
F
Fortinet All Blogs
Y
Y Combinator Blog
V
V2EX
A
About on SuperTechFans

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
原来,苹果的编辑是这样发微信文章的 - 少数派
2020-06-24 · via 少数派

Matrix 精选

Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。

文章代表作者个人观点,少数派仅对标题和排版略作修改。


「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 组合方案 来给图片增加点击事件和动效的。 我们来看下效果:

SVG + JPEG + JPEG 完整效果,请用微信扫描文章顶部二维码:

SVG + JPEG + GIF 完整效果,请用微信扫描文章顶部二维码:

SVG + GIF + GIF 完整效果,请用微信扫描文章顶部二维码:

之所以可以实现上述效果,是因为我们利用 SVG 给图片增加了点击事件。由于在 SVG 中 使用 animate 标签 可以添加事件,同时 animate 本身就有动画效果, 因此使用SVG,微信文章中的图片就拥有了交互能力。

使用这部分代码时,只需要将图片1、图片2 的URL替换成,你已经上传到微信图库中图片的 URL 即可实现上述效果。

当我们把 JPEG 用 GIF 来代替时,可以组合的效果选择就丰富多了。比如上面演示的 `SVG + JPEG + GIFSVG + 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(&quot;图片1微信图库URL&quot;);">
    </div>
</div>
...

完整源码


用 Chrome Inspect 提交代码

我们知道,微信公众号的编辑器是不支持直接修改文章 HTML 的。那么我们该如何才能把编辑好的代码提交到微信后台呢? 这时候我们就要用到 Chrome Inspect,对于做前端的同学来说,Chrome Inspect 是调试过程中离不开的工具,它可以直接帮助我们修改前端 HTML 代码。因此提交代码的步骤是:

  1. 用 Chrome 浏览器打开微信公众号的图文编辑器,在文章中随意输入一句话
  2. 右键点击网页空白处,选择 Inspect
  3. 打开 Inspect 后,用 Inspect 左上角的选择器选中最开始输入的内容,右键点击

标签,选择 Edit as HTML

  1. 贴入代码(Flex 或 SVG),就能看到效果。

Flex Layout + SVG + Chrome Inspect 实现 Apple 动效

我们了解了 Apple 公众号的效果是如何实现的了,下面那么我们来实践一下。

完整效果,请用微信扫描文章顶部二维码:


为了让大家方便使用,我已经把代码整理好提交到了 Github,点击 完整源码 即可获得。

> 下载少数派 客户端 、关注 少数派公众号 ,了解更妙的数字生活 🍃

> 想申请成为少数派作者?冲!