【干货】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{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【完】的更多相关文章
- JavaScript DOM编程艺术学习笔记(一)
嗯,经过了一周的时间,今天终于将<JavaScript DOM编程艺术(第2版)>这本书看完了,感觉受益匪浅,我和作者及出版社等等都不认识,无意为他们做广告,不过本书确实值得一看,也值得推 ...
- JavaScript DOM编程艺术-学习笔记
发现基础不是很好,补习一下.37买了2本书(dom编程和高级程序设计). 以前读书总是自己勾勾画画,有点没意思.现在写下来,说不定会成为传世经典.哈哈...........随便扯扯淡. 第一天(201 ...
- 【干货】JavaScript DOM编程艺术学习笔记1-3
从7月29号到8月8号,断断续续地看完了这本书,做了部分实践联系.总体感觉本书真的只能算是个入门,学完之后看到库的那一章才感觉是个大坑,实践中大部分应该都是用的现成的库吧,所以还要重新学习一个库,但是 ...
- 【干货】JavaScript DOM编程艺术学习笔记4-6
四.案例研究:JavaScript图片库 js: function showPic(whichpic){ //取得链接 var source=whichpic.getAttribute("h ...
- 【干货】JavaScript DOM编程艺术学习笔记7-9
七.动态创建标记 在文档中不写占位图片和文字代码,在能调用js的情况下动态创建,文档支持性更好. 在原来的addLoadEvent prepareGallery showPic的基础上增加函数prep ...
- JavaScript DOM编程艺术-学习笔记(第五章、第六章)
第五章: 1.题外话:首先大声疾呼,"js无罪",有罪的是滥用js的那些人.js的father 布兰登-艾克,当初为了应付工作,10天就赶出了这个js,事后还说人家js是c语言和s ...
- JavaScript DOM编程艺术学习笔记-第二章JavaScript语法
一.JavaScript示例 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- JavaScript DOM编程艺术学习笔记-第一章JavaScript简史
一,JavaScript的起源 JavaScript是Netscape与Sun公司合作开发,它是一种脚本语言,通常只能通过Web浏览器去完成一些操作.JavaScript为程序员提供了一些操控Web浏 ...
- JavaScript DOM编程艺术-学习笔记(第八章、第九章)
第八章 1.小知识点: ①某些浏览器要根据DOCTYPE 来决定页面的呈现模式(标准模式 / 怪异模式--也称兼容模式): 兼容模式意味着浏览器要模仿老一辈的浏览器的怪异行为,来让老站点得到运行,并让 ...
随机推荐
- storm启动supervisor源码分析-supervisor.clj
supervisor是storm集群重要组成部分,supervisor主要负责管理各个"工作节点".supervisor与zookeeper进行通信,通过zookeeper的&qu ...
- Codeforces - 77B - Falling Anvils - 几何概型
https://codeforc.es/contest/77/problem/B 用求根公式得到: \(p-4q\geq0\) 换成熟悉的元: \(y-4x\geq0\) 其中: \(x:[-b,b] ...
- vue-cli目录结构及说明
使用vue-cli有时会出现一些莫名的问题,清楚项目的结构文件及其意义方便更好的开发和解决问题,介绍如下: build/ // 项目构建(webpack)相关代码 build.js // 生产环境构建 ...
- 关于写PPT
如果你要给别人讲东西,要记得你的受众的不同,你的讲法也应该有不同,侧重点应该有所区别. 如果作为一个老师,你的PPT应该是让人看懂,把人讲懂,这是你的最终目的所在.如果你是一个毕业生,你要围绕你要解决 ...
- postgres_fdw
create extension postgres_fdw; --创建扩展 create server db0 foreign data wrapper postgres_fdw OPTIONS (h ...
- 表单和css
表单和CSS 一.==表单== 1. form表单本身 <form name="myform" action="#" method="get&q ...
- python数据类型基本操作
目录 1.字符串.... 1 2.列表[ ] 3 3.元组 ( ) 4 4.字典 { } 4 5.SET集合... 7 1.字符串 1.1查找字符串 find查找 >>> msg = ...
- jdk的卸载
问题描述: win10环境安装了jdk1.7&jdk1.8&jdk1.9 jdk1.9安装后,设置jdk1.9安装目录为JAVA_HOME.后来JAVA_HOME切换jdk1.8环境变 ...
- thinphp5会员注册邮箱验证
1.首先完成邮箱发送http://www.cnblogs.com/jcydd/p/7299750.html 2.在完成会员新增后执行后置函数,在模型类当中 //注册后置函数 protected sta ...
- python基础 3.0 file 读取文件
一.python 文件访问 1.在python中要访问文件,首先要打开文件,也就是open r: 只读 w: 只写 ,文件已存在则清空,不存在则创建 a:追加 ,写到文件末尾.如果文件存在,则在 ...