Heim > Web-Frontend > uni-app > Was soll ich tun, wenn beim Verkleinern der Uniapp-Tastatur kein Animationseffekt auftritt?

Was soll ich tun, wenn beim Verkleinern der Uniapp-Tastatur kein Animationseffekt auftritt?

PHPz
Freigeben: 2023-04-18 15:43:59
Original
922 Leute haben es durchsucht

Mit der Beliebtheit mobiler Geräte und dem Wachstum des Marktes für mobile Anwendungen lernen Entwickler zunehmend, plattformübergreifende Frameworks zur Entwicklung von Anwendungen zu verwenden. Uniapp ist ein beliebtes plattformübergreifendes Entwicklungsframework. Uniapp basiert auf Vue.js und bietet eine Reihe von Plug-Ins und Komponenten, um Entwicklern das Entwickeln und Debuggen zu erleichtern.

Bei der Entwicklung von Uniapp-Anwendungen entdeckten einige Entwickler jedoch ein Problem: Nachdem das Eingabefeld fokussiert wurde und die Tastatur eingeblendet wurde, gibt es keinen Animationseffekt, wenn die Tastatur verkleinert wird, insbesondere auf Android-Geräten. Dieses Problem kann die Benutzererfahrung beeinträchtigen. Hier sind mehrere Lösungen.

1. Verwenden Sie den offiziell von vue-router bereitgestellten Übergang.

vue-router ist ein offiziell von Vue.js bereitgestelltes Routing-Management-Tool, das einen Übergang ermöglicht, um Routing-Übergangseffekte zu erzielen. In Uniapp können wir den Übergang im Vue-Router verwenden, um den Animationseffekt zu erzielen, wenn die Tastatur verkleinert wird.

Die spezifische Implementierungsmethode lautet wie folgt:

  1. Fügen Sie den folgenden Code in App.vue hinzu:
<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>
Nach dem Login kopieren
  1. Wo Animationseffekte erzielt werden müssen, z. B. eine Popup-Ebene, fügen Sie den folgenden Code im Stil hinzu Tag der Komponente:
.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;
}
Nach dem Login kopieren

Im obigen Code gibt

  • fade-enter-active: den Animationseffekt bei der Eingabe von 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;
    }
  });
},
Nach dem Login kopieren

以上代码中,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);"
/>
Nach dem Login kopieren

以上代码中,

  • 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>
Nach dem Login kopieren

以上代码中,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;
}
Nach dem Login kopieren

以上代码中:

  • fade-enter-active:表示进入时的动画效果
  • fade-leave-active:表示离开时的动画效果
  • fade-enter:进入时的初始状态
  • fade-leave-to
  • fade-leave-active an : Zeigt den Animationseffekt beim Verlassen an

fade-enter: Der Anfangszustand beim Betreten

fade-leave-to: Der Endzustand beim Verlassen

🎜🎜Der Vorteil Der Vorteil dieser Methode besteht darin, dass sie einfach zu verwenden ist und Animationseffekte angepasst werden können. Allerdings muss der Übergangscode mehrmals geschrieben werden, damit die Seitenanimation wirksam wird, was zu Coderedundanz führen kann. 🎜🎜2. Rufen Sie die System-API auf🎜🎜Wir können die von uni-app bereitgestellte API verwenden, um das Abhörereignis der Systemtastatur aufzurufen, um den Animationseffekt zu erzielen, wenn die Tastatur auftaucht und verkleinert. 🎜🎜Die Implementierungsmethode lautet wie folgt: 🎜🎜🎜Auf der Seite, die Animationseffekte erzielen muss, können Sie den folgenden Code im onLoad- oder onShow-Lebenszyklus hinzufügen: 🎜🎜rrreee🎜Im obigen Code ist der uni Die Methode .onKeyboardHeightChange kann erkennen, wenn sich die Tastaturhöhe ändert, und die Rückruffunktion auslösen. Wenn die Höhe der Tastatur größer als 0 ist, wird davon ausgegangen, dass die Tastatur eingefahren ist, und dem entsprechenden DOM-Element wird ein Stil für die Animation hinzugefügt. Wenn die Höhe der Tastatur 0 ist, wird davon ausgegangen, dass die Tastatur eingefahren ist , und der Animationseffekt des DOM-Elements wird abgebrochen. 🎜🎜🎜Fügen Sie den folgenden Code im Style-Tag des entsprechenden DOM-Elements hinzu: 🎜🎜rrreee🎜Im obigen Code bedeutet 🎜🎜🎜transform: translator3d(): das Ändern der Position des Elements🎜 🎜isShowKey: Gibt an, ob die Tastatur angezeigt wird. Wenn „true“, bedeutet dies, dass sie angezeigt wird. keyHeight-68+'px': Gibt die Höhe des Tastaturminus an die Höhe der Betriebsleiste am unteren Bildschirmrand und dann basierend auf dem ursprünglichen Wert 🎜🎜0: Zeigt die Position des Elements im Anfangszustand an🎜🎜🎜Der Vorteil von Der Vorteil dieser Methode besteht darin, dass sie einfach zu verwenden ist und keine Plug-Ins von Drittanbietern erfordert. Der Animationseffekt beim Einziehen der Tastatur ist jedoch möglicherweise nicht flüssig genug. 🎜🎜3. Verwenden Sie Plug-Ins von Drittanbietern. Wir können auch einige Plug-Ins von Drittanbietern verwenden, um Animationseffekte zu erzielen, z. B. die Uni-Übergangskomponente in uview-ui usw. 🎜🎜Die Implementierungsmethode ist wie folgt: 🎜🎜🎜Laden Sie das uview-ui-Framework herunter und referenzieren Sie es. 🎜🎜Fügen Sie auf der Seite, auf der Animationseffekte implementiert werden müssen, den folgenden Code hinzu: 🎜🎜rrreee🎜Im obigen Code kann die Komponente uni-transition die Komponenten, die animiert werden müssen, umschließen :name-Attribut zur Angabe des Animationstyps. Die <code>v-show-Direktive bedeutet, die Komponente bei Bedarf anzuzeigen. 🎜
    🎜Fügen Sie den folgenden Code im Style-Tag hinzu: 🎜🎜rrreee🎜Im obigen Code: 🎜🎜🎜fade-enter-active: Zeigt den Animationseffekt bei der Eingabe an 🎜🎜 fade-leave-active: Zeigt den Animationseffekt beim Verlassen an🎜🎜fade-enter: Der Ausgangszustand beim Betreten🎜🎜fade-leave-to: Der Endzustand beim Verlassen🎜🎜🎜Der Vorteil dieser Methode besteht darin, dass sie einfach zu verwenden ist und den Animationseffekt anpassen kann, aber die Einführung von Plug-Ins von Drittanbietern erfordert, was die Größe erhöhen kann das Projekt. 🎜🎜Zusammenfassend sind die oben genannten drei Methoden zur Lösung des Problems, dass beim Verkleinern der Uniapp-Tastatur kein Animationseffekt auftritt, Entwickler können die geeignete Methode entsprechend ihren eigenen Projektanforderungen auswählen. Unabhängig davon, ob Sie den Übergang von Vue-Router verwenden, die System-API aufrufen, um Animationseffekte zu erzielen, oder Plug-Ins von Drittanbietern verwenden, liegt der Schlüssel darin, Lösungen basierend auf bestimmten Situationen zu formulieren, um die Benutzererfahrung und die Anwendungsqualität zu verbessern. 🎜

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn beim Verkleinern der Uniapp-Tastatur kein Animationseffekt auftritt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage