A list that needs to be automatically scrolled and played in a loop, using pure CSS to implement the basic loop function
.messages animation-name carousel animation-timing-function linear animation-iteration-count infinite .message-item cursor pointer margin-top 10px &.stopPlay animation-play-state paused /** The CSS3 animation-play-state property pauses the animation when it is paused and continues the animation when it is running*/ @keyframes carousel { 0% { transform: translateY(0%) } 100% { transform: translateY(-50%) } }
Complete code
<template> <div> <div class="top-line"> <div class="box-title"> <span class="title">XXXX thematic map</span> </div> </div> <div class="scroll-box"> <ul class="messages" @mouseover="stopAnim" @mouseout="runAnim" v-if="list.length" :style="{ animationDuration: animationDuration }" :class="{ stopPlay: animationPlayState }"> <li class="message-item" v-for="(item, index) in list" :key="index" @click="toDetail(item)"> <div class="message-top"> <span class="message-title">{{ item.name }}</span> <span class="message-time">{{ item.startDate }}</span> </div> <p class="message-content">{{ item.content }}</p> </li> </ul> <div class="none" v-else> No content yet</div> </div> </div> </template>
<script> import test11List from '@/assets/test11List' export default { data() { return { animationDuration: '', animationPlayState: false, list: test11List.list, category: '' }; }, mounted() { this.getData() }, methods: { getData() { let data = this.list if (data.length <= 2) { this.animationPlayState = true this.animationDuration = 2 + 's'//Animation duration} else { // Marquee animation this.animationDuration = data.length * 2 + 's' this.list = this.list.concat(this.list) } }, stopAnim() {//The mouse moves into the pause animation this.animationPlayState = true }, runAnim() {//Mouse removal continues animation if (this.list.length > 2) { this.animationPlayState = false } } }, }; </script>
<style lang="stylus" scoped> *{ margin: 0 padding: 0 } ul{ list-style: none } .scroll-box{ width 100% height 800px overflow hidden border 2px solid red } .box-title line-height 34px font-size 16px background: blue color: #fff opacity 1 .messages animation-name carousel animation-timing-function linear animation-iteration-count infinite .message-item cursor pointer margin-top 10px &.stopPlay animation-play-state paused /** The CSS3 animation-play-state property pauses the animation when it is paused and continues the animation when it is running*/ .none text-align center line-height 537px color #fff @keyframes carousel { 0% { transform: translateY(0%) } 100% { transform: translateY(-50%) } } </style>
This concludes this article on CSS3’s implementation of dynamic scrolling playlists. For more content related to CSS3 scrolling playlists, please search previous articles on downcodes.com or continue to browse the relevant articles below. I hope you will support downcodes in the future. com!