在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ js怎么能生成隨機(jī)位置但又不重疊的div 充滿(mǎn)容器

js怎么能生成隨機(jī)位置但又不重疊的div 充滿(mǎn)容器

自己寫(xiě)的實(shí)在是太亂了 測(cè)試了碰撞但不知道怎么重新生成位置而且設(shè)定生成20個(gè)元素不會(huì)因?yàn)橹丿B忽略掉元素

有大神指導(dǎo)么

回答
編輯回答
笨尐豬

點(diǎn)完一份外賣(mài),喝上一口水,提供以下我的分析思路:

【充滿(mǎn)容器】 這里將容器分為兩種情況:

1、容器寬高都為固定時(shí)

-- 寬高固定時(shí)則提前考慮邊界問(wèn)題了 --
首先隨機(jī)一個(gè)單位---【行數(shù)】 ,以確定 20個(gè)div 分幾行顯示

下一步考慮 每一行 存在多少個(gè)div ,并且保證 充滿(mǎn)寬度 (前提:div 都是以浮動(dòng)的形式呈現(xiàn)的)

【每行高度統(tǒng)一時(shí)】
如果想讓最終的樣式美觀點(diǎn) ,那就 每行平均div數(shù) 【average】= 20/【行數(shù)】 (這里最好取個(gè)整數(shù))
再隨機(jī)一個(gè)每行的div數(shù)的 波動(dòng)數(shù)【Flu】并且波動(dòng)范圍不應(yīng)大于 average / 2  否則就有點(diǎn)奇形了
最終得到的div數(shù)組為[ average-Flu,average + Flu,... , 20 - 數(shù)組前面項(xiàng)的總和 ]
每行多少個(gè)div 和 行的總寬度 都已經(jīng)有了, 那么下面的事情就簡(jiǎn)單多了,隨機(jī)幾個(gè)數(shù) 讓值 = 總寬度;

【每行高度不統(tǒng)一時(shí) 】
考慮因素同上 波動(dòng)范圍盡可能 不要大于 平均高度的一半
2、容器寬高不固定時(shí)
此時(shí) 容器的寬度則需要取決于 首行的寬度了, 最終高度則需取決于 行數(shù)和每行的高度了

最終考慮的 優(yōu)化代碼

注: 思路可能有些糙,如果更好思路請(qǐng)?zhí)峁?/p>

2018年5月12日 21:49