微信小程序如何獲取圖片寬度與高度
起源
最近在做A需求, 其中有個(gè)小功能點(diǎn)描述如下: 從配置端返回張圖片, 期望寬度不變(750)、高度根據(jù)圖片自適應(yīng).
我以為的
// 為便于講解, 將css作為style屬性綁定[實(shí)際不推薦]&& src的值先寫(xiě)死[后期改成接口返回的即可] <view style="width:100%;"> <image src="{{src}}"></image> </view>
我一開(kāi)始想到的就是: 設(shè)置內(nèi)容區(qū)的width: 100%會(huì)自動(dòng)占滿(mǎn)屏幕寬度, 高度就會(huì)自適應(yīng).
實(shí)際效果: image占據(jù)空間為: 屏幕寬度 x 0
解決方案
核心: 解決如何獲取圖片的高度
初級(jí)方案
重點(diǎn): 在圖片加載完成后獲取對(duì)應(yīng)的圖片信息.
經(jīng)查小程序開(kāi)發(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 }) } })
先來(lái)看看效果:
思考個(gè)問(wèn)題: 假設(shè)我有100張圖片都需要做自適應(yīng), 那么是不是多了很多繁瑣的setData(), 同時(shí)也會(huì)導(dǎo)致性能問(wèn)題.
進(jìn)階方案
經(jīng)朋友提醒后發(fā)現(xiàn), 小程序image還有個(gè)屬性叫做mode, 可以去設(shè)置圖片的裁剪&縮放等形式.
關(guān)于mode屬性的取值可選項(xiàng)如下圖:
話(huà)不多說(shuō), 我們看看實(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è)角度來(lái)講, 主要是確保圖片不失真。
到此這篇關(guān)于微信小程序如何獲取圖片寬度與高度的文章就介紹到這了,更多相關(guān)微信小程序獲取圖片寬高度內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
原生JS forEach()和map()遍歷的區(qū)別、兼容寫(xiě)法及jQuery $.each、$.map遍歷操作
這篇文章主要介紹了原生JS forEach()和map()遍歷的區(qū)別、兼容寫(xiě)法及jQuery $.each、$.map遍歷操作,結(jié)合實(shí)例形式分析了JS使用forEach()和map()以及jQuery使用$.each、$.map進(jìn)行遍歷操作相關(guān)技巧與操作注意事項(xiàng),需要的朋友可以參考下2019-02-02跟我學(xué)習(xí)javascript的浮點(diǎn)數(shù)精度
跟我學(xué)習(xí)javascript的浮點(diǎn)數(shù)精度,帶大家真正的理解JavaScript的浮點(diǎn)數(shù),提醒大家當(dāng)心浮點(diǎn)運(yùn)算中的精度陷阱,需要的朋友可以參考下2015-11-11基于JavaScript實(shí)現(xiàn)簡(jiǎn)易計(jì)算器
這篇文章主要為大家詳細(xì)介紹了基于JavaScript實(shí)現(xiàn)簡(jiǎn)易計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06如何在微信小程序中實(shí)現(xiàn)Mixins方案
這篇文章主要給大家介紹了關(guān)于如何在微信小程序中實(shí)現(xiàn)Mixins方案的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用微信小程序具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06cloneNode實(shí)現(xiàn)表格增加刪除效果
cloneNode實(shí)現(xiàn)表格增加刪除效果...2006-11-11關(guān)于UTF-8的客戶(hù)端用AJAX方式獲取GB2312的服務(wù)器端亂碼問(wèn)題的解決辦法
客戶(hù)端是UTF-8編碼,這也是現(xiàn)在大家公認(rèn)的標(biāo)準(zhǔn)編碼在這種情況下,實(shí)用AJAX異步獲取GB2312編碼的服務(wù)器端信息時(shí),不可避免的要遇到漢字亂碼問(wèn)題2010-11-11JS實(shí)現(xiàn)靈巧的下拉導(dǎo)航效果代碼
這篇文章主要介紹了JS實(shí)現(xiàn)靈巧的下拉導(dǎo)航效果代碼,通過(guò)自定義js插件腳本dropdown.js實(shí)現(xiàn)簡(jiǎn)單的下拉導(dǎo)航效果的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08