每次调整窗口大小时增加元素大小

时间:2017-11-24 09:01:16

标签: javascript function loops

今天我的问题是我有12个大小为60px x 60px的元素,我希望每当屏幕大小增加10px时用javascript增加0.2。例如:屏幕尺寸为600px,元素尺寸为60.2 x 60.2,屏幕尺寸为610px,元素尺寸为60.4 x 60.4,依此类推。它会增加这样的东西:

var circle_data={
        container: document.querySelector(".container"),
        classname: "astro-item",
        nb_elem: 12,
        elem_size: 60,
    };
    var screenSize = window.innerWidth;
    circle_data.elem_size += 0.2;

问题是我不知道每次屏幕尺寸增加10px时如何增加

感谢您的帮助!!

所以你的答案在这里是我尝试的代码,但它不起作用,也许是因为我已经有一个设置元素大小的函数,这里是完整的脚本:

function circle_container(objdata) {
            var circle_dim=objdata.container.getBoundingClientRect();
            var rayon=Math.round(circle_dim.width/2 - objdata.elem_size/2);
            var center_x=rayon;
            var center_y=rayon;

            if (objdata.rayon) rayon*=objdata.rayon/100;

            for(var i=0;i<objdata.nb_elem;i++) {
                var new_elem=objdata.container.querySelector("."+objdata.classname+i);
                if (!new_elem) {
                    var new_elem=document.createElement("button");
                    new_elem.className="astro-item"+" "+objdata.classname+i;
                    var new_img=document.createElement("img");
                    new_img.src = astroList[i].icon;
                }

                new_elem.style.position="absolute";
                new_elem.style.width=objdata.elem_size+"px";
                new_elem.style.height=objdata.elem_size+"px";

                new_elem.style.top=Math.round( (center_y - rayon * Math.cos(i*(2*Math.PI)/objdata.nb_elem)))+"px";
                new_elem.style.left=Math.round( (center_x + rayon * Math.sin(i*(2*Math.PI)/objdata.nb_elem)))+"px";

                objdata.container.appendChild(new_elem);
                new_elem.appendChild(new_img);
            }
        }

        var circle_data={
            container: document.querySelector(".container"),
            classname: "astro-item",
            nb_elem: 12,
            elem_size: 60,
        };
        function onResize(e) {
            var screenSize = e.target.outerWidth;       
            var width = (screenSize - (screenSize %  100) + (((screenSize + 10) %  100)/10 *2))/10;
            var items = document.querySelectorAll('.astro-item');
            for(var i = 0; i < items.length; i++) {
                items[i].innerHTML  = 'width: ' + screenSize + ' size: ' + width ;
            }

        }       
        circle_container(circle_data);
        addEvent(window,"resize",function() { 
            circle_container(circle_data); 
            onresize(); 
        });

此功能的目的是创建12个按钮对齐圆圈(就像一个轮子)并完全响应,这就是为什么我需要它们在屏幕变大时变大。非常感谢你!

1 个答案:

答案 0 :(得分:0)

使用纯javascript绑定事件 onresize 并根据窗口宽度设置大小。每当屏幕尺寸增加10px时,尺寸增加0.2:

window.addEventListener("resize", onresize);

var onresize = function(e) {

       var width = e.target.outerWidth;       
       circle_data.elem_size = (width - (width %  100) + (((width + 10) %  
      100)/10 *2))/10;
}

工作示例:

(全屏开启)

*编辑最大限制限制

 var min = 500; //min width in pixel
var max= 700;  //max width in pixel

window.addEventListener("resize", onresize);

var onresize = function(e) {

       var width = e.target.outerWidth;       
       var s = (width - (width %  100) + (((width + 10) %  100)/10 *2))/10

     if(width <=max && width >=min){
        //change size here
         document.getElementById('s').innerHTML  = 'width: ' + width + ' size: ' + s ;
    }
   


}
<span id='s'> </span>