gpt4 book ai didi

javascript - 计算区域中的行数和列数

转载 作者:行者123 更新时间:2023-12-02 17:58:31 24 4
gpt4 key购买 nike

我正在尝试创建一个算法逻辑来显示 div 网格。但是我如何确定要使用的行数和列数的尽可能近似相等的分布。如果我只知道网格单元的宽度和高度并给出特定的单元数量。

最佳答案

这是我前段时间编写的一个脚本,用于根据要显示的元素数量计算网格。我希望这就是您正在寻找的内容。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>packing n squares in a rectangle</title>
<style>
html,body{
height:100%;
margin:0px;
padding:0px;
}
#c>div{
box-sizing:border-box;
border:1px solid #fff;
background-color:#C99;
float:left;
}
#c{
position:absolute;
}
</style>
<script>
var best_square4=function(w,h,n){
var s=Math.sqrt(w*h/n)|0;c=w/s|0,r=h/s|0,t=c*r;
while(t<=n){s--;c=w/s|0;r=h/s|0;t=c*r;}
c=r==1?n:c;r=Math.ceil(n/c);
tw=c*s;th=r*s;pl=((w-tw)/2)|0;pt=((h-th)/2)|0;
return [w,h,s,tw,th,pl,pt];//containerWidth,ContainerHeight,finalSquareSize,finalBoxWidth,finalBoxheight,marginLeft,marginTop
}

var init=function(){
var w=document.body.offsetWidth,h=document.body.offsetHeight,n=(Math.random()*1000>>0)+1,a=best_square4(w,h,n);
var f=document.createDocumentFragment();
for(var i=0;i<n;i++){
var div=document.createElement('div');
div.style.cssText='width:'+a[2]+'px;height:'+a[2]+'px;';
f.appendChild(div);
}
container=document.createElement('div');
container.id='c';
container.style.cssText='padding-left:'+a[5]+'px;padding-top:'+a[6]+'px;width:'+a[3]+'px;height:'+a[4]+'px;';
container.appendChild(f);
document.body.appendChild(container);
}
window.onload=init;
</script>
</head>
<body>
</body>
</html>

演示(单击 ▶ 运行对另一个随机数的更改)

http://jsfiddle.net/e7My4/3/

这是我编写的 PACKING 算法,它使用简写和按位运算符来缩短代码,并且对现实世界的 Web 应用程序影响较小。

为了创建一个更好的显示功能(在我的例子中是初始化),我建议将 cssText 作为样式表规则附加,这样你就不会有数百个 style="width:64px,height:64px"

var rule='#c>div{width:'+a[2]+'px;height:'+a[2]+'px}'

编辑

处理如此多元素上的事件:

http://jsfiddle.net/e7My4/4/

如果您对此代码有任何疑问,请提出。

关于javascript - 计算区域中的行数和列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20777205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com