图片出场的模板
<style>#papa {
left: -214px; /*margin: 50px auto 0;*/
width: 1024px;
height: 600px;
border: 1px solid;
overflow: hidden;
position: relative;
}
.piece {
position: absolute;
width: 160px;
height: 200px;
left: -160px;
top: 0;
background: #e2e2e2;
transition: all 4s;
}
@keyframes fly {
to { left: 40%; top: 40%; }
}
</style>
<div id="papa"></div>
<script>
let pNum = 6, last; //pNum : 小块总数 last : 上一个出场
let gNum = (x, y) => Math.floor(Math.random() * (y-x+1)) + x; //取两数间整数随机数
Array.from({length:pNum}).forEach((item,key) => {
item = document.createElement('span');
item.className = 'piece';
item.innerText = key;
papa.appendChild(item);
});
setTimeout(in_out, 1000);
function in_out() {
let pieces = document.querySelectorAll('.piece');
let key = gNum(0, pieces.length - 1);
if(key == last) key = last + 1; //避免重合
if(key > pieces.length - 1) key = 0;
if(last >= 0) pieces.style.cssText = 'transform: translate(0,0) rotate(0) scale(1); opacity: 0';
pieces.style.cssText = 'transform: translate(592px, 200px) rotate(1turn) scale(2.5); opacity: 1';
last = key;
setTimeout(in_out, 10000);
}
</script>
本帖最后由 马黑黑 于 2022-7-7 21:32 编辑
刚刚写好,源码如下:
<style>
#papa {
left: -214px;/*margin: 50px auto 0;*/
width: 1024px;
height: 600px;
border: 1px solid;
overflow: hidden;
position: relative;
}
.piece {
position: absolute;
width: 160px;
height: 200px;
left: -160px;
top: 0;
background: #e2e2e2;
transition: all 4s;
}
@keyframes fly {
to { left: 40%; top: 40%; }
}
</style>
<div id="papa"></div>
<script>
let pNum = 6, last; //pNum : 小块总数 last : 上一个出场
let gNum = (x, y) => Math.floor(Math.random() * (y-x+1)) + x; //取两数间整数随机数
Array.from({length:pNum}).forEach((item,key) => {
item = document.createElement('span');
item.className = 'piece';
item.innerText = key;
papa.appendChild(item);
});
setTimeout(in_out, 1000);
function in_out() {
let pieces = document.querySelectorAll('.piece');
let key = gNum(0, pieces.length - 1);
if(key == last) key = last + 1; //避免重合
if(key > pieces.length - 1) key = 0;
if(last >= 0) pieces.style.cssText = 'transform: translate(0,0) rotate(0) scale(1); opacity: 0';
pieces.style.cssText = 'transform: translate(592px, 200px) rotate(1turn) scale(2.5); opacity: 1';
last = key;
setTimeout(in_out, 10000);
}
</script>
本帖最后由 马黑黑 于 2022-7-7 21:53 编辑
一楼演示并未用到图片,是使用了 span 标签模拟图片元素。如果使用图片,需要:
一、建立一个数组装载图片地址
let picAr = [
'地址一',
'地址二',
'地址N'
];
以上声明要放在
let pNum = 6, last; //pNum : 小块总数 last : 上一个出场
之前,且把上一句的 6 改为 picAr.length,即整句是, let pNum = picAr.length, last;
以上修改后,完整代码如下:
let picAr = [
'地址一',
'地址二',
'地址N'
];
let pNum = picAr.length, last;
二、下面这组JS代码,红色部分都要改:
Array.from({length:pNum}).forEach((item,key) => {
item = document.createElement('span'); //改为 img
item.className = 'piece';
item.innerText = key; // 整句改为 item.src = picAr; 最好再加一句 item.alt = '';
papa.appendChild(item);
});
修改后完整代码如下:
Array.from({length:pNum}).forEach((item,key) => {
item = document.createElement('span');
item.className = 'piece';
item.src = picAr;
item.alt = '';
papa.appendChild(item);
});
又来新的了 绿叶清舟 发表于 2022-7-7 21:51
又来新的了
这个刚琢磨出来 关键是 let pNum = 6, last;吧? 马黑黑 发表于 2022-7-7 21:53
这个刚琢磨出来
看上面数字,1、2、5这么出来的 绿叶清舟 发表于 2022-7-7 21:56
看上面数字,1、2、5这么出来的
随机的,没啥顺序 红影 发表于 2022-7-7 21:55
关键是 let pNum = 6, last;吧?
这个是多少个出场的元素。若果使用了图片,就需要数组装载图片地址(假设变量是 picAr),这时候,你说的这句要放在数组声明的后面,然后把那句改为:
let pNum = picAr.length, last;
详情请看三楼 马黑黑 发表于 2022-7-7 21:58
随机的,没啥顺序
搞个打群架的{:4_189:} 绿叶清舟 发表于 2022-7-7 22:12
搞个打群架的
差不多 明天见{:5_110:} 加林森 发表于 2022-7-7 22:15
明天见
88 马黑黑 发表于 2022-7-7 22:16
88
谢谢! 加林森 发表于 2022-7-7 22:15
明天见
一个应用实例:
https://www.huachaowang.com/forum.php?mod=viewthread&tid=60999&extra=page%3D1 老黑上午好! 加林森 发表于 2022-7-8 08:32
老黑上午好!
中午好 马黑黑 发表于 2022-7-8 12:12
中午好
下午好! 马黑黑 发表于 2022-7-7 22:00
这个是多少个出场的元素。若果使用了图片,就需要数组装载图片地址(假设变量是 picAr),这时候,你说的 ...
嗯嗯,这个好玩{:4_187:} 红影 发表于 2022-7-8 16:00
嗯嗯,这个好玩
还行
页:
[1]
2