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 相关文章推荐
Extjs中ComboBox加载并赋初值的实现方法
Mar 22 Javascript
基于jquery编写的横向自适应幻灯片切换特效的实例代码
Aug 06 Javascript
javascript中Object使用详解
Jan 26 Javascript
浅析js中substring和substr的方法
Nov 09 Javascript
JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色
Nov 26 Javascript
vuejs指令详解
Feb 07 Javascript
js模拟支付宝密码输入框
Apr 11 Javascript
vuejs使用$emit和$on进行组件之间的传值的示例
Oct 04 Javascript
微信小程序中吸底按钮适配iPhone X方案
Nov 29 Javascript
Vue-cli配置打包文件本地使用的教程图解
Aug 02 Javascript
推荐15个最好用的JavaScript代码压缩工具
Feb 13 Javascript
Postman动态获取返回值过程详解
Jun 30 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
thinkphp连贯操作实例分析
2014/11/22 PHP
33道php常见面试题及答案
2015/07/06 PHP
php 运算符与表达式详细介绍
2016/11/30 PHP
jquery中的事件处理详细介绍
2013/06/24 Javascript
扩展JS Date对象时间格式化功能的小例子
2013/12/02 Javascript
巧用replace将文字表情替换为图片
2014/04/17 Javascript
浅谈Sizzle的“编译原理”
2015/04/14 Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
2015/09/12 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
2016/09/17 Javascript
微信小程序本作用域下调用全局JS详解及实例
2017/02/22 Javascript
JS排序之快速排序详解
2017/04/08 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
旺旺在线客服代码 旺旺客服代码生成器
2018/01/09 Javascript
vue-cli webpack 引入jquery的方法
2018/01/10 jQuery
nginx+vue.js实现前后端分离的示例代码
2018/02/12 Javascript
VUE中v-on:click事件中获取当前dom元素的代码
2018/08/22 Javascript
浅谈Vue数据响应思路之数组
2018/11/06 Javascript
vue实现图片按比例缩放问题操作
2020/08/11 Javascript
[01:03]DOTA2新的征程 你的脚印值得踏上
2014/08/13 DOTA
python在linux系统下获取系统内存使用情况的方法
2015/05/11 Python
python不换行之end=与逗号的意思及用途
2017/11/21 Python
python的unittest测试类代码实例
2017/12/07 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
python散点图实例之随机漫步
2018/08/27 Python
Django 路由控制的实现代码
2018/11/08 Python
手把手教你Python yLab的绘制折线图的画法
2019/10/23 Python
pytorch中的transforms模块实例详解
2019/12/31 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
2020/05/09 Python
使用HTML5的链接预取功能(link prefetching)给网站提速
2012/12/13 HTML / CSS
美国最受欢迎的度假租赁网站:VRBO
2016/08/02 全球购物
Yahoo-PHP面试题1
2016/07/20 面试题
实习单位接收函
2014/01/11 职场文书
社会保险接收函
2014/01/12 职场文书
2015年药店店长工作总结
2015/04/29 职场文书
写作指导:怎么书写竞聘演讲稿?
2019/07/04 职场文书