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 相关文章推荐
jquery 获取自定义属性(attr和prop)的实现代码
Jun 27 Javascript
js去字符串前后空格的实现方法
Feb 26 Javascript
jQuery实现下拉菜单(内容为时间)的实时更新及图表的随动更新的方法
Jul 07 Javascript
angular双向绑定模拟探索
Dec 26 Javascript
原生js实现节日时间倒计时功能
Jan 18 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
Jan 21 Javascript
js从输入框读取内容,比较两个数字的大小方法
Mar 13 Javascript
vue实现商城购物车功能
Nov 27 Javascript
详解react关于事件绑定this的四种方式
Mar 09 Javascript
在angular 6中使用 less 的实例代码
May 13 Javascript
微信小程序时间控件picker view使用详解
Dec 28 Javascript
js实现登录时记住密码的方法分析
Apr 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
PHP初学者头疼问题总结
2006/07/08 PHP
无数据库的详细域名查询程序PHP版(5)
2006/10/09 PHP
一句话JavaScript表单验证代码
2009/08/02 Javascript
JavaScript的单例模式 (singleton in Javascript)
2010/06/11 Javascript
jQuery实现“扫码阅读”功能
2015/01/21 Javascript
jquery实现鼠标滑过显示提示框的方法
2015/02/05 Javascript
js+cookies实现悬浮购物车的方法
2015/05/25 Javascript
JavaScript代码性能优化总结篇
2016/05/15 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
nodejs简单实现TCP服务器端和客户端的聊天功能示例
2018/01/04 NodeJs
Vue中Quill富文本编辑器的使用教程
2018/09/21 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
2020/01/12 Javascript
vue axios请求成功却进入catch的原因分析
2020/09/08 Javascript
jQuery实现简单评论区功能
2020/10/26 jQuery
Python SQLite3数据库操作类分享
2014/06/10 Python
python类的继承实例详解
2017/03/30 Python
python将秒数转化为时间格式的实例
2018/09/16 Python
对Python捕获控制台输出流的方法详解
2019/01/07 Python
python 执行终端/控制台命令的例子
2019/07/12 Python
Tensorflow实现神经网络拟合线性回归
2019/07/19 Python
python实现桌面托盘气泡提示
2019/07/29 Python
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
RealTek面试题
2016/06/28 面试题
工程专业求职自荐书范文
2014/02/18 职场文书
初中高效课堂实施方案
2014/02/26 职场文书
莫言诺贝尔获奖演讲稿
2014/05/21 职场文书
干部个人对照检查材料
2014/08/25 职场文书
党员批评与自我批评范文
2014/09/23 职场文书
迁户口计划生育证明
2014/10/19 职场文书
鲁迅故居导游词
2015/02/05 职场文书
保研专家推荐信范文
2015/03/25 职场文书
2015年乡镇环保工作总结
2015/04/22 职场文书
郭明义观后感
2015/06/08 职场文书
52条SQL语句教你性能优化
2021/05/25 MySQL
Java Shutdown Hook场景使用及源码分析
2021/06/15 Java/Android