Mon compte public WeChat : Le chemin vers la culture frontale, bienvenue pour me suivre.
Ces derniers jours, j'ai cherché comment créer un carrousel de swiper pour les mini-programmes WeChat. Parce que je dois générer à la fois le code du mini-programme et la version H5 du code, il serait inefficace d'écrire deux ensembles, j'ai donc choisi uni-app.
uni-app
L'animation du carrousel a été directement prise en charge dans le composant de base swiper.
Ce que je dois principalement résoudre, ce sont les problèmes suivants :
<code><span style="font-size: 14px;">animate.css</span>
animate.css dans swiper
animate.css dans swiper
<span style="font-size: 14px;">swiper-item</span>
④Comment cela peut-il être réalisé ? Lorsque l'utilisateur clique sur un bouton, il peut accéder au
⑤Le code de l'applet et de la version H5 générera un en-tête, et la barre de navigation devra être masquée dans la version H5. uni-app
小程序
小程序
uni-app
Ce qui suit est l’intégralité de mon processus de production, à titre de référence seulement. De plus, le code est développé par
animate.css
Implémentation du code-webkit-animation
Animate.css est souvent utilisé dans le développement H5. Il est naturellement pris en charge dans WeChat, car WeChat a des restrictions de taille sur les mini-programmes téléchargés, j'ai donc utilisé ici un
très simplifié, qui supprimait beaucoup de CSS3 commençant par . Parce que nous n'avons besoin d'exécuter que de petits programmes et H5, cela n'aura pas beaucoup d'impact. Vous pouvez l'obtenir à partir du code ci-dessous si nécessaire. Jetons d'abord un coup d'œil au code :<template> <view class="content"> <button type="primary" @tap="goChange">跳转到第二屏</button> <swiper class="content-swiper" :vertical="true" :indicator-dots="true" :autoplay="false" :interval="3000" :duration="1000" @change="changeSwiper" @animationfinish="changeFinish" :current-item-id="item_id" circular="true"> <swiper-item item-id="slide0"> <view class="swiper-item"> <image src="../../static/uni.png" :class="animate_0"></image> </view> </swiper-item> <swiper-item item-id="slide1"> <view class="swiper-item"> <image src="../../static/uni.png" :class="animate_1"></image> </view> </swiper-item> <swiper-item item-id="slide2"> <view class="swiper-item"> <image src="../../static/uni.png" :class="animate_2"></image> </view> </swiper-item> <swiper-item item-id="slide3"> <view class="swiper-item"> <image src="../../static/uni.png" :class="animate_3"></image> </view> </swiper-item> </swiper> </view> </template> <script> export default { data() { return { item_id: 'slide2', animate_0: 'animated swing', animate_1: '', animate_2: '', animate_3: '' } }, onLoad() { }, methods: { changeSwiper(event){ // 清空除了当前swiper以外的所有动画 let current = event.detail.current; // 当前页下标 this.item_id = 'slide'+current; // 这里必须记录,否则只能跳转一次 switch (current){ case 0: this['animate_1'] = this['animate_2'] = this['animate_3'] = ''; break; case 1: this['animate_0'] = this['animate_2'] = this['animate_3'] = ''; break; case 2: this['animate_0'] = this['animate_1'] = this['animate_3'] = ''; break; case 3: this['animate_0'] = this['animate_1'] = this['animate_2'] = ''; break; } }, changeFinish(event){ // swiper动画完成之后,给当前swiper添加动画效果 let current = event.detail.current; switch(current){ case 0: this['animate_0'] = 'animated swing'; break; case 1: this['animate_1'] = 'animated shake'; break; case 2: this['animate_2'] = 'animated tada'; break; case 3: this['animate_3'] = 'animated heartBeat'; break; } }, goChange(){ this.item_id = 'slide1'; } } } </script> <style lang="scss"> @import '../../common/animate.css'; .content { text-align: center; .content-swiper{ height: 100vh; image{ height: 200upx; width: 200upx; margin-top: 200upx; } } } </style>
<code><span style="font-size: 14px;">uni-app</span>
uni-app prend en charge l'audace. La version concise <code><span style="font-size: 14px;">animate.css</span><span style="font-size: 14px;">animate.css<strong></strong></span>
est directement introduite dans le CSS. Problème ①<span style="font-size: 14px;">circular</span>
Après avoir vérifié le document, j'ai découvert que la
circulaire<span style="font-size: 14px;">loop</span>
peut être obtenu avec ce paramètre Semblable à la fonction de la page H5 en utilisant le paramètre swiper.js<code><span style="font-size: 14px;">uni-app</span>
loop. Ici, je suis tombé dans la documentation <span style="font-size: 14px;">微信小程序</span>
<code><span style="font-size: 14px;">uni-app</span><span style="font-size: 14px;">loop</span>
et
applet WeChat<span style="font-size: 14px;">小程序</span>
Décrivez la fosse. Parce que je cherchais le paramètre <span style="font-size: 14px;">circular</span>
loop
(loop), j'ai même pensé que cette fonction de boucle infinie ne pouvait pas être réalisée. Il s'avère que ce paramètre dans le mini programme
circulaire<span style="font-size: 14px;">vertical</span>
(encercler) . o(╯□╰)o Problème ③<span style="font-size: 14px;">true</span>
vertical<code><span style="font-size: 14px;">uni-app</span> est défini sur <code><span style="font-size: 14px;">change</span>
true. <span style="font-size: 14px;">current</span>
dans <code><span style="font-size: 14px;">animationfinish</span>
uni-app via <span style="font-size: 14px;">swiper</span>
<span style="font-size: 14px;">changer<strong></strong>Événement, vous pouvez surveiller chaque changement de l'écran du carrousel. Dans cet événement, j'ai enregistré l'indice de l'écran actuel </span><code>
animationfinish<span style="font-size: 14px;">current-item-id</span>
, lorsque le <code><span style="font-size: 14px;">item-id</span>
swiper termine le animation coulissante, ajoutez une animation CSS3 aux éléments de l'écran actuel. <span style="font-size: 14px;">swiper-item</span>
Problème ②<code><span style="font-size: 14px;">item-id</span>Il y a un <span style="font-size: 14px;">current-item-id</span>
uni-app<code><span style="font-size: 14px;">item-id</span>
paramètre code>current-item-id<span style="font-size: 14px;">slide2</span>
, représentant le
item-id
<span style="font-size: 14px;">swiper-item</span>
<span style="font-size: 14px;">pages.json</span>
>. Ensuite, lorsque l'utilisateur clique sur l'événement, modifiez simplement la valeur liée à
current-item-id<span style="font-size: 14px;">titleNView</span>
. Lorsque mon code est initialisé, <code><span style="font-size: 14px;">false</span>
item-id est spécifié comme
unpackage/dist/build/h5
<a href="https://www.php.cn/weixin-marketing.html" target="_blank">uni-app</a>
titleNView
sur dans pages.json
> faux
suffit. Code du programme WeChat Mini<!--index.wxml--> <view class="container"> <button bindtap='goChange'>跳转到</button> <swiper vertical="true" circular="true" current="{{currentId}}" indicator-dots="true" bindchange="changeSwiper" bindanimationfinish="changeFinish"> <swiper-item> <image src='../../static/uni.png' class='animated {{animate_0}}'></image> </swiper-item> <swiper-item> <image src='../../static/uni.png' class='animated {{animate_1}}'></image> </swiper-item> <swiper-item> <image src='../../static/uni.png' class='animated {{animate_2}}'></image> </swiper-item> </swiper> </view> //index.js const app = getApp() Page({ data: { currentId: 0, animate_0: 'swing', animate_1: '', animate_2: '' }, onLoad: function() { }, goChange: function() { this.setData({ currentId: 2 }); }, changeSwiper: function(event) { let current = event.detail.current; switch (current) { case 0: this.setData({ animate_1: '', animate_2: '' }); break; case 1: this.setData({ animate_0: '', animate_2: '' }); break; case 2: this.setData({ animate_0: '', animate_1: '' }); break; } }, changeFinish: function(event) { let current = event.detail.current; switch (current) { case 0: this.setData({ animate_0: 'swing', }); break; case 1: this.setData({ animate_1: 'shake', }); break; case 2: this.setData({ animate_2: 'tada', }); break; } } })
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!