vue+css动画 实现文字的上下轮播切换

184 阅读2分钟

要实现两个 <div> 元素中的文本自动间隔一段时间上下翻转交替显示,你可以使用 Vue.js 来控制显示逻辑,并使用 CSS 动画来处理过渡效果。以下是一个基本的实现方法:

  1. HTML 结构:保持你的 HTML 结构不变,但添加一个容器来包裹这两个 <div>
  2. CSS 样式:添加 CSS 来处理动画效果,并设置 .card 元素的初始和最终状态。
  3. Vue.js 逻辑:使用 Vue.js 的数据绑定和生命周期钩子来控制切换逻辑。

以下是完整的代码示例:

HTML

html复制代码
	<div id="app">  

	  <div class="card-container">  

	    <div class="card" v-bind:class="{ active: isActive }">  

	      <span class="span-top office-hours">正常办公时间:</span>  

	      <span class="span-bottom">周一至周五 09:00-12:00 14:00-17:00</span>  

	    </div>  

	    <div class="card" v-bind:class="{ active: !isActive }">  

	      <span class="span-top office-hours">延时服务时间:</span>  

	      <span class="span-bottom">周一至周五 8:30-9:00 12:00-14:00 17:00-17:30 周六8:30-12:30</span>  

	    </div>  

	  </div>  

	</div>

CSS

css复制代码
	.card-container {  

	  position: relative;  

	  height: 100px; /* 根据你的需要调整高度 */  

	  overflow: hidden;  

	}  

	  

	.card {  

	  position: absolute;  

	  top: 0;  

	  left: 0;  

	  width: 100%;  

	  height: 100%;  

	  transition: transform 0.5s ease-in-out; /* 控制动画时间 */  

	  transform: translateY(100%); /* 初始状态在上方隐藏 */  

	}  

	  

	.card.active {  

	  transform: translateY(0); /* 最终状态在可视区域 */  

	}

Vue.js

javascript复制代码
	new Vue({  

	  el: '#app',  

	  data: {  

	    isActive: true, // 控制哪个 card 是 active 的  

	    intervalId: null // 存储 setInterval 的 ID  

	  },  

	  mounted() {  

	    // 在组件挂载后开始切换动画  

	    this.intervalId = setInterval(() => {  

	      this.isActive = !this.isActive;  

	    }, 3000); // 每3秒切换一次  

	  },  

	  beforeDestroy() {  

	    // 在组件销毁前清除定时器  

	    clearInterval(this.intervalId);  

	  }  

	});

解释

  • HTML:两个 .card 元素分别包含不同的文本信息,并包裹在一个 .card-container 中。
  • CSS.card-container 设置了固定的高度和 overflow: hidden 来隐藏超出的内容。.card 元素使用了 position: absolute 和 transform: translateY 来实现上下滑动的效果。.active 类用于控制哪个 .card 是可见的。
  • Vue.js:在 data 中定义了一个 isActive 变量来控制哪个 .card 是活动的,以及一个 intervalId 来存储定时器的 ID。在 mounted 钩子中,使用 setInterval 每3秒切换一次 isActive 的值。在 beforeDestroy 钩子中,清除定时器以防止内存泄漏。

这样,你就可以实现两个文本块自动间隔一段时间上下翻转交替显示的效果了