溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

微信小程序動(dòng)態(tài)設(shè)置圖片大小的方法

發(fā)布時(shí)間:2020-08-31 10:33:10 來(lái)源:腳本之家 閱讀:925 作者:妞小嘜 欄目:web開發(fā)

我們都知道微信小程序的組件image是用來(lái)顯示圖片的,它有一下幾個(gè)屬性:

1、src              圖片資源地址

2、mode          圖片裁剪、縮放的模式

3、binderror     當(dāng)錯(cuò)誤發(fā)生時(shí),發(fā)布到 AppService 的事件名,事件對(duì)象event.detail = {errMsg: ‘something wrong'}

4、bindload     當(dāng)圖片載入完畢時(shí),發(fā)布到 AppService 的事件名,事件對(duì)象event.detail = {height:'圖片高度px', width:'圖片寬度px'}

但是image有默認(rèn)的固定的寬度和高度,這樣我們?cè)谧鰣D片自適應(yīng)的時(shí)候,就不好做了,特別是我們?cè)谧鲆恍┥唐吩斍轫?yè)的時(shí)候,需要image自適應(yīng)屏幕,按原圖比例顯示。那么如何讓image自適應(yīng)比例顯示呢?可以有兩種方法:

一、使用mode:widthFix

widthFix:寬度不變,高度自動(dòng)變化,保持原圖寬高比不變。

首先我們先設(shè)置image的mode為widthFix,然后給圖片加一個(gè)固定rpx的寬度,比如:730rpx。

這樣圖片也可以自適應(yīng)了。。因?yàn)樾〕绦虻膔px本身就是一個(gè)自適應(yīng)顯示的單位

二、使用bindload綁定函數(shù)動(dòng)態(tài)自適應(yīng)。

我們可以給image綁定一個(gè)函數(shù),這個(gè)函數(shù),如上面的bindload說(shuō)明一樣,我們可以獲取到原圖的寬度和高度。

然后計(jì)算他們的寬高比率。。然后設(shè)置一個(gè)寬度大?。╮px),最后通過(guò)style動(dòng)態(tài)設(shè)置image的寬高。代碼如下:

html代碼:

<image src="{{ item }}" bindload="imageLoad" data-index="{{ index }}" 
></image>

js代碼:

Page({
 data: {
  images:{}
 },
 imageLoad: function(e) {
   var $width=e.detail.width,  //獲取圖片真實(shí)寬度
     $height=e.detail.height,
     ratio=$width/$height;  //圖片的真實(shí)寬高比例
   var viewWidth=718,      //設(shè)置圖片顯示寬度,左右留有16rpx邊距
     viewHeight=718/ratio;  //計(jì)算的高度值
   var image=this.data.images; 
   //將圖片的datadata-index作為image對(duì)象的key,然后存儲(chǔ)圖片的寬高值
   image[e.target.dataset.index]={
     width:viewWidth,
     height:viewHeight
   }
   this.setData({
      images:image
   })
 }
})

最后,我們就可以可以通過(guò)images[index].width images[index].height給每一個(gè)圖片設(shè)置寬高了。

效果如下圖所示:

微信小程序動(dòng)態(tài)設(shè)置圖片大小的方法

總結(jié)

以上所述是小編給大家介紹的微信小程序動(dòng)態(tài)設(shè)置圖片大小的方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)億速云網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI