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取得url地址参数实例
Feb 22 Javascript
使用JavaScript 实现各种跨域的方法
May 08 Javascript
div拖拽插件——JQ.MoveBox.js(自制JQ插件)
May 17 Javascript
使用非html5实现js板连连看游戏示例代码
Sep 22 Javascript
用json方式实现在 js 中建立一个map
May 02 Javascript
js在数组中删除重复的元素自保留一个(两种实现思路)
Aug 22 Javascript
jQuery中:only-child选择器用法实例
Jan 03 Javascript
JS添加或修改控件的样式(Class)实现方法
Oct 15 Javascript
bootstrap suggest下拉框使用详解
Apr 10 Javascript
详解在vue-cli项目中安装node-sass
Jun 21 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
Jan 16 Javascript
基于VUE实现判断设备是PC还是移动端
Jul 03 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
2006/12/14 PHP
Smarty结合Ajax实现无刷新留言本实例
2007/01/02 PHP
php调用shell的方法
2014/11/05 PHP
PHP使用http_build_query()构造URL字符串的方法
2016/04/02 PHP
PHP微信公众号自动发送红包API
2016/06/01 PHP
php 判断过去离现在几年的函数(实例代码)
2016/11/15 PHP
JavaScript中获取元素索引的函数
2010/09/10 Javascript
jQuery拖动图片删除示例
2013/05/10 Javascript
javascript的渐进增强与平稳退化浅谈
2013/11/12 Javascript
jquery实现弹出层效果实例
2015/05/19 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
Bootstrap下拉菜单效果实例代码分享
2016/06/30 Javascript
JQuery之proxy实现绑定代理方法
2016/08/01 Javascript
有趣的bootstrap走动进度条
2016/12/01 Javascript
Vue的路由动态重定向和导航守卫实例
2018/03/17 Javascript
基于Koa2写个脚手架模拟接口服务的方法
2018/11/27 Javascript
微信小程序上线发布流程图文详解
2019/05/06 Javascript
使用vue实现HTML页面生成图片的方法
2020/03/12 Javascript
vue prop传值类型检验方式
2020/07/30 Javascript
[04:30]显微镜下的DOTA2第五期——拉比克
2013/09/26 DOTA
在Python dataframe中出生日期转化为年龄的实现方法
2018/10/20 Python
python爬虫 urllib模块url编码处理详解
2019/08/20 Python
使用pandas 将DataFrame转化成dict
2019/12/10 Python
收藏!10个免费高清视频素材网站!【设计、视频剪辑必备】
2021/03/18 杂记
html5+css如何实现中间大两头小的轮播效果
2018/12/06 HTML / CSS
战友聚会邀请函
2014/01/18 职场文书
小学英语教学反思案例
2014/02/04 职场文书
母婴店促销方案
2014/03/05 职场文书
《火烧云》教学反思
2014/04/12 职场文书
小露珠教学反思
2014/04/30 职场文书
2014年仓库工作总结
2014/11/20 职场文书
优秀党员主要事迹范文
2015/11/05 职场文书
小学班主任研修日志
2015/11/13 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书
golang 比较浮点数的大小方式
2021/05/02 Golang
Ruby处理CSV数据方法详解
2022/04/18 Ruby