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 相关文章推荐
javascript中的几个运算符
Jun 29 Javascript
Javascript 复制数组实现代码
Nov 26 Javascript
jquery图片上下tab切换效果
Mar 18 Javascript
JavaScript(js)设置默认输入焦点(focus)
Dec 28 Javascript
JS小功能(onmouseover实现选择月份)实例代码
Nov 28 Javascript
JavaScript将字符串转换为整数的方法
Apr 14 Javascript
JS函数的定义与调用方法推荐
May 12 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
Apr 13 Javascript
Vue自定义图片懒加载指令v-lazyload详解
Dec 31 Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
Feb 18 Javascript
LayUI数据接口返回实体封装的例子
Sep 12 Javascript
Webpack设置环境变量的一些误区详解
Dec 19 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
如何给phpadmin一个保护
2006/10/09 PHP
PHP中10个不常见却非常有用的函数
2010/03/21 PHP
ezSQL PHP数据库操作类库
2010/05/16 PHP
php学习之 循环结构实现代码
2011/06/09 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
2011/11/07 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
jquery Firefox3.5中操作select的问题
2009/07/10 Javascript
Javascript结合css实现网页换肤功能
2009/11/02 Javascript
基于JQuery实现CheckBox全选全不选
2011/06/27 Javascript
JavaScript中神奇的call()方法
2015/03/12 Javascript
Js实现简单的小球运动特效
2016/02/18 Javascript
基于Bootstrap使用jQuery实现输入框组input-group的添加与删除
2016/05/03 Javascript
JS跨域请求外部服务器的资源
2017/02/06 Javascript
原生js实现验证码功能
2017/03/16 Javascript
BootStrap表单控件之文本域textarea
2017/05/23 Javascript
Javascript es7中比较实用的两个方法示例
2017/07/21 Javascript
vue滚动轴插件better-scroll使用详解
2017/10/17 Javascript
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
JavaScript Reflect Metadata实现详解
2019/12/12 Javascript
vue.js iview打包上线后字体图标不显示解决办法
2020/01/20 Javascript
前端使用crypto.js进行加密的函数代码
2020/08/16 Javascript
vue项目开启Gzip压缩和性能优化操作
2020/10/26 Javascript
SpringBoot在yml配置文件中配置druid的操作
2020/11/16 Javascript
[01:29]Ti4循环赛第三日精彩回顾
2014/07/13 DOTA
python文件比较示例分享
2014/01/10 Python
DJANGO-ALLAUTH社交用户系统的安装配置
2014/11/18 Python
python3 判断列表是一个空列表的方法
2018/05/04 Python
深入理解Django-Signals信号量
2019/02/19 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
2020/02/24 Python
Python之字符串的遍历的4种方式
2020/12/08 Python
详解CSS3的opacity属性设置透明效果的用法
2016/05/09 HTML / CSS
财务会计人员求职的自我评价
2014/01/13 职场文书
党员政治学习材料
2014/05/14 职场文书
我们的节日端午节活动总结
2015/02/11 职场文书
你真的了解redis为什么要提供pipeline功能
2021/06/22 Redis
Redis配置外网可访问(redis远程连接不上)的方法
2022/12/24 Redis