Rumah  >  Artikel  >  hujung hadapan web  >  Cara menggunakan Vue untuk melaksanakan kesan tatal teks

Cara menggunakan Vue untuk melaksanakan kesan tatal teks

王林
王林asal
2023-09-19 10:31:431322semak imbas

Cara menggunakan Vue untuk melaksanakan kesan tatal teks

Cara menggunakan Vue untuk melaksanakan kesan menatal teks

Pengenalan:
Dalam pembangunan web moden, untuk meningkatkan interaktiviti dan daya tarikan halaman, kami sering perlu menambah beberapa kesan khas untuk meningkatkan pengalaman pengguna. Kesan menatal teks ialah salah satu kesan biasa, yang boleh menjadikan teks pada halaman tidak lagi statik tetapi menatal secara dinamik. Artikel ini akan memperkenalkan secara terperinci cara menggunakan Vue untuk melaksanakan kesan tatal teks dan memberikan contoh kod khusus.

Persediaan Teknikal:
Sebelum anda bermula, pastikan anda memasang tindanan teknologi berikut:

  1. Vue.js - rangka kerja JavaScript yang popular untuk membina antara muka pengguna.
  2. Vue CLI - alat perancah yang boleh membina projek Vue dengan cepat.

Langkah pelaksanaan:

  1. Buat projek Vue:
    Gunakan Vue CLI untuk mencipta projek Vue baharu, yang boleh dilengkapkan dengan arahan berikut:

    vue create text-scrolling-demo

    Pilih konfigurasi yang diperlukan mengikut gesaan dan tunggu sehingga projek yang akan dibuat.

  2. Menulis komponen:
    Buat fail komponen baharu dalam direktori src dan namakannya TextScrolling.vue.
    Dalam komponen ini, kita perlu melaksanakan kesan penatalan teks melalui gaya CSS dan mengawal kandungan teks penatalan melalui data responsif Vue.
    Kod khusus adalah seperti berikut:

    <template>
      <div class="text-scrolling">
     <div class="content" v-if="showText">
       <ul ref="scrollContainer" :style="{ animationDuration: duration + 's' }">
         <li v-for="(item, index) in textArray" :key="index" class="text-item">{{ item }}</li>
       </ul>
     </div>
      </div>
    </template>
    
    <script>
    export default {
      data() {
     return {
       textArray: [], // 存储滚动文字的数组
       duration: 0, // 动画的持续时间
       showText: false // 控制滚动文字的显示与隐藏
     }
      },
      mounted() {
     this.initTextArray()
      },
      methods: {
     initTextArray() {
       // 初始化滚动文字的数组,可以从后端接口获取数据并进行处理
       const originalText = '这是一段需要滚动显示的文字,可以根据实际需求进行修改。'
       this.textArray = Array.from(originalText)
       this.showText = true
       this.startScrollAnimation()
     },
     startScrollAnimation() {
       // 计算动画的持续时间,根据文字的长度和滚动速度进行调整
       const containerWidth = this.$refs.scrollContainer.clientWidth
       const itemWidth = this.$refs.scrollContainer.firstElementChild.clientWidth
       const textLength = this.textArray.length
       this.duration = (textLength * itemWidth) / containerWidth
    
       // 设置动画的循环播放
       const animationEndEvent = 'animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd'
       const animationContainer = this.$refs.scrollContainer
       animationContainer.addEventListener(animationEndEvent, () => {
         this.startScrollAnimation()
       })
     }
      }
    }
    </script>
    
    <style scoped>
    .text-scrolling {
      width: 200px;
      height: 30px;
      overflow: hidden;
      border: 1px solid #ccc;
    }
    
    .content {
      white-space: nowrap;
      animation: scrollText linear infinite;
      -webkit-animation: scrollText linear infinite;
      -moz-animation: scrollText linear infinite;
      -o-animation: scrollText linear infinite;
      -ms-animation: scrollText linear infinite;
    }
    
    @keyframes scrollText {
      0% {
     transform: translateX(0);
      }
      100% {
     transform: translateX(-100%);
      }
    }
    
    @-webkit-keyframes scrollText {
      0% {
     transform: translateX(0);
      }
      100% {
     transform: translateX(-100%);
      }
    }
    
    @-moz-keyframes scrollText {
      0% {
     transform: translateX(0);
      }
      100% {
     transform: translateX(-100%);
      }
    }
    
    @-o-keyframes scrollText {
      0% {
     transform: translateX(0);
      }
      100% {
     transform: translateX(-100%);
      }
    }
    
    @-ms-keyframes scrollText {
      0% {
     transform: translateX(0);
      }
      100% {
     transform: translateX(-100%);
      }
    }
    
    .text-item {
      display: inline-block;
      padding: 0 5px;
    }
    </style>
  3. Gunakan komponen dalam App.vue:
    Perkenalkan dan gunakan komponen TextScrolling yang baru dibuat dalam App.vue.
    Kod khusus adalah seperti berikut:

    <template>
      <div id="app">
     <TextScrolling></TextScrolling>
      </div>
    </template>
    
    <script>
    import TextScrolling from './components/TextScrolling'
    
    export default {
      components: {
     TextScrolling
      }
    }
    </script>
    
    <style>
    #app {
      display: flex;
      justify-content: center;
      align-items: center;
      height: 100vh;
    }
    </style>
  4. Jalankan projek:
    Jalankan arahan berikut dalam terminal untuk menjalankan projek:

    npm run serve

    Buka penyemak imbas dan lawati http://localhost:8080, anda akan melihat a halaman kesan tatal teks.

Ringkasan:
Melalui langkah di atas, kami berjaya melaksanakan kesan tatal teks menggunakan Vue. Dalam komponen, kesan penatalan teks dicapai melalui gaya CSS, kandungan teks dikawal melalui data responsif Vue, dan kesan penatalan dinamik dicapai menggunakan fungsi kitaran hayat dan pemantauan acara Vue. Saya harap artikel ini dapat membantu anda memahami dan menggunakan Vue untuk mencapai pelbagai kesan khas yang menarik.

Atas ialah kandungan terperinci Cara menggunakan Vue untuk melaksanakan kesan tatal teks. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn