vue学习笔记(9):vue动画

data:{

flag:false,

id:'',

name:'',

list:[

{id:1,name:"赵高"},

{id:2,name:"李高"}

]

}

1.Vue中的动画


2.使用过度类名实现动画

(1)使用transition元素,把需要被动画控制的元素,包裹起来,transition元素是Vue官方提供的

<input type="button" value="toggle" @click="flag=!flag">

<transition>

<h3 v-if="flag">这是一个h3</h3>

</transition>

(2)定义两组样式,来控制transition内部元素实现动画

<style>

//v-enter【这是一个时间点】是进入之前,元素的起始状态,此时还没有进入

//v-leave-to【这是一个时间点】是动画离开之后,离开的终止状态,此时,元素动画已经结束

.v-enter,.v-leave-to{

opacity:0;

//x轴移动

transform:translateX(150px);

}

//v-enter-active【入场动画时间段】

//v-leave-active【离场动画时间段】

.v-enter-active,.v-leave-active{

transition:all 0.4s ease;

}

</style>

3.自定义v-前缀


<input type="button" value="toggle" @click="flag=!flag">

//修改v-前缀

<transition name="my">

<h3 v-if="flag">这是一个h3</h3>

</transition>

<style>

.my-enter,.my-leave-to{

opacity:0;

transform:translateY(150px);

}

.my-enter-active,.my-leave-active{

transition:all 0.4s ease;

}

</style>

4.使用第三方animate.css类库实现动画

引入animated.css第三方类

//入场使用bounceIn,离场使用bounceOut

注意:写的时候需要加一个animated这样的一个基本的类

第(1)种写法:<transition enter-active-class="animated bounceIn"  leave-active-class="animated bounceOut" :duration="200">

//使用:duration="毫秒值"来统一设置入场离场时候的动画时长

使用:duration="{ enter:200,leave:400}" 来分别设置入场的时长,和离场的时长

<h3 v-if="flag">这是一个h3</h3>

</transition>

第(2)种写法<transition enter-active-class="bounceIn"  leave-active-class="bounceOut">

<h3 v-if="flag" class="animated">这是一个h3</h3>

</transition>

5.钩子函数实现半场动画

动画JavaScript钩子函数

https://cn.vuejs.org/v2/guide/transitions.html#JavaScript-%E9%92%A9%E5%AD%90

<style>

.ball{

width:15px;

height:15px;

border-radius:50%;

background:red;

}

</style>

<input type="button" value="加入购物车" @click="flag=!flag">

//使用transition把小球包裹起来

<transition @before-enter="beforeEnter" @enter="enter" @after-enter="afterEnter">

<div class="ball" v-show="flag"></div>

</transition>

<script>

methods:{

//注意:动画钩子函数的第一个参数:el,表示要执行动画的那个dom元素,是个原生的JS dom对象,

可以认为,el是通过 document.getelementById('')方式获取到的原生JS DOM对象

beforeEnter(el){

//brforeEnter表示动画入场之前,此时,动画尚未开始,可以在beforeEnter中,设置元素开始动画之前的起始样式

//设置小球开始动画之前的起始位置

el.style.transform="translate(0,0)"

}

enter(el,done){

//这句话没有实际的作用,但是如果不写,出不来动画效果,可以认为el.offsetWidth会强制动画刷新

el.offsetWidth

//表示动画开始之后的样式,这里可以设置小球完成动画之后的,结束状态

el.style.transform="translate(150px,450px)"

el.style.transition = 'all 1s ease'

//这里的done起始就是afterEnter这个函数,也就是说done就是afterEnter函数的引用

done();

}

afterEnter(el){

//动画完成之后,会调用afterEnter

this.flag = !this.flag

}

}

</script>

6.使用transition-group元素实现列表动画

<style>

li{

border:1px dashed #999

margin:5px;

line-height:35px;

padding-left:5px;

font-size:12px;

}

.v-enter,.v-leave-to{

opacity:0;

transform:translateY(80px);

}

v-enter-active,.v-leave-active{

transition:all 0.6s ease;

}

li:hover{

borderground-color:pink;

transition:all 0.4s ease;

}

</style>

<div>

<lable>

Id:<input type="text" v-model="id">

</lable>

<lable>

name:<input type="text" v-model="name">

</lable>

<input type="button" @click="add">

</div>

<ul>

//在实现列表过渡的时候,如果需要过渡的元素是通过v-for循环渲染出来的,不能使用transition包裹,需要使用transition-group

<transition-group>

<li v-for="item in list" :key="item.id">

{{item.id}}---{{item.name}}

</li>

</transition-group>

</ul>

add(){

this.list.push({id:this.id;name:this.name})

this.id=this.name=' ';

}

7.移除时候的动画

<style>

li{

border:1px dashed #999

margin:5px;

line-height:35px;

padding-left:5px;

font-size:12px;

width:100%;

}

.v-enter,.v-leave-to{

opacity:0;

transform:translateY(80px);

}

.v-enter-active,.v-leave-active{

transition:all 0.6s ease;

}

li:hover{

borderground-color:pink;

transition:all 0.4s ease;

}

//.v-move和.v-leave-active配合使用,能够使列表后续的元素,渐渐地飘上来的效果

.v-move{

transition:all 0.6s ease;

}

.v-enter-active{

//absolute有一个特点,当你不指定宽度大小的时候,默认为最小值

position:absolute;

}

</style>

<transition-group>

<li v-for="(item,i)  in list" :key="item.id" @click="del(i)">

{{item.id}}---{{item.name}}

</li>

</transition-group>

del(i){

this.list.splice(i,1);

}

8.给transition-group添加appear属性实现入场时候的效果

//通过为transition-group元素设置tag属性,指定transition-group渲染为指定的元素,如果不指定tag属性,默认渲染为span标签

<transition-group appear tag="ul">

<li v-for="(item,i)  in list" :key="item.id" @click="del(i)">

{{item.id}}---{{item.name}}

</li>

</transition-group>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容

  • 庸而亦凡者,为芸芸众生;凡而不庸者,乃大智慧者。 “我曾经跨过山和大海,也穿过人山人海……”朴树唱得...
    super静喔阅读 369评论 0 3
  • 令人恐惧的未来。一切未知,不知道明天会发生什么,未来能走多远,也未可知,将来会面对多少困难,我今日所作为,有朝一日...
    kuailemeiyitian阅读 154评论 0 1
  • 开场白: 亲爱的各位家长朋友们,大家下午好! 感谢大家百忙之中抽出时间来参加我们的学期汇报。 我们从金秋9月走到了...
    夭夭燕公子阅读 1,604评论 0 3
  • 【橙子的读书笔记】 社群的复制扩张是社群运营到一定程度后的必然选择。选择时机非常重要,在不适合的时间去做规模可能会...
    老王侃高考阅读 817评论 0 1
  • Linux进程调度原理进程优先级控制——nice和renice命令进程优先级,进程nice值和%nice的解释li...
    残剑阅读 202评论 0 1