十、用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{width: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、表单

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

十二章 略

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

【干货】JavaScript DOM编程艺术学习笔记10-12【完】的更多相关文章

  1. JavaScript DOM编程艺术学习笔记(一)

    嗯,经过了一周的时间,今天终于将<JavaScript DOM编程艺术(第2版)>这本书看完了,感觉受益匪浅,我和作者及出版社等等都不认识,无意为他们做广告,不过本书确实值得一看,也值得推 ...

  2. JavaScript DOM编程艺术-学习笔记

    发现基础不是很好,补习一下.37买了2本书(dom编程和高级程序设计). 以前读书总是自己勾勾画画,有点没意思.现在写下来,说不定会成为传世经典.哈哈...........随便扯扯淡. 第一天(201 ...

  3. 【干货】JavaScript DOM编程艺术学习笔记1-3

    从7月29号到8月8号,断断续续地看完了这本书,做了部分实践联系.总体感觉本书真的只能算是个入门,学完之后看到库的那一章才感觉是个大坑,实践中大部分应该都是用的现成的库吧,所以还要重新学习一个库,但是 ...

  4. 【干货】JavaScript DOM编程艺术学习笔记4-6

    四.案例研究:JavaScript图片库 js: function showPic(whichpic){ //取得链接 var source=whichpic.getAttribute("h ...

  5. 【干货】JavaScript DOM编程艺术学习笔记7-9

    七.动态创建标记 在文档中不写占位图片和文字代码,在能调用js的情况下动态创建,文档支持性更好. 在原来的addLoadEvent prepareGallery showPic的基础上增加函数prep ...

  6. JavaScript DOM编程艺术-学习笔记(第五章、第六章)

    第五章: 1.题外话:首先大声疾呼,"js无罪",有罪的是滥用js的那些人.js的father 布兰登-艾克,当初为了应付工作,10天就赶出了这个js,事后还说人家js是c语言和s ...

  7. JavaScript DOM编程艺术学习笔记-第二章JavaScript语法

    一.JavaScript示例 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  8. JavaScript DOM编程艺术学习笔记-第一章JavaScript简史

    一,JavaScript的起源 JavaScript是Netscape与Sun公司合作开发,它是一种脚本语言,通常只能通过Web浏览器去完成一些操作.JavaScript为程序员提供了一些操控Web浏 ...

  9. JavaScript DOM编程艺术-学习笔记(第八章、第九章)

    第八章 1.小知识点: ①某些浏览器要根据DOCTYPE 来决定页面的呈现模式(标准模式 / 怪异模式--也称兼容模式): 兼容模式意味着浏览器要模仿老一辈的浏览器的怪异行为,来让老站点得到运行,并让 ...

随机推荐

  1. 利用包管理器安装Node.JS

    步骤1:用curl获取源代码在我们用卷曲获取源代码之前,我们必须先升级操作系统,然后用卷发命令获取NodeSource添加到本地仓库. root@ubuntu-15:~#apt-get update安 ...

  2. R: 数据结构、数据类型的描述。

    ################################################### 问题:数据结构..类型  18.4.27 有哪些数据结构.类型??  各自有什么特点? 解决方案 ...

  3. Windows下安装MySQL压缩zip包

    MySQL 是最流行的关系型数据库管理系统,在WEB应用方面 MySQL 是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之 ...

  4. p2371&bzoj2118 墨墨的等式

    传送门(bzoj) 题目 墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+…+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N.{an}.以及B的取值范围,求出有多少B可以使等式存 ...

  5. charles请求入参中有乱码

    工作中,需要入参,但是发现入参中,有中文的都是乱码,仔细查阅headers,发现Content-Type是application/x-www-form-urlencoded类型,而实际上,入参是jso ...

  6. PHP开源系统学习之fluxbb_1

    最近一直忙于做项目,虽说做了点新东西.感觉自己进步不是很大,总体水平还是跟半年前差不多,想到的东西跟以前差不多,写出来的东西也跟以前差不多.只是现在做的东西多些,比以前敢做了. 近期准备利用点时间,读 ...

  7. HELLO---MVC

    前言 很荣幸有机会参加BS的项目,这个图书馆系统这个项目,需要用到ITOO框架,其中涉及到好多小框架的学习,MVC就是其中的一个学习知识点,像大家一样,刚刚接触一个新鲜的知识,心里除了恐惧还有就是茫然 ...

  8. [转]Xcode概览:调试应用程序

    原文网址: blog.csdn.net/fhbystudy/article/details/12856261 本文由CocoaChina翻译组成员Creolophus(github主页)翻译自苹果官方 ...

  9. h5自定义播放器得实现原理

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. vue2中使用ajax

    vue中本身没有ajax功能,需要使用扩展,现在推荐使用的是axios,github地址如下 https://github.com/axios/axios 下面各个示例 <!DOCTYPE ht ...