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 Ajax方法调用 Asp.Net WebService 的详细实例代码
Apr 27 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
Jun 15 Javascript
jQuery中slideUp 和 slideDown 的点击事件
Feb 26 Javascript
js限制input标签中只能输入中文
Jun 26 Javascript
angularjs 源码解析之injector
Aug 22 Javascript
jQuery 插件封装的方法
Nov 16 Javascript
微信小程序 支付功能开发错误总结
Feb 21 Javascript
jQuery点击头像上传并预览图片
Feb 23 Javascript
JS对象深度克隆实例分析
Mar 16 Javascript
微信小程序new Date()方法失效问题解决方法
Jul 29 Javascript
layui+jquery支持IE8的表格分页方法
Sep 28 jQuery
uni-app实现获取验证码倒计时功能
Nov 01 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 出现乱码的解决方法
2008/08/08 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
php压缩文件夹最新版
2018/07/18 PHP
ExtJs grid行 右键菜单的两种方法
2010/06/19 Javascript
javascript提取URL的搜索字符串中的参数(自定义函数实现)
2013/01/22 Javascript
千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
2013/12/05 Javascript
javascript中获取class的简单实现
2016/07/12 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
2016/12/25 Javascript
JS实现类似百叶窗下拉菜单效果
2016/12/30 Javascript
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
2019/02/15 jQuery
新手简单了解vue
2019/05/29 Javascript
vue登录页实现使用cookie记住7天密码功能的方法
2021/02/18 Vue.js
python使用itchat实现手机控制电脑
2018/02/22 Python
pandas series序列转化为星期几的实例
2018/04/11 Python
Ubuntu下使用python读取doc和docx文档的内容方法
2018/05/08 Python
pandas数据集的端到端处理
2019/02/18 Python
Python坐标线性插值应用实现
2019/11/13 Python
python-numpy-指数分布实例详解
2019/12/07 Python
Python连接字符串过程详解
2020/01/06 Python
如何用python处理excel表格
2020/06/09 Python
Django+Uwsgi+Nginx如何实现生产环境部署
2020/07/31 Python
Python爬虫过程解析之多线程获取小米应用商店数据
2020/11/14 Python
python 制作网站小说下载器
2021/02/20 Python
Canvas与图片压缩的示例代码
2017/11/28 HTML / CSS
伦敦最有品味的百货:Liberty London
2016/11/12 全球购物
韩国保养品、日本药妆购物网:小三美日
2018/12/30 全球购物
Crocs欧洲官网:Crocs Europe
2020/01/14 全球购物
Zatchels官网:英国剑桥包品牌
2021/01/12 全球购物
怎么可以提高数据库查询数据的速度
2014/06/28 面试题
如何利用find命令查找文件
2015/02/07 面试题
公务员年总结的自我评价
2013/10/25 职场文书
口腔医学技术应届生求职信
2013/11/09 职场文书
校园之声广播稿
2014/01/31 职场文书
给面试官的感谢信
2014/02/01 职场文书
2014学雷锋活动总结
2014/03/09 职场文书
道路交通事故赔偿协议书
2014/10/24 职场文书