带有 display 属性的 JavaScript 转换?

标签 javascript html css

我能否让某个元素在我将鼠标悬停在另一个元素上时淡入,并在我的鼠标不再位于该元素上时让它淡出?

我尝试在 CSS 中添加一个 transition,但这似乎不起作用(我已经预测到了,因为实际上是 JavaScript 使用 DOM 使 div 可见...) .

我得到了 here 的 fiddle

最佳答案

一开始想到soktinpk的方案。不透明度可以用 css 设置动画,所以这是最好的选择。

但是,即使不显示,它也会占用空间。为防止这种情况,您可以将其设为 position:absolute。但即便如此,它后面的元素也将无法点击。

这是一个结合@soktinpk 的想法的更强大的解决方案

为防止出现这种情况,请在它不可见时使用 display:none 将其隐藏。

编辑

实际上,visibility:hidden 似乎在淡入时效果更好。

HTML

<div id="button" onmouseover="showMenu()" onmouseout="hideMenu()">
    <!-- placing it inside will allow it to be positioned as wanted -->
    <div id="menu"></div>
</div>

CSS

#button {
    background-color: rgb(0,0,100);
    width: 100px;
    height: 50px;
    margin-top: 50px;
    margin-left: 50px;
    position:relative; // All absolutely positioned elements inside are relative to this element
}

#menu {
    background-color: rgb(0,100,0);
    width: 200px;
    height: 100px;
    opacity:0;
    visibility:hidden;
    transition: opacity 1s;
    -webkit-transition: opacity 1s;
    -moz-transition: opacity 1s;
    -o-transition: opacity 1s;
    position:absolute; // So that it displays at the right position
    top:100%;
    left:0;
}

JS

var time_out;
var menu = document.getElementById("menu");

function showMenu() {
    clearTimeout(time_out);
    menu.style.visibility = "visible";
    menu.style.opacity = 1;
}

function hideMenu() {
    clearTimeout(time_out);
    menu.style.opacity = 0;
    // This will hide it when the animation is over
    time_out = setTimeout(function(){menu.style.visibility = "hidden";},1000);
}

JS Fiddle Demo

关于带有 display 属性的 JavaScript 转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24850607/

相关文章:

javascript - 嵌套短路对象的快速方法?

javascript - 发布字符串化数组时格式错误的 JSON(Javascript 和 Ruby)

javascript - jQuery/JS : looping function load

css - 如何将控件 float 在图像顶部(使用图像背景)

javascript - 将样式附加到 DOM 不替换现有

javascript - 如何读取本地pdf文件并将其作为expressJS应用程序的响应发送?

html - max-height max-width 100% 但在调整浏览器大小时拉伸(stretch)图像

html - CSS flex 背景

html - 在 Bootstrap 页面上将图像与底部对齐

html - 错误的表格边框仅在 Chrome 中显示 **已确认的错误**