JS DOM实现鼠标滑动图片效果


Posted in Javascript onSeptember 17, 2020

经常,我们在浏览各种网页的时候,都会有各种动画效果展示,像下图所示的是很多网上商城常用的货品展示方式,同类的货品并排展现在窗口上,用户如果看中了哪一款商品想要查看详情的话,只要将鼠标放上该商品的区域,原本折叠起来的商品便会自动展开,详情便会展现在用户面前,而这一动画,就是利用了DOM+JS结合来实现的,今天的小练习就是要实现这个效果。

JS DOM实现鼠标滑动图片效果

首先,先将页面基本的框架用html实现,将四张图封装在了一个名为“container”的div块中

<!doctype html>
<meta charset="UTF-8">
<html>
 <head>
 <title>
 鼠标滑过页面自动变大
 </title>
 <link rel="stylesheet" href="styles/reset.css" />
 <link rel="stylesheet" href="styles/slidingdoors.css" />
 <script src="slidlingdoors.js"></script>
 </head>
 <body>
 <div id="container">
 <img src="./images/door1.png"/>
 <img src="./images/door2.png"/>
 <img src="./images/door3.png"/>
 <img src="./images/door4.png"/>
 </div>
 </body>
</html>

接着,我将大体的样式用了两个样式表修饰如下:

依次为

slidingdoors.css和reset.css:
#container {
 height: 477px;
 margin: 0 auto;
 border-right: 1px solid #ccc;
 border-bottom: 1px solid #ccc;
 overflow: hidden;
 position: relative;
}

#container img {
 position: absolute;
 display: block;
 left: 0;
 border-left: 1px solid #ccc;
}
/**
 * Eric Meyer's Reset CSS v2.0 (http://meyerweb.com/eric/tools/css/reset/)
 * http://cssreset.com
 */
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed, 
figure, figcaption, footer, header, hgroup, 
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
 margin: 0;
 padding: 0;
 border: 0;
 font-size: 100%;
 font: inherit;
 vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure, 
footer, header, hgroup, menu, nav, section {
 display: block;
}
body {
 line-height: 1;
}
ol, ul {
 list-style: none;
}
blockquote, q {
 quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
 content: '';
 content: none;
}
table {
 border-collapse: collapse;
 border-spacing: 0;
}

接下来,就要实现滑动效果了,js代码如下:

window.onload=function(){
 var box=document.getElementById("container");
 var imgs=box.getElementsByTagName("img");
 var imgwidth=imgs[0].offsetWidth;
 var exposewidth=160;
 var boxwidth=imgwidth+exposewidth*(imgs.length-1);
 box.style.width=boxwidth+'px';
 function setImgPos(){
 for(var i=1;i<imgs.length;i++)
 {
 imgs[i].style.left=imgwidth+exposewidth*(i-1)+'px';
 }
 }
 setImgPos();
 var translate=imgwidth-exposewidth;
 for(var i=0;i<imgs.length;i++)
 {
 (function(i){
 imgs[i].onmouseover=function(){
 setImgPos();
 for(var j=1;j<=i;j++)
 {
  imgs[j].style.left=parseInt(imgs[j].style.left,10)-translate+'px';
 }
 };
 })(i);
 }
};

弄好后的效果图如下:

JS DOM实现鼠标滑动图片效果

遇到的问题:

1.图片复位函数中i、j变量傻傻分不清;

2.做出来的效果一张图片复位后把其余未复位图片都挡住了,主要是复位函数出了小问题。

经验:js函数变量复杂,逻辑严谨,写代码时一定要谨慎小心

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
jquery的extend和fn.extend的使用说明
Jan 09 Javascript
JS数学函数Exp使用说明
Aug 09 Javascript
Jquery图形报表插件 jqplot简介及参数详解
Oct 10 Javascript
jquery中使用$(#form).submit()重写提交表单无效原因分析及解决
Mar 25 Javascript
javascript实现tab响应式切换特效
Jan 29 Javascript
jquery实现文本框textarea自适应高度
Mar 09 Javascript
JavaScript基础之this详解
Jun 04 Javascript
jQuery实现全选、反选和不选功能
Aug 16 jQuery
vue cli webpack中使用sass的方法
Feb 24 Javascript
Vue 组件传值几种常用方法【总结】
May 28 Javascript
利用JavaScript的Map提升性能的方法详解
Aug 14 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
Nov 08 Javascript
实践中学习AngularJS表单
Mar 21 #Javascript
javascript单页面手势滑屏切换原理详解
Mar 21 #Javascript
javascript实现dom元素可拖动
Mar 21 #Javascript
AngularJS 中的指令实践开发指南(一)
Mar 20 #Javascript
浅析AngularJS中的指令
Mar 20 #Javascript
简述Matlab中size()函数的用法
Mar 20 #Javascript
详解Matlab中 sort 函数用法
Mar 20 #Javascript
You might like
一个可以找出源代码中所有中文的工具
2006/10/25 PHP
php function用法如何递归及return和echo区别
2014/03/07 PHP
php中count获取多维数组长度的方法
2014/11/03 PHP
浅谈PHP中try{}catch{}的使用方法
2016/12/09 PHP
php封装的page分页类完整实例代码
2020/02/01 PHP
PHP常量及变量区别原理详解
2020/08/14 PHP
js变量作用域及可访问性的探讨
2006/11/23 Javascript
深入认识JavaScript中的函数
2007/01/22 Javascript
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
jQuery ajax在GBK编码下表单提交终极解决方案(非二次编码方法)
2010/10/20 Javascript
jquery实现pager控件示例
2014/04/09 Javascript
js动态创建标签示例代码
2014/06/09 Javascript
js事件绑定快捷键以ctrl+k为例
2014/09/30 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
2015/06/18 Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
2015/09/09 Javascript
设置点击文本框或图片弹出日历控件的实现代码
2016/05/12 Javascript
js实现无缝滚动图(可控制当前滚动的方向)
2017/02/22 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
2017/10/16 Javascript
详解Js中的模块化是如何实现的
2017/10/18 Javascript
vue 数组和对象不能直接赋值情况和解决方法(推荐)
2017/10/25 Javascript
基于wordpress的ajax写法详解
2018/01/02 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
2019/05/14 Javascript
简单介绍Python中的round()方法
2015/05/15 Python
在Python的Django框架中获取单个对象数据的简单方法
2015/07/17 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
2018/04/28 Python
Python中的集合介绍
2019/01/28 Python
Python3.5迭代器与生成器用法实例分析
2019/04/30 Python
Python内置异常类型全面汇总
2020/05/28 Python
关于多种方式完美解决Python pip命令下载第三方库的问题
2020/12/21 Python
资产评估专业学生的自我鉴定
2013/11/14 职场文书
爱国主义演讲稿
2014/05/07 职场文书
2014镇党委书记党建工作汇报材料
2014/11/02 职场文书
2015年世界艾滋病日活动总结
2015/03/24 职场文书
民间借贷借条范本
2015/05/25 职场文书
Python自动化测试PO模型封装过程详解
2021/06/22 Python
javascript之Object.assign()的痛点分析
2022/03/03 Javascript