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 页面执行时间计算代码
Mar 04 Javascript
对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)
Jul 31 Javascript
ajax如何实现页面局部跳转与结果返回
Aug 24 Javascript
JS与jQuery实现隔行变色的方法
Sep 09 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
Dec 11 Javascript
原生js实现放大镜效果
Jan 11 Javascript
vue 怎么创建组件及组件使用方法
Jul 27 Javascript
jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法
Dec 24 jQuery
微信小程序实现分享到朋友圈功能
Jul 19 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
Sep 28 Javascript
vue 中url 链接左边的小图标更改问题
Dec 30 Javascript
js中Object.create实例用法详解
Oct 05 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
一个简单的自动发送邮件系统(三)
2006/10/09 PHP
php5编程中的异常处理详细方法介绍
2008/07/29 PHP
PHP添加Xdebug扩展的方法
2014/02/12 PHP
php邮件发送的两种方式
2020/04/28 PHP
PHP折半(二分)查找算法实例分析
2018/05/12 PHP
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
js 与或运算符 || &amp;&amp; 妙用
2009/12/09 Javascript
Grid得到选择行数据的方法总结
2011/01/17 Javascript
纯js实现瀑布流展现照片(自动适应窗口大小)
2013/04/08 Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
button没写type=button会导致点击时提交
2014/03/06 Javascript
JQuery解析XML的方法小结
2016/04/02 Javascript
webuploader模态框ueditor显示问题解决方法
2016/12/27 Javascript
codeMirror插件使用讲解
2017/01/16 Javascript
Next.js项目实战踩坑指南(笔记)
2018/11/29 Javascript
jquery中为什么能用$操作
2019/06/18 jQuery
js图数据结构处理 迪杰斯特拉算法代码实例
2019/09/11 Javascript
vue登录注册实例详解
2019/09/14 Javascript
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
python多线程socket编程之多客户端接入
2017/09/12 Python
python实现读Excel写入.txt的方法
2018/04/29 Python
python pandas修改列属性的方法详解
2018/06/09 Python
浅谈numpy生成数组的零值问题
2018/11/12 Python
Python的log日志功能及设置方法
2019/07/11 Python
Python整数与Numpy数据溢出问题解决
2019/09/11 Python
python入门之井字棋小游戏
2020/03/05 Python
matplotlib基础绘图命令之imshow的使用
2020/08/13 Python
Python识别处理照片中的条形码
2020/11/16 Python
日本食品网上商店:JaponShop.com
2017/11/28 全球购物
Bealls Florida百货商店:生活服饰、家居装饰和鞋子
2018/02/23 全球购物
给医务人员表扬信
2014/01/12 职场文书
祖国在我心中演讲稿450字
2014/09/05 职场文书
法制演讲稿
2014/09/10 职场文书
2014年销售工作总结范文
2014/12/01 职场文书
不尊敬老师的检讨书
2014/12/21 职场文书
焦点访谈观后感
2015/06/11 职场文书