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 相关文章推荐
超级酷和最实用的jQuery实例收集(20个)
Apr 21 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
Jan 24 Javascript
jquery实现按Enter键触发事件示例
Sep 10 Javascript
javascript去掉前后空格的实例
Nov 07 Javascript
asp.net+js实现金额格式化
Feb 27 Javascript
微信企业号开发之微信考勤百度地图定位
Sep 11 Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
Jul 27 Javascript
JS正则替换掉小括号及内容的方法
Nov 29 Javascript
微信小程序 input输入框详解及简单实例
Jan 10 Javascript
微信小程序之滚动视图容器的实现方法
Sep 26 Javascript
AngularJS 事件发布机制
Aug 28 Javascript
js动态生成表格(节点操作)
Jan 12 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简单字符串过滤方法示例
2016/09/04 PHP
PHP实现动态创建XML文档的方法
2018/03/30 PHP
使用户点击后退按钮使效三行代码
2007/07/07 Javascript
ImageZoom 图片放大镜效果(多功能扩展篇)
2010/04/14 Javascript
jQuery 获取对象 基本选择与层级
2010/05/31 Javascript
JQuery datepicker 使用方法
2011/05/20 Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
2015/09/04 Javascript
vue.js入门教程之基础语法小结
2016/09/01 Javascript
js实现城市级联菜单的2种方法
2017/06/23 Javascript
解决Vue.js应用回退或刷新界面时提示用户保存修改问题
2019/11/24 Javascript
JS实现可视化音频效果的实例代码
2020/01/16 Javascript
javascript实现多边形碰撞检测
2020/10/24 Javascript
[04:49]期待西雅图之战 2016国际邀请赛中国区预选赛WINGS战队赛后采访
2016/06/29 DOTA
[42:50]NB vs VP 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[44:43]完美世界DOTA2联赛决赛日 FTD vs GXR 第一场 11.08
2020/11/11 DOTA
[51:20]完美世界DOTA2联赛PWL S2 Magma vs PXG 第一场 11.28
2020/12/01 DOTA
使用Python的Flask框架构建大型Web应用程序的结构示例
2016/06/04 Python
Python基于回溯法解决01背包问题实例
2017/12/06 Python
pandas中Timestamp类用法详解
2017/12/11 Python
详解Python给照片换底色(蓝底换红底)
2019/03/22 Python
django多对多表的创建,级联删除及手动创建第三张表
2019/07/25 Python
Django Aggregation聚合使用方法解析
2019/08/01 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
2019/08/13 Python
如何基于python操作excel并获取内容
2019/12/24 Python
python 实现图像快速替换某种颜色
2020/06/04 Python
Python爬虫中Selenium实现文件上传
2020/12/04 Python
python中K-means算法基础知识点
2021/01/25 Python
HTML5 新事件 小结
2009/07/16 HTML / CSS
英国独特礼物想法和个性化礼物网站:notonthehighstreet.com
2018/04/16 全球购物
Blancsom美国/加拿大:服装和生活用品供应商
2018/07/27 全球购物
现代绅士日常奢侈品:Todd Snyder
2019/12/13 全球购物
公司财务自我评价分享
2013/12/17 职场文书
运动会解说词50字
2014/01/18 职场文书
《飘》英文读后感五篇
2019/10/11 职场文书
python实现调用摄像头并拍照发邮箱
2021/04/27 Python
Python机器学习之底层实现KNN
2021/06/20 Python