JS DOM编程艺术——用JS实现动画效果—— JS学习笔记2015-7-22(第89天)

实用的动画效果:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>实用的动画效果</title>

<style>
#slideshow{ width: 100px; height: 100px; position: relative; overflow: hidden;}
#preview { position: absolute;}
</style>

</head>

<body>
<h1>网页设计</h1>
<p>你应该知道事情</p>
<ol id="linklist">
    <li><a href="structure.html">结构</a></li>
    <li><a href="presentation.html">表现</a></li>
    <li><a href="behavior.html">行为</a></li>
</ol>

<script>

    function insertAfter(newElement,targetElement){
             var parent = targetElement.parentNode;
             if(parent.lastChild == targetElement){
                 parent.appendChild(newElement);
             }else{
                 parent.insertBefore(newElement,targetElement.nextSibling);
             }
    }

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

       var elem = document.getElementById(elementID);
       if (elem.movement) {
           clearTimeout(elem.movement)
       }
       if(!elem.style.left){
           elem.style.left = ‘0px‘;
       }
       if(!elem.style.top){
           elem.style.top = ‘0px‘;
       }
       var xpos = parseInt(elem.style.left);
       var ypos = parseInt(elem.style.top);
       var dist = 0;
       if(xpos == final_x && ypos == final_y){
           return true;
       }
       if(xpos < final_x){
           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(repeat,interval);
   }

    function prepareSlideshow(){

        // var preview = document.getElementById(‘preview‘);
        // preview.style.position = ‘absolute‘;
        // preview.style.left = ‘0px‘;
        // preview.style.top = ‘0px‘;

        var slideshow = document.createElement(‘div‘);
        slideshow.setAttribute(‘id‘,‘slideshow‘);
        var preview = document.createElement(‘img‘);
        preview.setAttribute(‘src‘,‘img/topics.gif‘);
        preview.setAttribute(‘alt‘,‘building blocks of web design‘);
        preview.setAttribute(‘id‘,‘preview‘);
        slideshow.appendChild(preview);
        var list = document.getElementById(‘linklist‘);
        insertAfter(slideshow,list);

        var list = document.getElementById(‘linklist‘);
        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);
        }
    }
    prepareSlideshow();

</script>
</body>
</html>

这份文档中,结构层、表示层和行为层,已经分离的比较彻底了。如果禁用了页面中不会出现动画图片。

时间: 2025-01-06 23:42:36

JS DOM编程艺术——用JS实现动画效果—— JS学习笔记2015-7-22(第89天)的相关文章

《javascript dom编程艺术》:实现动画效果

看到第十章,依照书上的规范成功写出了一个动态的位置转换. 本书的例子虽然简单,但是重要的是其中所含的思想. 1 function moveElement(elementID,finaX,finaY,interval) 2 { 3 if(!document.getElementById)return false; 4 if(!document.getElementById(elementID))return false; 5 var elem=document.getElementById(ele

JS DOM编程艺术的学习—— JS学习笔记2015-7-5(第76天)

由于看高程3卡住了,所以现在在学习JS DOM编程艺术来巩固基础: 一.在看JS DOM 编程艺术的时候,有个作者提到的方法很实用, 就是在JS中变量和函数的命名方法:  变量的命名方法为使用下划线,比如: var temp_color = ['red','blue']; 函数就使用驼峰法,比如: function current_date(){}; 这样的习惯可以帮助理解,提高可读性,在理解变量和函数名的时候就很方便了: 二.还有个收获就是关于“对象”的理解又加深了 之前对于什么对象的属性,对

JS DOM编程艺术——JS图片库—— JS学习笔记2015-7-8(第79天)

DOM是一种适用于多种环境和多种程序设计语言的通用型API. 如果想要把本书(JS DOM编程艺术)学到的DOM技巧运用在web浏览器以外的应用环境里,严格遵守“第1级DOM”能够让你避免与兼容性有关的任何问题: tips:setAttribute是第1级DOM; 图片切换初级js: <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/

JS DOM 编程艺术 随笔

DOM 最大的作用就是将整个文档通过节点树来展现.通过类似方法可以获取特定节点,并绑定js方法实现与人的交互. 1.通过dom方法,获取页面的元素(getElementsByTagName/id,通过class(getAttribute))2.获取元素之后,为他们绑定行为(点击/其他)的处理事件3.最后把所有函数绑定到window.onload()函数上面去 onload = function(){function1function2...} plus 小技巧: <a onclick=>函数

JS DOM编程艺术——用JS实现动画效果—— JS学习笔记2015-7-21(第88天)

moveElement函数 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>用定时器实现JS动画效果</title> <style> </style> </head> <body> <

&lt;书摘&gt;《JS DOM编程艺术》

2016/03/04 12:00 第一二章:JS的简史以及基本语法 1.P11 2.variable 3.P13 等于 4.P13 5.P14 转义字符 6.关联数组不是一个好习惯 7.P18 对象 8.P31  firefox和chrome的兼容性:+1900,IE好着呢: 第三章:强大的DOM编程 1.DOM:Document Object Model OR MAP(文档,对象,模型OR地图): 2.P40 中间 [请注意] 3.p42 上部分例子 4.案例研究:JavaScript图片库(

JS DOM编程艺术——动态创建标记—— JS学习笔记2015-7-13(第83天)

DOM方法: 1.createElement 语法:document.createElement(nodeName) 比如:document.createElement("p");  // 将创建一个P元素: 2.appendChild 语法:parent.appendChild(child) 3.creatTextNode 语法:document.createTextNode(text) example.js /* window.onload = function (){ var p

JS DOM编程艺术——显示缩略语列表—— JS学习笔记2015-7-16(第85天)

缩略语列表函数 HTML 结构: <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>显示缩略语列表</title> <style> body{ font-family: "Helvetiva", "

JS DOM编程艺术——JS图片库2—— JS学习笔记2015-7-9(第80天)

childNodes属性: element.childNodes 它是包含这个元素的全部子元素的数组: nodeType属性: 每一个节点都有nodeType属性,这个属性可以让我们知道自己正在与哪种节点打交道 node.nodeType 返回 1 是指该节点为元素节点: 返回 2 是指该节点为属性节点: 返回 3 是指该节点为文本节点: nodeValue属性: node.nodeValue 但是这个属性在实际使用的时候需要配合childNodes才行,详情看例子 firstChild和las