javascript动态生成100个div,每逢10就换一行。请问怎么计算div的TOP值,还有这个效果怎么实现。

麻烦了,大神
2025-05-14 18:15:41
推荐回答(3个)
回答1:

把100个div从0开始编号(即0-99),假定编号的变量为n,则
第n个div的Left = (n%10) * div的width
第n个div的Top = parseInt(n/10) * div的height

简言之就是每个div的左边距等于这个div的序号除以10的余数再乘以这个div的宽;每个div的上边距等于这个div的序号除以10的商再乘以这个div的高。

回答2:





汪洋大海



var G =
    {
        divs : [],
        D : 0,// 下0,左1,上2,右3
        od : [], 
        C : function (i)
        {
        var div = document.createElement ('div');
        div.style.position = 'absolute';
        div.style.width = '50px';
        div.style.height = '50px';
        div.style.textAlign = 'center';
        div.style['line-height'] = '50px';
        div.style.backgroundColor = 'red';
        div.style.color = 'white';
        div.style.font = '42px Consolas bolder';
        var txt = document.createTextNode (i);
        div.appendChild (txt);
        return div;
        },
        I : function (num)
        {
        for ( var i = 0; i < num; i++)
        {
         var div = this.C (i);
        this.divs.push (div);
        }
        var vb = document.createElement ('input');
        vb.setAttribute ("type", "button");
        vb.value = "自动生成一个V字形";
        vb.onclick = function ()
        {
        G.V ();
        }
        this.vb = vb;
        document.body.appendChild (vb);
        
        var btn = document.createElement ('input');
        btn.type = 'button';
        btn.value = '按钮';
        btn.onclick = function ()
        {
         G.T ();
        }
        document.body.appendChild (btn);
        },
        A : function (divs, isExists, which)
        {
         if (!isExists)
            {
        for ( var i = 0; i < divs.length; i++)
        {
        document.body.appendChild (divs[i]);
         }
            }
         which ? this.iExists = 1 : this.oExists = 1;
        },
        V : function ()
        {
        var divs = G.divs;
        for ( var i = 0; i < divs.length / 2; i++)
        {
        divs[i].style.left = parseFloat (divs[i].style.width) * i + 'px';
        divs[divs.length - i - 1].style.top = divs[i].style.top = parseFloat (divs[i].style.height) * (i + 1)+ 'px';
        divs[divs.length - i - 1].style.left = parseFloat (divs[i].style.width) * (divs.length - i - 1) + 'px';
        }
        G.A (divs, this.iExists, true);
        },
        // 下,上, 靠上;  左,右, 靠左
        // 点击顺序 下,左,上,右
        T : function ()
        {
         var divs = G.divs;
         switch (G.D)
            {
            case 0:
             for ( var i = 0; i < divs.length / 2; i++)
                {
              divs[divs.length - i -1].style.top = divs[i].style.top = parseFloat (divs[i].style.height) * Math.floor(divs.length / 2 - i + 1) + 'px';
                 divs[i].style.left = parseFloat (divs[i].style.width) * i + 'px';
                 divs[divs.length - i - 1].style.left = parseFloat (divs[i].style.width) * (divs.length - i - 1) + 'px';
                }
            break;
            case 1:
             for ( var i = 0; i < divs.length / 2; i++)
             {
             divs[divs.length - i - 1].style.left = divs[i].style.left = parseFloat (divs[i].style.width) * i + 'px';
             divs[divs.length - i - 1].style.top = parseFloat (divs[i].style.height) * (divs.length - i) + 'px';
             divs[i].style.top = parseFloat (divs[i].style.height) * (i + 1)+ 'px';
             }
             break;
            case 2:
             G.V ();
             break;
            case 3:
             for ( var i = 0; i < divs.length / 2; i++)
             {
             divs[divs.length - i - 1].style.left = divs[i].style.left = parseFloat (divs[i].style.width) * Math.floor(divs.length / 2 - i) + 'px';
             divs[divs.length - i - 1].style.top = parseFloat (divs[i].style.height) * (divs.length - i) + 'px';
             divs[i].style.top = parseFloat (divs[i].style.height) * (i + 1)+ 'px';
             }
             break;
            }
        G.D++;
        G.D = G.D > 3 ? 0 : G.D;
        G.A (divs, this.iExists, true);
        },
        P : function (sum, each)
        {
         this.od = [];
         for ( var i = 0; i < sum; i++)
            {
         var div = this.C (i);
         div.style.border = '1px dashed black';
         div.style.top = Math.floor (i / each) * parseFloat (div.style.height) + 500 + 'px';
         div.style.left = Math.floor (i % each) * parseFloat (div.style.width) + 'px';
         this.od.push (div);
            }
         G.A (this.od, this.oExists, false);
        }
    };
    
    onload = function ()
    {
    G.I (7);
    G.P (100, 20);
    }




回答3:

http://sandbox.runjs.cn/show/ffvmsa83
这个是我写的一个,点击链接就能看到效果,要看源代码你可以右键,查看页面源代码,就可以了。代码可能不是很好,但是总算也是实现了效果的。嘿嘿