1. 程式人生 > 其它 >js多個元素隨機擺放

js多個元素隨機擺放

效果:

 

 

程式碼:

<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no,viewport-fit=cover"> <title>js多個元素隨機且不重疊分佈在頁面中</title> <script> //計算根節點HTML的字型大小 function resizeRoot(width) {
    var deviceWidth = document.documentElement.clientWidth,         num = width,         num1 = num / 100;     if (deviceWidth > num) {         deviceWidth = num;     }     document.documentElement.style.fontSize = deviceWidth / num1 + "px"; } //根節點HTML的字型大小初始化 resizeRoot(750);   window.onresize = function () {
    resizeRoot(750); }; </script> <style> *{margin:0;padding:0;} .demo{height:5rem;position:relative;} img{width:.8rem;height:.8rem;position:absolute;border-radius:50%;} </style> </head> <body>     <div class="demo"></div>     <script>         createBubble(10);   //初始化氣泡
        function createBubble(num){             var iconWidth = 60;   //值越大,元素左右間隔越大             var iconHeight = 60;  //值越大,元素上下間隔越大             var targetHeight = document.querySelector(".demo").offsetHeight;             var targetWidth = document.querySelector(".demo").offsetWidth;                         var _tmpArray = [];             var html = '';             //當放置的元素的寬高大於瀏覽器視窗的寬高時,直接返回             if(targetWidth < iconWidth || targetHeight < iconHeight){                 return false;               }                         var xNum = parseInt(targetWidth / iconWidth, 10);    //用瀏覽器的寬度除以一個元素的寬度可算出瀏覽器視窗內一行可以放置元素的個數             var yNum = parseInt(targetHeight / iconHeight, 10);  //用瀏覽器的高度除以一個元素的高度可算出瀏覽器視窗內一列可以放置元素的個數             var allNum = xNum * yNum;   //瀏覽器視窗內總共可以放置元素的個數             //當需要放置的元素的個數超過瀏覽器視窗內總共可以放置的元素的個數時,則返回             if(num >= allNum){                 return false;             }                       for(var i = 0; i < allNum; i++){                 _tmpArray.push(i);             }               var xStart = 0, yStart = 0;               while(num){                 var pointer = Math.floor(Math.random() * allNum);    //向下取整取出0到allnum之間的任意一個整數                 //如果陣列_tmpArray中不存在第pointer值,則繼續                 if(!_tmpArray[pointer]){                     continue;                 }                                 delete _tmpArray[pointer];   //刪除陣列_tmpArray中第pointer個值                 yStart = parseInt(pointer / xNum, 10) * iconWidth;                 xStart = (pointer % xNum) * iconHeight;                   html += "<img src='http://tp1.sinaimg.cn/1642634100/50/5613120647/0' style='top:" + yStart + "px;left:" + xStart + "px'/>";                 num--;             }             document.querySelector(".demo").innerHTML = html;         }     </script> </body> </html>    

參考連結:https://blog.csdn.net/weixin_34378922/article/details/93432361