我试图做一个简单的任务,就是使用底部而不是顶部来上下移动div以产生浮动/悬停效果。
我是CSS和关键帧的新手!你可能会说。但这是我尝试过的,它似乎没有做任何事情:
.Mail {
margin-top: -77px;
margin-left: 791px;
animation: MoveUpDown 1s linear infinite;
}
@keyframes MoveUpDown {
0%, 100% {
bottom: 0;
}
50% {
bottom: 20px;
}
}

<link href="https://use.fontawesome.com/releases/v5.0.10/css/all.css" rel="stylesheet">
<i class="Mail fas fa-envelope"></i>
&#13;
答案 0 :(得分:1)
您需要将position
设置为absolute
才能使bottom
属性生效:
.Mail {
margin-top: -77px;
margin-left: 791px;
position: absolute;
bottom: 0;
animation: MoveUpDown 1s linear infinite;
}
@keyframes MoveUpDown {
50% {bottom: 20px}
}
<link href="https://use.fontawesome.com/releases/v5.0.10/css/all.css" rel="stylesheet">
<i class="Mail fas fa-envelope"></i>
答案 1 :(得分:1)
topic-5, topic-1, topic-3 and topic-2
,bottom
,top
,right
需要left
属性。默认position
值为position
,其无影响为MDN Explained here。我强烈建议您阅读static
指南,了解其效果与bottom
值的不同!
无论如何,您的position
代码是正确的。但是,您需要了解animation
属性如何在CSS中工作以避免类似的错误。
P.S:首先要了解以下内容:
position
relative
absolute
,这是来自MDN Web Docs about Positioning
答案 2 :(得分:0)
对于正在寻找同一事物的其他人,这是使用transform: translateY();
的简单答案:
.moving-div{
margin-top:100px;
animation-name: move;
animation-duration: 1s;
animation-iteration-count: infinite;
animation-direction: alternate;
}
@keyframes move {
0% {
transform: translateY(25%);
}
100% {
transform: translateY(-25%);
}
}
<div class="moving-div">
I am moving up and down
</div>