zoukankan      html  css  js  c++  java
  • 鼠标悬浮显示大图

    在网上找到此例子,写几点看过后的理解:
    1,变量在命名时,采用的匈牙利命名法,看起来不如驼峰命名法容易理解。

    2,使用 for 循环给li元素添加事件处理程序时,因getElementsByTagName返回来的是一个nodelist对象,会实时变动,应将长度赋值给一个局部变量 len,获取一个快照。这样对性能有提升

    3, 在添加动态生成的 img 图片元素时,声明了一个 Image类的实例,以此来判断页面是否已经加载,如页面未加载就添加动态元素到 dom 树上,会出问题。

    4,  Image类实例无法添加到 Dom 树上。

    5,在添加鼠/移除标移过样式时,可使用 html5中添加的 classList的 add 和 remove 方法。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>跟随鼠标移动(大图展示)</title>
        <style type="text/css">
            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 type="text/javascript">
    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>
  • 相关阅读:
    MySQL 对于千万级的大表要怎么优化?
    mysql数据库优化总结
    php 正则表达式怎么匹配标签里面的style?
    php一行代码获取本周一,本周日,上周一,上周日,本月一日,本月最后一日,上月一日,上月最后一日日期
    PHP过滤常用标签的正则表达式
    php冒泡排序
    PHP中__FUNCTION__与__METHOD__的区别
    关于PHP程序员技术职业生涯规划
    初识DSP
    MATLAB图像处理基础
  • 原文地址:https://www.cnblogs.com/sx00xs/p/6225533.html
Copyright © 2011-2022 走看看