jquery - 使用 jQuery 调整 Div 大小

标签 jquery user-interface resize drag

我有以下结构 http://img109.imageshack.us/img109/589/layoutwireframe.png

我需要调整大小才能在侧边栏上的 % 上工作 - 例如,如果我调整 SidebarTop 部分的大小,SidebarBottom 部分也需要更新 - 增加顶部部分将减少底部 - 和反向。

我找到了调整相同 block 大小的解决方案,但这会增加两者。我需要的是一个增加另一个减少。

谢谢!

最佳答案

您可以通过修改jQuery用于实现alsoResize选项的代码来创建Reverse调整大小,我们可以制作自己的alsoResizeReverse选项。然后我们可以简单地使用它,如下所示:

$("#resizable").resizable({
    alsoResizeReverse: ".myframe"
});

以及添加alsoResizeReverse选项的代码:只需更改一些内容,例如明显将alsoResize重命名为alsoResizeReverse,并减去增量而不是添加增量(是什么使调整大小反转)。原始的alsoResize代码在此版本的jQuery UI(来自Google CDN的1.8.1)中从第2200行开始。

代码(这应该放在 document.ready() 之外):

$.ui.plugin.add("resizable", "alsoResizeReverse", {

    start: function(event, ui) {

        var self = $(this).data("resizable"), o = self.options;

        var _store = function(exp) {
            $(exp).each(function() {
                $(this).data("resizable-alsoresize-reverse", {
                    width: parseInt($(this).width(), 10), height: parseInt($(this).height(), 10),
                    left: parseInt($(this).css('left'), 10), top: parseInt($(this).css('top'), 10)
                });
            });
        };

        if (typeof(o.alsoResizeReverse) == 'object' && !o.alsoResizeReverse.parentNode) {
            if (o.alsoResizeReverse.length) { o.alsoResize = o.alsoResizeReverse[0];    _store(o.alsoResizeReverse); }
            else { $.each(o.alsoResizeReverse, function(exp, c) { _store(exp); }); }
        }else{
            _store(o.alsoResizeReverse);
        }
    },

    resize: function(event, ui){
        var self = $(this).data("resizable"), o = self.options, os = self.originalSize, op = self.originalPosition;

        var delta = {
            height: (self.size.height - os.height) || 0, width: (self.size.width - os.width) || 0,
            top: (self.position.top - op.top) || 0, left: (self.position.left - op.left) || 0
        },

        _alsoResizeReverse = function(exp, c) {
            $(exp).each(function() {
                var el = $(this), start = $(this).data("resizable-alsoresize-reverse"), style = {}, css = c && c.length ? c : ['width', 'height', 'top', 'left'];

                $.each(css || ['width', 'height', 'top', 'left'], function(i, prop) {
                    var sum = (start[prop]||0) - (delta[prop]||0); // subtracting instead of adding
                    if (sum && sum >= 0)
                        style[prop] = sum || null;
                });

                //Opera fixing relative position
                if (/relative/.test(el.css('position')) && $.browser.opera) {
                    self._revertToRelativePosition = true;
                    el.css({ position: 'absolute', top: 'auto', left: 'auto' });
                }

                el.css(style);
            });
        };

        if (typeof(o.alsoResizeReverse) == 'object' && !o.alsoResizeReverse.nodeType) {
            $.each(o.alsoResizeReverse, function(exp, c) { _alsoResizeReverse(exp, c); });
        }else{
            _alsoResizeReverse(o.alsoResizeReverse);
        }
    },

    stop: function(event, ui){
        var self = $(this).data("resizable");

        //Opera fixing relative position
        if (self._revertToRelativePosition && $.browser.opera) {
            self._revertToRelativePosition = false;
            el.css({ position: 'relative' });
        }

        $(this).removeData("resizable-alsoresize-reverse");
    }
});

这是一个演示:http://jsfiddle.net/WpgzZ/

关于jquery - 使用 jQuery 调整 Div 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14974829/

相关文章:

java - 如何制作一个看起来像Windows侧边栏上当前可用的窗口小部件的java小部件?使用哪个 Java API?

java - random() 总是产生相同的数字?

jquery - 防止select跳出div :

jquery - 使用 jQuery 添加 html 元素 OOP 样式

java - 如何在android上正确使用mvc?

.net - wpf 调整大小完成

javascript - 为什么我的 Jquery 元素大小调整不起作用?

html - 我的文本区域未拉伸(stretch) 100% 高度

jquery - 为单选按钮添加不同的颜色

jquery - 使用 jQuery 在悬停时交换 DIV 类