学习实践马黑黑老师代码测试002
本帖最后由 近朱者赤 于 2022-7-29 17:07 编辑 <br /><br /><style>#papa { left: -214px; width: 1024px; height: 620px; background: teal url('https://638183.freep.cn/638183/t22/81.jpg') no-repeat center / cover; perspective: 2000px; box-shadow: 4px 4px 24px #000; position: relative; }
#drawer { position: absolute; width: 700px;; height: 500px; left: calc(50%- 275px); top: calc(50% - 255px); box-shadow: inherit; overflow: hidden; }
.mypic { position: absolute; top: -100%; width: 100%; height: 100%; transition: top 1.5s;}
#wrapper { position: relative; width: 15px; height: 15px; left: 8%; top: 75%; transform-style: preserve-3d; transform: rotateX(-20deg) rotateY(-20deg); cursor: pointer; }
#mypic { position: absolute; width: 50px; height: 50px; transform: translateZ(15px) translateY(30px) translateX(15px); }
#wrapper>span:nth-child(1) { transform: translateZ(40px); background: teal; }
#wrapper>span:nth-child(2) { transform: translateZ(-40px); background: lightgreen; }
#wrapper>span:nth-child(3) { transform: translateX(-40px) rotateY(90deg); background: aquamarine; }
#wrapper>span:nth-child(4) { transform: translateX(40px) rotateY(90deg); background: green; }
#wrapper>span:nth-child(5) { transform: translateY(-40px) rotateX(90deg); background: olive; }
#wrapper>span:nth-child(6) { transform: translateY(40px) rotateX(90deg); background: tan; }
.panel { position: absolute; width: 80px; height: 80px; text-align: center; opacity: 0.25;}
//.panel { position: absolute; width: 80px; height: 80px; text-align: center; transition: all 2s; }
</style>
<div id="papa">
<div id="drawer"></div>
<div id="wrapper">
<span class="panel"></span>
<span class="panel"></span>
<span class="panel"></span>
<span class="panel"></span>
<span class="panel"></span>
<span class="panel"></span>
<img id="mypic" src="https://365.tf/disk/tf/1659165192.gif" alt="" />
</div>
</div>
<script>
let step = 1, start = 0, ani = 100, last;
let pics = [
'https://638183.freep.cn/638183/Pic/38/1.jpg',
'https://638183.freep.cn/638183/Pic/38/2.jpg',
'https://638183.freep.cn/638183/Pic/38/3.jpg',
'https://638183.freep.cn/638183/Pic/38/4.jpg',
'https://638183.freep.cn/638183/Pic/38/5.jpg'
];
for(pic of pics) {
let ele = document.createElement('img');
ele.src = pic;
ele.alt = '';
ele.title = pic;
ele.className = 'mypic';
drawer.appendChild(ele);
}
let picAr = document.querySelectorAll('.mypic');
picAni(0, picAr.length - 1);
let timer = setInterval(() => { picAni(0, picAr.length - 1); },3000);
function picAni(n1, n2) {
if(last != undefined) picAr.style.top= ani + '%';
let temp = start;
last = temp;
ani = step < 0 ? -100 : 100;
picAr.style.top = '0%';
start += step;
if(start == n1 || start == n2) step = -step;
}
</script>
<script>
let aud = new Audio();
let lastX = 0, canMove = false;
let panelAr = document.querySelectorAll('.panel');
aud.loop = true;
aud.src = 'https://music.163.com/song/media/outer/url?id=408532087.mp3';
wrapper.onclick = () => {
canMove = !canMove;
if(canMove) {
for(ele of panelAr) ele.style.opacity = '0';
wrapper.style.transform = 'rotateX(0) rotateY(0)';
aud.play();
} else {
for(ele of panelAr) ele.style.opacity = '1';
wrapper.style.transform = 'rotateX(-20deg) rotateY(-20deg)';
mypic.style.left = '45%';
mypic.style.top = '40%';
mypic.style.transform = mypic.offsetLeft > 0 ? 'rotateY(0deg)' : 'rotateY(180deg)';
aud.pause();
}
}
document.addEventListener('click', (e) => {
if(canMove == false) return false;
e = event || window.event;
let x = e.pageX, y = e.pageY,
w = document.body.clientWidth, h = document.body.clientHeight,
bw = mypic.offsetWidth, bh = mypic.offsetHeight;
x = x - calcOffset(wrapper).x;
y = y - calcOffset(wrapper).y;
if(x + bw >= w) x = w - bw;
if(y + bh >= h) y = h - bh;
mypic.style.transform = x > lastX ? 'rotateY(180deg)' : 'rotateY(0deg)';
lastX = x;
mypic.style.left = x + 'px';
mypic.style.top = y + 'px';
});
let calcOffset = (ele) => {
let x = ele.offsetLeft, y = ele.offsetTop, pa = ele.offsetParent;
while(pa != null) {
x += pa.offsetLeft;
y += pa.offsetTop;
pa = pa.offsetParent;
}
return {x, y};
}
</script>
感谢马黑黑老师提供代码 让我们在实践中学习熟悉代码{:4_205:} 论坛有点歪了呢?可能你的代码要修改。 </td></tr></td></tr></table>
这个结尾删掉才行。 加林森 发表于 2022-7-28 11:41
这个结尾删掉才行。
我也是乱搞一气,我试着重新编辑下{:4_190:} 近朱者赤 发表于 2022-7-28 16:09
我也是乱搞一气,我试着重新编辑下
现在就对了。 多重代码柔和在一个帖子里,厉害了 二合一,这个制作有趣{:4_187:} 马黑黑 发表于 2022-7-28 18:15
多重代码柔和在一个帖子里,厉害了
老师代码给力!加入小鸟修改了立方体透明度,初始呈现效果又不一样了{:4_172:} 红影 发表于 2022-7-28 23:49
二合一,这个制作有趣
马黑黑老师代码给力,试着瞎玩{:4_173:} 近朱者赤 发表于 2022-7-29 17:16
老师代码给力!加入小鸟修改了立方体透明度,初始呈现效果又不一样了
对,任何有意识的改变,都会产生可能是意想不到的的效果 近朱者赤 发表于 2022-7-29 17:18
马黑黑老师代码给力,试着瞎玩
修改得很棒的{:4_187:}
页:
[1]