所以我希望这个div能够以平滑的动画从margin-left:900px
转到550px
,它可以快速启动并以平滑的方式变慢。这应该发生在页面加载上。
我尝试使用javascript,但无法弄明白......
我知道你可以用CSS3做这样的事情,但是怎么样?谁能给我一个代码示例?尝试谷歌搜索但找不到答案...
假设我有一个带有id的div:
<div id='slide'>
和CSS:
#slide {
width: 200px;
height 200px;
margin-left: 900px;
background-color: #435;
}
如何为此设置动画?
答案 0 :(得分:2)
如果你想在没有javascript交互的情况下在加载时使用CSS动画,你需要使用keyframe animation
#slide {
width: 200px;
height 200px;
margin-left: 900px;
background-color: #435;
-webkit-animation: slide 1s ease-out forwards;
animation: slide 1s ease-out forwards;
}
@keyframes slide {
100% {
margin-left:500px;
}
}
@-webkit-keyframes slide {
100% {
margin-left:500px;
}
}
forwards
使其保持在100%关键帧状态,slide
是动画名称,ease-out
会在动画播放时使其变慢(请参阅here一个完整列表,here或here生成您自己的列表,1s
是动画持续时间,在这种情况下是1秒。
其他说明:
此时动画必须以浏览器为前缀 在大多数情况下
如果您愿意,可以包含0%关键帧,默认为
margin-left:900px
,但在这种情况下没有必要因为它
在#slide
CSS
您可以使用任意数量的关键帧,范围从0%到100%
包括十进制格式,例如50.001% { ...
您可以使用from { ...
和to { ...
编写的另一种表单
其中from
= 0%
和to
= 100%
答案 1 :(得分:1)
使用transition
属性。 E.G。
transition: margin-left 1s ease-out
示例:
如果要在窗口加载时实现此效果,只需更改onLoad函数中的marginLeft属性,类似于小提琴。
此类任务不需要关键帧。
答案 2 :(得分:0)
以下是使用CSS3关键帧的示例:
#box{
position:relative;
top: 100px;
left:100px;
width:100px;
height:100px;
background-color: red;
-webkit-animation: move 5s ease-in-out;
}
@-webkit-keyframes move{
0% {top: 100px; left: 100px;}
100% {top: 100px; left: 500px;}
}
修改强>
在forwards
之后添加ease-in-out
属性:
-webkit-animation: move 5s ease-in-out forwards;
这意味着动画将应用动画结束时的属性值
答案 3 :(得分:0)
要更改CSS动画的速度,您可以使用animation-timing-function
:)
诀窍是寻找合适的功能。 e.g:
animation-timing-function:cubic-bezier(0,.72,.51,1);
您可以使用
答案 4 :(得分:0)