JS实现商品橱窗特效


Posted in Javascript onJanuary 09, 2020

本文实例为大家分享了JS实现商品橱窗特效的具体代码,供大家参考,具体内容如下

知识点

换算公式
① 滚动条长度 = ( 盒子的宽度 / 内容的宽度) * 盒子的宽度
滚动条长度/盒子的长度 = 盒子的长度/内容的长度
② 内容走的距离 = (内容的长度 - 盒子的长度)/ (盒子的长度 - 滚动条的长度)* 滚动条走的距离

运行效果

JS实现商品橱窗特效

代码

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title></title>
 <style>
  *{
   margin: 0;
   padding: 0;
   list-style: none;
   border:none;
  }

  #box{
   width: 800px;
   height: 200px;
   border: 1px solid #ddd;

   position: relative;
   margin: 100px auto;

   overflow: hidden;
  }

  #box ul{
   width: 5200px;
   position: absolute;
   left: 0;
   top: 20px;
  }

  #box ul li{
   float: left;
  }

  #box_bottom{
   position: absolute;
   left: 0;
   bottom: 0;
   background-color: #e8e8e8;

   width: 100%;
   height: 25px;
  }

  .mask{
   position: absolute;
   left: 0;
   top:0;
   height: 25px;
   background-color: orangered;
   border-radius: 12px;
   cursor: pointer;
  }
 </style>
</head>
<body>
 <div id="box">
  <ul id="box_top">
   <li><img src="images/img1.jpg" alt=""></li>
   <li><img src="images/img2.jpg" alt=""></li>
   <li><img src="images/img3.jpg" alt=""></li>
   <li><img src="images/img4.jpg" alt=""></li>
   <li><img src="images/img5.jpg" alt=""></li>
   <li><img src="images/img6.jpg" alt=""></li>
   <li><img src="images/img7.jpg" alt=""></li>
   <li><img src="images/img8.jpg" alt=""></li>
   <li><img src="images/img1.jpg" alt=""></li>
   <li><img src="images/img2.jpg" alt=""></li>
   <li><img src="images/img1.jpg" alt=""></li>
   <li><img src="images/img2.jpg" alt=""></li>
   <li><img src="images/img3.jpg" alt=""></li>
   <li><img src="images/img4.jpg" alt=""></li>
   <li><img src="images/img5.jpg" alt=""></li>
   <li><img src="images/img6.jpg" alt=""></li>
   <li><img src="images/img7.jpg" alt=""></li>
   <li><img src="images/img8.jpg" alt=""></li>
   <li><img src="images/img1.jpg" alt=""></li>
   <li><img src="images/img2.jpg" alt=""></li>
   <li><img src="images/img1.jpg" alt=""></li>
   <li><img src="images/img2.jpg" alt=""></li>
   <li><img src="images/img3.jpg" alt=""></li>
   <li><img src="images/img4.jpg" alt=""></li>
   <li><img src="images/img5.jpg" alt=""></li>
   <li><img src="images/img6.jpg" alt=""></li>
   <li><img src="images/img7.jpg" alt=""></li>
   <li><img src="images/img8.jpg" alt=""></li>
   <li><img src="images/img1.jpg" alt=""></li>
   <li><img src="images/img2.jpg" alt=""></li>
   <li><img src="images/img1.jpg" alt=""></li>
   <li><img src="images/img2.jpg" alt=""></li>
   <li><img src="images/img3.jpg" alt=""></li>
   <li><img src="images/img4.jpg" alt=""></li>
   <li><img src="images/img5.jpg" alt=""></li>
   <li><img src="images/img6.jpg" alt=""></li>
   <li><img src="images/img7.jpg" alt=""></li>
   <li><img src="images/img8.jpg" alt=""></li>
   <li><img src="images/img1.jpg" alt=""></li>
   <li><img src="images/img2.jpg" alt=""></li>
  </ul>
  <div id="box_bottom">
   <span class="mask"></span>
  </div>
 </div>

<script>
 window.onload = function () {
  // 1. 获取需要的标签
  var box = document.getElementById("box");
  var box_top = document.getElementById("box_top");
  var box_bottom = document.getElementById("box_bottom");
  var mask = box_bottom.children[0];

  // 2. 设置滚动条的长度
  // 滚动条长度 = ( 盒子的宽度 / 内容的宽度) * 盒子的宽度
  var mask_len = (box.offsetWidth / box_top.offsetWidth) * box.offsetWidth;
  mask.style.width = mask_len + 'px';

  // 3. 鼠标操作
  mask.onmousedown = function (event) {
   var e = event || window.event;

   // 3.1 求出初始值
   var beginX = e.clientX - mask.offsetLeft;

   // 3.2 移动
   document.onmousemove = function (event) {
    var e = event || window.event;

    // 3.3 求出移动的距离
    var endX = event.clientX - beginX;

    // 边界值
    if(endX < 0){
     endX = 0;
    }else if(endX >= box.offsetWidth - mask.offsetWidth){
     endX = box.offsetWidth - mask.offsetWidth;
    }


    // 3.4 动起来
    mask.style.left = endX + 'px';

    // 内容走的距离 = (内容的长度 - 盒子的长度)/ (盒子的长度 - 滚动条的长度)* 滚动条走的距离
    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>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript的匿名函数小结
Dec 31 Javascript
JS无法捕获滚动条上的mouse up事件的原因猜想
Mar 21 Javascript
JavaScript异步回调的Promise模式封装实例
Jun 07 Javascript
JS 使用for循环遍历子节点查找元素
Sep 06 Javascript
jQuery实现的动态伸缩导航菜单实例
May 07 Javascript
JS+DIV实现鼠标划过切换层效果的方法
May 25 Javascript
浅析jQuery事件之on()方法绑定多个选择器,多个事件
Apr 27 Javascript
node.js连接MongoDB数据库的2种方法教程
May 17 Javascript
JavaScript中递归实现的方法及其区别
Sep 12 Javascript
浅谈Vue 数据响应式原理
May 07 Javascript
关于Vue中axios的封装实例详解
Oct 20 Javascript
javascript遍历对象的五种方式实例代码
Oct 24 Javascript
微信小程序实现页面浮动导航
Jan 08 #Javascript
微信小程序基于movable-view实现滑动删除效果
Jan 08 #Javascript
小程序自定义模板实现吸顶功能
Jan 08 #Javascript
微信小程序静默登录的实现代码
Jan 08 #Javascript
微信小程序wxs实现吸顶效果
Jan 08 #Javascript
微信小程序实现吸顶特效
Jan 08 #Javascript
nuxt配置通过指定IP和端口访问的实现
Jan 08 #Javascript
You might like
PHP include任意文件或URL介绍
2014/04/29 PHP
Laravel中使用阿里云OSS Composer包分享
2015/02/10 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
2016/10/10 PHP
jQuery 表单验证扩展(四)
2010/10/20 Javascript
editable.js 基于jquery的表格的编辑插件
2011/10/24 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
JavaScript模块随意拖动示例代码
2014/05/27 Javascript
javascript实现百度地图鼠标滑动事件显示、隐藏
2015/04/02 Javascript
js实现的四级左侧网站分类菜单实例
2015/05/06 Javascript
纯js代码制作的网页时钟特效【附实例】
2016/03/30 Javascript
jQuery通过ajax快速批量提交表单数据
2016/10/25 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
nodejs操作mysql实现增删改查的实例
2017/05/28 NodeJs
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
Vue下拉框回显并默认选中随机问题
2018/09/06 Javascript
vue2配置scss的方法步骤
2019/06/06 Javascript
js实现日历
2020/11/07 Javascript
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
[04:52]第二届DOTA2亚洲邀请赛主赛事第一天比赛集锦:OG娜迦海妖放大配合谜团大中3人
2017/04/02 DOTA
Django中模版的子目录与include标签的使用方法
2015/07/16 Python
windows系统下Python环境的搭建(Aptana Studio)
2017/03/06 Python
flask-socketio实现WebSocket的方法
2018/07/31 Python
pytorch中torch.max和Tensor.view函数用法详解
2020/01/03 Python
Python 通过监听端口实现唯一脚本运行方式
2020/05/05 Python
Python图像识别+KNN求解数独的实现
2020/11/13 Python
Django与AJAX实现网页动态数据显示的示例代码
2021/02/24 Python
使用纯 CSS 创作一个脉动 loader效果的源码
2018/09/28 HTML / CSS
秋季运动会通讯稿
2014/01/24 职场文书
低碳环保倡议书
2014/04/14 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
党员个人自我剖析材料
2014/10/08 职场文书
2014年助理政工师工作总结
2014/12/19 职场文书
中秋节主题班会
2015/08/14 职场文书
【海涛解说】pis亲自推荐,其实你从来不会玩NW
2022/04/01 DOTA