亚伦影音工作室 发表于 2025-7-30 17:51

破碎

本帖最后由 亚伦影音工作室 于 2025-11-1 21:47 编辑 <br /><br /><style>
               
                #box {
                        width: 1200px;
                        height:700px;
                        position: relative;
                        overflow: hidden;
                        margin: 10px -300px;
                        border:1px solid #000;
                }
                #box>div {
                        position:absolute;
                        left: 0;
                        top:0;background:#800 url(https://pic1.imgdb.cn/item/6397a78fb1fccdcd365e4aa9.jpg)no-repeat center / cover;
                        width:100%;
                        height:100%;
                        transform-style:preserve-3d;
                }
                #box>div>div {
                        position:absolute;
                        transform:preserve-3d;
                }

        </style>

        <div id="box"></div>

<audio id="aud" src="https://aod.cos.tx.xmcdn.com/storages/5a70-audiofreehighqps/C0/F2/GAqhqKwMPDUzACAAAAPYpogN.m4a" autoplay ></audio>



<script>
                //
                var imgs = ["https://pic1.imgdb.cn/item/683a8d3f58cb8da5c81e820c.jpg","https://pic1.imgdb.cn/item/686265e358cb8da5c87f8d9b.jpg","https://pic1.imgdb.cn/item/6862641f58cb8da5c87f852b.jpg","https://pic1.imgdb.cn/item/683a8cdf58cb8da5c81e81d1.webp"];


                //z-index
                var z = 999999;
                //
               
var index = 0;
                var box = document.getElementById('box')
                boom(10,10)
                //l Уt;
                function boom(l,t) {
                        //div
                        var oParentNode = document.createElement("div");
                        //z-index
                        oParentNode.style.zIndex = z;
                        z--;
                        box.appendChild(oParentNode);

                        var x = l,y = t;
                        for(var i = 0; i < y;i++){if(!aud.paused){
                                for(var j = 0;j<x;j++){
                                        //
                                        var oDiv = document.createElement("div");
                                        //
                                        oDiv.style.background = "url("+imgs+")";
                                        oDiv.style.width = box.clientWidth / x + 'px';
                                        oDiv.style.height = box.clientHeight / y + 'px';
                                        oDiv.style.left = (box.clientWidth / x) * j +'px';
                                        oDiv.style.top = (box.clientHeight / y) * i +'px';
                                        oDiv.style.backgroundPositionX = (box.clientWidth/ x)* -j + 'px';
                                        oDiv.style.backgroundPositionY= (box.clientHeight/y)* -i + 'px';
                                        oDiv.style.transition = (Math.random()*1+0.25)+"s";
                                        oParentNode.appendChild(oDiv);
}
                        }       
                        };


                        var allDiv = oParentNode.children;
                        setTimeout(()=>{
                                index++;
                                index == imgs.length && (index = 0);

                                boom(l,t);
                                for(var i= 0;i<allDiv.length;i++){if(!aud.paused){
                                        allDiv.style.transform = 'perspective(800px) rotateX('+ (Math.random()*500-250)+'deg) rotateY('+(Math.random()*500-250)+'deg) translateX('+(Math.random()*500-250)+'px) translateY('+(Math.random()*500-250)+'px) translateZ('+(Math.random()*1000-500)+'px)'
                                        allDiv.style.opacity = 0;
                                };}
                        },2000);

                        setTimeout(function(){
                                oParentNode.remove();
                        },3500)

                }

let fs= true;
box.onclick = () => {
            if (fs) {aud.pause();
                  
   } else {aud.play();

            }
            fs = !fs;
      };

      </script>       

红影 发表于 2025-7-30 19:09

漂亮,图片轮播后自动碎裂呢。
欣赏亚伦老师好帖{:4_187:}

杨帆 发表于 2025-7-30 20:07

自然、顺畅的艺术效果,谢谢亚伦老师精彩分享{:4_190:}

梦油 发表于 2025-7-30 21:27

欣赏佳作,问候亚伦。

夕阳黄昏 发表于 2025-7-31 15:46

<style>
                #Box {
                        width: 1200px;
                        height:700px;
                        position: relative;
                        overflow: hidden;
                        margin: 100px auto 48px calc(50% - 681px);
                        border:1px solid #000;
                        background-color:lightGray;
                }
                #Box>div {
                        position:absolute;
                        left: 0;
                        top:0;
                        width:100%;
                        height:100%;
                        transform-style:preserve-3d;
                }
                #Box>div>div {
                        position:absolute;
                        transform:preserve-3d;
                }


        </style>
        <div id="Box"></div>


<audio id="mAud" src="https://aod.cos.tx.xmcdn.com/storages/5a70-audiofreehighqps/C0/F2/GAqhqKwMPDUzACAAAAPYpogN.m4a" autoplay ></audio>


<script>
        // 图片
        var pics = ["https://pic1.imgdb.cn/item/683a8d3f58cb8da5c81e820c.jpg","https://pic1.imgdb.cn/item/686265e358cb8da5c87f8d9b.jpg","https://pic1.imgdb.cn/item/6862641f58cb8da5c87f852b.jpg","https://pic1.imgdb.cn/item/683a8cdf58cb8da5c81e81d1.webp"];
       
       
        //显示第几张图片
        var picIdx = 0, zIdx = 999999, ctrlHandle;
        const rows = 10, cols = 10;
       
        //l 传进来几行;t传进来几列;
        function Boom() {
                //创建一个新的div
                let oParentNode = document.createElement("div");
       
                for(let i = 0; i < cols;i++){
                        for(let j = 0;j<rows;j++){
                                //创建碎片
                                let oDiv = document.createElement("div");
                                //添加背景图片
                                oDiv.style.background = `url(${pics})`;
                                oDiv.style.width = Box.clientWidth / rows + 'px';
                                oDiv.style.height = Box.clientHeight / cols + 'px';
                                oDiv.style.left = (Box.clientWidth / rows) * j +'px';
                                oDiv.style.top = (Box.clientHeight / cols) * i +'px';
                                oDiv.style.backgroundPositionX = (Box.clientWidth/ rows)* -j + 'px';
                                oDiv.style.backgroundPositionY= (Box.clientHeight/cols)* -i + 'px';
                                oDiv.style.transition = (Math.random()*1+0.5)+"s";
                                oParentNode.appendChild(oDiv);
       
                        }
                };
                //设置z-index的值
                oParentNode.style.zIndex = zIdx;
                zIdx--;
                Box.appendChild(oParentNode);
       
       
                let allDiv = oParentNode.children;
                setTimeout(()=>{
                        picIdx++;
                        //picIdx == pics.length && (picIdx = 0);
                        picIdx %= pics.length;
       
                        for(let i= 0;i<allDiv.length;i++){
                                allDiv.style.transform = 'perspective(800px) rotateX('+ (Math.random()*500-250)+'deg) rotateY('+(Math.random()*500-250)+'deg) translateX('+(Math.random()*500-250)+'px) translateY('+(Math.random()*500-250)+'px) translateZ('+(Math.random()*1000-500)+'px)'
                                allDiv.style.opacity = 0;
                        };
                        setTimeout(function(){
                                oParentNode.remove();
                        },3500)
                },2000);
        }
        let runState = () =>        {
                if(mAud.paused)        Box.style.backgroundImage = `url(${pics})`;
                else        Box.style.backgroundImage = `url()`;
        }
        Box.onclick = () => {
                mAud.paused ? (mAud.play(), ctrlHandle = setInterval(Boom, 2500) ) : (mAud.pause(), clearInterval(ctrlHandle) );
        }
      mAud.addEventListener('play', () => runState());
      mAud.addEventListener('pause', () => runState());
      mAud.play().catch(_ = () => runState());


</script>       

页: [1]
查看完整版本: 破碎