用js把图片做的富有动态感,并对以后需要用着的属性进行封装
首先我们先要导入几张图片(我已导入完毕): ;
好,我们先写一个
<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把图片做的富有动态感,并对以后需要用着的属性进行封装的更多相关文章
- JS实现图片无缝滚动特效;附addEventListener()方法、offsetLeft和offsetWidth属性。
一:html部分 <body> <input id="btn1" type="button" value="向左"> ...
- JS实现图片预加载无需等待
网站开发时经常需要在某个页面需要实现对大量图片的浏览;用javascript来实现一个图片浏览器,让用户无需等待过长的时间就能看到其他图片 网站开发时经常需要在某个页面需要实现对大量图片的浏览,如果考 ...
- ASP.NET MVC中使用Dropzone.js实现图片的批量拖拽上传
说在前面 最近在做一个MVC相册的网站(这里),需要批量上传照片功能,所以就在网上搜相关的插件,偶然机会发现Dropzone.js,试用了一下完全符合我的要求,而且样式挺满意的,于是就在我的项目中使用 ...
- nginx实现动态分离,解决css和js等图片加载问题
改帖专门为使用nginx,通过nginx把请求转发到web服务器再返回客户端的时候,解决css和js和图片加载不出来的问题. 如果没安装nginx,请访问一下地址进行安装 http://www.cnb ...
- js本地图片预览代码兼容所有浏览器
html代码 <div id="divPreview" style="width: 160px; height: 170px"><img id ...
- 图片滚动js 实现图片无缝滚动
在改章节中,我们主要介绍图片滚动的内容,自我感觉有个不错的建议和大家分享下 非常平滑的JS图片滚动特效代码,无缝循环,速度可自定义,鼠标悬停时停止.它的特点是JS和图片地址分离,这样做你就经易的从数据 ...
- js实现图片上传预览及进度条
原文js实现图片上传预览及进度条 最近在做图片上传的时候,由于产品设计的比较fashion,上网找了比较久还没有现成的,因此自己做了一个,实现的功能如下: 1:去除浏览器<input type= ...
- 原生JS实现图片放大镜插件
前 言 我们大家经常逛各种电商类的网站,商品的细节就需要用到放大镜,这个大家一定不陌生,今天我们就做一个图片放大镜的插件,来看看图片是如何被放大的…… 先看一下我们要是实现的最终效果是怎么样的 ...
- 页面性能优化-原生JS实现图片懒加载
在项目开发中,我们往往会遇到一个页面需要加载很多图片的情况.我们可以一次性加载全部的图片,但是考虑到用户有可能只浏览部分图片.所以我们需要对图片加载进行优化,只加载浏览器窗口内的图片,当用户滚动时,再 ...
随机推荐
- 发放福利:原价135元/年的阿里云CDN流量包(500GB)免费送
不少朋友看过本站推荐的两篇文章:1. <阿里云全民云计算活动:云服务器ECS二折起>2. <阿里云双11优惠活动-爆款云服务器> 大部分人都说不错,很快下单购买了服务器,后续使 ...
- Linux下gcc编译生成动态链接库*.so文件并调用它
动态库*.so在linux下用c和c++编程时经常会碰到,最近在网站找了几篇文章介绍动态库的编译和链接,总算搞懂了这个之前一直不太了解得东东,这里做个笔记,也为其它正为动态库链接库而苦恼的兄弟们提供一 ...
- node.js安装——Windows7系统下的安装及其环境部署——特别详细
作为一个前端的菜鸟同学,之间也没学过什么框架,目前公司做项目,所用到的webpack+node.js+vue. 首先,关于node的环境部署方面,建议官网安装node.js,最好不要安装非稳定版的版本 ...
- TFboy养成记
转自:http://www.cnblogs.com/likethanlove/p/6547405.html 在tensorflow的使用中,经常会使用tf.reduce_mean,tf.reduce_ ...
- 作为函数的mixin
作为函数的mixin 在一个 mixin 内部定义的变量或 mixin,都调用者可见,因此,它们可以作为它的返回值.如,以下Less代码: .count(@x, @y) { @sum:(@x ...
- 2733:判断闰年-poj
2733:判断闰年 总时间限制: 1000ms 内存限制: 65536kB 描述 判断某年是否是闰年. 输入 输入只有一行,包含一个整数a(0 < a < 3000) 输出 一行,如果 ...
- Flex布局学习笔记
任何元素都可以使用Flex布局,包括行内元素 display: flex; display: inline-flex使用Flex布局之后,子元素的float, clear, vertical-alig ...
- memcache的使用、版本使用和相关配置
首先准备memcached和php_memcache.dll文件.下载网址:链接:http://pan.baidu.com/s/1c1WODji 密码:yzor 将下载好的memcached.exe放 ...
- 模板文件引入css样式文件
引用路径问题:相对路径和绝对路径 相对路径:相对路口文件index.php设置 绝对路径:从虚拟主机站点目录开始设置 css样式文件引入图片,路径的设置 相对地址:相对css文件本身设置 ①模板文件 ...
- springMVC+commons-fileupload上传文件大小限制异常
异常信息: 严重: Servlet.service() for servlet [suibian] in context with path [/SpringMvcDemo3] threw excep ...