javascript - 使用 jQuery 在 Firefox 中居中一个 div

标签 javascript jquery html css firefox

所以我尝试使用以下代码使用 jQuery 在窗口中居中放置一个 div:

(function($) {
    $.fn.extend({
        center: function(options) {
            var options = $.extend({ // Default values
                inside: window,
                // element, center into window
                transition: 0,
                // millisecond, transition time
                minX: 0,
                // pixel, minimum left element value
                minY: 0,
                // pixel, minimum top element value
                withScrolling: true,
                // booleen, take care of the scrollbar (scrollTop)
                vertical: true,
                // booleen, center vertical
                horizontal: true // booleen, center horizontal
            }, options);
            return this.each(function() {
                var props = {
                    position: 'absolute'
                };
                if (options.vertical) {
                    var top = ($(options.inside).height() - $(this).outerHeight()) / 2;
                    if (options.withScrolling) top += $(options.inside).scrollTop() || 0;
                    top = (top > options.minY ? top : options.minY);
                    $.extend(props, {
                        top: top + 'px'
                    });
                }
                if (options.horizontal) {
                    var left = ($(options.inside).width() - $(this).outerWidth()) / 2;
                    if (options.withScrolling) left += $(options.inside).scrollLeft() || 0;
                    left = (left > options.minX ? left : options.minX);
                    $.extend(props, {
                        left: left + 'px'
                    });
                }
                if (options.transition > 0) $(this).animate(props, options.transition);
                else $(this).css(props);
                return $(this);
            });
        }
    });
})(jQuery);​

这在 Chrome 中运行良好,但在 Firefox 中似乎没有垂直居中,我不知道我做错了什么。 firefox 是否存在导致无法计算窗口高度的错误?

最佳答案

我不记得我更改了什么,但它是:

$.fn.extend({
    center: function(options) {
        var options = $.extend({ // Default values
            inside: window,
            // element, center into window
            transition: 0,
            // millisecond, transition time
            minX: 0,
            // pixel, minimum left element value
            minY: 0,
            // pixel, minimum top element value
            withScrolling: true,
            // booleen, take care of the scrollbar (scrollTop)
            vertical: true,
            // booleen, center vertical
            horizontal: true // booleen, center horizontal
        }, options);

        $(this).each(function() {
            var props = {
                position: 'absolute'
            };
            if (options.vertical) {
                var top = ($(options.inside).height() - $(this).outerHeight()) / 2;
                if (options.withScrolling) top += $(options.inside).scrollTop() || 0;
                top = (top > options.minY ? top : options.minY);
                $.extend(props, {
                    top: top + 'px'
                });
            }
            if (options.horizontal) {
                var left = ($(options.inside).width() - $(this).outerWidth()) / 2;
                if (options.withScrolling) left += $(options.inside).scrollLeft() || 0;
                left = (left > options.minX ? left : options.minX);
                $.extend(props, {
                    left: left + 'px'
                });
            }
            if (options.transition > 0) $(this).animate(props, options.transition);
            else $(this).css(props);

        });

        return $(this);
    }
});

它似乎在 firefox 中工作正常:http://jsfiddle.net/NQRUF/4/

关于javascript - 使用 jQuery 在 Firefox 中居中一个 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12628611/

相关文章:

javascript - 使用 jQuery 设置输入字段仅接受数字

javascript - 从输入表单中删除 HTML TAG 输入

php - 循环动态值中的表

javascript - 用css组织html结构

javascript - 我们可以在 Javascript 中实例化 Java 对象吗?

php - 使用 NodeJS 而不是 PHP 的缺点

javascript - 不能对 mongoose 查询结果使用 "delete"运算符

javascript - jquery select如何选择选中的复选框?

javascript - 就绪函数内的委托(delegate)函数

javascript - 对于简单的 jQuery fadeOut 有一个小问题吗?