Maison > interface Web > uni-app > Que dois-je faire s'il n'y a pas d'effet d'animation lorsque le clavier Uniapp se rétrécit ?

Que dois-je faire s'il n'y a pas d'effet d'animation lorsque le clavier Uniapp se rétrécit ?

PHPz
Libérer: 2023-04-18 15:43:59
original
910 Les gens l'ont consulté

Avec la popularité des appareils mobiles et la croissance du marché des applications mobiles, les développeurs apprennent de plus en plus à utiliser des frameworks multiplateformes pour développer des applications. Uniapp est un framework de développement multiplateforme populaire. Uniapp est développé sur la base de Vue.js et fournit une série de plug-ins et de composants pour faciliter le développement et le débogage des développeurs.

Cependant, lors du développement d'applications Uniapp, certains développeurs ont découvert un problème : une fois que la zone de saisie est active et que le clavier apparaît, il n'y a aucun effet d'animation lorsque le clavier se rétrécit, en particulier sur les appareils Android. Ce problème peut affecter l’expérience utilisateur. Voici plusieurs solutions.

1. Utilisez la transition officiellement fournie par vue-router

vue-router est un outil de gestion de routage officiellement fourni par Vue.js, qui fournit une transition pour obtenir des effets de transition de routage. Dans Uniapp, nous pouvons utiliser la transition dans vue-router pour obtenir l'effet d'animation lorsque le clavier rétrécit.

La méthode d'implémentation spécifique est la suivante :

  1. Ajoutez le code suivant dans App.vue :
<template>
  <div id="app">
    <transition name="fade">
      <router-view/>
    </transition>
  </div>
</template>

<script>
export default {
  name: 'App',
  components: {},
  methods: {},
}
</script>

<style>
.fade-enter-active, .fade-leave-active {
  transition: opacity .5s;
}
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
  opacity: 0;
}
</style>
Copier après la connexion
  1. Là où des effets d'animation doivent être obtenus, comme un calque contextuel, ajoutez le code suivant dans le style tag du composant :
.slide-up-enter-active, .slide-up-leave-active {
  transition: all .3s cubic-bezier(.55,0,.1,1);
}
.slide-up-enter, .slide-up-leave-to {
  transform: translateY(100%);
  opacity: 0;
}
Copier après la connexion

Dans le code ci-dessus,

  • fade-enter-active : indique l'effet d'animation lors de la saisie de fade-enter-active:表示进入时的动画效果
  • fade-leave-active:表示离开时的动画效果
  • fade-enter:进入时的初始状态
  • fade-leave-to:离开时的最终状态

该方法的优点是使用简单,且可以自定义动画效果,但需要多次编写transition代码来使页面动画生效,可能存在代码冗余的问题。

二、调用系统API

我们可以使用uni-app提供的API来调用系统键盘的监听事件,从而实现键盘弹出、收缩时的动画效果。

实现方法如下:

  1. 在需要实现动画效果的页面,可以在onLoad或onShow生命周期中添加以下代码:
onLoad() {
  uni.onKeyboardHeightChange((res) => {
    if(res.height > 0){
      //键盘弹出时
      this.isShowKey = true;
      this.keyHeight = res.height;
    } else {
      //键盘收回时
      this.isShowKey = false;
    }
  });
},
Copier après la connexion

以上代码中,uni.onKeyboardHeightChange方法可以在键盘高度发生变化时监听到,并触发回调函数。如果键盘的高度大于0,则判断为键盘弹出,此时给相应的DOM元素添加样式进行动画;如果键盘的高度为0,则判断为键盘收回,此时取消DOM元素的动画效果。

  1. 在相应的DOM元素的style标签中添加以下代码:
<input class="input" type="text" 
style="transform: translate3d(0, {{isShowKey ? -(keyHeight - 68)+&#39;px&#39; : &#39;0&#39;}}, 0);"
/>
Copier après la connexion

以上代码中,

  • transform: translate3d():表示改变元素的位置
  • isShowKey:表示键盘是否弹出,为true则表示弹出
  • keyHeight-68+'px':表示键盘的高度减去屏幕底部操作栏的高度,再在原基础上向上平移
  • 0:表示元素初始状态下的位置

该方法的优点是使用简单,无需引用第三方插件,但键盘收回时的动画效果可能不够流畅。

三、使用第三方插件

我们还可以使用一些第三方插件来达到动画效果的目的,比如uview-ui中的uni-transition组件等。

实现方法如下:

  1. 下载并引用uview-ui框架。
  2. 在需要实现动画效果的页面中,添加以下代码:
<uni-transition :name="&#39;fade&#39;">
  <div v-show="showContent" class="content">
    //...
  </div>
</uni-transition>
Copier après la connexion

以上代码中,uni-transition组件可包裹需要添加动画效果的组件,通过:name属性来指定动画类型。v-show指令表示在需要时显示组件。

  1. 在style标签中添加以下代码:
.fade-enter-active, .fade-leave-active {
  transition: opacity .5s;
}
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
  opacity: 0;
}
Copier après la connexion

以上代码中:

  • fade-enter-active:表示进入时的动画效果
  • fade-leave-active:表示离开时的动画效果
  • fade-enter:进入时的初始状态
  • fade-leave-to
  • fade-leave-active : indique l'effet d'animation en quittant

fade-enter : L'état initial en entrant

fade-leave-to : L'état final en sortant

🎜🎜L'avantage L'un des avantages de cette méthode est qu'elle est simple à utiliser et que les effets d'animation peuvent être personnalisés, mais le code de transition doit être écrit plusieurs fois pour que l'animation de la page prenne effet, ce qui peut entraîner une redondance du code. 🎜🎜2. Appelez l'API système🎜🎜Nous pouvons utiliser l'API fournie par uni-app pour appeler l'événement d'écoute du clavier système afin d'obtenir l'effet d'animation lorsque le clavier apparaît et rétrécit. 🎜🎜La méthode d'implémentation est la suivante : 🎜🎜🎜Dans la page qui doit réaliser des effets d'animation, vous pouvez ajouter le code suivant dans le cycle de vie onLoad ou onShow : 🎜🎜rrreee🎜Dans le code ci-dessus, le uni La méthode .onKeyboardHeightChange peut être en mode Détecter lorsque la hauteur du clavier change et déclencher la fonction de rappel. Si la hauteur du clavier est supérieure à 0, on considère que le clavier apparaît et un style est ajouté à l'élément DOM correspondant pour l'animation ; si la hauteur du clavier est 0, on considère que le clavier est rétracté ; , et l'effet d'animation de l'élément DOM est annulé. 🎜🎜🎜Ajoutez le code suivant dans la balise style de l'élément DOM correspondant : 🎜🎜rrreee🎜Dans le code ci-dessus, 🎜🎜🎜transform:translat3d() : signifie changer la position de l'élément🎜 🎜 isShowKey : Indique si le clavier apparaîtra. Si vrai, cela signifie qu'il apparaîtra. keyHeight-68+'px' : Indique la hauteur du clavier moins. la hauteur de la barre d'opération en bas de l'écran, puis en fonction de la valeur d'origine. Pan up 🎜🎜0 : Indique la position de l'élément dans son état initial🎜🎜🎜L'avantage de cette méthode est qu'elle est simple à utiliser et ne nécessite pas l'utilisation de plug-ins tiers, mais l'effet d'animation lorsque le clavier est rétracté peut ne pas être assez fluide. 🎜🎜3. Utiliser des plug-ins tiers🎜🎜Nous pouvons également utiliser certains plug-ins tiers pour réaliser des effets d'animation, tels que le composant uni-transition dans uview-ui, etc. 🎜🎜La méthode d'implémentation est la suivante : 🎜🎜🎜Téléchargez et référencez le framework uview-ui. 🎜🎜Dans la page où les effets d'animation doivent être implémentés, ajoutez le code suivant : 🎜🎜rrreee🎜Dans le code ci-dessus, le composant uni-transition peut envelopper les composants qui doivent être animés, via Attribut :name pour spécifier le type d'animation. La directive <code>v-show signifie afficher le composant en cas de besoin. 🎜
    🎜Ajoutez le code suivant dans la balise style : 🎜🎜rrreee🎜Dans le code ci-dessus : 🎜🎜🎜fade-enter-active : Indique l'effet d'animation lors de la saisie 🎜🎜 fade-leave-active : Indique l'effet d'animation en quittant🎜🎜fade-enter : L'état initial lors de l'entrée🎜🎜fade-leave-to : L'état final en quittant🎜🎜🎜L'avantage de cette méthode est qu'elle est simple à utiliser et permet de personnaliser l'effet d'animation, mais elle nécessite l'introduction de plug-ins tiers, ce qui peut augmenter la taille de le projet. 🎜🎜Pour résumer, voici trois méthodes ci-dessus pour résoudre le problème de l'absence d'effet d'animation lorsque le clavier Uniapp rétrécit. Les développeurs peuvent choisir la méthode appropriée en fonction des besoins de leur propre projet. Que vous utilisiez la transition de vue-router, appeliez l'API du système pour obtenir des effets d'animation ou utilisiez des plug-ins tiers, la clé est de formuler des solutions basées sur des situations spécifiques pour améliorer l'expérience utilisateur et améliorer la qualité des applications. 🎜

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal