zoukankan      html  css  js  c++  java
  • [读码时间] 跟随鼠标移动(大图展示)

    说明:代码取自网络,css中注释为笔者学习时添加,js中的注释为原文所有!

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <title>跟随鼠标移动(大图展示)</title>
        <style>
            html,body{
                overflow:hidden;
            }
            body,div,ul,li{
                margin:0;
                padding:0;
            }
            #box ul{
                width:768px;
                height:172px;
                list-style-type:none;
                margin:10px auto;
            }
            #box li{
                float:left;
                width:170px;
                height:170px;
                cursor:pointer;
                display:inline;
                border:1px solid #ddd;/*灰白色*/
                margin:0 10px;
            }
            #box li.active{
                border:1px solid #a10000;/*朱红*/
            }
            #box li img{
                width:170px;
                height:170px;
                vertical-align:top;
            }
            #big{
                position:absolute;
                width:400px;
                height:400px;
                border:2px solid #ddd;/*灰白色*/
                display:none;/*默认隐藏*/
            }
            #big div{
                position:absolute;
                top:0;
                left:0;
                width:400px;
                height:400px;
                opacity:0.5;/*半透明*/
                filter:alpha(opacity=50);
                background:#fff url(img/loading.gif) 50% 50% no-repeat;/*居中,不重复*/
            }
        </style>
        <script>
            window.onload = function () {
                var aLi = document.getElementsByTagName("li");
                var oBig = document.getElementById("big");
                var oLoading = oBig.getElementsByTagName("div")[0];
                var i = 0;
    
                for (i = 0; i < aLi.length; i++) {
                    aLi[i].index = i;
                    //鼠标划过, 预加载图片插入容器并显示
                    aLi[i].onmouseover = function () {
                        var oImg = document.createElement("img");
                        //图片预加载
                        var img = new Image();
                        img.src = oImg.src = aLi[this.index].getElementsByTagName("img")[0].src.replace(".jpg", "_big.jpg");
                        //插入大图片
                        oBig.appendChild(oImg);
                        //鼠标移过样式
                        this.className = "active";
                        //显示big
                        oBig.style.display = oLoading.style.display = "block";
                        //判断大图是否加载成功
                        img.complete ? oLoading.style.display = "none" : (oImg.onload = function () { oLoading.style.display = "none"; })
                    };
                    //鼠标移动, 大图容器跟随鼠标移动
                    aLi[i].onmousemove = function (event) {
                        var event = event || window.event;
                        var iWidth = document.documentElement.offsetWidth - event.clientX;
                        //设置big的top值
                        oBig.style.top = event.clientY + 20 + "px";
                        //设置big的left值, 如果右侧显示区域不够, 大图将在鼠标左侧显示.
                        oBig.style.left = (iWidth < oBig.offsetWidth + 10 ? event.clientX - oBig.offsetWidth - 10 : event.clientX + 10) + "px";
    
                    };
                    //鼠标离开, 删除大图并隐藏大图容器
                    aLi[i].onmouseout = function () {
                        this.className = "";
                        oBig.style.display = "none";
                        //移除大图片
                        oBig.removeChild(oBig.lastChild)
                    }
                }
            };
        </script>
    </head>
    <body>
        <div id="box">
            <ul>
                <li><img src="img/shirt_1.jpg" /></li>
                <li><img src="img/shirt_2.jpg" /></li>
                <li><img src="img/shirt_3.jpg" /></li>
                <li><img src="img/shirt_4.jpg" /></li>
            </ul>
        </div>
        <div id="big"><div></div></div>
    </body>
    </html>
    View Code
  • 相关阅读:
    关于DataGridView的数据源绑定字符串两个值得注意的问题
    .Net 第三方控件(转)
    sql语句linq语言lambda表达式对照
    InvokeRequired 属性 与Invoke方法
    .net垃圾回收机制
    const与readonly的区别
    Developer Express控件组合中的GridControl控件,如何自动显示每一行的序号
    XtraGrid控件6——2种GridColumn的属性
    如何让应用程序仅运行一个实例(c#)
    DevExpress控件之GridControl控件
  • 原文地址:https://www.cnblogs.com/sx00xs/p/6488001.html
Copyright © 2011-2022 走看看