微信公众号文章中图片加载时,占位图宽高大小的确定

智码涟漪
• 阅读 7414

打开一篇多图的微信公众好文章。在图片加载过程中,我们发现微信对每一个img都塞了也个占位图,而且占位图的宽高就是实际加载完图的宽高。这是如何做到的呢?

1.微信所有的img标签里,都有自定义的data-ratio,data-w.这两个属性是关键.

  //data-w:是图片的natural width.
  //data-ratio:是图片的高/宽值.
  <img data-src="http://mmsns.qpic.cn/mmsns/yvia9lE3NdzrSMQ18VrVqjEUU5BeMx9WuDsSBp7Exm83L9IJdjpUXLQ/0" style="vertical-align: middle; box-sizing: border-box; width: 141px !important; height: 81.7359px !important; visibility: visible !important;" data-ratio="0.5796875" data-w="640" data-type="jpeg" class="img_loading" src="http://mmsns.qpic.cn/mmsns/yvia9lE3NdzrSMQ18VrVqjEUU5BeMx9WuDsSBp7Exm83L9IJdjpUXLQ/0?wx_lazy=1">

2.js设定img的width=data-w,heigth= width*data-ratio。

3.不过,在第2步设定宽高之前,请保证img的src属性有有效的值,不然,第2步会无效,在这里我们添加一个base64的小点作为占位图(如下):

src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg=="; 

4.再给img添加一些样式:

.img_loading {
        background-color: #e3dcdc;
        border: 1 px solid #e3dcdc;
        background-size: 22px;
        background-position: center center;
        background-repeat: no-repeat;
        background-image: url(loading.gif);
}

5.当对应的img的图片加载完成后,替换掉占位图,去掉class img_loading 就好了

点赞
收藏
评论区
推荐文章
微标题信公众号文章,阅读数,点赞数历史文章抓取
微标题信公众号文章,阅读数,点赞数历史文章抓取需求最近在做舆情与微信文章相关的数据抓取,发现微信公众号有些难点很难克服。市面上流行的数据抓取思路要么被腾讯封杀,要么操作难度大。解决方案搜狗微信无法采集历史,而且搜索也不按时间排序。获取的数据的价值不高,仅仅可以通过他获取公众号的biz。微信公众平台微信公
linbojue linbojue
1年前
用PHP获取微信公众号文章,轻松实现!
微信公众号已经成为了很多人获取信息的重要途径,而在开发中,有时候需要通过代码来获取公众号文章。PHP作为一种广泛应用的Web编程语言,也可以实现这一功能。本文将详细介绍PHP如何获取微信公众号文章。一、准备工作在开始之前,我们需要先准备好以下两个东西:一个
Jacquelyn38 Jacquelyn38
4年前
手写一个仿微信登录的nodejs程序
前言首先,我们看一下微信开放文档中的一张图:上面的一幅图中清楚地介绍了微信登录整个过程,下面对图上所示进行总结:一、二维码的获得1.用户打开登录网页后,登录网页后台根据微信OAuth2.0协议向微信开发平台请求授权登录,并传递事先在微信开发平台中审核通过的AppID和AppSecrect等参数;2.微信开发平台对AppID等参数进行验证,并向
Wesley13 Wesley13
4年前
MySQL高可用方案选型参考
本文由「MySQL中文网」原创,“MySQL中文”公众号是http://imysql.com的官方唯一公众号,微信首发。欢迎关注「MySQL中文」公众号(ID:imysql_wx),我们会不定期推送MySQL相关原创干货。本次专题是MySQL高可用方案选型,这个专题想必有很多同学感兴趣。高可用的意义以及各种不同高可用
Wesley13 Wesley13
4年前
PHP微信小程序支付——签名错误
!(https://static.oschina.net/uploads/space/2018/0509/141657_Tqix_3477605.png)先分清几个概念:微信公众平台、微信开放平台、微信商户平台1.微信公众平台、微信开放平台、微信商户平台是三个不同的平台2.微信公众平台:用于公众号、小程序等等的设置平台,包括APPID、APP
Easter79 Easter79
4年前
Taro小程序自定义顶部导航栏
微信自带的顶部导航栏是无法支持自定义icon和增加元素的,在开发小程序的时候自带的根本满足不了需求,分享一个封装好的组件,支持自定义icon、扩展dom,适配安卓、ios、h5,全面屏。我用的是京东的Taro多端编译框架写的小程序,原生的也可以适用,用到的微信/taro的api做调整就行,实现效果如下。!在这里插入图片描述(https://i
Wesley13 Wesley13
4年前
h5 接入微信支付
我们公司,现在用ping做h5接入,用的是h5"壹收款"准备:如果公司,现在还没有公众号的话,支付宝。可以把这些工作,给ping来做这些事情 1.注册微信公众号,开通支付功能。2.注册ping (如果是自己开开通的微信支付,要填写相关信息)3.微信设置网页授权获取用户基本信
Stella981 Stella981
4年前
Markdown 简明语法
关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己。本篇文章同步微信公众号欢迎大家关注我的微信公众号:「醉翁猫咪」!(https://oscimg.oschina.net/oscnet/up1d5ae683f66a54eb857ab1a178a657b6.jpg)今天我们了解一下什么是Markdow
Wesley13 Wesley13
4年前
JAVA微信二次开发
大家首先自己有条件的,自己注册一个微信公众账号1.一个微信公众账号(供自己测试使用)2.一个百度开发账号3.myeclipse开发工具 4.需要熟悉jeecg开发5.微信开发代码如下标签:JEECG(http://www.oschina.net/code/tag/jeecg) MiniDao(h
Wesley13 Wesley13
4年前
Java 8 创建 Stream 的 10 种方式,我保证你受益无穷!
之前栈长分享过Java8一系列新特性的文章,其中重点介绍了Stream.!(http://img.javastack.cn/20190613135450.png)!(http://img.javastack.cn/20190613135537.png)获取上面这份Java8~12系列新特性干货文章,请在微信搜索关注微信公众号:
linbojue linbojue
1年前
用php轻松爬微信文章,附完整代码
微信公众号成为了现代人获取资讯的主要途径之一,然而每天需要手动打开公众号查看最新文章,不仅费时费力,而且易错漏。那么有没有一种方法可以自动化地获取微信文章呢?答案是有的,只需要使用php编写爬虫程序即可。本文将详细介绍如何使用php爬取微信文章,并提供完整