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控制输入框只能输入数值的小例子
Mar 20 Javascript
JS 去除Array中的null值示例代码
Nov 20 Javascript
js函数名与form表单元素同名冲突的问题
Mar 07 Javascript
javascript记住用户名和登录密码(两种方式)
Aug 04 Javascript
window.open不被拦截的简单实现代码(推荐)
Aug 04 Javascript
JS实现HTML表格排序功能
Aug 05 Javascript
关于jQuery库冲突的完美解决办法
May 20 jQuery
利用vue和element-ui设置表格内容分页的实例
Mar 02 Javascript
动态加载JavaScript文件的3种方式
May 05 Javascript
react native 原生模块桥接的简单说明小结
Feb 26 Javascript
微信小程序和百度的语音识别接口详解
May 06 Javascript
layui表格内容溢出的解决方法
Sep 06 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隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
php预定义变量使用帮助(带实例)
2013/10/30 PHP
PHP实现模仿socket请求返回页面的方法
2014/11/04 PHP
ThinkPHP独立分组使用的注意事项
2014/11/25 PHP
php使用MySQL保存session会话的方法
2015/06/18 PHP
PHP7 标准库修改
2021/03/09 PHP
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
jquery动态加载select下拉框示例代码
2013/12/10 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
详解AngularJS中的filter过滤器用法
2016/01/04 Javascript
原生javascript+css3编写的3D魔方动画旋扭特效
2016/03/14 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
2016/05/10 Javascript
JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
2016/05/16 Javascript
jQuery实现的简单分页示例
2016/06/01 Javascript
jq实现左滑显示删除按钮,点击删除实现删除数据功能(推荐)
2016/08/23 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
基于vue开发微信小程序mpvue-docs跳转页面功能
2019/04/10 Javascript
javascript设计模式 ? 原型模式原理与应用实例分析
2020/04/10 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
2020/05/27 Javascript
Element Carousel 走马灯的具体实现
2020/07/26 Javascript
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
Python Datetime模块和Calendar模块用法实例分析
2019/04/15 Python
python如何保证输入键入数字的方法
2019/08/23 Python
海信商城:海信电视、科龙空调、容声冰箱官方专卖
2017/02/07 全球购物
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
上海中网科技笔试题
2012/02/19 面试题
Unix如何在一行中运行多个命令
2015/05/29 面试题
奥巴马英文演讲稿
2014/05/15 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
2014年幼儿园教研工作总结
2014/12/04 职场文书
2015年林业工作总结
2015/05/14 职场文书
毕业班工作总结
2015/08/10 职场文书
52条SQL语句教你性能优化
2021/05/25 MySQL
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis