den*_*xic 19 html css css-animations
尝试在CSS3边距中制作动画.这本网站似乎是说你可以,但它不是为我工作.
这是一个jsFiddle:http://jsfiddle.net/ybh0thp9/3/(点击一个部分查看动画切换).
这是我的CSS:
$(".section").click(function() {
$(this).toggleClass("open");
});
Run Code Online (Sandbox Code Playgroud)
我实际上有3个动画.1表示fadeIn
初始加载时的简单初始化,然后margin
单击其他2个表示动画.我也试过margin
而不是顶部和底部,但仍然没有工作的迹象.
Bra*_*roy 40
你不需要关键帧:http://jsfiddle.net/BramVanroy/ybh0thp9/7/
transition: margin 700ms;
Run Code Online (Sandbox Code Playgroud)
您需要将transition属性添加到要设置动画的基本元素.
你还提到过你想要不透明度的变化,但是我不知道如果只有一个没有子元素的元素,那是多么可能.我的意思是:如果元素被隐藏,你就无法点击它.
但是,你可以做的是为整个事情添加不透明度:http://jsfiddle.net/BramVanroy/ybh0thp9/9/
甚至更漂亮,转型:
http://jsfiddle.net/BramVanroy/ybh0thp9/10/
.section {
margin: 0;
opacity: 0.7;
transform: scale(0.85);
transition: all 700ms;
}
.section.open {
margin: 20px 0;
opacity: 1;
transform: scale(1);
}
Run Code Online (Sandbox Code Playgroud)
根据评论,您希望在页面加载时淡入元素.我们可以通过添加一个类来实现init
.
http://jsfiddle.net/BramVanroy/ybh0thp9/12/
$(".section").addClass("init"); // JS
.section.init {opacity: 1;} // CSS
Run Code Online (Sandbox Code Playgroud)
关键帧:http://jsfiddle.net/BramVanroy/ybh0thp9/14/
@-webkit-keyframes fadeIn { from {opacity: 0; } to { opacity: 1; } }
@-moz-keyframes fadeIn { from {opacity: 0; } to { opacity: 1; } }
@keyframes fadeIn { from {opacity: 0; } to { opacity: 1; } }
-webkit-animation: fadeIn 1.5s ease;
-moz-animation: fadeIn 1.5s ease;
animation: fadeIn 1.5s ease;
Run Code Online (Sandbox Code Playgroud)
确保您没有为不同的属性设置两个单独的转换,如下所示:
transition: margin 1000ms ease-in-out;
transition: box-shadow 1000ms ease-in-out;
Run Code Online (Sandbox Code Playgroud)
查看浏览器的调试工具时,很明显发生了什么:
将会box-shadow
按预期进行动画处理,但margin
由于正常的 css 规则处理而不会被考虑。
正确的做法是结合规则:
transition: margin 1000ms ease-in-out, box-shadow 1000ms ease-in-out;
Run Code Online (Sandbox Code Playgroud)