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 相关文章推荐
在修改准备发的批量美化select+可修改select时,在非IE下发现了几个问题
Jan 09 Javascript
关于div自适应高度/左右高度自适应一致的js代码
Mar 22 Javascript
alert出数组中的随即值代码
Sep 25 Javascript
jquery获取复选框的值的简单实例
May 26 Javascript
JS仿hao123导航页面图片轮播效果
Sep 01 Javascript
深入理解Node.js的HTTP模块
Oct 12 Javascript
深入理解vue-loader如何使用
Jun 06 Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
Aug 31 Javascript
详解vue中使用protobuf踩坑记
May 07 Javascript
vue改变循环遍历后的数据实例
Nov 07 Javascript
基于JS实现操作成功之后自动跳转页面
Sep 25 Javascript
关于小程序优化的一些建议(小结)
Dec 10 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
第九节 绑定 [9]
2006/10/09 PHP
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
2006/10/09 PHP
The specified CGI application misbehaved by not returning a complete set of HTTP headers
2011/03/31 PHP
PHP查询数据库中满足条件的记录条数(两种实现方法)
2013/01/29 PHP
利用php绘制饼状图的实现代码
2013/06/07 PHP
PHP简单读取PDF页数的实现方法
2016/07/21 PHP
使用PHP访问RabbitMQ消息队列的方法示例
2018/06/06 PHP
Laravel向公共模板赋值方法总结
2019/06/25 PHP
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法
2013/01/04 Javascript
动态加载script文件的两种方法
2013/08/15 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
javascript类型系统 Window对象学习笔记
2016/01/07 Javascript
扩展Bootstrap Tooltip插件使其可交互的方法
2016/11/07 Javascript
微信小程序之拖拽排序(代码分享)
2017/01/21 Javascript
vue.js语法及常用指令
2017/10/29 Javascript
vue项目中使用axios上传图片等文件操作
2017/11/02 Javascript
小程序实现列表多个批量倒计时
2021/01/29 Javascript
如何利用JavaScript编写一个格斗小游戏
2021/01/06 Javascript
Python使用smtplib模块发送电子邮件的流程详解
2016/06/27 Python
详解appium+python 启动一个app步骤
2017/12/20 Python
TensorFlow模型保存和提取的方法
2018/03/08 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
Python使用sort和class实现的多级排序功能示例
2018/08/15 Python
在python中利用最小二乘拟合二次抛物线函数的方法
2018/12/29 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
2019/04/30 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
对Python3之方法的覆盖与super函数详解
2019/06/26 Python
python opencv minAreaRect 生成最小外接矩形的方法
2019/07/01 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
Python Socket TCP双端聊天功能实现过程详解
2020/06/15 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
2020/07/21 Python
浅析Python requests 模块
2020/10/09 Python
Manuka Doctor英国官网:真正的麦卢卡蜂蜜和护肤品
2018/10/26 全球购物
个人四风问题对照检查材料
2014/10/01 职场文书
2015年车间主任工作总结
2015/05/21 职场文书
祝福语集锦:送给闺蜜的生日祝福语
2019/10/08 职场文书