Javascript 按顺序随机排列图像
我有一个不同大小的图片列表,我必须在一页中显示它们。我想以这样一种方式排列它们,即在一行图像和下一行图像之间不显示空白。无论如何,我可以使用CSS和Javascript实现这一点 下面是关于JSFIDLE的示例Javascript 按顺序随机排列图像,javascript,html,css,alignment,Javascript,Html,Css,Alignment,我有一个不同大小的图片列表,我必须在一页中显示它们。我想以这样一种方式排列它们,即在一行图像和下一行图像之间不显示空白。无论如何,我可以使用CSS和Javascript实现这一点 下面是关于JSFIDLE的示例 您研究过jquery吗 使用CSS,您可以将元素的边距和填充设置为0。然后使用javascript作为数组,获取一个随机数并将该索引写入页面 您研究过jquery吗 使用CSS,您可以将元素的边距和填充设置为0。然后使用javascript作为数组,获取一个随机数并将该索引写入页面 加载
您研究过jquery吗
使用CSS,您可以将元素的边距和填充设置为0。然后使用javascript作为数组,获取一个随机数并将该索引写入页面 您研究过jquery吗 使用CSS,您可以将元素的边距和填充设置为0。然后使用javascript作为数组,获取一个随机数并将该索引写入页面 加载图像(如果需要,在隐藏的div中),然后找到最高的,并给所有图像相同的高度。这样就不会与下一行有间隙(然后显示div) 比如说 加载图像(如果需要,在隐藏的分区中),然后找到最高的图像,并为所有图像提供相同的高度。这样就不会与下一行有间隙(然后显示div) 比如说
如果您希望图像彼此重叠,可以使用客户端代码动态定位项目,使它们之间的间隙最小:
window.onload = function() {
var oList = document.getElementById("liParent")
var arrItems = oList.getElementsByTagName("li");
var totalWidth = parseInt(oList.style.width, 10);
var curLeft = 0;
var curTop = 0;
var arrHeights = new Array();
var colIndex = 0;
for (var i = 0; i < arrItems.length; i++) {
var oCurItem = arrItems[i];
var oImage = oCurItem.getElementsByTagName("img")[0];
oCurItem.style.position = "absolute";
var curWidth = oImage.offsetWidth;
var curHeight = oImage.offsetHeight;
if (curLeft + curWidth > totalWidth) {
curLeft = 0;
colIndex = 0;
}
if (colIndex < arrHeights.length)
curTop = arrHeights[colIndex];
oCurItem.style.left = curLeft + "px";
oCurItem.style.top = curTop + "px";
arrHeights[colIndex] = (curHeight + curTop);
curLeft += curWidth;
colIndex++;
}
}
window.onload=function(){
var oList=document.getElementById(“liParent”)
var arrItems=oList.getElementsByTagName(“li”);
var totalWidth=parseInt(oList.style.width,10);
var-curLeft=0;
var-curTop=0;
var arrhights=新数组();
var-colIndex=0;
对于(变量i=0;itotalWidth){
curLeft=0;
colIndex=0;
}
if(共线密度<长度)
curTop=Arrhights[colIndex];
oCurItem.style.left=curLeft+“px”;
oCurItem.style.top=curTop+“px”;
arrHeights[colIndex]=(curHeight+curTop);
curLeft+=curWidth;
colIndex++;
}
}
更新的JSFIDLE:如果您希望图像彼此重叠,可以使用客户端代码动态定位项目,使它们之间的间隔最小:
window.onload = function() {
var oList = document.getElementById("liParent")
var arrItems = oList.getElementsByTagName("li");
var totalWidth = parseInt(oList.style.width, 10);
var curLeft = 0;
var curTop = 0;
var arrHeights = new Array();
var colIndex = 0;
for (var i = 0; i < arrItems.length; i++) {
var oCurItem = arrItems[i];
var oImage = oCurItem.getElementsByTagName("img")[0];
oCurItem.style.position = "absolute";
var curWidth = oImage.offsetWidth;
var curHeight = oImage.offsetHeight;
if (curLeft + curWidth > totalWidth) {
curLeft = 0;
colIndex = 0;
}
if (colIndex < arrHeights.length)
curTop = arrHeights[colIndex];
oCurItem.style.left = curLeft + "px";
oCurItem.style.top = curTop + "px";
arrHeights[colIndex] = (curHeight + curTop);
curLeft += curWidth;
colIndex++;
}
}
window.onload=function(){
var oList=document.getElementById(“liParent”)
var arrItems=oList.getElementsByTagName(“li”);
var totalWidth=parseInt(oList.style.width,10);
var-curLeft=0;
var-curTop=0;
var arrhights=新数组();
var-colIndex=0;
对于(变量i=0;itotalWidth){
curLeft=0;
colIndex=0;
}
if(共线密度<长度)
curTop=Arrhights[colIndex];
oCurItem.style.left=curLeft+“px”;
oCurItem.style.top=curTop+“px”;
arrHeights[colIndex]=(curHeight+curTop);
curLeft+=curWidth;
colIndex++;
}
}
更新的JSFIDLE:除非您希望图片相互重叠,否则这是不可能的。如果图片不相互重叠,则更可取。你能给出它们相互重叠的代码吗?你是在寻找一种最合适的算法吗?有点像服装制造商使用尽可能多的一块布?或者类似于“是的”的东西。如果这是实现它的唯一方法。我发现,但你可以浏览所有图像,找到最大的(最高或最宽),并将所有图像调整为相同的高度或宽度,这是不可能的,除非你希望图片相互重叠?如果它们不相互重叠,我会更喜欢。你能给出它们相互重叠的代码吗?你是在寻找一种最合适的算法吗?有点像服装制造商使用尽可能多的一块布?或者类似于“是的”的东西。如果这是实现它的唯一方法。我找到了,但你可以浏览所有图像,找到最大的(最高或最宽),并将所有图像调整为相同的高度或宽度。我不想随机选择图像并显示它们。我有一个图像列表,我需要以这样的方式正确显示,一行图像和下一行图像之间没有任何空间,哦,我明白了。我误解了你的意思。我建议使用css来确保所有图像的大小相同,并使用div来容纳它们,将图像一个接一个地放入其中。CSS:宽度:xx%;身高:xx%;保证金:0;填充:0;试试这样的东西。祝你的项目好运。Joseph我不想随机挑选图像并显示它们。我有一个图像列表,我需要以这样的方式正确显示,一行图像和下一行图像之间没有任何空间,哦,我明白了。我误解了你的意思。我建议使用css来确保所有图像的大小相同,并使用div来容纳它们,将图像一个接一个地放入其中。CSS:宽度:xx%;身高:xx%;保证金:0;填充:0;试试这样的东西。祝你的项目好运。嘿,这是我考虑过的一个选项,但是图像的分辨率与此有关系,因此我不想这么做。这是最简单的-你可以按名称将图像分组为小-中-大,并且永远不会显示大-嘿,这是我考虑过的一个选项,但是图像分辨率会变为小