慕斯卡3531659
2016-11-12 14:23
上一节照片墙
个人认为 如果每张照片设置 角度 和 位置 未免 太繁琐 能不能 用 js 实现
有人做出来的话希望 分享一下代码
思路:获取container的高宽,根据这个控制Math.random()的值作用与每张图片的top、left值,再随机设置个rotate的值
修改一下:
var tempX = 5;
var tempY =2;
var blockWidth = cWidth / tempX;
pics[i].style.left = blockWidth*Math.random()/2 + blockWidth*jx + "px";
如果要使用:
var tempX = Math.ceil(cWidth / pics[0].offsetWidth);
也可以得注意控制image的宽度
window.onload = function () { var pics = document.getElementsByClassName("pic"); var len = pics.length; var container = document.getElementsByClassName("container")[0]; var cWidth = container.offsetWidth; console.log(cWidth); var cHeight = container.offsetHeight; var temp;//角度偏差 var tempX = Math.ceil(cWidth / pics[0].offsetWidth); var tempY =Math.ceil( cHeight / pics[0].offsetHeight); console.log(tempX) for(var i=0;i<len;i++){ temp = Math.ceil(Math.random()*20*Math.pow(-1,Math.ceil(Math.random()*10))); var jx = (i) % (tempX); var jy = Math.floor((i)/tempX); pics[i].style.left = temp+jx*(pics[0].offsetWidth-30)+"px"; pics[i].style.top = temp+jy*(pics[0].offsetHeight)+"px"; pics[i].style.WebkitTransform = 'rotate('+temp+'deg)'; pics[i].style.transform = 'rotate('+temp+'deg)'; } }
觉得很丑 10张张照片显示出来 三行4列 然后最下面只有两个
如何才能均匀的显示
我发现不能均匀显示
window.onload = function () { var pics = document.getElementsByClassName("pic"); var len = pics.length; var container = document.getElementsByClassName("container")[0]; var cWidth = container.offsetWidth; console.log(cWidth); var cHeight = container.offsetHeight; var temp; for(var i=0;i<len;i++){ pics[i].style.top = Math.ceil(Math.random()*cHeight)+"px"; pics[i].style.left = Math.ceil(Math.random()*cWidth)+"px"; temp = Math.ceil(Math.random()*20); pics[i].style.WebkitTransform = 'rotate('+temp+'deg)'; pics[i].style.transform = 'rotate('+temp+'deg)'; console.log(pics[i].style.top); } }
CSS3绚丽照片墙
56605 学习 · 63 问题
相似问题