JavaScript网站设计实践(三)设计有特色的主页,给主页链接添加JavaScript动画脚本

原文:JavaScript网站设计实践(三)设计有特色的主页,给主页链接添加JavaScript动画脚本

一、主页一般都会比较有特色,现在在网站设计(二)实现的基础上,来给主页添加一点动画效果。

1、这里实现的动画效果是:当鼠标悬停在其中某个超链接时,会显示出属于该页面的背景缩略图,让用户知道这个链接的页面大概内容是什么。

效果图:

2、实现这个效果的思路

(1)把主页的几个链接的背景图片缩放到150px*150px,拼成一张750*150的图片,并保存为slideshow.png,存放到images文件夹里。

拼成来的图片是这样子的:

(2)写一个JavaScript脚本,用来生成动画效果。

脚本命名为home.js,存放在js文件夹下,并在webDesign.html下调用。

这个动画脚本的功能就是创建显示这个长图的标签,并将这个长图,根据你鼠标所在的连接,修改长图的left和top的属性值,并且实现移动,最后显示出来。

3、具体实现代码

(1)home.js

/********************主页动画脚本实现***********************/
function moveElement(elementID,final_x,final_y,interval){         //参数说明:移动元素的ID,移动的x坐标值,y坐标值,时间
                //向后兼容,判断旧浏览器
                if(!document.getElementById) return false;

                if(!document.getElementById(elementID)) return false;
                //获取元素
                var elem = document.getElementById(elementID);

                //判断图片是否已经有movement属性
                if(elem.movement){
                    clearTimeout(elem.movement);
                }

                //优化:判断left、top属性是否存在并初始化
                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);
                //判断元素所在边界
                if(xpos == final_x && ypos == final_y) {
                    return true;
                }

                //改进动画效果
                if(xpos >final_x){
                    var dist = Math.ceil(( xpos- final_x)/10);
                    xpos = xpos -dist;
                }
                if(xpos <final_x){
                    var dist = Math.ceil((final_x - xpos)/10);
                    xpos = xpos +dist;
                }
                if(ypos <final_y){
                    var dist = Math.ceil((final_y - ypos)/10);
                    ypos = ypos + dist;
                }
                if(ypos >final_y){
                    var dist = Math.ceil((ypos - final_y)/10);
                    ypos = ypos -dist;
                }
                elem.style.left = xpos+"px";
                elem.style.top = ypos+"px";

                //执行moveElement()函数
                var repeat = "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")";
                elem.movement = setTimeout(repeat,interval);
}

/****************V2在页面生成动画效果的代码**********************/
function prepareSlideshow(){
    //判断浏览器是否支持

    if(!document.getElementById) return false;
    if(!document.getElementsByTagName) return false;

    //判断元素是否存在
    if(!document.getElementById("intro")) return false;

    //动态生成html代码
    var intro = document.getElementById("intro");
    var slideshow = document.createElement("div");               //预留退路,如果用户禁掉js,则不出现不该出现的div
    slideshow.setAttribute("id","slideshow");

    var preview = document.createElement("img");
    preview.setAttribute("src","./images/slideshow.png");
    preview.style.position = "relative";                        //外部设置的postion获取不到,所以在这里设置
    preview.setAttribute("id","preview");
    slideshow.appendChild(preview);
    insertAfter(slideshow,intro);

    //获取元素
    var links = document.getElementsByTagName("a");

    for(var i= 0; i<links.length; i++){
        links[i].onmouseover = function(){
            var destination = this.getAttribute("href");
            if(destination.indexOf("webDesign.html") != -1){
                moveElement("preview",0,0,5);
            }
            if(destination.indexOf("about.html") != -1){
                moveElement("preview",-150,0,5);
            }
            if(destination.indexOf("photos.html") != -1){
                moveElement("preview",-300,0,5);
            }
            if(destination.indexOf("live.html") != -1){
                moveElement("preview",-450,0,5);
            }
            if(destination.indexOf("contact.html") != -1){
                moveElement("preview",-600,0,5);
            }
        }
    }
}

addLoadEvent(prepareSlideshow);

 

(2)webDesign.css

往这个文件添加样式

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

(3)在主页的webDesign.html把home.js文件加载进来

<script src="js/home.js"></script>

 

最后,ok啦,现在无论你的鼠标悬停在导航条的任意链接的上方,动画效果就会被触发,跟我们在最前面看到的效果一直,主页的动画脚本完成。

二、学与思

1、不知道如何用FW制作透明图片,于是把本来有frame窗框的图片给忽略了,在这里没有显示出来,就直接显示了图片。

2、关于外部css样式,本来有给动画图片设置了position:relative;  这个属性,但是对这个动画图片没有效果,甚为奇怪,最后还是在home.js文件中,给动画图片添加这个属性,本来应该是会有效果,有点不明白。

3、学习到了大图的相对定位,显示出小图来。通过移动相对定位的left和top属性,再把不要的hidden掉,再给一个动画,让这个图片移动起来即可。

 

时间: 2024-08-30 19:48:14

JavaScript网站设计实践(三)设计有特色的主页,给主页链接添加JavaScript动画脚本的相关文章

JavaScript网站设计实践(四)编写about.html页面,利用JavaScript和DOM,选择性的显示和隐藏DIV元素

原文:JavaScript网站设计实践(四)编写about.html页面,利用JavaScript和DOM,选择性的显示和隐藏DIV元素 一.现在我们在网站设计(三)的基础上,来编写about.html页面. 这个页面要用到的知识点是利用JavaScript和DOM实现选择性地显示和隐藏某些DIV about.html页面在前面我们为了看导航栏菜单项高亮显示时,已经写了部分内容,只是那时写的代码没有实现div显示和隐藏,现在就在之前编写的基础上,为页面添加显示和隐藏div的效果. 没有写Java

《JavaScript设计与开发新思维》——2.3 为HTML添加JavaScript

2.3 为HTML添加JavaScript 本章阐述一些现实世界中的JavaScript,这些代码使用的概念将在第2部分中更加正式地学习.但是,这里必须介绍一些基础知识,包括如何将JavaScript代码添加到HTML页面,我怀疑你已经知道怎么做了. 为了在一个HTML页面添加JavaScript,可以使用script元素: <script></script>在较早版本的HTML中,这个标记的type属性是必需的,应该取值为text/javascript,在HTML5中不再需要这么

网站优化推广三大件:标题、原创、链接

一大件.标题,作为网站的灵魂,是不能随意改动的.就好比人的灵魂.信仰一样,是不能朝令夕改的,如果你总是摇摆不定,像墙头草一样左右摆,结果谁都会厌恶你.网站也是一样,如果标题经常改动的话,搜索引擎教程就会不信任你站,甚至放入沙盘,被K.拔毛都有可能的.例如一个企业网站,有段时间网站流量基本稳定,每天大约在70个独立IP.其中80%的流量来自于搜索引擎.主要关键词有4个,基本都在百度第一页.然而,自从更换了栏目标题之后,今天早上发现首页已经不在第一页了,主要关键词,已经在百度的前5页找不到了.因此,

JavaScript网站设计实践(五)编写photos.html页面,实现点击缩略图显示大图的效果

原文:JavaScript网站设计实践(五)编写photos.html页面,实现点击缩略图显示大图的效果 一.photos.html页面,点击每一张缩略图,就在占位符的位置那里,显示对应的大图. 看到的页面效果是这样的:   1.实现思路 这个功能在之前的JavaScript美术馆那里已经实现了. 首先在页面中使用ul列表显示出所有的缩略图,然后使用JavaScript,for循环检查出当前点击的是哪一张图片,最后把这张图片给显示出来. 用到三个函数:显示图片函数.创建占位符预装图片.点击显示图

JavaScript网站设计实践(一)网站结构以及页面效果设计

原文:JavaScript网站设计实践(一)网站结构以及页面效果设计 这是JavaScript DOM编程艺术里的构建JavaScript网站设计的例子,这本书给我学习JavaScript带来许多启发,在这个乐队宣传网站中,把前面学到的知识点整合在这个项目了.在这里记录下实现这个乐队的宣传网站的具体过程,加深理解.好,从现在开始来实现这个JavaScript网站实战. 一.网页的结构 由三个部分组成:头部.导航.内容 效果图是这样的(勉强看,有点不美观.哈哈): 二.网站的的结构 这是我的项目目

JavaScript网站设计实践(七)编写最后一个页面 改进表单

原文:JavaScript网站设计实践(七)编写最后一个页面 改进表单 一.最后一个页面 contact.html.改进表单 在该页面实现的功能: 几乎所有的网站都会有表单填写,对于用户输入和填写的数据,首先我们一般现在前台验证,然后再去后台验证. 在前台最简单的验证:检查必填字段是否填写.填写格式是否符合要求等. 每个表单里面,当获取到输入焦点时,令提示文本消失 现在开始动手来写. 1.实现思路 (1)在这个表单里会验证的是必填字段和邮箱格式是否正确.首先,把判断必填字段和邮箱格式分别写在两个

JavaScript网站设计实践(二)实现导航栏当前所选页面的菜单项高亮显示

原文:JavaScript网站设计实践(二)实现导航栏当前所选页面的菜单项高亮显示 一.(一)中的代码还可以修改的地方. 在(一)中,如果是运行在服务器下,如apache等,可以把head和navigation的div抽取出来,放置在另一个html文件里,然后在页面中,include进来.这样,当要对导航栏进行修改时,只需要修改一个文件,而不用修改所有相关的页面文件.不过,我这里没有这样做,没有抽取出来. 二.实现当前页面的标识+不同页面的head头部背景图片的改变 现在在(一)实现的基础之上,

JavaScript网站设计实践(六)编写live.html页面 改进表格显示

原文:JavaScript网站设计实践(六)编写live.html页面 改进表格显示 一.编写live.html页面,1.JavaScript实现表格的隔行换色,并且当鼠标移过时当前行高亮显示:2.是输出表格中的abbr标签的内容 实现后的效果图是这样的: 1.实现思路 在输出表格的时候,给出一个判断,如果偶数或是奇数行我们想换色,则添加一个class为odd的值,在这个class里就设置了表格不同颜色tr行. 这里用到了一个判断函数:(下面是两个不同的方法,任选其一) 法一://隔行换色 添加

精选31个网站界面设计实践教程

中介交易 SEO诊断 淘宝客 云主机 技术大厅 设计一个网站从来都不是一件容易的事.如果你去询问一位在该行业有丰富经验的网页设计师,他会告诉你以前根本没有太多关于Web设计/开发的资源.文章和各种沟通交流平台,更不用说高质量免费教程了. 本文转自:http://blog.bingo929.com/31-practical-web-interface-design-tutorials.html 如果您打算建立自己的个人网站或者重新设计您的博客的主题,现在看来已经不是很难了.这要感谢那些慷慨的设计师