首先我们先要导入几张图片(我已导入完毕):

好,我们先写一个

<div ></div>,

定义一个

class="contair", 

在这<div>中再定义一个<div></div>,定义一个id="hhs"(随便定义的),然后在下面定义五个图片

 <img src="n1.jpg">
<img src="n2.jpg">``<img src="n3.jpg">
<img src="n4.jpg">``<img src="n5.jpg">;

我们再在样式表中写上一些需要用的,如下代码:

 <style type="text/css">
.contair *{
display: block; //变为块级元素
padding: 3px 0px;
}
.contair{
margin: 0px auto;
width: 300px;
}
.sf{
transition:all 0.5s; //动画
};

我们写一个  function $(oId){ return document.getElementById(oId);//这个就是个方法, 方法名字叫$ 参数为oId. 这个是元素oId.传入这个oId, 会帮我们拿到html代码元素里相应的id的对象 };

再写一个

window.onload=function(){//onload 事件会在页面或图像加载完成后立即发生。
repeatElement($("hhs"))//后面会提到
 现在我们再写后面主体部分,先定义一个
2. `function repeatElement(exel //定义一个参数){
3. var obj = nextSibling(exel,"img");//nextSibling兄弟元素
4. while(exel!=null){ //循环
5. addClass(obj,"sf"); //后面会提到,addClass为添加节点
6. obj.onmouseover = function(){ //光标移到图片上
7. this.style.padding = "10px 0px" //this表示上一层的obj部分
8. }
9. obj.onmouseout = function(){ //光标移除图片
10. this.style.padding = "10px 0px"
11. }
12. obj.nextSibling(obj,"img"); //循环下一次图片
13. }
14. }`;
15. 现在写添加节点addClass:
16. `function addClass(obj,cn){
17. var lName=obj.className;//className属性设置或返回元素的 class 属性
18. if(lName.length ==0){ //判断为0
19. obj.className = cn;
20. }else{
21. obj.className = (" "+cn);
22. }
23. }`;
24. 现在写兄弟节点nextSibling:
25. `function nextSibling(obj,sname){
26. var exe=lobj.nextSibling ;//先获取它
27. for(; exel!=null;exel = exel.nextSibling){
28. var cname = exel.nodeName.toLocaleLowerCase();//转换为小写
29. if(cname == sname){
30. return exel;
31. }
32. }
33. return null;
34. }`

我们可以对nextSibling和addClass进行封装,以便以后使用,封装有三种方式

第一种dom.:

 `var dom = new Object();
function $(oId){
return document.getElementById(oId);
} dom.addClass = function(obj, cn){
var lName = obj.className;
if(lName.length==0){
obj.className = cn;
}else{
obj.className =(” “+cn);
}
} dom.nextSibling = function(obj,sname){
var exel = obj.nextSibling;
for(;exel!=null;exel = exel.nextSibling){
var cName = exel.nodeName.toLocaleLowerCase();
if( exel.nodeType==Node.ELEMENT_NODE&&sname==cName){
return exel;
}
}
return null;
}`

第二种dom[" "]= :

 `var dom = new Object();
function $(oId){
return document.getElementById(oId);
}
dom[“addClass”] = function(obj, cn){
var lName = obj.className;
if(lName.length==0){
obj.className = cn;
}else{
obj.className =(” “+cn);
}
} dom[“nextSibling”] = function(obj,sname){
var exel = obj.nextSibling;
for(;exel!=null;exel = exel.nextSibling){
var cName = exel.nodeName.toLocaleLowerCase();
if( exel.nodeType==Node.ELEMENT_NODE&&sname==cName){
return exel;
}
}
return null;
}

第三种var dom = {...}:

 function $(oId){
return document.getElementById(oId);
}
var dom = {
addClass: function(obj, cn){
var lName = obj.className;
if(lName.length==0){
obj.className = cn;
}else{
obj.className =(” “+cn);
}
},
nextSibling: function(obj,sname){
var exel = obj.nextSibling;
for(;exel!=null;exel = exel.nextSibling){
var cName = exel.nodeName.toLocaleLowerCase();
if( exel.nodeType==Node.ELEMENT_NODE&&sname==cName){
return exel;
}
}
return null;
},
`

效果演示:

http://localhost:63342/demo/js/ttt1.html

用js把图片做的富有动态感,并对以后需要用着的属性进行封装的更多相关文章

  1. JS实现图片无缝滚动特效;附addEventListener()方法、offsetLeft和offsetWidth属性。

    一:html部分 <body> <input id="btn1" type="button" value="向左"> ...

  2. JS实现图片预加载无需等待

    网站开发时经常需要在某个页面需要实现对大量图片的浏览;用javascript来实现一个图片浏览器,让用户无需等待过长的时间就能看到其他图片 网站开发时经常需要在某个页面需要实现对大量图片的浏览,如果考 ...

  3. ASP.NET MVC中使用Dropzone.js实现图片的批量拖拽上传

    说在前面 最近在做一个MVC相册的网站(这里),需要批量上传照片功能,所以就在网上搜相关的插件,偶然机会发现Dropzone.js,试用了一下完全符合我的要求,而且样式挺满意的,于是就在我的项目中使用 ...

  4. nginx实现动态分离,解决css和js等图片加载问题

    改帖专门为使用nginx,通过nginx把请求转发到web服务器再返回客户端的时候,解决css和js和图片加载不出来的问题. 如果没安装nginx,请访问一下地址进行安装 http://www.cnb ...

  5. js本地图片预览代码兼容所有浏览器

    html代码 <div id="divPreview" style="width: 160px; height: 170px"><img id ...

  6. 图片滚动js 实现图片无缝滚动

    在改章节中,我们主要介绍图片滚动的内容,自我感觉有个不错的建议和大家分享下 非常平滑的JS图片滚动特效代码,无缝循环,速度可自定义,鼠标悬停时停止.它的特点是JS和图片地址分离,这样做你就经易的从数据 ...

  7. js实现图片上传预览及进度条

    原文js实现图片上传预览及进度条 最近在做图片上传的时候,由于产品设计的比较fashion,上网找了比较久还没有现成的,因此自己做了一个,实现的功能如下: 1:去除浏览器<input type= ...

  8. 原生JS实现图片放大镜插件

      前  言 我们大家经常逛各种电商类的网站,商品的细节就需要用到放大镜,这个大家一定不陌生,今天我们就做一个图片放大镜的插件,来看看图片是如何被放大的…… 先看一下我们要是实现的最终效果是怎么样的  ...

  9. 页面性能优化-原生JS实现图片懒加载

    在项目开发中,我们往往会遇到一个页面需要加载很多图片的情况.我们可以一次性加载全部的图片,但是考虑到用户有可能只浏览部分图片.所以我们需要对图片加载进行优化,只加载浏览器窗口内的图片,当用户滚动时,再 ...

随机推荐

  1. java非阻塞IO(NIO)流程

    单线程 多线程(Netty/Mina)

  2. ab使用命令

    ab使用-A auth-username:password    向服务器提供基本认证信息.用户名和密码之间":"分割,以base64编码形式发送.无论服务器是否需要(即是否发送了 ...

  3. 动态创建 script 实现跨域请求数据

    动态创建script标签 (由事件触发) 在我们需要请求数据的时候我们就可以动态的创建 script 标签 src设置为我们需要请求数据的地址 另外我们可以附加参数 ?后面附加参数 例如 :?参数=1 ...

  4. C#删除区域实现透明

    最近在搞一个图形图像的项目.不知道经理为什么选择了C#语言,但还是要做,呵呵. 在期间出现一个比较难解决的问题如下: 删除当前图层的指定区域用来显示下面图层在这个区域的图像,相当于PS蒙版层的效果. ...

  5. CLR之委托的揭秘(一)

    初识委托:          在之前的学习中我们已经可以把对象,值,数组当作参数传递给方法,但是有没有可能把方法也当作参数传递给方法呢?有了这个想法于是就有了委托.方法当作一种参数去传递,但是方法有的 ...

  6. mysql数据库第二弹

    mysql数据库针对表的操作 表记录的增删改查 1.增加一张表 插入记录之前必须得先有表结构! CREATE TABLE score( id int PRIMARY KEY auto_incremen ...

  7. OpenTSDB-Querying or Reading Data

    Querying or Reading Data OpenTSDB offers a number of means to extract data such as CLI tools, an HTT ...

  8. Python之matplotlib学习(一)

    小试牛刀 在上一节已经安装好matplotlib模块,下面使用几个例子熟悉一下. 对应的一些文档说明: http://matplotlib.org/1.3.1/api/pyplot_summary.h ...

  9. StackExchange.Redis学习笔记(三)

    这一章主要写一些StackExchange.Redis的配置及不太经常用到的函数 数据库连接 下面是我的连接字符串,里面指定了地址,密码,及默认的数据库 Redis启动后默认会分成0-15个数据库,不 ...

  10. 【YFMemoryLeakDetector】人人都能理解的 iOS 内存泄露检测工具类

    背景 即使到今天,iOS 应用的内存泄露检测,仍然是一个很重要的主题.我在一年前,项目中随手写过一个简单的工具类,当时的确解决了大问题.视图和控制器相关的内存泄露,几乎都不存在了.后来想着一直就那个工 ...