js实现橱窗展示效果


Posted in Javascript onJanuary 11, 2020

本文实例为大家分享了js实现橱窗展示的具体代码,供大家参考,具体内容如下

思路

1、获取需要的标签

2、求出滚动条的长度(公式:滚动条长度 = ( 盒子的宽度 / 内容的宽度) * 盒子的宽度)

3、监听鼠标按下事件:3 设置起始位置

4、监听鼠标的移动:

4.1求出移动的位置
4.2判断滚动条的位置(防超出)
4.3 移动滚动条、商品滚动(公式:内容走的距离 = (内容的长度 - 盒子的长度) / (盒子长度 - 滚动条的长度) * 滚动条走的距离);

5、监听鼠标的离开事件:把鼠标的移动事件设置为无即可。

<script>
    window.onload = function (){
      //1.获取需要的标签
      var box = document.getElementById("box");
      var box_top = box.children[0];
      var box_bottom = box.children[1];
      var mask = box_bottom.children[0];
      //2.获取滚动条长度
      // 滚动条长度 = ( 盒子的宽度 / 内容的宽度) * 盒子的宽度
      var mask_length = (box.offsetWidth /box_top.offsetWidth) * box.offsetWidth;
      mask.style.width = mask_length + "px";
      //3.监听鼠标按下的事件
      mask.onmousedown = function (event){
        var event = event || window.event;
        //3.1设置起始位置
        var beginX = event.clientX - mask.offsetLeft;
        //3.2 监听鼠标的移动
        document.onmousemove =function (event){
          var event = event || window.event;
          //3.2.1求移动的位置
          var endX = event.clientX - beginX;

          //3.2.2处理边界值
          if(endX < 0){
            endX = 0
          }else if(endX >= box.offsetWidth - mask.offsetWidth){
            endX = box.offsetWidth - mask.offsetWidth;
          }
          //3.2.3让滚动条滚动
          mask.style.left = endX + "px";

          //3.2.4 让商品随着滚动
          //公式:内容走的距离 = (内容的长度 - 盒子的长度) / (盒子长度 - 滚动条的长度) * 滚动条走的距离
          var content_len = (box_top.offsetWidth - box.offsetWidth) / (box.offsetWidth - mask.offsetWidth) * endX;
          box_top.style.left = -content_len + "px";

          return false;
        };
        document.onmouseup = function (){
          document.onmousemove = null;
        }
      }
    }
</script>

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

Javascript 相关文章推荐
通过一段代码简单说js中的this的使用
Jul 23 Javascript
innerText 使用示例
Jan 23 Javascript
jquery学习总结(超级详细)
Sep 04 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
Nov 13 Javascript
简单谈谈Javascript函数中的arguments
Feb 09 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
Sep 30 Javascript
javascript实现数字配对游戏的实例讲解
Dec 14 Javascript
JS使用setInterval实现的简单计时器功能示例
Apr 19 Javascript
JS实现的汉字与Unicode码相互转化功能分析
May 25 Javascript
vue实现移动端悬浮窗效果
Dec 01 Javascript
Vue如何实现监听组件原生事件
Jul 03 Javascript
Vue.js暴露方法给WebView的使用操作
Sep 07 Javascript
vue实现购物车选择功能
Jan 10 #Javascript
webpack proxy 使用(代理的使用)
Jan 10 #Javascript
基于vue-draggable 实现三级拖动排序效果
Jan 10 #Javascript
bootstrap实现嵌套模态框的实例代码
Jan 10 #Javascript
jQuery操作动画完整实例分析
Jan 10 #jQuery
基于JavaScript判断两个对象内容是否相等
Jan 10 #Javascript
jQuery操作事件完整实例分析
Jan 10 #jQuery
You might like
外媒评选出10支2020年最受欢迎的Dota2战队
2021/03/05 DOTA
如何在PHP中使用Oracle数据库(1)
2006/10/09 PHP
PHP常用函数小技巧
2008/09/11 PHP
探讨php中遍历二维数组的几种方法详解
2013/06/08 PHP
php获取json数据所有的节点路径
2015/05/17 PHP
PHP使用Http Post请求发送Json对象数据代码解析
2020/07/16 PHP
javascript form 验证函数 弹出对话框形式
2009/06/23 Javascript
js中的值类型和引用类型小结 文字说明与实例
2010/12/12 Javascript
原生javascript实现图片按钮切换
2015/01/12 Javascript
jQuery fancybox在ie浏览器下无法显示关闭按钮的解决办法
2016/02/19 Javascript
详解AngularJS过滤器的使用
2016/03/11 Javascript
jquery中绑定事件的异同
2017/02/28 Javascript
Vue学习笔记进阶篇之函数化组件解析
2017/07/21 Javascript
JS简单实现点击跳转登陆邮箱功能的方法
2017/10/31 Javascript
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
小程序云函数调用API接口的方法
2019/05/17 Javascript
React 全自动数据表格组件——BodeGrid的实现思路
2019/06/12 Javascript
layer.prompt输入层的例子
2019/09/24 Javascript
vue 基于abstract 路由模式 实现页面内嵌的示例代码
2020/12/14 Vue.js
js实现验证码干扰(动态)
2021/02/23 Javascript
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
Python实现SVN的目录周期性备份实例
2015/07/17 Python
python之virtualenv的简单使用方法(必看篇)
2017/11/25 Python
python3+PyQt5实现自定义流体混合窗口部件
2018/04/24 Python
python url 参数修改方法
2018/12/26 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
2020/01/10 Python
python 将视频 通过视频帧转换成时间实例
2020/04/23 Python
Django的ListView超详细用法(含分页paginate)
2020/05/21 Python
小学岗位竞聘方案
2014/01/22 职场文书
品质管理部岗位职责范文
2014/03/01 职场文书
雷锋精神演讲稿
2014/05/13 职场文书
亮剑精神演讲稿
2014/05/23 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
论文致谢词范文
2015/05/14 职场文书
和谐拯救危机观后感
2015/06/15 职场文书
《詹天佑》教学反思
2016/02/20 职场文书