网站首页 > 技术文章 正文
一、关于css3的transition属性:
transition:翻译为“过渡”,过渡是一个持续性的动作,因此必须定义一个持续时间。
transition属性:
1.transition-property属性:指定CSS属性的过渡效果,常用于鼠标悬停在一个元素上时指定属性的变化效果;
none:没有属性会获得过渡效果。
all:所有属性都会获得过渡效果,此值为默认值。
<property>:指定属性获得过渡效果,多个属性用逗号分隔,如 width,color
2.transition-duration属性:规定完成过渡效果需要花费的时间(以秒或毫秒计,如: 0.5s),如需要过渡效果,必须指定一个过渡时间,否则过渡效果是不会生效的;
3.transition-timing-function属性:指定切换效果的速度,此属性允许一个过渡效果,以改变其持续时间的速度;
linear 规定以相同速度开始至结束的过渡效果(等于 cubic-bezier(0,0,1,1))。
ease (默认值) 规定慢速开始,然后变快,然后慢速结束的过渡效果(cubic-bezier(0.25,0.1,0.25,1))。
ease-in 规定以慢速开始的过渡效果(等于 cubic-bezier(0.42,0,1,1))。
ease-out 规定以慢速结束的过渡效果(等于 cubic-bezier(0,0,0.58,1))。
ease-in-out 规定以慢速开始和结束的过渡效果(等于 cubic-bezier(0.42,0,0.58,1))。
cubic-bezier(n,n,n,n) 在 cubic-bezier 函数中定义自己的值。可能的值是 0 至 1 之间的数值。
4.transition-delay 属性:指定何时将开始切换效果,延迟一段时间后触发过渡(以秒或毫秒计,如: 0.5s),默认为0s。
除了transition-duration属性外,其他都有默认值,如果不需要改变默认值可以不指定,只配置transition-duration属性即可:
transition:0.5s 等价于 transition: all 0.5s ease 0s;
例:针对的是一个标签元素
div{
width: 100px;
height: 100px;
background-color: wheat;
//当div的width属性发生变化时,应用此过渡效果
transition: width 0.5s ease 0s;
}
//鼠标指向时div的width属性发生变化
div:hover{
width:300px;
}
<div></div>
二、关于css3的transform属性:
transform 属性:应用于元素的2D或3D转换,这个属性允许你将元素旋转,缩放,移动,倾斜等。
translate(x,y)、translateX(x)、translateY(y):定义2D转换,x.y单位一般取px,transform:translateX(100px):元素相对原本位置之右100px
div{
//div相对原来位置在右下100px处
transform:translate(100px,100px)
}
scale(x,y)、scaleX(x)、scaleY(y),在2D上旋转绽放
rotate(x,y)、rotateX(x)、rotateY(y),在2D上旋转
skew(x,y)、skewX(x)、skewY(y),在2D上倾斜
三、关于Vue的过渡动画
开启vue过渡动画,只需要将需要开启的标签放到<transition>中,同时标签使用v-if控制显示和隐藏。
<input type="button" value="点击" @click="isShow=!isShow" >
<transition>
<p v-show="isShow">{{msg}}</p>
</transition>
vue的过渡进程图:针对的是类名
进入前、进入后、离开前、离开后,四个状态是一个点,而v-enter-active v-leave-active是一个持续的状态,因此,active中需要标明持续的时间,
v-enter、v-enter-to、v-leave、v-leave-to:需要定义四个状态点的属性:
.v-enter-active,
.v-leave-active {
//过渡持续时间0.6秒
transition: 0.6s;
}
.v-enter,
.v-leave-to {
//进入前、离开后,完全透明
opacity: 0;
//进入前,离开后,元素相对位置在下边100px处
transform:translateY(100px);
}
.v-enter-to,
.v-leave {
//进入后、离开前,完全不透明
opacity: 1;
}
四、自定义前缀
当在<transition name="fade">指定了name属性,就可以使用前缀 .fade-enter 这样。
五、使用第三方animate.css来实现动画
1.引入animate.css
<link ref="stylesheet" href="animate.css">
2.在<transition>中增加enter-active-class和leave-active-class,类名可以通过官方网站复制
官方网站:https: //animate.style/
<input type="button" value="点击" @click="isShow=!isShow" >
<transition enter-active-class="animate__bounceIn" leave-active-lass="animate__bounceOut">
<p v-show="isShow" id="p">{{msg}}</p>
</transition>
六、列表动画演示
<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.js"></script>
<style>
input:hover{
background-color: lightgray;
transition:0.6s
}
li{
list-style:none;
border:1px solid burlywood;
margin: 10px ;
width: 500px;
}
li:hover{
/*鼠标指向时背景色显示并加过渡动画*/
background-color: wheat;
transition:0.6s
}
/*进入前,离开后的透明度度和位置*/
.v-enter,.v-leave-to{
opacity:0;
transform:translateX(80px);
}
/*进入和离开的过渡状态,时间0.6秒*/
.v-enter-active,.v-leave-active{
transition: 0.6s;
}
/*v-move和v-leave-active配合使用,使下边的元素飘上来*/
.v-move{
transition: 0.6s;
}
.v-leave-active{
position: absolute;
}
</style>
</head>
<body>
<div id="app" style="margin-left: 20px;margin-top: 20px">
<p>此例有载入列表时动画 添加动画 鼠标悬停时有动画 双击列项时有移除动画</p>
<label>
id
<input type="text" v-model="id">
</label>
<label>
name
<input type="text" v-model="name">
</label>
<input type="button" value="添加" @click="add">
<ul>
<!--v-for循环的元素需要使用transition-group来包裹-->
<!--:key值必须-->
<!--appear 载入时动画效果-->
<!--tag属性指定transition-group渲染的标签,默认为span-->
<!--model指定out-in,横向移动时先出后进-->
<transition-group appear tag="span" model="out-in">
<li v-for="(item , i) in list" :key="item.id" @dblclick="del(i)">
{{item.id}}-------{{item.name}}
</li>
</transition-group>
</ul>
</div>
<div></div>
</body>
<script>
var vm = new Vue({
el:"#app",
data:{
id:"",
name:"",
list:[
{id:1,name:"张三"},
{id:2,name:"李四"},
{id:3,name:"五五"},
],
},
methods: {
add(){
this.list.push({id:this.id,name:this.name});
this.id = this.name = ""
},
//双击删除事件
del(i){
this.list.splice(i,1)
}
},
})
</script>
</html>
猜你喜欢
- 2024-10-30 基于Web的“戳泡泡”解压小游戏(戳泡泡用英文怎么说)
- 2024-10-30 暗夜发光,独自闪耀,网页暗黑模式下的特效和动效,CSS3实现
- 2024-10-30 HTML多行代码搞定微信8.0的炸裂特效!C/C++怎么能输
- 2024-10-30 Nick_N像素画教程:像素画动画缓入缓出
- 2024-10-30 CSS动画制作(css动画制作电池充电效果)
- 2024-10-30 前端系列:在线认识贝塞尔曲线的运动轨迹(中文版网站)
- 2024-10-30 CSS3 transition过渡效果(css3过度效果)
- 2024-10-30 15个CSS 常见错误,请一定要注意避免
- 2024-10-30 css动画之transition(css transition动画)
- 2024-10-30 daisyUI - 主题漂亮、代码纯净!免费开源的 Tailwind CSS 组件库
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)