javascript - Jquery 对话框滑动

标签 javascript jquery html jquery-ui

http://jsfiddle.net/G5RP3/

我通过 jQuery UI 将一个 div 变成了一个对话框。目前它是空的,但我想做的是让它从窗外从左向中心滑动。相反,它的作用是像打开抽屉一样滑动。我想我很接近,但不知道该怎么做。

JS

var speed = 2000;
$(document).ready(function () {
    $('#loginmenu').dialog({
        show: {
            effect: 'slide',
            direction: 'left',
            speed: speed

        },
        hide: {
            effect: 'slide',
            direction: 'left',
            speed: speed

        },
        modal: true
    });
});

HTML

<div id="loginmenu"></div>

CSS

#loginmenu {
}

最佳答案

这是一个简单的解决方案:

http://jsfiddle.net/MsS9z/1/

var speed = 2000;
$(document).ready(function () {
    $('#loginmenu')
        .on("dialogopen", function() {
            var widget = $(this).dialog("widget");
            var offset = widget.offset();
            widget
                .css("left", -widget.outerWidth() + "px")
                .animate({ left: offset.left }, { duration: speed });
        })
        .dialog({
            modal: true
        });
});

当对话框打开时,此代码会将其移出屏幕,然后将对话框动画化回原位。


如果你想在关闭时向右滑动对话框,事情会变得有点复杂:

http://jsfiddle.net/MsS9z/2/

var speed = 2000;
$(document).ready(function () {
    $('#loginmenu')
        .on("dialogopen", function() {
            var widget = $(this).dialog("widget");
            var offset = widget.offset();
            widget
                .css("left", -widget.outerWidth() + "px")
                .animate({ left: offset.left }, { duration: speed });
        })
        .on("dialogbeforeclose", function() {
            var dialog = $(this);
            var widget = dialog.dialog("widget");

            if (widget.data("dialog-closing") || widget.is(":animated")) {
                widget.data("dialog-closing", false);
                return true;
            }

            widget.data("dialog-closing", true);
            var origOverflow = $("html").css("overflow-x");
            $("html").css("overflow-x", "hidden");
            widget.animate({ left: $(window).width() }, {
                duration: speed,
                complete: function() {
                    dialog.dialog("close");
                    $("html").css("overflow-x", origOverflow);
                }
            })

            return false;
        })
        .dialog({
            modal: true
        });
});

这里我们要取消原来的对话框关闭,然后触发动画,然后让对话框正常关闭。我们还必须将文档的 overflow-x 设置为 hidden,这样水平滚动条就不会出现。

关于javascript - Jquery 对话框滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24931136/

相关文章:

javascript - jQuery:从当前下拉列表之前/之后的选择中选取值

javascript - 如何对不同 parent 的多个 child 使用 jquery 切换?

eclipse - 三星 Galaxy S4 和 Phonegap 问题

javascript - 如何在vue js中首先选择一个时间并在所有日子中使用它?

javascript - 为什么我的闭包变量在对 JSON 数据使用 $.each 后被清除?

javascript - 为什么我的 JavaScript 无法检测到移动设备?

javascript - 在node.js中为每个请求实现本地存储

javascript - Chrome 忽略扩展中来自 XMLHttpRequest 的 Set-Cookie 响应 header

javascript - jquery 自动完成与 codeigniter - 将 Controller 名称传递给 javascript

html - 为 wp-calendar 阴影查找 css