没有合适的资源?快使用搜索试试~ 我知道了~
大家都知道微信小程序图片自适应,是一个比较常见的需求,平时我们在WEBView中,只需要设置max-width:100%.在微信里面虽然widthFix也能实现,但有一个缺陷就是图片的宽度值要大于或者等于设定的值,否则就会发生拉伸变形,本文通过另外一种来适应。 首先我们来看看图片组件给的一些说明: 属性名 类型 默认值 说明 src String 图片资源地址 mode String ‘scaleToFill’ 图片裁剪、缩放的模式 binderror HandleEvent 当错误发生时,发布到 AppService 的事件名,事件对象event.detail =
资源推荐
资源详情
资源评论
微信小程序实现图片自适应微信小程序实现图片自适应(支持多图支持多图)
大家都知道微信小程序图片自适应,是一个比较常见的需求,平时我们在WEBView中,只需要设置max-width:100%.在微信里面
虽然widthFix也能实现,但有一个缺陷就是图片的宽度值要大于或者等于设定的值,否则就会发生拉伸变形,本文通过另外一
种来适应。
首先我们来看看图片组件给的一些说明:首先我们来看看图片组件给的一些说明:
属性名属性名 类型类型 默认值默认值 说明说明
src String 图片资源地址
mode String ‘scaleToFill’ 图片裁剪、缩放的模式
binderror HandleEvent
当错误发生时,发布到 AppService 的事件名,事件对象
event.detail = {errMsg: ‘something wrong’}
bindload HandleEvent
当图片载入完毕时,发布到 AppService 的事件名,事件对象
event.detail = {height:’图片高度px’, width:’图片宽度px’}
注:注:image组件默认宽度300px、高度225px
mode 有有 13 种模式,其中种模式,其中 4 种是缩放模式,种是缩放模式,9 种是裁剪模式。种是裁剪模式。
模式模式 说明说明
scaleToFill 不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素
aspectFit 保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来。
aspectFill
保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,
另一个方向将会发生截取。
widthFix 宽度不变,高度自动变化,保持原图宽高比不变
如果说要有一种比较合适的方案,大概是widthFix,然而上面这些模式中,所要求的前提是需要给图片标签设定一个宽度值或
者一个高度值。但有时候我们根本不想限定图片的宽高,我们需要的是图片自身能够根据自身的大小来适配。
而而widthFix模式就要求你必须先设定一个宽度值,如果出来的图片比给定的模式就要求你必须先设定一个宽度值,如果出来的图片比给定的width小呢?此时图片则会发生拉伸的现象。小呢?此时图片则会发生拉伸的现象。 (常
见应用在文章中,因为文章中的插图有可能比默认的宽小,比如常见的表情)。
其实上面的标签中,图片为我们预留了一个函数bindLoad。下面看看我是怎么支持自适应的。
有一个前提,就是多图的时候,你需要知道这个图片是处于所有中的位置有一个前提,就是多图的时候,你需要知道这个图片是处于所有中的位置index,我们通过这个位置来保存图片的宽度和高,我们通过这个位置来保存图片的宽度和高
度。度。
<image src="http://ww4.sinaimg.cn/bmiddle/006q8Q6bjw1fbwucs1cctj30t80t8myh.jpg" bindLoad="imageLoad" style="width:{{imageSize[0].width}}rpx;
height:{{imageSize[0].height}}rpx" data-index="0" mode="scaleToFill"/>
<image src="http://ww4.sinaimg.cn/bmiddle/006q8Q6bjw1fbwucs1cctj30t80t8myh.jpg" bindLoad="imageLoad" style="width:{{imageSize[1].width}}rpx;
height:{{imageSize[1].height}}rpx" data-index="1" mode="scaleToFill"/>
var px2rpx = 2, windowWidth=375;
page({
data:{
imageSize:{}
},
onLoad:function(options){
wx.getSystemInfo({
success: function(res) {
windowWidth = res.windowWidth;
px2rpx = 750 / windowWidth;
}
})
},
imageLoad:function(e){
//单位rpx
var originWidth = e.detail.width*px2rpx,
originHeight = e.detail.height*px2rpx,
ratio = originWidth/originHeight;
var viewWidth = 710,viewHeight//设定一个初始宽度
//当它的宽度大于初始宽度时,实际效果跟mode=widthFix一致
if(originWidth>= viewWidth){
//宽度等于viewWidth,只需要求出高度就能实现自适应
viewHeight = viewWidth/ratio;
}else{
//如果宽度小于初始值,这时就不要缩放了
viewWidth = originWidth;
viewHeight = originHeight;
资源评论
weixin_38679449
- 粉丝: 5
- 资源: 935
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功