首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调整一个元素对另一个元素的大小

调整一个元素对另一个元素的大小
EN

Stack Overflow用户
提问于 2011-09-16 08:41:25
回答 1查看 1.2K关注 0票数 2

我想不间断地调整它的父元素内外的元素大小。请见示例

我假设有三个<div>行,每一行都有几个具有相似(或不同) css属性的元素。例如:

代码语言:javascript
复制
element-1, element-2, ....... element-6

@Edit in resizable :,请在图中看到。由于我正在调整“第一行-1”中的element-1大小,其他兄弟姐妹也调整了宽度。我可以用我自己的来做

外部可调整大小:请看图。元素-1是调整大小的,它的长度不影响它的父row-1和兄弟姐妹element-2的任何维度,但它影响其他元素,例如element-3 & 4已经调整了element-1的宽度。,这就是我想问的&我做不到。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-16 10:33:31

要取得这一结果,没有直接的办法。您必须修改CSS (添加以下内容):

代码语言:javascript
复制
.row {
    position: relative;
}
.element {
    position: absolute;
    /*Remove the float attribute, which is obsolete*/
}

还必须修改JavaScript代码:

代码语言:javascript
复制
$(function(){
    var zIndex = 100;
    $('.element').mouseover(function(){
        var originalHeight = $(this).height();
        $(this).resizable({start: function() {
                   $(this).css('z-index', ++zIndex);
        }, stop: function(){
            /*Horizontal fix*/
            var nxt = $(this).nextAll();
            var width = $(this).position().left + $(this).width();
            var safeWidth = width;
            var root = $(this).parent();
            var thisheight = $(this).height();
            var height = root.height();
            for(var i=0,l=nxt.length;i<l;i++){
                $(nxt[i]).css("left", width+"px");
                width += $(nxt[i]).width();
                if($(nxt[i]).height() > height) safeWidth = width;
            }
            /*Vertical fix*/
            if(thisheight > height || originalHeight > thisheight){
                var nxt = root.nextAll();
                for(var i=0, l=nxt.length; i<l; i++){
                    var tht = nxt[i];
                    if(height >= thisheight){
                        width = 0;
                    } else {
                        width = safeWidth;
                    }
                    height += $(tht).height();
                    if(!/(^|\s)row(\s|$)/.test(tht.className)){
                        continue;
                    }
                    var in_nxt = $(tht).children();
                    for(var j=0,k=in_nxt.length; j<k; j++){
                        $(in_nxt[j]).css("left", width+"px");
                        width += $(in_nxt[j]).width();
                    }
                }
            }
            originalHeight = thisheight;
        }});
       });
    $('.element').each(function(){
        var ths = $(this).prevAll();
        var width = 0;
        for(var i=0,l=ths.length;i<l;i++)width+=$(ths[i]).width();
        $(this).css("left", width+"px")});
});

预览:http://jsfiddle.net/cQFzf/12/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7442145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档