Javascript 如何在我的CSS元素上淡入效果?
这是我的CSS。第一个问题,我希望div悬停在上方时产生的效果淡入淡出,而不是瞬间消失。我试着使用转换,但它似乎弄乱了元素的设计,所以我被卡住了 我的第二个问题是(这里是jfiddle供参考:),是否只允许在“do”键动画发生后出现悬停效果?我不希望在div设置动画时出现悬停效果 我的第三个问题是,为什么动画会立即发生,而不是仅仅在我点击了'half'div之后发生?(jfiddle供参考)。对不起,这些问题太多了,我花了这么多时间想弄明白,结果却没有回答Javascript 如何在我的CSS元素上淡入效果?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,这是我的CSS。第一个问题,我希望div悬停在上方时产生的效果淡入淡出,而不是瞬间消失。我试着使用转换,但它似乎弄乱了元素的设计,所以我被卡住了 我的第二个问题是(这里是jfiddle供参考:),是否只允许在“do”键动画发生后出现悬停效果?我不希望在div设置动画时出现悬停效果 我的第三个问题是,为什么动画会立即发生,而不是仅仅在我点击了'half'div之后发生?(jfiddle供参考)。对不起,这些问题太多了,我花了这么多时间想弄明白,结果却没有回答 #middle { width:
#middle {
width: 100px;
height: 100px;
top: 0;
left: 50%;
display: block;
position: fixed;
border-radius: 150px;
background: powderblue;
animation: do 4s 1 ease;
-webkit-animation-fill-mode: forwards;
}
#middle:hover {
width: 96px;
height: 48px;
left: 50%;
top: 30%;
position: fixed;
border-color: powderblue;
border-style: solid;
border-width: 2px 2px 50px 2px;
border-radius: 100%;
z-index: 1000;
background: white;
}
#middle:hover:before {
content: "";
position: absolute;
top: 50%;
left: 0;
background: white;
border: 18px solid powderblue;
border-radius: 100%;
width: 12px;
height: 12px;
}
#middle:hover:after {
content: "";
position: absolute;
top: 50%;
left: 50%;
background: powderblue;
border: 18px solid white;
border-radius: 100%;
width: 12px;
height: 12px;
}
要回答这个问题:
第一个问题,我希望div悬停在上方时产生的效果淡入淡出,而不是瞬间消失。我试着使用转换,但它似乎弄乱了元素的设计,所以我被卡住了。
为此,您需要:转换:不透明度300ms元素规则和悬停规则上的代码>
我现在正在看你的其他问题,同时会更新答案。你可以用CSS制作动画,但是,要以你想要的方式触发动画,你需要jQuery
以下是一个例子:
还有一些解释:
我将动画slideDown
配置为影响两个参数:
- 项目顶部位置(与您所做的相同)
- 项目不透明度(使淡入淡出动画)[回答问题1]
@关键帧向下滑动{
从{
不透明度:0;
排名:0;
}
到{
不透明度:1;
最高:30%;
}
}
对于#middle
项的初始状态(没有.down
类),我有:
opacity: 0;
对于,请确保默认情况下该项不可见
当我决定只在#middle
项具有类.down
时激活动画时。
这是允许我在单击半项(使用jQuery)[回答您的问题2]时触发的:
#middle.down {
animation: slideDown 4s 1 ease;
-webkit-animation-fill-mode: forwards;
}
最后,我使用相同的技巧在动画结束后延迟悬停效果
我们知道动画的持续时间(4s),只有当#middle
项的类到达时,我才激活悬停CSS
然后在JavaScript setTimeout函数(和jQuery)的帮助下,我将.arrived
类添加到4s(4000=毫秒)后的项中[这回答了您的问题3]:
setTimeout(function() {
$('#middle').addClass('arrived');
},
4000);
问题3的答案是您需要jquery。如果我将jquery包含在fiddle中,它仅在单击后作为对2的回答出现,那么您可以添加另一个同时运行的动画,这将使用覆盖属性!重要信息
。将其设置为步骤。在动画完成之前,这些属性将应用,然后它们将停止应用,悬停效果将可见。有关1和1的答案,请参阅fiddle3@SchoolBoy非常感谢!!!!!!!我现在将处理数字2,如果我需要更多帮助,请告诉你。我添加了你所说的内容,但效果仍然会立即发生。哦,我不知道setTimeout函数,它可以简化很多事情。我也弄明白了为什么我的div不仅仅是在点击半圆时滑下来的,还感谢你的帮助!!