CSS3:仅在转换期间转换
CSS3: Transforming ONLY during Transition
我知道我们可以将形状(例如圆形到正方形)从一种状态(例如顶部:0)转换为另一种状态(例如顶部:20px)。但我不确定我们如何才能在两种状态下保持形状完好无损(即保持圆圈@top:0 和 top:20px),但只有在过渡期间我想改变它的形状。我想要实现的一个例子有点像这样:
你可以使用css中的@keyframe动画,看一下:https://css-tricks.com/snippets/css/keyframe-animation-syntax/
这是我用关键帧和 jquery 动画制作的示例:
Css
#box{
display: block;
background: red;
width: 300px;
height: 300px;
border-radius: 100%;
position: relative;
}
@keyframes change_form {
0% {
width: 300px;
}
50% {
border-radius: 0%;
width: 50px;
height: 100px;
}
100% {
width: 300px;
height: 300px;
}
}
Jquery
$(document).ready(function(){
window.setTimeout(function(){
$( "#box" ).animate({
"top":"+=134px"
,
},{
step: function(now) {
if (now >= 11) {
$("#box").css({'transition':'all linear 1s', 'animation':'change_form ease 2s '});
}
} }
);
}, 2000);
});
简单来说Div
<div id="box"></div>
只是我做的一个例子,向你展示如何制作这种效果,你只能用 css 制作这个,只需将 'animation' 放在你的 div[=14 中=]
这是您想要的纯 css 版本。它仅在过渡期间发生变化。一点都不难。只需使用关键帧来指定您想要更改的属性以及更改时间。
HTML
<div class="childAnimated"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
还有 CSS
.child {
border: .5em solid white;
width: 3em;
height: 3em;
border-radius: 5em;
margin-bottom: 1em;
}
.childAnimated {
position: fixed;
top: 1em;
left: 1em;
z-index: 999;
background-color: white;
width: 3em;
height: 3em;
border-radius: 5em;
-webkit-animation: gooAnim 4s infinite;
}
@-webkit-keyframes gooAnim {
0% { top: 1em; }
25% { top: 3.8em; left: 1.5em; width: 2em; height: 2em; }
50% { top: 6em; width: 3em; height: 3em; left: 1em;}
75% { top: 8.8em; left: 1.5em; width: 2em; height: 2em; }
100% { top: 11em; }
}
如果您想实际查看它,请查看代码笔。 运行 如果可以的话,它在 Chrome 中。 http://codepen.io/shuffguy/pen/JdLXeM
这是一个简单的示例,但如果您使用关键帧大小调整属性,您绝对可以使用关键帧完全模拟该示例。
我知道我们可以将形状(例如圆形到正方形)从一种状态(例如顶部:0)转换为另一种状态(例如顶部:20px)。但我不确定我们如何才能在两种状态下保持形状完好无损(即保持圆圈@top:0 和 top:20px),但只有在过渡期间我想改变它的形状。我想要实现的一个例子有点像这样:
你可以使用css中的@keyframe动画,看一下:https://css-tricks.com/snippets/css/keyframe-animation-syntax/
这是我用关键帧和 jquery 动画制作的示例:
Css
#box{
display: block;
background: red;
width: 300px;
height: 300px;
border-radius: 100%;
position: relative;
}
@keyframes change_form {
0% {
width: 300px;
}
50% {
border-radius: 0%;
width: 50px;
height: 100px;
}
100% {
width: 300px;
height: 300px;
}
}
Jquery
$(document).ready(function(){
window.setTimeout(function(){
$( "#box" ).animate({
"top":"+=134px"
,
},{
step: function(now) {
if (now >= 11) {
$("#box").css({'transition':'all linear 1s', 'animation':'change_form ease 2s '});
}
} }
);
}, 2000);
});
简单来说Div
<div id="box"></div>
只是我做的一个例子,向你展示如何制作这种效果,你只能用 css 制作这个,只需将 'animation' 放在你的 div[=14 中=]
这是您想要的纯 css 版本。它仅在过渡期间发生变化。一点都不难。只需使用关键帧来指定您想要更改的属性以及更改时间。
HTML
<div class="childAnimated"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
还有 CSS
.child {
border: .5em solid white;
width: 3em;
height: 3em;
border-radius: 5em;
margin-bottom: 1em;
}
.childAnimated {
position: fixed;
top: 1em;
left: 1em;
z-index: 999;
background-color: white;
width: 3em;
height: 3em;
border-radius: 5em;
-webkit-animation: gooAnim 4s infinite;
}
@-webkit-keyframes gooAnim {
0% { top: 1em; }
25% { top: 3.8em; left: 1.5em; width: 2em; height: 2em; }
50% { top: 6em; width: 3em; height: 3em; left: 1em;}
75% { top: 8.8em; left: 1.5em; width: 2em; height: 2em; }
100% { top: 11em; }
}
如果您想实际查看它,请查看代码笔。 运行 如果可以的话,它在 Chrome 中。 http://codepen.io/shuffguy/pen/JdLXeM
这是一个简单的示例,但如果您使用关键帧大小调整属性,您绝对可以使用关键帧完全模拟该示例。