https://cn.vuejs.org/v2/guide/transitions.html https://godbasin.github.io/vue-ebook/vue-ebook/6.html#_6-1-transition-%E7%BB%84%E4%BB%B6
Vue 提供了 transition 的封装组件,在下列情形中,可以给任何元素和组件添加进入/离开过渡
- 条件渲染 (使用 v-if)
- 条件展示 (使用 v-show)
- 动态组件
- 组件根节点
对于这些在过渡中切换的类名来说,如果你使用一个没有名字的
<template>
<!-- transition的使用 -->
<div id="demo">
<button v-on:click="show = !show">
Toggle
</button>
<transition name="fade">
<p v-if="show">hello</p>
</transition>
</div>
</template>
<script>
new Vue({
el: "#demo",
data: {
show: true
}
});
</script>
<style>
/* 简单的css transition实现动画 */
.fade-enter-active,
.fade-leave-active {
transition: opacity 0.5s;
}
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
opacity: 0;
}
</style>
轮播图实现:
https://code.h5jun.com/wife/48/edit?html,css,js,console
<!DOCTYPE html>
<!--
Created using JS Bin
http://code.h5jun.com
Copyright (c) 2021 by mewcoder (//code.h5jun.com/wife/48/edit)
Released under the MIT license: http://jsbin.mit-license.org
-->
<meta name="robots" content="noindex">
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<style id="jsbin-css">
.slide-enter-active,
.slide-leave-active {
transition: transform .3s;
}
.slide-enter {
transform: translateX(100%);
}
.slide-enter-to {
transform: translateX(0);
}
.slide-leave {
transform: translateX(0);
}
.slide-leave-to {
transform: translateX(-100%);
}
.list {
position: relative;
width: 300px;
height: 200px;
border: 1px solid red;
overflow: hidden;
}
.item {
position: absolute;
top: 0;
left: 0;
}
img {
width: 100%;
height: 100%
}
</style>
</head>
<body>
<div id="app">
<div class="list">
<div v-for="(item,index) in list" :key="index">
<transition name="slide">
<div v-if="index === currentIndex" :key="item" class="item">
<img :src="item" />
</div>
</transition>
</div>
</div>
<button @click="slide(-1)">-</button>
</div>
<script id="jsbin-javascript">
// 重点好像在绝对定位
new Vue({
el: '#app',
data: {
currentIndex: 0,
list: ["https://p5.ssl.qhimg.com/t0119c74624763dd070.png",
"https://p4.ssl.qhimg.com/t01adbe3351db853eb3.jpg",
"https://p2.ssl.qhimg.com/t01645cd5ba0c3b60cb.jpg",
"https://p4.ssl.qhimg.com/t01331ac159b58f5478.jpg"
],
},
methods: {
slide(step) {
this.currentIndex = (this.currentIndex + step + 4) % 4;
}
}
})
</script>
</body>
</html>
为什么用绝对定位? https://www.bilibili.com/video/BV1ht4y1D7C1?p=2 7:10左右