• 【干货】JavaScript DOM编程艺术学习笔记10-12【完】


    十、用JavaScript实现动画效果

    鼠标放到链接上,每次只显示图片的一小部分,加快加载速度。

    js:

    function prepareSlideshow(){

      //对象检测

       if(!document.getElementsByTagName) return false;

       if(!document.getElementById) return false;

       if(!document.getElementById("linklist")) return false;

      //创建窗口元素

      var slideshow=document.createElement("div");

      slideshow.setAttribute("id","slideshow");

      //创建图片元素

      var preview=document.createElement("img");

      preview.setAttribute("src","images/topics.gif");

      preview.setAttribute("alt","building blocks of web design");

      preview.setAttrubute("id","preview");

      //将图片添加到窗口

      slideshow.appendChild(preview);

      var list=document.getElementById("linklist");

      //将窗口放在链接表后面

      insertAfter(slideshow,list);

      //对每一个链接响应事件用函数moveElement

      var links=list.getElementsByTagName("a");

      links[0].onmouseover=function(){

          moveElement("preview",-100,0,10);

       }

      links[1].onmouseover=function(){

          moveElement("preview",-200,0,10);

       }

      links[2].onmouseover=function(){

          moveElement("preview",-300,0,10);

       }

    }

    function moveElement("elementID",final_x,final_y,interval){

       //对象检测

       if(!document.getElementById) return false;

       if(!document.getElementById("elementID")) return false;

       var elem=document.getElementById(elementID);

       //如果元素已经有一个movement属性,用clearTimeout函数进行复位

       if(elem.movement) clearTimeout(elem.movement);

       //若果没有style位置属性,就设置为0

       if(!elem.style.left) elem.style.left="0px";

       if(!elem.style.top) elem.style.top="0px";

       //用parseInt函数提取出字符串前面的数值,并转换为数值

       var xpos=parseInt(elem.style.left);

       var ypos=parseInt(elem.syle.top);

       var dist=0;

       //检测与目标位置关系

       if(xpos==final_x&&ypos==final_y) return true;

       if(xpos<final_x){

         //用Math对象的ceil方法,向大于方向舍入为最接近的证书

          dist=Math.ceil((final_x-xpos)/10);

          xpos=xpos+dist;

       if(xpos>final_x){

          dist=Math.ceil((xpos-final_x)/10);

          xpos=xpos-dist;

       if(ypos<final_y){

          dist=Math.ceil((final_y-ypos)/10);

          ypos=ypos+dist;

       if(ypos>final_y){

          dist=Math.ceil((ypos-final_y)/10);

          ypos=ypos-dist;

       }

       //将数值转换为属性值

       elem.style.left=xpos+"px";

       elem.style.top=ypos+"px";

      //还不懂

       var repeat="moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")";

       //用elem的属性movement来代替全局变量,如果用全局变量的话setTimeout是可以执行,但鼠标指针在链接间快速移动的话,动画将变得混乱,我们需要一个只与正在被移动的那个元素有关的变量,可以为元素创建属性

       elem.movement=setTimeout(repeat,interval);

    }

    css:

    #slideshow{100px; height:100px; position:relative; overflow:hidden;}

    #preview{position:absolute;}

    十一、HTML5

    使用HTML5之前最好加一个检测工具Modernizr,是一个js库,能提供一些不同的css类名及特性检测属性,是必不可少的,下载下来后放在head里引用这个js文件。

    1、canvas

    可以通过该元素动态创建和操作图形图像

    2、video audio

    之前是用object对象引入各种播放器插件,现在可以用自带的这两个标签

    但要注意的是,由于各个浏览器支持的视频格式不一样,引用时要将三个主要格式都放上,最好放上下载链接,最后在加个flash保底

    还可以改变标准播放控件的外观

    3、表单

    增加了许多输入控件类型,如电话,邮件等

    十二章 略

    本书完,下面要自己选择一个合适的库学习使用。

  • 相关阅读:
    SpringBoot2.x整合JDBC及初始化data.sql和schema.sql脚本
    CentOS7安装docker以及错误解决
    Maven的scope属性作用域范围
    (转)排序算法之简单选择排序
    系统开发博客专栏
    IDEA启动报错Plugin Error Problems found loading plugins的解决办法
    Promise函数的使用
    (转)排序算法之希尔排序
    .net Core AJAX使用Header传递参数,以JsonResult返回信息
    MVC 扩展RadioButtonListFor和CheckBoxListFor
  • 原文地址:https://www.cnblogs.com/ziye89/p/7367821.html
Copyright © 2020-2023  润新知