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 相关文章推荐
通过MSXML2自动获取QQ个人头像及在线情况(给初学者)
Jan 22 Javascript
JavaScript 全角转半角部分
Oct 28 Javascript
createElement与createDocumentFragment的点点区别小结
Dec 19 Javascript
php和js对数据库图片进行等比缩放示例
Apr 28 Javascript
jQuery实现表格展开与折叠的方法
May 04 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
Apr 25 Javascript
清空元素html(&quot;&quot;) innerHTML=&quot;&quot; 与 empty()的区别和应用(推荐)
Aug 14 Javascript
使用mint-ui开发项目的一些心得(分享)
Sep 07 Javascript
基于jquery实现五星好评
Nov 18 jQuery
微信小程序之批量上传并压缩图片的实例代码
Jul 05 Javascript
如何在Angular应用中创建包含组件方法示例
Mar 23 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
Oct 27 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
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
2007/05/03 PHP
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
php Sql Server连接失败问题及解决办法
2009/08/07 PHP
PHP中读写文件实现代码
2011/10/20 PHP
Javascript 作用域使用说明
2009/08/13 Javascript
JS 动态获取节点代码innerHTML分析 [IE,FF]
2009/11/30 Javascript
jQuery 跨域访问解决原理案例详解
2016/07/09 Javascript
AngularJS入门教程之与服务器(Ajax)交互操作示例【附完整demo源码下载】
2016/11/02 Javascript
canvas雪花效果核心代码分享
2017/02/19 Javascript
关于vue-resource报错450的解决方案
2017/07/24 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
npm配置国内镜像资源+淘宝镜像的方法
2018/09/07 Javascript
JavaScript代码实现简单计算器
2020/12/27 Javascript
[14:19]2018年度COSER大赛-完美盛典
2018/12/16 DOTA
Python中使用ConfigParser解析ini配置文件实例
2014/08/30 Python
对python当中不在本路径的py文件的引用详解
2018/12/15 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
Python大数据之从网页上爬取数据的方法详解
2019/11/16 Python
Django REST framwork的权限验证实例
2020/04/02 Python
python matplotlib.pyplot.plot()参数用法
2020/04/14 Python
浅谈Python 函数式编程
2020/06/20 Python
详解python logging日志传输
2020/07/01 Python
使用Keras建立模型并训练等一系列操作方式
2020/07/02 Python
Python实现冒泡排序算法的完整实例
2020/11/04 Python
有abstract方法的类一定要用abstract修饰吗
2016/03/14 面试题
2014两会学习心得:榜样精神伴我行
2014/03/17 职场文书
幼儿教师师德承诺书
2014/05/23 职场文书
化验室安全管理制度
2015/08/06 职场文书
2016年度师德标兵先进事迹材料
2016/02/26 职场文书
学习计划是什么
2019/04/30 职场文书
演讲开头怎么书写?
2019/08/06 职场文书
经典励志格言:每日一句,让你每天充满能量
2019/08/16 职场文书
如何在Python中创建二叉树
2021/03/30 Python
python中sys模块的介绍与实例
2021/04/17 Python
MySQL Shell的介绍以及安装
2021/04/24 MySQL
如何解决php-fpm启动不了问题
2021/11/17 PHP