zoukankan      html  css  js  c++  java
  • 【应用】图片翻转js

    图片翻转:图片随着鼠标指针划过进行替换

    <img src="example.gif" onmouseover="this.src='exampleTwo.gif'" onmouseout="this.src='example.gif'" />

    像图片翻转这样的效果需要较高的响应度,这也意味着需要想办法来确保一些必要的图片预提取,让浏览器缓存起来。

    客户端JavaScript定义了一个专用API来达到这一目的:

    为了强制让图片缓存起来,首先利用Image()构造函数来创建一个屏幕外图像对象,之后,对该对象的src属性设置成期望的URL。

    由于图片元素并没有添加到文档中,因此,它是不可见的,但浏览器还是会加载图片并将其缓存起来。

    这样一来,之后当设置成同样的URL来显示该屏幕内的图片时,它会很快从浏览器换从中加载,而不需要通过网络加载。

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
    <style>
        img{
            position: absolute;top: 0;bottom: 0;left: 0;right: 0;
            margin: auto;
        }
    </style>
    </head>
    <body>
    <img src='{$Think.const.IMG_SRC}1.jpg' data-rollover="{$Think.const.IMG_SRC}2.jpg" width="300px" height="300px">
    
    <script>
        /*当文档载入完成时调用一个函数*/
        //注册函数f,当文档载入完成时执行这个函数f
        //如果文档已经载入完成,尽快以异步方式执行它。
        function onLoad(f){
            if(onLoad.loaded)   //如果文档已经载入完成
                window.setTimeout(f,0); //将f放入一部队列,并尽快执行它
            else if(window.addEventListener) //注册事件的标准方法
                window.addEventListener("load",f,false);
            else if(window.attachEvent) //ie8以及更早的ie版本浏览器注册事件的方法
                window.attachEvent("onload",f);
        }
        //给onload设置一个标志,用来指示文档时候加载完成
        onLoad.loaded=false;
        //注册一个函数,当文档载入完成时设置这个标志
        onLoad(function(){
            onLoad.loaded=true;
        });
        /*优雅的图片翻转实现方式
        *
        * 在img元素上使用data-rollover 属性来指定翻转图片的url即可
        *
        * */
        onLoad(function(){
            //所有处理程序都在一个匿名函数中,不定义任何符号
            //遍历所有的图片,查找data-rollover 属性
            for(var i=0;i<document.images.length;i++){
                var img=document.images[i];
                var rollover=img.getAttribute('data-rollover');
                if(!rollover) continue; //跳过没有data-rollover 属性的图片
    
                //确保将翻转的图片缓存
                (new Image()).src=rollover;
    
                //定义一个属性来标志默认的图片URL
                img.setAttribute("data-rollout",img.src);
    
                //注册时间处理函数来创建翻转效果
                img.onmouseover=function(){
                    this.src=this.getAttribute("data-rollover");
                };
                img.onmouseout=function(){
                    this.src=this.getAttribute("data-rollout");
                }
            }
        });
    
    
     </script>
    </body>
    </html>
  • 相关阅读:
    linux基础——文件的压缩解压缩以及vim编辑
    linux基础——关于chmod用户权限和文件的相关操作
    linux基础的基础命令操作
    操作系统和网络基础之网络协议
    计算机基础
    【python小记】访问mysql数据库
    Qt去掉treeview项的焦点虚线
    嵌入式qt显示中文和隐藏鼠标
    【vim小记】自动保存配置
    重回ubutntu12.04小记(装完ubuntu做的几件事)
  • 原文地址:https://www.cnblogs.com/RachelChen/p/5435186.html
Copyright © 2011-2022 走看看