【js编程艺术】小制作五

1.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Web Design</title>
    <link rel="stylesheet" type="text/css" href="styles/list.css">
</head>
<body>
    <h1>Web Design</h1>
    <p>These are the things you should know</p>
    <ol id="linklist">
        <li>
            <a href="images/shuangyu.jpg">shuangyu</a>
        </li>
        <li>
            <a href="images/baiyang.jpg">baiyang</a>
        </li>
        <li>
            <a href="images/jinniu.jpg">jinniu</a>
        </li>
        <li>
            <a href="images/shuangzi.jpg">shuangzi</a>
        </li>
    </ol>
    <script type="text/javascript" src="scripts/prepareSlideshow.js"></script>
</body>
</html>

2.css

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

3.js

function addLoadEvent(func) {
    var oldonload = window.onload;
    if(typeof window.onload != "function"){
        window.onload = func;
    }else{
        window.onload = function(){
            oldonload();
            func();
        }
    }
}

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){
    if(!document.getElementById) return false;
    if(!document.getElementById(elementID)) return false;
    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 - xpos) / 10);
        ypos = ypos + dist;
    }
    if(ypos > final_y){
        dist = Math.ceil((xpos - 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(){
    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/shuangbaijinshuangzi.gif");
    preview.setAttribute("alt", "buliding blocks of web design");
    preview.setAttribute("id", "preview");
    slideshow.appendChild(preview);
    var list = document.getElementById("linklist");
    insertAfter(slideshow, list);
    var links = list.getElementsByTagName("a");

    links[0].onmouseover = function(){
        moveElement("preview", 0, 0, 10);
    }

    links[1].onmouseover = function(){
        moveElement("preview", -100, 0, 10);
    }

    links[2].onmouseover = function() {
        moveElement("preview", -200, 0, 10)
    }

    links[3].onmouseover = function() {
        moveElement("preview", -300, 0, 10)
    }
}

addLoadEvent(prepareSlideshow);
时间: 2024-10-25 14:11:51

【js编程艺术】小制作五的相关文章

【js 编程艺术】小制作二

首先是一个html文档 /* explanation.html */<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Explaining the Doucment Object Model</title> <link rel="stylesheet" type="text/css" href=&qu

【js 编程艺术】小制作四

1. html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Cities</title> <link rel="stylesheet" type="text/css" href="styles/format.css"> </head> <body>

【js编程艺术】 之有用的函数

学习js的过程中有几个有用的函数. //添加事件函数 function addLoadEvent(func) { var oldonload = window.onload; if(typeof window.onload != "function"){ window.onload = func; }else{ window.onload = function(){ oldonload(); func(); } } } //功能:将新节点newElement添加到目标节点targetE

《C++编程艺术》第五章 下载工具源码

今天看了书上的第五章代码,看了后想编译起来结果报了好些错,修改完后已经可以正确的编译起来,供大家下载研究 // Header file for downloader. Call this file dl.h. #include <iostream> #include <string> #include <windows.h> #include <wininet.h> #include <fstream> using namespace std;

JS DOM 编程艺术 随笔

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

《JavaScript+DOM编程艺术》的摘要(五)-----添加insertAfter

在JS原生里面,没有提供insertAfter这个方法,不过我们可以利用appendChild.insertBefore.parentNode这些方法创建一个insertAfter方法,代码如下: function insertAfter(newElement,targetElement){ var parent = targetElement.parentNode; if(parent.lastChild == targetElement){ parent.appendChild(newEle

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学习12-《JS DOM 编程艺术》笔记

学习了下<JS DOM 编程艺术>,做个学习总结:1.字符串中放单引号双引号:建议:字符串中放单引号,则用双引号包含字符串 1 var s1="It's my doy"; 字符串中放双引号,则用单引号包含字符串 1 var s2='He said "hi!" '; 其他使用\进行转义 2.==和====== :严格比较.不仅比较值,还比较类型== :不严格比较,转换类型一致比较 3.JS语言里对象的三种类型3.1内建对象:javascript提供的对象