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 锚点跳转滚动条平滑滚动一句话代码
Apr 30 Javascript
10个JavaScript中易犯小错误
Feb 14 Javascript
BootStrap下拉框在firefox浏览器界面不友好的解决方案
Aug 18 Javascript
用js实现简单算法的实例代码
Sep 24 Javascript
JS常用知识点整理
Jan 21 Javascript
jQuery学习之DOM节点的插入方法总结
Jan 22 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
Jun 13 Javascript
脚手架vue-cli工程webpack的作用和特点
Sep 29 Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
Feb 18 Javascript
vuex 中插件的编写案例解析
Jun 10 Javascript
如何利用vue实现波谱拟合详解
Nov 05 Javascript
低门槛开发iOS、Android、小程序应用的前端框架详解
Oct 16 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连接Oracle for NT 远程数据库
2006/10/09 PHP
php 删除无限级目录与文件代码共享
2008/11/22 PHP
PHP中文分词 自动获取关键词介绍
2012/11/13 PHP
探讨:array2xml和xml2array以及xml与array的互相转化
2013/06/24 PHP
PHP中strpos、strstr和stripos、stristr函数分析
2016/06/11 PHP
jquery提交form表单时禁止重复提交的方法
2014/02/13 Javascript
基于javascript实现按圆形排列DIV元素(三)
2016/12/02 Javascript
JavaScript实现经典排序算法之选择排序
2016/12/28 Javascript
jQuery plugin animsition使用小结
2017/09/14 jQuery
Vue.js的复用组件开发流程完整记录
2018/11/29 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
2019/06/17 Javascript
python发布模块的步骤分享
2014/02/21 Python
使用Python生成url短链接的方法
2015/05/04 Python
Flask框架中密码的加盐哈希加密和验证功能的用法详解
2016/06/07 Python
Python scikit-learn 做线性回归的示例代码
2017/11/01 Python
pygame游戏之旅 添加碰撞效果的方法
2018/11/20 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
详解python列表(list)的使用技巧及高级操作
2019/08/15 Python
使用PyTorch训练一个图像分类器实例
2020/01/08 Python
Python替换NumPy数组中大于某个值的所有元素实例
2020/06/08 Python
京东港澳售:京东直邮港澳台
2018/01/31 全球购物
ReVive利维肤美国官网:RéVive Skincare
2018/04/18 全球购物
Brydge英国:适用于Apple iPad和Microsoft Surface Pro的蓝牙键盘
2019/05/16 全球购物
阿里巴巴美国:Alibaba美国
2019/11/24 全球购物
Can a struct inherit from another struct? (结构体能继承结构体吗)
2016/09/25 面试题
求职简历中个人的自我评价
2013/12/25 职场文书
工作违纪检讨书
2014/02/17 职场文书
起诉离婚协议书样本
2014/11/25 职场文书
离婚被告代理词
2015/05/23 职场文书
给朋友的赠语
2015/06/23 职场文书
谢师宴学生答谢词
2015/09/30 职场文书
2019经典广告词集锦!
2019/07/02 职场文书
送给教师们,到底该如何写好教学反思?
2019/07/02 职场文书
Oracle配置dblink访问PostgreSQL的操作方法
2022/03/21 PostgreSQL
Apache SeaTunnel实现 非CDC数据抽取
2022/05/20 Servers