Home Web Front-end Vue.js How to handle page skeleton and loading animation in Vue

How to handle page skeleton and loading animation in Vue

Oct 15, 2023 pm 01:04 PM
loading animation Processing in vue Page skeleton

How to handle page skeleton and loading animation in Vue

How to handle page skeleton and loading animation in Vue

In modern web applications, users have high expectations for a fast loading page experience. In order to meet this demand, developers can use some technical means to improve the loading speed of the page, and add some animation effects to enhance the user experience.

Vue, as a popular JavaScript framework, provides many options for handling page skeletons and loading animations. Some common methods will be introduced in detail below and specific code examples will be given.

1. Page skeleton

The page skeleton refers to displaying some basic layouts and styles during the page loading process, so that users can perceive that the page is loading and reserve space for upcoming content. . This prevents the page from going blank during loading and improves user experience.

In Vue, you can use Vue's render function to create the page skeleton. Here is an example:

Vue.component('skeleton', {
  render: function (createElement) {
    return createElement('div', {
      attrs: {
        class: 'skeleton'
      }
    }, [
      createElement('div', {
        attrs: {
          class: 'skeleton-header'
        }
      }),
      createElement('div', {
        attrs: {
          class: 'skeleton-content'
        }
      }),
      createElement('div', {
        attrs: {
          class: 'skeleton-footer'
        }
      })
    ])
  }
})
Copy after login

In the above code, we create a global Vue component named "skeleton", which uses a rendering function to generate the HTML structure of the page skeleton. In this example, we create a skeleton containing a header, content, and footer and style it using CSS class names.

Then, in the component that needs to display the page skeleton, conditional rendering can be used to determine when to display the page skeleton. Here is an example:

<template>
  <div>
    <div v-if="loading">
      <skeleton></skeleton>
    </div>
    <div v-else>
      <!-- 页面内容 -->
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      loading: true
    }
  },
  mounted() {
    // 模拟异步数据加载
    setTimeout(() => {
      this.loading = false
    }, 2000)
  }
}
</script>
Copy after login

In the above example, we use Vue’s conditional rendering instruction v-if to determine when to display the page skeleton. When loading is true, the skeleton page is displayed; when loading is false, the real page content is displayed. In the mounted lifecycle hook, we simulate the process of asynchronous data loading and set the value of loading to false after 2 seconds, as shown in the example.

Through the above method, we can realize the skeleton display during the page loading process and enhance the user experience.

2. Loading animation

The loading animation is to convey the information that the page is loading to the user and provide a kind of visual feedback. In Vue, loading animation can be achieved through CSS animation, third-party libraries or Vue's transition effects.

  1. CSS Animation

Using CSS animation is one of the simplest and most common ways. For example, we can define a rotation animation:

@keyframes spin {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

.loading {
  animation: spin 1s infinite linear;
}
Copy after login

Then, add the CSS class name to the element that needs to display the loading animation, as follows:

<template>
  <div>
    <div v-if="loading" class="loading"></div>
    <div v-else>
      <!-- 页面内容 -->
    </div>
  </div>
</template>
Copy after login

In the above example, when loading is When true, displays an element with the "loading" class name, which will trigger a CSS animation.

  1. Third-party libraries

In addition to using CSS animations, we can also use some third-party libraries to achieve more complex loading animation effects. For example, use the "vue-spinner" library to display a loading animation of a rotating icon:

First, install the "vue-spinner" library:

npm install vue-spinner --save
Copy after login

Then, when you need to use the loading animation component Import and use this library in:

<template>
  <div>
    <div v-if="loading">
      <spinner></spinner>
    </div>
    <div v-else>
      <!-- 页面内容 -->
    </div>
  </div>
</template>

<script>
import Spinner from 'vue-spinner'

export default {
  components: {
    Spinner
  },
  data() {
    return {
      loading: true
    }
  },
  mounted() {
    // 模拟异步数据加载
    setTimeout(() => {
      this.loading = false
    }, 2000)
  }
}
</script>
Copy after login

In the above example, we use conditional rendering to determine when to display the loading animation in the component that needs to display the loading animation. When loading is true, display a "spinner" component, which will display a rotating loading icon. When loading is false, the real page content is displayed.

To sum up, Vue provides a variety of methods for processing page skeletons and loading animations. By using rendering functions and conditional rendering, we can display the page skeleton; and using CSS animation and third-party libraries, we can achieve various cool loading animation effects. By using these technical means, we can improve the page loading speed of web applications and provide users with a better experience.

The above is the detailed content of How to handle page skeleton and loading animation in Vue. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1662
14
PHP Tutorial
1261
29
C# Tutorial
1234
24
What is the method of converting Vue.js strings into objects? What is the method of converting Vue.js strings into objects? Apr 07, 2025 pm 09:18 PM

Using JSON.parse() string to object is the safest and most efficient: make sure that strings comply with JSON specifications and avoid common errors. Use try...catch to handle exceptions to improve code robustness. Avoid using the eval() method, which has security risks. For huge JSON strings, chunked parsing or asynchronous parsing can be considered for optimizing performance.

How to use bootstrap in vue How to use bootstrap in vue Apr 07, 2025 pm 11:33 PM

Using Bootstrap in Vue.js is divided into five steps: Install Bootstrap. Import Bootstrap in main.js. Use the Bootstrap component directly in the template. Optional: Custom style. Optional: Use plug-ins.

Vue.js vs. React: Project-Specific Considerations Vue.js vs. React: Project-Specific Considerations Apr 09, 2025 am 12:01 AM

Vue.js is suitable for small and medium-sized projects and fast iterations, while React is suitable for large and complex applications. 1) Vue.js is easy to use and is suitable for situations where the team is insufficient or the project scale is small. 2) React has a richer ecosystem and is suitable for projects with high performance and complex functional needs.

How to set the timeout of Vue Axios How to set the timeout of Vue Axios Apr 07, 2025 pm 10:03 PM

In order to set the timeout for Vue Axios, we can create an Axios instance and specify the timeout option: In global settings: Vue.prototype.$axios = axios.create({ timeout: 5000 }); in a single request: this.$axios.get('/api/users', { timeout: 10000 }).

How to add functions to buttons for vue How to add functions to buttons for vue Apr 08, 2025 am 08:51 AM

You can add a function to the Vue button by binding the button in the HTML template to a method. Define the method and write function logic in the Vue instance.

How to use watch in vue How to use watch in vue Apr 07, 2025 pm 11:36 PM

The watch option in Vue.js allows developers to listen for changes in specific data. When the data changes, watch triggers a callback function to perform update views or other tasks. Its configuration options include immediate, which specifies whether to execute a callback immediately, and deep, which specifies whether to recursively listen to changes to objects or arrays.

The Choice of Frameworks: What Drives Netflix's Decisions? The Choice of Frameworks: What Drives Netflix's Decisions? Apr 13, 2025 am 12:05 AM

Netflix mainly considers performance, scalability, development efficiency, ecosystem, technical debt and maintenance costs in framework selection. 1. Performance and scalability: Java and SpringBoot are selected to efficiently process massive data and high concurrent requests. 2. Development efficiency and ecosystem: Use React to improve front-end development efficiency and utilize its rich ecosystem. 3. Technical debt and maintenance costs: Choose Node.js to build microservices to reduce maintenance costs and technical debt.

What does vue multi-page development mean? What does vue multi-page development mean? Apr 07, 2025 pm 11:57 PM

Vue multi-page development is a way to build applications using the Vue.js framework, where the application is divided into separate pages: Code Maintenance: Splitting the application into multiple pages can make the code easier to manage and maintain. Modularity: Each page can be used as a separate module for easy reuse and replacement. Simple routing: Navigation between pages can be managed through simple routing configuration. SEO Optimization: Each page has its own URL, which helps SEO.

See all articles