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

好,我们先写一个

<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. Erlang Concurrent 并发进阶

    写在前面的话 本文来源于官方教程 Erlang -- Concurrent Programming.虽然没有逻辑上的关系,但建议在掌握了Erlang入门系列教程的一些前置知识后继续阅读. 之前我是逐小 ...

  2. Java微信公众平台开发_07_JSSDK图片上传

    一.本节要点 1.获取jsapi_ticket //2.获取getJsapiTicket的接口地址,有效期为7200秒 private static final String GET_JSAPITIC ...

  3. jstree 获取选中节点的所有子子点

    //加载功能树 function initTree() { $.jstree.destroy(); $.ajax({ type: "Get", url: "/Depart ...

  4. 阿里云CentOS搭建系统

    1.在阿里云网站上购买申请服务器. 2.通过Xshell连接服务器,并用root账户登入. 3.配置java开发环境:(也可以使用阿里云一键部署,自动配置并部署服务器) 一.安装jdk 1.查看Lin ...

  5. Android Oreo 8.0 新特性实战 Autosizing TextView --自动缩放TextView

    Android Oreo 8.0 新特性实战 Autosizing TextView --自动缩放TextView 8.0出来很久了,这个新特性已经用了很久了,但是一直没有亲自去试试.这几天新的需求来 ...

  6. shell脚本 expect 实现自动登陆

    vi auto_ssh.exp #!/usr/bin/expect   set ipaddress "123.227.159.159" set passwd "你的密码& ...

  7. 批量抓取cisco设备配置脚本编写(expect/sed/awk/shell)

    应同事需求自行编写了第一个脚本,中间遇到一些坑. 需求,要求抓取设备"show ip interface brief"信息和"show interface des&quo ...

  8. 分享一个好用的微信npmjs包

    https://www.npmjs.com/package/jquery_wechat_sdk 安装 $ npm install jquery_wechat_sdk 使用 Browser Script ...

  9. google软件测试之道读后感(二)

    这几天又翻了几页这本书,觉得妙语连珠,关键语录摘抄如下,并补充自己的一些思考: "如果你想要求一个团队去尝试新的事物或者做某些改进,给他们提供一个联系人会更好一些,这个联系人来源于更大的社区 ...

  10. linux shell中单引号、双引号和没有引号的区别

    单引号: 可以说是所见即所得:即将单引号的内的内容原样输出,或者描述为单引号里面看到的是什么就会输出什么. 双引号: 把双引号内的内容输出出来:如果内容中有命令.变量等,会先把变量.命令解析出结果,然 ...