基于JavaScript实现滑动门效果


Posted in Javascript onMarch 16, 2017

本文实例为大家分享了滑动门效果的具体代码,供大家参考,具体内容如下

滑动门效果:

基于JavaScript实现滑动门效果

原理:

一共四道门,初始情况下,第一道门打开,其他三道门关闭,如第一个图所示。
假设图片的宽度是120px,其他三道门露出的宽度是80px。
初始状态下,
第二道门左边的距离是120px,
第三道门左边的距离是200px,
第四道门左边的距离是280px。
当第二道门打开时,
第二道门左边的距离是80px,为(120-40)px
第三道和第四道门左边的距离不变。
当第三道门打开时,
第二道门左边的距离是80px,
第三道门左边的距离是160px。(200-40)px
第四道门不变

基于JavaScript实现滑动门效果

因此每道门打开,是图片的宽度减去露出的宽度,就是需要向左移动的距离。第三道门打开,第二道门需要先做移动,然后第三道门移动。每道门移动的距离都是图片的宽度减去露出来的宽度。

程序:

<script type="text/javascript">
 window.onload = function() {
  var container = document.getElementById("container");
  var imgs = container.getElementsByTagName("img");//获取图像
  var imgWidth = imgs[0].offsetWidth;//图片的宽度
  var exposeWidth = 200;//露出的宽度
  var containerWidth = imgWidth + exposeWidth * (imgs.length - 1); //外部盒子的总宽度
  container.style.width = containerWidth + "px";

  function Initial() {
   for(var i = 1; i < imgs.length; i++) {
    imgs[i].style.left = imgWidth + exposeWidth * (i - 1) + "px";
   }
  }
  Initial();  
  var translateWidth = imgWidth - exposeWidth;//移动的距离
  for(var i = 0; i < imgs.length; i++) {
   (function(i) {
    imgs[i].onmouseover = function() {
     Initial(); //鼠标经过图片时,首先设置到初始状态
     for (var j=1;j<=i;j++) { //之前的图片都移动相同的距离
      imgs[j].style.left=parseInt(imgs[j].style.left)-translateWidth+"px";
     }
    }
   })(i);
  }

 }
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery.prototype.init选择器构造函数源码思路分析
Feb 05 Javascript
js的正则test,match,exec详细解析
Jan 29 Javascript
jquery学习总结(超级详细)
Sep 04 Javascript
JS使用post提交的两种方式
Dec 03 Javascript
JS实现微信弹出搜索框 多条件查询功能
Dec 13 Javascript
JavaScript实现获取select下拉框中第一个值的方法
Feb 06 Javascript
vue 做移动端微信公众号采坑经验记录
Apr 26 Javascript
es6新特性之 class 基本用法解析
May 05 Javascript
vue element中axios下载文件(后端Python)
May 10 Javascript
vue实现倒计时获取验证码效果
Apr 17 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
Mar 07 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
Jul 19 Javascript
基于Vue2.0的分页组件
Mar 16 #Javascript
原生js实现验证码功能
Mar 16 #Javascript
基于vue实现多引擎搜索及关键字提示
Mar 16 #Javascript
vue图片加载与显示默认图片实例代码
Mar 16 #Javascript
js中作用域的实例解析
Mar 16 #Javascript
Vue.2.0.5过渡效果使用技巧
Mar 16 #Javascript
JS实现页面打印功能
Mar 16 #Javascript
You might like
PHP5 操作MySQL数据库基础代码
2009/09/29 PHP
php使用cookie实现记住用户名和密码实现代码
2015/04/27 PHP
PHP中的一些常用函数收集
2015/05/26 PHP
Javascript 模式实例 观察者模式
2009/10/24 Javascript
讨论javascript(一)工厂方式 js面象对象的定义方法
2009/12/15 Javascript
使用Json比用string返回数据更友好,也更面向对象一些
2011/09/13 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
Node.js刷新session过期时间的实现方法推荐
2016/05/18 Javascript
全面了解构造函数继承关键apply call
2016/07/26 Javascript
详解angular中通过$location获取路径(参数)的写法
2017/03/21 Javascript
ionic中的$ionicPlatform.ready事件中的通用设置
2017/06/11 Javascript
webpack多入口多出口的实现方法
2018/08/17 Javascript
angular6的响应式表单的实现
2018/10/10 Javascript
详解angular2.x创建项目入门指令
2018/10/11 Javascript
详解如何实现Element树形控件Tree在懒加载模式下的动态更新
2019/04/25 Javascript
vue+webpack 更换主题N种方案优劣分析
2019/10/28 Javascript
原生js实现无缝轮播图
2020/01/11 Javascript
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
[51:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/30 DOTA
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
2014/08/22 Python
Python检测生僻字的实现方法
2016/10/23 Python
使用Pyinstaller的最新踩坑实战记录
2017/11/08 Python
pandas中apply和transform方法的性能比较及区别介绍
2018/10/30 Python
python进阶之多线程对同一个全局变量的处理方法
2018/11/09 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
python儿童学游戏编程知识点总结
2019/06/03 Python
Python:合并两个numpy矩阵的实现
2019/12/02 Python
前端H5 Video常见使用场景简介
2020/08/21 HTML / CSS
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
2014年五一劳动节社区活动总结
2014/04/14 职场文书
西游降魔篇观后感
2015/06/15 职场文书
Pytest allure 命令行参数的使用
2021/04/18 Python
浅谈MySQL user权限表
2021/06/18 MySQL
Python&Matlab实现樱花的绘制
2022/04/07 Python
mybatis-plus模糊查询指定字段
2022/04/28 Java/Android