Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按顺序随机排列图像_Javascript_Html_Css_Alignment - Fatal编程技术网

Javascript 按顺序随机排列图像

Javascript 按顺序随机排列图像,javascript,html,css,alignment,Javascript,Html,Css,Alignment,我有一个不同大小的图片列表,我必须在一页中显示它们。我想以这样一种方式排列它们,即在一行图像和下一行图像之间不显示空白。无论如何,我可以使用CSS和Javascript实现这一点 下面是关于JSFIDLE的示例 您研究过jquery吗 使用CSS,您可以将元素的边距和填充设置为0。然后使用javascript作为数组,获取一个随机数并将该索引写入页面 您研究过jquery吗 使用CSS,您可以将元素的边距和填充设置为0。然后使用javascript作为数组,获取一个随机数并将该索引写入页面 加载

我有一个不同大小的图片列表,我必须在一页中显示它们。我想以这样一种方式排列它们,即在一行图像和下一行图像之间不显示空白。无论如何,我可以使用CSS和Javascript实现这一点

下面是关于JSFIDLE的示例


您研究过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;试试这样的东西。祝你的项目好运。嘿,这是我考虑过的一个选项,但是图像的分辨率与此有关系,因此我不想这么做。这是最简单的-你可以按名称将图像分组为小-中-大,并且永远不会显示大-嘿,这是我考虑过的一个选项,但是图像分辨率会变为小