Heim WeChat-Applet Mini-Programmentwicklung Das WeChat-Applet realisiert die Bildanpassung (unterstützt mehrere Bilder)

Das WeChat-Applet realisiert die Bildanpassung (unterstützt mehrere Bilder)

May 11, 2018 pm 04:22 PM

In diesem Artikel werden hauptsächlich relevante Informationen darüber vorgestellt, wie das WeChat-Applet die Bildanpassung implementieren kann. Lassen Sie uns gemeinsam einen Blick darauf werfen.

Jeder weiß, dass die Anpassung von WeChat-Applets eine relativ häufige Anforderung ist. Normalerweise müssen wir in WEBView nur max-width:100% festlegen. Obwohl widthFix auch in WeChat implementiert werden kann, gibt es einen Fehler Das Bild muss größer oder gleich dem eingestellten Wert sein, sonst kommt es zu Dehnung und Verformung. In diesem Artikel wird eine andere Methode zur Anpassung verwendet.

Schauen wir uns zunächst einige Anweisungen für die Bildkomponente an:

属性名 类型 默认值 说明
src String
图片资源地址
mode String 'scaleToFill' 图片裁剪、缩放的模式
binderror HandleEvent
当错误发生时,发布到 AppService 的事件名,事件对象event.detail = {errMsg: 'something wrong'}
bindload HandleEvent
当图片载入完毕时,发布到 AppService 的事件名,事件对象event.detail = {height:'图片高度px', width:'图片宽度px'}

Hinweis: Bild Komponentenstandardwerte: Breite 300 Pixel, Höhe 225 Pixel. Der Modus verfügt über 13 Modi, davon 4 Skalierungsmodi und 9 Zuschneidemodi.

Wenn es eine geeignetere Lösung gibt, ist es wahrscheinlich widthFix. In den oben genannten Modi besteht die erforderliche Voraussetzung jedoch darin, einen Breitenwert oder einen Höhenwert für die Bildbeschriftung festzulegen. . Aber manchmal möchten wir die Breite und Höhe des Bildes überhaupt nicht einschränken. Was wir brauchen, ist, dass sich das Bild selbst an seine eigene Größe anpassen kann.

模式 说明
scaleToFill 不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素
aspectFit 保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来。
aspectFill 保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取。
widthFix 宽度不变,高度自动变化,保持原图宽高比不变

Im widthFix-Modus müssen Sie zuerst einen Breitenwert festlegen. Was passiert, wenn das resultierende Bild kleiner als die angegebene Breite ist? Zu diesem Zeitpunkt wird das Bild gestreckt.

(wird häufig in Artikeln verwendet, da die Abbildungen im Artikel möglicherweise kleiner als die Standardbreite sind, wie z. B. gängige Emoticons).

Tatsächlich reserviert das Bild im obigen Tag eine Funktion bindLoad für uns. Werfen wir einen Blick darauf, wie ich Anpassungsfähigkeit unterstütze.

Es gibt eine Voraussetzung: Wenn mehrere Bilder vorhanden sind, müssen Sie den Positionsindex dieses Bildes kennen. Wir verwenden diese Position, um die Breite und Höhe des Bildes zu speichern.

Wenn unser Bild nicht nur die Breite, sondern auch den Höhenwert begrenzt, begrenzen wir beispielsweise die maximale Höhe und so weiter. Dann muss unsere imageLoad-Funktion so angepasst werden, dass sie entsprechend ihrem Seitenverhältnis ausgegeben wird.
<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"/>
Nach dem Login kopieren
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;
 }
 var imageSize = this.data.imageSize;
 imageSize[e.target.dataset.index] = {
 width:viewWidth,
 height:viewHeight
 }
 this.setData({
 imageSize:imageSize
 })
 }
})
Nach dem Login kopieren

Anhang: Kleine Bildvorschau, Vollbildmodus aufrufen.
imageLoad:function(e){
 var originWidth = e.detail.width * px2rpx,
 originHeight=e.detail.height *px2rpx,
 ratio = originWidth/originHeight ;
 var viewWidth = 220,viewHeight = 165, viewRatio = viewWidth/viewHeight;
 if(ratio>=viewRatio){
 if(originWidth>=viewWidth){
 viewHeight = viewWidth/ratio;
 }else{
 viewWidth = originWidth;
 viewHeight = originHeight
 }
 }else{
 if(originWidth>=viewWidth){
 viewWidth = viewRatio*originHeight
 }else{
 viewWidth = viewRatio*originWidth;
 viewHeight = viewRatio*originHeight;
 }
 }
 var image = this.data.imageSize;
 image[e.target.dataset.index]={
 width:viewWidth,
 height:viewHeight
 }
 this.setData({
 imageSize:image
})
},
Nach dem Login kopieren

Verwenden Sie die API, um Bilder in der Vorschau anzuzeigen. Im Folgenden finden Sie den entsprechenden Code, den entsprechenden Stilteil und das entsprechende Layout.

HTML-Code: wx.previewImage(OBJECT)

JS

<view class="wrap">
 <image wx:for="{{pictures}}" wx:key="unique" src="{{item}}" data-index="{{index}}" bindtap="previewImage"></image>
</view>
Nach dem Login kopieren

Weitere WeChat-Miniprogramme zur Implementierung der Bildanpassung (Unterstützung mehrerer Bilder) und verwandte Artikel finden Sie unter die chinesische PHP-Website!

Page({
 data: {
 pictures: [
 &#39;https://p0.meituan.net/movie/ea4ac75173a8273f3956e514a4c78018253143.jpeg&#39;,
 &#39;https://p0.meituan.net/movie/5d4fa35c6d1215b5689257307c461dd2541448.jpeg&#39;,
 &#39;https://p0.meituan.net/movie/0c49f98a93881b65b58c349eed219dba290900.jpg&#39;,
 &#39;https://p1.meituan.net/movie/45f98822bd15082ae3932b6108b17a01265779.jpg&#39;,
 &#39;https://p1.meituan.net/movie/722de9a7b0c1f9c262162d87eccaec7c451290.jpg&#39;,
 &#39;https://p0.meituan.net/movie/cb9be5bbedb78ce2ef8e83c93f83caca474393.jpg&#39;,
 &#39;https://p1.meituan.net/movie/a852b992cdec15319c717ba9fa9b7a35406466.jpg&#39;,
 &#39;https://p1.meituan.net/movie/dc1f94811793e9c653170cba7b05bf3e484939.jpg&#39;
 ]
 },
 previewImage: function(e){
 var that = this,
 index = e.currentTarget.dataset.index,
 pictures = this.data.pictures;
 wx.previewImage({
 current: pictures[index],
 urls: pictures
 })
 }
})
Nach dem Login kopieren

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)