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 1.3 和 Validation 验证插件1.5.1
Jul 09 Javascript
单击按钮显示隐藏子菜单经典案例
Jan 04 Javascript
JS验证邮箱格式是否正确的代码
Dec 05 Javascript
js重写alert控件(适合学习js的新手朋友)
Aug 24 Javascript
AngularJS学习笔记之ng-options指令
Jun 16 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
Sep 08 Javascript
基于JS实现移动端左滑删除功能
Jul 28 Javascript
详细分析jsonp的原理和实现方式
Nov 20 Javascript
js断点调试心得分享(必看篇)
Dec 08 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
Jul 11 Javascript
微信小程序之裁剪图片成圆形的实现代码
Oct 11 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
Apr 14 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
GD输出汉字的函数的分析
2006/10/09 PHP
初学CAKEPHP 基础教程
2009/11/02 PHP
php expects parameter 1 to be resource, array given 错误
2011/03/23 PHP
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
2014/10/27 PHP
php获得文件大小和文件创建时间的方法
2015/03/13 PHP
PHP编写RESTful接口
2016/02/23 PHP
PHP弱类型的安全问题详细总结
2016/09/25 PHP
PHP实现websocket通信的方法示例
2018/08/28 PHP
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
Dom 学习总结以及实例的使用介绍
2013/04/24 Javascript
jQuery on()方法示例及jquery on()方法的优点
2015/08/27 Javascript
JavaScript 栈的详解及实例代码
2017/01/22 Javascript
分分钟玩转Vue.js组件(二)
2017/03/01 Javascript
jQuery手风琴的简单制作
2017/05/12 jQuery
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
2017/06/12 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
2019/01/08 jQuery
vue实现百度下拉列表交互操作示例
2019/03/12 Javascript
vue使用@scroll监听滚动事件时,@scroll无效问题的解决方法详解
2019/10/15 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
调用其他python脚本文件里面的类和方法过程解析
2019/11/15 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
2020/02/28 Python
Python应用实现处理excel数据过程解析
2020/06/19 Python
css实例教程 一款纯css3实现的超炫动画背画特效
2014/11/05 HTML / CSS
音乐表演专业毕业生求职信
2013/10/14 职场文书
九月份红领巾广播稿
2014/01/22 职场文书
《邮票齿孔的故事》教学反思
2014/02/22 职场文书
安全保卫工作竞聘材料
2014/08/25 职场文书
法院反腐倡廉心得体会
2014/09/09 职场文书
2014年药店店长工作总结
2014/11/17 职场文书
电子商务专业求职信范文
2015/03/19 职场文书
2015年信访维稳工作总结
2015/04/07 职场文书
食品药品安全责任书
2015/05/11 职场文书
python自动统计zabbix系统监控覆盖率的示例代码
2021/04/03 Python
numpy array找出符合条件的数并赋值的示例代码
2022/06/01 Python
JS前端宏任务微任务及Event Loop使用详解
2022/07/23 Javascript