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 验证浏览器是否支持javascript的方法小结
May 17 Javascript
javascript分页代码实例分享(js分页)
Dec 13 Javascript
解决jquery操作checkbox火狐下第二次无法勾选问题
Feb 10 Javascript
JQuery 在线引用及测试引用是否成功
Jun 24 Javascript
JS中的Replace方法使用经验分享
May 20 Javascript
安装使用Mongoose配合Node.js操作MongoDB的基础教程
Mar 01 Javascript
使用JavaScript判断用户输入的是否为正整数(两种方法)
Feb 05 Javascript
Vue.js弹出模态框组件开发的示例代码
Jul 26 Javascript
浅谈函数调用的不同方式,以及this的指向
Sep 17 Javascript
vue移动端实现手机左右滑动入场动画
Jun 17 Javascript
JavaScript位置参数实现原理及过程解析
Sep 14 Javascript
React配置子路由的实现
Jun 03 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面向对象
2012/02/22 PHP
php使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
2015/08/31 PHP
php实现Session存储到Redis
2015/11/11 PHP
PHP快速生成各种信息提示框的方法
2016/02/03 PHP
PHP使用redis消息队列发布微博的方法示例
2017/06/22 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
仿校内登陆框,精美,给那些很厉害但是没有设计天才的程序员
2008/11/24 Javascript
详解用webpack的CommonsChunkPlugin提取公共代码的3种方式
2017/11/09 Javascript
Vue render渲染时间戳转时间,时间转时间戳及渲染进度条效果
2018/07/27 Javascript
详解Angular中通过$location获取地址栏的参数
2018/08/02 Javascript
JavaScript数组特性与实践应用深入详解
2018/12/30 Javascript
微信小程序如何实现精确的日期时间选择器
2020/01/21 Javascript
解决vue无法侦听数组及对象属性的变化问题
2020/07/17 Javascript
vue中可编辑树状表格的实现代码
2020/10/31 Javascript
[45:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第二场 6.2
2018/06/04 DOTA
[38:32]完美世界DOTA2联赛循环赛 Forest vs DM 第二场 11.06
2020/11/06 DOTA
python中实现指定时间调用函数示例代码
2017/09/08 Python
Django rest framework工具包简单用法示例
2018/07/20 Python
Python实现将数据写入netCDF4中的方法示例
2018/08/30 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
2018/12/19 Python
python使用正则表达式(Regular Expression)方法超详细
2019/12/30 Python
解决Windows下python和pip命令无法使用的问题
2020/08/31 Python
python日志通过不同的等级打印不同的颜色(示例代码)
2021/01/13 Python
使用CSS实现阅读进度条
2017/02/27 HTML / CSS
德国EGOIST网店:销售畅销的设计师品牌
2017/04/18 全球购物
马来西亚最好的婴儿商店:Motherhood
2017/09/14 全球购物
招商经理岗位职责
2013/11/16 职场文书
广告学毕业生求职信
2014/01/30 职场文书
庆祝教师节活动方案
2014/01/31 职场文书
2014年社区教育工作总结
2014/12/02 职场文书
教师廉洁自律个人总结
2015/02/10 职场文书
2015年教育实习工作总结
2015/04/24 职场文书
2015年教研室工作总结范文
2015/05/23 职场文书
交流会主持词
2015/07/02 职场文书
《分数乘法》教学反思
2016/02/24 职场文书