这是我用js和css3,实现的vue transition组件相同的效果
核心js

 var btn = document.getElementById('btn');
var box = null
btn.addEventListener('click', function() {
if (box) return
box = document.createElement('div')
box.innerText = 'box'
box.classList = 'box v-enter v-enter-active'
document.body.appendChild(box)
// 必须用setTimeout
setTimeout(() => {
box.classList.remove('v-enter')
})
box.addEventListener("webkitTransitionEnd", function() {
if (!box) return
if (box.classList.contains('v-leave-active')) {
box.parentNode.removeChild(box)
box = null
}else {
box.classList.remove('v-enter-active')
}
console.log("动画结束");
})
}, false) var leaveBtn = document.getElementById('leaveBtn');
leaveBtn.addEventListener('click', function() {
if (!box)return
box.classList.add('v-leave-to', 'v-leave-active')
},false)

全部代码

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
*{
padding:0;margin:0;
box-sizing:border-box;
}
.box{
width:100px;
height:100px;
border: 1px solid red;
margin: 0 auto;
}
.v-enter{
opacity: 0;
transform: translate3d(-100px, 0, 0)
}
.v-enter-active{
transition: all .8s;
}
.v-leave-to{
opacity: 0;
transform: translate3d(-100px, 0, 0)
}
.v-leave-active{
transition: all .8s;
}
.page{
position: absolute;
left:0;
top:0;
bottom:0;
right:0;
}
</style>
</head>
<body> <div style="text-align:center; margin: 30px;">
<button id="btn">进入</button>
<button id="leaveBtn">离开</button>
</div>
<script type="text/javascript">
var btn = document.getElementById('btn');
var box = null
btn.addEventListener('click', function() {
if (box) return
box = document.createElement('div')
box.innerText = 'box'
box.classList = 'box v-enter v-enter-active'
document.body.appendChild(box)
// 必须用setTimeout
setTimeout(() => {
box.classList.remove('v-enter')
})
box.addEventListener("webkitTransitionEnd", function() {
if (!box) return
if (box.classList.contains('v-leave-active')) {
box.parentNode.removeChild(box)
box = null
}else {
box.classList.remove('v-enter-active')
}
console.log("动画结束");
})
}, false) var leaveBtn = document.getElementById('leaveBtn');
leaveBtn.addEventListener('click', function() {
if (!box)return
box.classList.add('v-leave-to', 'v-leave-active')
},false)
</script> </body>
</html>

最新文章

  1. Android Handler、Loop 的简单使用
  2. WPF的二维绘图(一)——DrawingContext
  3. appserv中php升级问题
  4. Linux开机后 systemd 自动启动 ceph osd mon进程
  5. CLOSE_WAIT?项目上线之际遇到这样的烦心事
  6. IOS 开发文件操作——NSFileManager
  7. Counterfeit Dollar 分类: POJ 2015-06-12 15:28 19人阅读 评论(0) 收藏
  8. qt创建android项目后需要加入的参数
  9. UOJ 08 Quine 是在下输了
  10. 【疯狂Java讲义学习笔记】【数据类型与运算符】
  11. C#中的强类型说明
  12. 基于bootstrap的datetimepicker插件
  13. laravel框架——路由
  14. LSI SAS 3008配置操作
  15. 初学Java ssh之Spring 第二篇
  16. shell脚本中每次读取文件的一行
  17. bzoj 2298: [HAOI2011]problem a
  18. 服务端预渲染之Nuxt(爬坑篇)
  19. laravel安装laravel-ide-helper扩展进行代码提示(二)
  20. ajax 浏览网页等待页面

热门文章

  1. linux如何将某个用户加入到其它组?
  2. Vue + Webpack-simple 怎么修改生产环境下运行的端口?
  3. CentOS linux7 磁盘分区
  4. Mac 配置vscode调试PHP
  5. iscsi序列一、搭建iscsi存储系统
  6. UML类图与时序图
  7. 用Python操作Excel,实现班级成绩的统计
  8. Jmeter接口测试 2=&gt; Jmeter工具的介绍
  9. loadrunner脚本因为没有token报错
  10. C#对IQueryable&lt;T&gt;、IEnumerable&lt;T&gt;的扩展方法