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 相关文章推荐
一个对于js this关键字的问题
Jan 09 Javascript
疯掉了,尽然有js写的操作系统
Apr 23 Javascript
SuperSlide2实现图片滚动特效
Jun 20 Javascript
网页下载文件期间如何防止用户对网页进行其他操作
Jun 27 Javascript
node.js中的fs.closeSync方法使用说明
Dec 17 Javascript
Angularjs 滚动加载更多数据
Mar 17 Javascript
Bootstrap前端开发案例一
Jun 17 Javascript
三种方式实现瀑布流布局
Feb 10 Javascript
jquery的 filter()方法使用教程
Mar 22 jQuery
浅谈在vue中使用mint-ui swipe遇到的问题
Sep 27 Javascript
Vue通过provide inject实现组件通信
Sep 03 Javascript
基于vue中的scoped坑点解说
Sep 04 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
关于PHP中操作MySQL数据库的一些要注意的问题
2006/10/09 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
2016/04/11 PHP
PHP会员找回密码功能的简单实现
2016/09/05 PHP
Ubuntu 16.04下安装PHP 7过程详解
2017/03/28 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
PHP下用Swoole实现Actor并发模型的方法
2019/06/12 PHP
关于laravel 日志写入失败问题汇总
2019/10/17 PHP
动态表格Table类的实现
2009/08/26 Javascript
IE 条件注释详解总结(附实例代码)
2009/08/29 Javascript
jquery 选择器部分整理
2009/10/28 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
2013/02/02 Javascript
用JS实现3D球状标签云示例代码
2013/12/01 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
2014/09/03 Javascript
详解JavaScript对象和数组
2015/12/03 Javascript
使用JS读取XML文件的方法
2016/11/25 Javascript
vue2滚动条加载更多数据实现代码
2017/01/10 Javascript
BootStrap表单宽度设置方法
2017/03/10 Javascript
React Native模块之Permissions权限申请的实例相机
2017/09/28 Javascript
Vue的事件响应式进度条组件实例详解
2018/02/04 Javascript
关于JavaScript中异步/等待的用法与理解
2020/11/18 Javascript
[47:43]Alliance vs KG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python数据结构与算法之使用队列解决小猫钓鱼问题
2017/12/14 Python
Python学习小技巧总结
2018/06/10 Python
python实现五子棋小程序
2019/06/18 Python
Django对models里的objects的使用详解
2019/08/17 Python
使用python 的matplotlib 画轨道实例
2020/01/19 Python
windows、linux下打包Python3程序详细方法
2020/03/17 Python
Python-opencv实现红绿两色识别操作
2020/06/04 Python
党员教师工作决心书
2014/03/13 职场文书
护士个人自我鉴定
2014/03/24 职场文书
农村党支部书记党群众路线四风问题整改措施
2014/09/26 职场文书
2014年文明创建工作总结
2014/11/25 职场文书
2016年小学生教师节广播稿
2015/12/18 职场文书
SQL Server表分区删除详情
2021/10/16 SQL Server
python处理json数据文件
2022/04/11 Python