微信小程序如何獲取圖片寬度與高度
起源
最近在做A需求, 其中有個(gè)小功能點(diǎn)描述如下: 從配置端返回張圖片, 期望寬度不變(750)、高度根據(jù)圖片自適應(yīng).
我以為的
// 為便于講解, 將css作為style屬性綁定[實(shí)際不推薦]&& src的值先寫死[后期改成接口返回的即可]
<view style="width:100%;">
<image src="{{src}}"></image>
</view>
我一開始想到的就是: 設(shè)置內(nèi)容區(qū)的width: 100%會(huì)自動(dòng)占滿屏幕寬度, 高度就會(huì)自適應(yīng).

實(shí)際效果: image占據(jù)空間為: 屏幕寬度 x 0
解決方案
核心: 解決如何獲取圖片的高度
初級(jí)方案
重點(diǎn): 在圖片加載完成后獲取對(duì)應(yīng)的圖片信息.
經(jīng)查小程序開發(fā)文檔后發(fā)現(xiàn), 有提供加載成功的回調(diào), 如下:

演示Demo如下:
// wxml
<view style="width:100%;" >
<image src="https://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3796/2975850990~300x300.image" bindload="loadSuccess" style="width:{{imageWidth}}px; height:{{imageHeight}}px"></image>
</view>
//js
Page({
data: {
imageHeight: 0,
imageWidth: 0
},
loadSuccess(e){
const { detail: {width, height} } = e
this.setData({
imageWidth: width,
imageHeight:height
})
}
})
先來看看效果:

思考個(gè)問題: 假設(shè)我有100張圖片都需要做自適應(yīng), 那么是不是多了很多繁瑣的setData(), 同時(shí)也會(huì)導(dǎo)致性能問題.
進(jìn)階方案
經(jīng)朋友提醒后發(fā)現(xiàn), 小程序image還有個(gè)屬性叫做mode, 可以去設(shè)置圖片的裁剪&縮放等形式.

關(guān)于mode屬性的取值可選項(xiàng)如下圖:

話不多說, 我們看看實(shí)際效果如何:
// 750x110的圖片 <view style="width:100%;" > <image src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ba1f75f0d29c40759b43ef910dacb4e7~tplv-k3u1fbpfcp-watermark.image" mode="widthFix"></image> </view> // 750x480的圖片 <view style="width:100%;" > <image src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ba1f75f0d29c40759b43ef910dacb4e7~tplv-k3u1fbpfcp-watermark.image" mode="widthFix"></image> </view>
看看750x110的效果圖:

再看看750x480的效果圖:

到了這里, 只需要把src的值改為接口返回的, 是不是就實(shí)現(xiàn)了寬度固定、高度自適應(yīng)的需求了~
最后
該屬性主要是為了實(shí)現(xiàn)圖片的自適應(yīng)、換個(gè)角度來講, 主要是確保圖片不失真。
到此這篇關(guān)于微信小程序如何獲取圖片寬度與高度的文章就介紹到這了,更多相關(guān)微信小程序獲取圖片寬高度內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
懶就要懶到底——鼠標(biāo)自動(dòng)點(diǎn)擊(含時(shí)間判斷)
懶就要懶到底——鼠標(biāo)自動(dòng)點(diǎn)擊(含時(shí)間判斷)...2007-02-02
讓插入到 innerHTML 中的 script 跑起來的實(shí)現(xiàn)代碼
在做 ajax 編程時(shí),我們常常需要將 xmlhttp 獲取到的頁面內(nèi)容通過 innerHTML 來賦給某個(gè)容器(比如 div、span 或者 td 等),但是這里存在一個(gè)問題,就是我們將要賦給 innerHTML 的頁面內(nèi)容如果包含有腳本程序,這些腳本程序不管是外部腳本,還是內(nèi)部腳本,可能(1)都不會(huì)被執(zhí)行。2006-07-07
詳解微信圖片防盜鏈“此圖片來自微信公眾平臺(tái) 未經(jīng)允許不得引用”的解決方案
這篇文章主要介紹了詳解微信圖片防盜鏈“此圖片來自微信公眾平臺(tái) 未經(jīng)允許不得引用”的解決方案,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-04-04
js 將圖片連接轉(zhuǎn)換成base64格式的簡單實(shí)例
下面小編就為大家?guī)硪黄猨s 將圖片連接轉(zhuǎn)換成base64格式的簡單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-08-08
原生JS實(shí)現(xiàn)非常好看的計(jì)數(shù)器
這篇文章主要為大家詳細(xì)介紹了原生JS實(shí)現(xiàn)非常好看的計(jì)數(shù)器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
JavaScript 懸浮窗口實(shí)現(xiàn)代碼
主要是window.onscroll的運(yùn)用2009-02-02

