2020/7/31 vue 复习

Vue动画

看图可知 v-enter与v-leave-to样式可以写在一起

               v-enter-to与v-leave样式可写在一起

 

v-if比较懒,要是为false 都不会在代码中,为true就会创建出来,为false就会销毁掉

v-show 是通过样式display:none来切换显示与隐藏的

频繁切换:v-show   很少切换v-if

 

需要被动画控制的元素用<transition>标签包裹起来

 

修改v-前缀

如果标签定义了name属性 那么动画前缀就用.name- (这样类属性变为专有的),不在用.v-

.v-会被所有transition里动画公用

 

注意:script标签 写js代码的时候 src为空就要删掉不然会导致里面的js文件失效

 

引入第三方类animated.css动画的使用:

在enter-active-class要加原始类animated 再选择动画的形式 动画进去的前半场: bounceIn

 在需要动画的元素中加入原始类同样可以,俩者等价:

绑定属性duration来统一控制动画入场离场是时间

属性值以对象的方式来分别设置进场和离场的时间

 

前面不管是用v-enter这种方法,还是用第三方库都无法实现半场动画(过来了就必须得回去) 如加入购物车的小球这类半场动画就无法实现,就用钩子函数来实现(动画生命周期函数与vue生命周期函数类似

半场动画就写入场的动画函数就行

动画钩子函数第一个参数el表示要执行的dom元素,是原生的dom对象 可以认为el是通过 document.getElementById(‘’) 获取到的  与自定义指令中的el一样就是指代的绑定这个方法的元素

 

动画效果出不来,要加一个el.offsetWidth/ el.offsetHeight/ el.offsetLeft/ el.offsetRight 来强制刷新动画,才会出来动画效果,否则只是一个状态到另外一个状态,没有过程

 

enter(leave)函数中的第二个参数done(形参名自己定义),调用done() 相当于直接调用afterEnter() 防止有延迟 从enter到afterEnter时间太久  但是将done()改为afterEnter(el)手动调用还是无效,所以用done就好了

 

为什么下次点击的时候,小球又从原来的地方开始,不是在200px,200px位置消失的吗?

因为beforeEnter作用 每次点击都会开始一个新的动画周期函数,都会从初始的0,0位置

 

 

 

在使用列表过度的动画的时候,如果过渡到元素通过v-for循环渲染出来的不能用transition标签包裹,需要使用transitionGroup

用transitionGroup标签的时候(v-for循环创建的元素)一定要给每个子元素添加:key属性

 

列表删除动画:(有意思)

 19.列表动画.html

.v-move: 删除时,下面列表顶上去的动画

但是必须在.v-leave-active中加

position:absolute,不然顶上去是没有缓动动画的,因为位置被占据了

但是移除的列表项因为设置absolute原因导致消失的的时候变小,所以给li  加  width:100%;

 

 

 

在这列加appear 实现了 刚进入页面 数据飘上来的效果(入场效果)

 

 

transition-group中 tag属性设置标签 ,不设置会默认以span便签,这样span便签里面要是有块级元素,就不符合w3c规范  于是:将外面ul去掉,设置transition-group中的tag=’ul’

 

设置后:更符合规范

 

如果不设置:(transiition-group自动生成span标签,这样span里面有块元素,不规范)

 

 

Vue组件:

很多页面结构类似,前端的组件化,减少代码提高重用

根据组件名称来用标签的形式来引用,其中template属性就是组件将来要展示的内容

 

用myCom1命名+》     <my-com1>

用mycom1 命名+》     <mycom1>

 

或者直接将Vue.extend写到Component中去

以上是创建全局组件的第一种方式

 

创建全局组件的第二种方式:将Vue.extend省去

 

注意: 不论是哪种方式创建出来组件,组件模板中内容template属性指向的模板内容,只能有且只有一个根元素 好比在一个页面中,只有一个HTML标签作为根元素 ,所以这里要将<h3>和<span>用<div>标签包裹起来 根元素就一个<div>

 

创建全局组件的第三种方式

前俩种写html不提示,于是第三种将 <template>标签定义在控制区#app外面 Vue.compontent属性值直接为标签的id

 

通过对象字面量定义组件模板

 

自定义私有组件:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

太想进步了

新人菜鸡一枚,相互学习进步啊

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值