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 相关文章推荐
一个很简单的办法实现TD的加亮效果.
Jun 29 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
Jun 09 Javascript
js日期范围初始化得到前一个月日期的方法
May 05 Javascript
js事件驱动机制 浏览器兼容处理方法
Jul 23 Javascript
jquery动态添加文本并获取值的方法
Oct 12 Javascript
JS前向后瞻正则表达式定义与用法示例
Dec 27 Javascript
Vue 短信验证码组件开发详解
Feb 14 Javascript
基于Vue 服务端Cookies删除的问题
Sep 21 Javascript
详解Vue中watch的详细用法
Nov 28 Javascript
利用Webpack实现小程序多项目管理的方法
Feb 25 Javascript
JS中如何轻松遍历对象属性的方式总结
Aug 06 Javascript
JS字符串补全方法padStart()和padEnd()
May 27 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
重置版游戏视频
2020/04/09 魔兽争霸
php数组函数序列之array_key_exists() - 查找数组键名是否存在
2011/10/29 PHP
nginx+php-fpm配置文件的组织结构介绍
2012/11/07 PHP
php中的静态变量的基本用法
2014/03/20 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
2014/10/27 PHP
PHP的引用详解
2015/02/22 PHP
php和editplus正则表达式去除空白行
2015/04/17 PHP
PHP控制前台弹出对话框的实现方法
2016/08/21 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
基于jQuery实现的Ajax 验证用户名是否存在的实现代码
2011/04/06 Javascript
DB.ASP 用Javascript写ASP很灵活很好用很easy
2011/07/31 Javascript
JS特权方法定义作用以及与公有方法的区别
2013/03/18 Javascript
JavaScript栏目列表隐藏/显示简单实现
2013/04/03 Javascript
按下Enter焦点移至下一个控件的实现js代码
2013/12/11 Javascript
纯js实现div内图片自适应大小(已测试,兼容火狐)
2014/06/16 Javascript
使用jquery组件qrcode生成二维码及应用指南
2015/02/22 Javascript
javascript实现的简单的表单验证
2015/07/10 Javascript
浅谈$(document)和$(window)的区别
2015/07/15 Javascript
详解JavaScript函数
2015/12/01 Javascript
JavaScript实现三级联动效果
2017/07/15 Javascript
vue+swiper实现左右滑动的测试题功能
2020/10/30 Javascript
nuxt引入组件和公共样式的操作
2020/11/05 Javascript
jupyter notebook引用from pyecharts.charts import Bar运行报错
2020/04/23 Python
python3.7.0的安装步骤
2018/08/27 Python
python制作简单五子棋游戏
2019/06/18 Python
python 基于dlib库的人脸检测的实现
2019/11/08 Python
利用matplotlib实现根据实时数据动态更新图形
2019/12/13 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
2020/12/08 Python
台湾最大银发乐活百货:乐龄网
2018/05/21 全球购物
一套Delphi的笔试题二
2013/05/11 面试题
体育系毕业生自荐信
2014/06/28 职场文书
公务员群众路线心得体会
2014/11/03 职场文书
结婚保证书(三从四德)
2015/02/26 职场文书
预备党员群众意见
2015/06/01 职场文书
2015年初中教务处工作总结
2015/07/21 职场文书
感恩教师节主题班会
2015/08/12 职场文书