Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当浏览器窗口大小随js&;更改时,如何相应地调整/缩放/重新定位所有div;jQuery?_Jquery_Draggable_Responsive Design_Resizable_Window Resize - Fatal编程技术网

当浏览器窗口大小随js&;更改时,如何相应地调整/缩放/重新定位所有div;jQuery?

当浏览器窗口大小随js&;更改时,如何相应地调整/缩放/重新定位所有div;jQuery?,jquery,draggable,responsive-design,resizable,window-resize,Jquery,Draggable,Responsive Design,Resizable,Window Resize,你好,我目前有一个非常简单的网站。它由一个全帧背景图像和一个容器分区组成。。。背景图像动态居中,并使用css规则放置,如下所示: html { background: url(../images/hotel_room.jpg) no-repeat center center fixed; -webkit-background-size: cover; -moz-background-size: cover; -o-background-size: cover;

你好,我目前有一个非常简单的网站。它由一个全帧背景图像和一个容器分区组成。。。背景图像动态居中,并使用css规则放置,如下所示:

html {
    background: url(../images/hotel_room.jpg) no-repeat center center fixed;
    -webkit-background-size: cover;
    -moz-background-size: cover;
    -o-background-size: cover;
    background-size: cover;
}
这对我来说似乎很好,并保持背景图像以一种“响应”的方式定位,这正是我想要的

我还有一个全宽的容器div,其位置如下:

#mega_wrap{
    position: absolute;
    top:0;
    left: 0;
    height: 100%;
    width:100%;
}
接下来,我有一些简单的jQuery,它使用onClick将div附加到#mega_wrap容器中,onClick基于鼠标单击时的位置。。。像这样:

$(document).ready(function() {

    //onClick append a resizable & draggable div with handles on all 4 corners
    $('#mega_wrap').click(function(e){

        //Define element css and positioning then add both draggable and resizable from jQuery UI
        var ele = $("<div>");
            ele.css({width:"100px", height:"100px", border:"3px dashed white", position:"absolute", left: e.pageX - 50, top: e.pageY -50});
            ele.draggable();
            ele.resizable({
                handles: 'all'
            }); 

        //Define elements handles and append them to the new div
        var eleHandleNE = $("<div class='ui-resizable-handle ui-resizable-ne' id='negrip'>");
        var eleHandleSE = $("<div class='ui-resizable-handle ui-resizable-se' id='segrip'>");
        var eleHandleSW = $("<div class='ui-resizable-handle ui-resizable-sw' id='swgrip'>");
        var eleHandleNW = $("<div class='ui-resizable-handle ui-resizable-nw' id='nwgrip'>");

            eleHandleNE.appendTo(ele);
            eleHandleSE.appendTo(ele);
            eleHandleSW.appendTo(ele);
            eleHandleNW.appendTo(ele);

        //Append new div to the container div called mega_wrap
        $("#mega_wrap").append(ele);

   }); 
});
$(文档).ready(函数(){
//onClick附加一个大小可调且可拖动的div,在所有4个角上都有句柄
$('mega#u wrap')。单击(函数(e){
//定义元素css和定位,然后从jQueryUI添加可拖动和可调整大小
变量ele=$(“”);
元素css({宽度:“100px”,高度:“100px”,边框:“3px白色虚线”,位置:“绝对”,左:e.pageX-50,顶:e.pageY-50});
ele.draggable();
可调整大小的({
句柄:“全部”
}); 
//定义元素句柄并将它们附加到新的div
变量eleHandleNE=$(“”);
变量eleHandleSE=$(“”);
var eleHandleSW=$(“”);
变量eleHandleNW=$(“”);
附录(ele);
附录(ele);
eleHandleSW.附录(ele);
eleHandleNW.附录(ele);
//将新div追加到名为mega_wrap的容器div中
$(“#mega_wrap”)。追加(ele);
}); 
});
注意:所有div在所有角落都可以调整大小,并且可以使用jQuery拖动。。。因此,div可能是任何大小和容器内的任何位置。。。。。。。这就是我的问题开始的地方:

我正在寻找一种方法来跟踪所有附加div的位置,可能每个div使用某种变量?!使用javascript或jquery??然后,如果/当div被调整大小或在容器周围拖动时,我需要能够更新该变量

最后。。。当窗口调整大小时,我需要将div调整到其在背景图像上的精确旧位置。。。所以每个div都会根据窗口大小以锁定的比率进行适当的缩放(向上或向下)

注意:是否认为根据提供的解决方案,我可能必须以不同的方式处理背景图像?接受建议。。。。可能从.css更改为.js或php


非常感谢您的帮助。。。。通常,我会在每个div中添加一个属性:

顺便说一句,不要像pendantic那样(特别是因为我建议添加非标准属性标记),但是你的id应该是唯一的。如果是,另一个选择是创建一个对象数组来存储所有初始数据。然后,您可以使用数组和id检索/设置您的值:

//初始div的属性
divArray=新数组({id:'#id0',宽度:100,高度:200},{id:'#id1',宽度:50,高度:90});
...
//稍后添加另一个div
divArray[divArray.length]={id:'#id2',宽度:300,高度:500};
//调整大小的东西。。。
函数resizeStuff(divArray,ratio){
对于(i=0;i
var eleHandleNE = '<div class="ww xx yy" id="zz" iniWidth="100" iniHeight="200">';
$(this).width($(this).attr('iniWidth')*ratio);
$(this).height($(this).attr('iniHeight')*ratio);
//initial div's attrs
divArray = new Array({id:'#id0',width:100,height:200},{id:'#id1',width:50,height:90});
...
//adding another div later
divArray[divArray.length] = {id:'#id2',width:300,height:500};

//Resize stuff...
function resizeStuff(divArray,ratio) {
  for(i=0;i<divArray.length; i++) {
    $(divArray[i].id).width((divArray[i].width*ratio);
    $(divArray[i].id).height((divArray[i].height*ratio);
  }
}