首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSS :只有当鼠标移动时,悬停才有效

问CSS :只有当鼠标移动时,悬停才有效
EN

Stack Overflow用户
提问于 2014-01-02 16:11:23
回答 3查看 3.4K关注 0票数 12

我创建了一个非常基本的示例:

代码语言:javascript
复制
<div id="bla"></div>

CSS

代码语言:javascript
复制
#bla {
    width:400px;
    height:400px;
    background-color:green;
    display:none;
}

#bla:hover{
   background-color:red;
}

如您所见,这是一个最初隐藏的DIV,当鼠标悬停在上面时,它会改变颜色。

这个JavaScript在2秒后打开它。

代码语言:javascript
复制
setTimeout(function() {
     document.getElementById('bla').style.display="block";
},2000)

但是如果你把鼠标放在DIV即将出现的位置上--当它出现的时候--它就会出现在无悬停状态。只有当你实际移动鼠标悬停效果发生。

这是一个演示。运行它,并立即将鼠标放在结果窗格上。

这是故意的吗?是否有一种方法(没有JS更好)来检测DIV是悬浮的?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-02 19:59:45

@BrianPhillips提到,虽然您可以使用opacity,但它在IE8中不起作用。我不知道有一个纯CSS解决方案,但这里有一个足够简洁的Javascript解决方案:

代码语言:javascript
复制
window.onmousemove=function(event){
    ev = event || window.event;
    if (event.pageX <= 400 && event.pageY <= 400){
        document.getElementById('bla').style.backgroundColor= "red";
    } else {
        document.getElementById('bla').style.backgroundColor= "green";
    }
}
setTimeout(function() {
     document.getElementById('bla').style.display="block";
},2000)

演示

票数 1
EN

Stack Overflow用户

发布于 2014-01-02 16:29:07

当您将显示设置为none时,图像没有占用空间,意味着没有地方可悬停。

我会将css中的背景图像设置为rgba(0 0 0);使其不可见,但仍在dom中。然后,您可以将javascript更改为

代码语言:javascript
复制
setTimeout(function() {
     document.getElementById('bla').style.backgroundColor="green";
},2000);

http://jsfiddle.net/euT7k/3

票数 0
EN

Stack Overflow用户

发布于 2014-01-02 19:52:10

您可以尝试使用CSS opacity,同时将其设置为position: absolute,以防止它占用页面上的流。这似乎是适当的:

CSS:

代码语言:javascript
复制
#bla {
    width:400px;
    height:400px;
    background-color:green;
    opacity: 0;
    position: absolute;
}

联署材料:

代码语言:javascript
复制
setTimeout(function() {
         document.getElementById('bla').style.opacity="1";
         document.getElementById('bla').style.position="relative";
},2000)

演示

这里的关键是使用opacity的元素响应事件(单击、悬停等),而使用visibility: hidden和display:none的元素则不响应。(来源)

请注意,opacity在IE8和更低版本中不可用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20886903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档