【问题标题】:Fading In and out inline div's without changing the position?在不改变位置的情况下淡入和淡出内联div?
【发布时间】:2011-08-16 12:12:05
【问题描述】:

这个问题可能有点令人困惑。

我有一个内联 div,第一个是关闭/删除按钮。我正在尝试在悬停时淡入关闭按钮,尽管当它淡出时,其余 div 会向左移动。

您将如何防止这种情况发生?

这是一个小提琴:http://jsfiddle.net/x2SEv/

将鼠标悬停在 “这里有一些文字”

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    jQuery函数.show().hide(),使用CSS属性display

    当属性 display 设置为 none 时,被隐藏的 HTML 元素填充的空间被删除。所以你的第二个 div 向左移动。

    您必须使用 CSS 属性 visibility。它与display 做同样的事情,但它保留了由 HTML 填充的空间。

    我们试试吧:

    在你的 JS 中:

    $(".todo").mouseover(function() {
            $('.closebtn').css("visibility", "visible");
        });
        $(".todo").mouseout(function() {
            $('.closebtn').css("visibility", "hidden");
        });
    

    还有你的 CSS:

    .closebtn, .actions{visibility:hidden;}
    

    【讨论】:

    • 啊,现在我理解了函数 .show() 和 .hide()... 谢谢。我将位置设置为绝对,因为有很多代码要更改
    【解决方案2】:

    你必须绝对定位你正在淡出的元素,并稍微移动你的文本:http://jsfiddle.net/x2SEv/1/

    .parent {
        position: relative;
        padding-left: 40px;
    }
    .div-to-fade {
        display:none;
        position: absolute;
        left:0; top:0;
    }
    

    【讨论】:

    • 我不建议在这种情况下使用绝对位置。因为,absolute 的 HTML 元素很难维护,如果您想要一个与所有最常用的浏览器兼容、浏览器调整大小或缩放级别更改的应用程序