JavaScript 多图片效果

目录

多图片的缩放

放大效果

多图片的缩放

banner图效果

循环播放图片

banner轮播图效果


多图片的缩放

放大效果

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #div1{width: 100px; height: 100px; background-color: orange; position: absolute; left: 400px; top: 400px;}
        #div2{width: 200px; height: 200px; background-color: yellow; position: absolute; left: 400px; top: 400px;}
    </style>
    <script src="../startMove.js"></script>
    <script>
        window.onload = function(){
            var oDiv1 = document.getElementById("div1");
            oDiv1.onmouseover = function(){
                startMove(this,{
                    width: 200,
                    height: 200
                })
            }
            oDiv1.onmouseout = function(){
                startMove(this,{
                    width: 100,
                    height: 100
                })
            }
        }
    </script>
</head>
<body>
    <div id="div2"></div>
    <div id="div1"></div>
</body>
</html>

问题:不是从中心开始放大

给大的div添加marginLeft与marginTop,在运动时改变div1的marginLeft与marginTop

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #div1{width: 100px; height: 100px; background-color: orange; position: absolute; left: 400px; top: 400px;}
        #div2{width: 200px; height: 200px; background-color: yellow; position: absolute; left: 400px; top: 400px; margin-left: -50px; margin-top: -50px;}
    </style>
    <script src="../startMove.js"></script>
    <script>
        window.onload = function(){
            var oDiv1 = document.getElementById("div1");
            oDiv1.onmouseover = function(){
                startMove(this,{
                    width: 200,
                    height: 200,
                    /* 
                        好处:只需要改marginLeft和marginTop的值等于当前放大宽度和高度的一半即可,不需要看原来的坐标
                    */
                    marginLeft: -50,
                    marginTop: -50
                })
            }
            oDiv1.onmouseout = function(){
                startMove(this,{
                    width: 100,
                    height: 100,
                    marginLeft: 0,
                    marginTop: 0
                })
            }
        }
    </script>
</head>
<body>
    <div id="div2"></div>
    <div id="div1"></div>
</body>
</html>

多图片的缩放

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{margin: 0px; padding: 0px;}
        #ul1 li{list-style: none; width: 100px; height: 100px; border: 1px
         solid black; margin: 10px; float: left;}
         #ul1{width: 366px; height: 366px; border: 1px solid black; margin: 100px auto; position: relative;}
         #ul1 li img{width: 100%; height: 100%;}
    </style> 
    <script src="../startMove.js"></script>
    <script>
        /* 
            九宫格布局

            布局的时候:相对定位
            实际放大的时候:必须是绝对定位
            文档流的转换:相对定位 =>绝对定位
        */

        window.onload = function(){
            var oUl1 = document.getElementById("ul1");
            var aLis = oUl1.getElementsByTagName("li");

            /* 
                问题:由于布局的时候是从0,1,2,3...顺序布局,所以除了最后一个图片放大时不会被其他图片遮挡,其他的图片放大都会有层级高的挡住它;增加一个全局变量currentIndex
            */
            var currentIndex = 2;

            for(var i = 0; i < aLis.length; i++){
                aLis[i].style.left = aLis[i].offsetLeft + 'px';
                aLis[i].style.top = aLis[i].offsetTop + 'px';
                var oImg = document.createElement("img");
                oImg.src = "img/" + (i + 1) + ".jpg";
                aLis[i].appendChild(oImg);
            }

            for(var i = 0; i < aLis.length; i++){
                aLis[i].style.position = 'absolute';
                aLis[i].style.margin = '0px';

                //给每一个li标签添加移入和移出
                aLis[i].onmouseover = function(){
                    this.style.zIndex = currentIndex++;
                    startMove(this, {
                        width: 200,
                        height: 200,
                        marginLeft: -50,
                        marginTop: -50
                    })
                }
                aLis[i].onmouseout = function(){
                    startMove(this, {
                        width: 100,
                        height: 100,
                        marginLeft: 0,
                        marginTop: 0
                    })
                }
            }
        }
    </script>
</head>
<body>
    <ul id="ul1">
        <!-- 3*3布局,在手机端此布局点击方便,不容易造成误触 -->
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
    </ul>
</body>
</html>

banner图效果

循环播放图片

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{margin: 0px; padding: 0px;}
        #ul1 li{list-style: none; width: 200px; height: 200px; margin: 10px; float: left;}
        #ul1 li img{width: 100%; height: 100%;}
        #ul1{position: absolute; left: 0px;}
        #div1{width: 880px; height: 220px; border: 1px solid black; margin: 50px auto; position: relative; overflow: hidden;}
    </style>
    <script>
        window.onload = function(){
            var oDiv1 = document.getElementById("div1");
            var oUl1 = document.getElementById("ul1");

            /* 直接把这四张图片再添加到末尾 */
            oUl1.innerHTML += oUl1.innerHTML;
            //重新设置一下ul的宽
            oUl1.style.width = 220 * 8 + 'px';

            setInterval(function(){
                oUl1.style.left = oUl1.offsetLeft - 2 + 'px';
                if(oUl1.offsetLeft <= -oUl1.offsetWidth / 2){
                    oUl1.style.left = "0px";
                }
            },30);
        }
    </script>
</head>
<body>
    <div id="div1">
        <ul id="ul1">
            <li>
                <img src="./img/1.jpg" alt="">
            </li>
            <li>
                <img src="./img/2.jpg" alt="">
            </li>
            <li>
                <img src="./img/3.jpg" alt="">
            </li>
            <li>
                <img src="./img/4.jpg" alt="">
            </li>
        </ul>
    </div>
</body>
</html>

banner轮播图效果

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{margin: 0px; padding: 0px;}
        #ul1 li{list-style: none; width: 200px; height: 200px; margin: 10px; float: left;}
        #ul1 li img{width: 100%; height: 100%;}
        #ul1{position: absolute; left: 0px;}
        #div1{width: 880px; height: 220px; border: 1px solid black; margin: 50px auto; position: relative; overflow: hidden;}
    </style>
    <script src="../startMove.js"></script>
    <script>
        window.onload = function(){
            var oDiv1 = document.getElementById("div1");
            var oUl1 = document.getElementById("ul1");

            /* 直接把这四张图片再添加到末尾 */
            oUl1.innerHTML += oUl1.innerHTML;
            //重新设置一下ul的宽
            oUl1.style.width = 220 * 8 + 'px';

            setInterval(function(){
                //让ul向左运动一个图片的宽
                startMove(oUl1,{left: oUl1.offsetLeft - 220}, function(){
                    if(oUl1.offsetLeft <= -oUl1.offsetWidth / 2){
                        oUl1.style.left = '0px';
                    }
                });
            }, 2000);
        }
    </script>
</head>
<body>
    <div id="div1">
        <ul id="ul1">
            <li>
                <img src="./img/1.jpg" alt="">
            </li>
            <li>
                <img src="./img/2.jpg" alt="">
            </li>
            <li>
                <img src="./img/3.jpg" alt="">
            </li>
            <li>
                <img src="./img/4.jpg" alt="">
            </li>
        </ul>
    </div>
</body>
</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值