javascript dom代码应用 简单的相册[firefox only]_图象特效

但我觉得这还不行,毕竟什么都是人家封装好的,得自己深入学习下原生的javascript才踏实。今天看到一篇不错的博文,介绍了一个基于js dom编程的相册实例,虽然这个例子很小,但个人认为还是很有学习价值的,先给出html和效果图,这样有助于后面js的理解。 
    

复制代码 代码如下:

<body>
<div id="content">
<h1>Snapshots</h1>
<ul id="imagegallery">
<li>
<a href="photo/fireworks.jpg" title="A fireworks display">
<img src="photo/thumbnail_fireworks.jpg" alt="Fireworks" />
</a>
</li>
<li>
<a href="photo/coffee.jpg" title="A cup of black coffee">
<img src="photo/thumbnail_coffee.jpg" alt="Coffee" />
</a>
</li>
<li>
<a href="photo/rose.jpg" title="A red, red rose">
<img src="photo/thumbnail_rose.jpg" alt="Rose" />
</a>
</li>
<li>
<a href="photo/bigben.jpg" title="The famous clock">
<img src="photo/thumbnail_bigben.jpg" alt="Big Ben" />
</a>
</li>
</ul>
</div>
</body>

结构还是挺简单的,这里a元素的href属性值为要显示大图的路径,img为对应的小图。效果就是点击下面的小图,上面显示对应的大图。
下面给出js实现:

复制代码 代码如下:

<script type="text/javascript">
/*3相册代码的关键函数,传入参数为a元素*/
function showPic(whichpic) {
if(!document.getElementById("placeholder")) return true;
/*取得a元素的href*/
var source = whichpic.getAttribute("href");
var placeholder = document.getElementById("placeholder");
/*显示图片:让img元素的src变为a元素的href*/
placeholder.setAttribute("src",source);
if(!document.getElementById("description")) return false;
/*取得a元素的title*/
if(whichpic.getAttribute("title")) {
var text = whichpic.getAttribute("title");
} else {
var text = "";
}
/*将a元素的title赋给描述文字*/
var description = document.getElementById("description");
if(description.firstChild.nodeType == 3) {
description.firstChild.nodeValue = text;
}
return false;
}
/*2给所有的imagegallery的a添加上click事件响应函数*/
function prepareGallery() {
if(!document.getElementsByTagName) return false;
if(!document.getElementById) return false;
if(!document.getElementById("imagegallery")) return false;
var gallery = document.getElementById("imagegallery");
var links = gallery.getElementsByTagName("a");
for(var i=0; i < links.length; i++) {
links[i].onclick = function() {
return showPic(this);
}
links[i].onkeypress = links[i].onclick;
}
}
/*添加load事件响应函数的函数*/
function addLoadEvent(func) {
var oldonload = window.onload;
if(typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
oldonload();
func();
}
}
}
/* 1.代码开始*/
function preparePlaceholder() {
if(!document.createElement) return false;
if(!document.createTextNode) return false;
/*创造一个img元素,设置它的属性*/
var placeholder = document.createElement("img");
placeholder.setAttribute("id", "placeholder");
placeholder.setAttribute("src", "photo/placeholder.gif");
placeholder.setAttribute("alt", "my image gallery");
/*创建一个段落,作为描述*/
var description = document.createElement("p");
description.setAttribute("id","description");
var desctext = document.createTextNode("choose an image");
description.appendChild(desctext);
/*imagegallery是文档里的ul*/
var gallery = document.getElementById("imagegallery");
/*将大图和描述文字插入文档*/
gallery.parentNode.insertBefore(placeholder, gallery);
gallery.parentNode.insertBefore(description, gallery);
}
/*为事件初始化*/
addLoadEvent(preparePlaceholder);
addLoadEvent(prepareGallery);
</script>

我们先看preparePlaceholder函数,在这个函数里创建了一个img元素placeholder,并设置了它对应的属性(id, src, alt),又创建了一个p元素description,p元素中用appendChild方法插入了一个文本节点用于给出照片的描述,初始为“choose an image”, 然后通过document.getElementById找到ul,并把生成的img和p插到图片列表之前。说明下insertBefore的用法,查了下Mozilla developer center:

      var insertedElement = parentElement.insertBefore(newElement, referenceElement);

      insertedElement 其实就是newElement,作为一个返回结果

      parentElement 是要插入的父级元素即插入哪个元素中

      newElement 当然就是那个要插入的新元素啦

      referenceElement 指要在哪个元素之前插入

    我们接着看prepareGallery函数,它的作用是为每个a元素赋予一个单击事件,其中return showPic(this)默认返回的是false,是为了阻止点击a元素后的默认行为(直接到新页面显示图片)

    下面是最核心的showPic函数,通过取得包裹对应小图片的a元素中的href 和 title属性值(href的值为小图片对应的大图片的路径),来为preparePlaceholder函数中生成的img设置src属性,和p中的描述文本,形成最终的效果。这里面有个nodeType,具体也可在Mozilla developer center中查到。

    最后还有一个很有意思的函数就是addLoadEvent,很有意思...有递归的感觉,把事件函数像队列一样加了进去,然后顺次执行。

    呵呵,这个相册就分析到这,这是我第一次发表博文,有什么不对或需要提高的地方,希望博友们多多指点,我会虚心接受的,谢谢。
代码打包下载

时间: 2024-10-21 22:12:08

javascript dom代码应用 简单的相册[firefox only]_图象特效的相关文章

JavaScript 图片切割效果(放大镜)第1/4页_图象特效

上一个版本由于是初次接触这类效果,而且是三个大功能一起开发,能力所限,所以仅仅是实现了效果就完成了. 近来我把其中的 拖放效果 和 缩放效果 单独出来研究,经过整理和完善,再套进切割效果,个人感觉效果已经不错了. 要说明的是这个只是一个效果,并不是真正的切割图片,要获取真正的切割图片请参考 图片切割系统 . 效果预览请看这里 完整实例下载 代码太多贴不出来,只好给个效果图: 程序说明 这个效果主要分三个部分:层的拖放.层的缩放.图片切割(包括预览). 其中 层的拖放 和 层的缩放 我已经在其他两

javascript椭圆旋转相册实现代码_图象特效

功能说明: 1.支持自动和手动两种模式:自动模式下自动旋转展示,手动模式下通过鼠标选择当前图片,或通过提供的接口选择上一张/下一张图片. 2.可自行添加旋转的缓动模式,默认模式为:匀速,先快后慢,先慢后快. 3.可自定义旋转轨迹的宽和高. 4.支持IE6 7 8 9 10 firefox chrome等浏览器. 效果预览: 实现原理: 根据对图片在椭圆轨迹上的运动,动态改变缩放大小,实现立体的视觉效果. 代码分析: 复制代码 代码如下: init:function(id,options){ va

一个简单的javascript图片放大效果代码_图象特效

一个简单的图片放大效果: 参数说明: 1.berviary:String,需要被放大的图片id 2.expand:object,放大区域,如果不设置此项或者此项的id未设置,则默认为光标跟随模式,会自动创建用于显示放大区域的div. 3.clip:object,裁剪区域的大小,即鼠标移动到需要放大的图片上时,突出显示需要被放的大区域 4.opacity:float,放大时图片被遮罩的区域的透明度 效果1: 调用的js代码: 复制代码 代码如下: $E({berviary:"currentPic&

javaScript 简单验证代码(用户名,密码,邮箱)_表单特效

复制代码 代码如下: <script language="javascript"> function IsDigit(cCheck) { return (('0'<=cCheck) && (cCheck<='9')); } function IsAlpha(cCheck) { return ((('a'<=cCheck) && (cCheck<='z')) || (('A'<=cCheck) &&

用dom+xhtml+css制作的一个相册效果代码打包下载_图象特效

突然看到那个apple的底下的那个很漂亮,所以呢,我就改进了一下 做了一个图片版本的,好像很多人都做了个 http://home.goofar.com/bqqdqq/photo/a.html 上面这个是预览地址 如果浏览速度慢的话,下面是我做了一个包出来 兼容FF,IE 在线演示http://img.jb51.net/online/photo/a.html本地下载http://img.jb51.net/online/photo/photo.rar

JavaScript DOM 学习第九章 选取范围的介绍_基础知识

虽然我们会讲解用程序创建范围对象,但是我们把精力主要集中在如何将用户的选取范围转换成为W3C 范围或者微软的文档范围对象.   什么是范围 范围是指HTML文档中的任意一部分内容.一个范围的开始和结束点都可以是随意的,甚至是相同的(一个空范围).最常见的范围就是用户选取的文本.当用户在页面上选取了一部分,你就可以他的选取部分转换为范围对象.然而,你也可以让程序自动选择范围. 让我们以下面的代码为例.假设用户选择了下面的文字: <h4 id="entry1196"><a

JavaScript DOM 学习第五章 表单简介_基础知识

因为每一个表单的检测项都不同,所以我也不能给你一个万能的代码.你需要用我在这一章介绍的这些元素构建自己的检测函数.我在后面一张还有一个例子,你也可以参考. 在这一章我会首先讨论一下用JavaScript来检测表单的局限性,然后会解释一下提交时间处理程序,然后是表单本身的一些方法和属性.最后就是如何访问表单元素. 这里还有一篇Jeff Howden的介绍表单的使用错误和解决办法.Forms & JavaScript Living Together in Harmony局限性 首先,你需要了解当用户

javascript 动态调整图片尺寸实现代码_图象特效

我前段时间写的一篇文章就遇到过这种事情,后来用CSS的overflow和max-width属性暂时解决了页面变形的问题.这种方法好处是简单,但坏处是会破坏某些细节的效果. 如overflow:hidden,意思是当内部元素宽度大于父框架时隐藏超出宽度的部分.这样做可能会是一些内容突然截断,被隐藏了,很对不起观众. 通过max-width属性限制文章插图最大宽度的话,需要考虑各浏览器的兼容性.IE6是不支持这个属性的,在我印象中,一些浏览器虽然支持这个属性,但图片不是等比缩放的(好像是Safari

最简单的js图片切换效果实现代码_图象特效

无意中在网上发现的,代码非常的简单,一看就明白! 复制代码 代码如下: <script language =javascript > var curIndex=0; //时间间隔 单位毫秒 var timeInterval=5000; var arr=new Array(); arr[0]="1.jpg"; arr[1]="2.jpg"; arr[2]="3.jpg"; arr[3]="4.jpg"; arr[4]