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 选择表格(table)里的行和列及改变简单样式
Dec 15 Javascript
javascript实现日期格式转换
Dec 16 Javascript
基于jquery实现无限级树形菜单
Mar 22 Javascript
深入理解JS中的substr和substring
Apr 26 Javascript
Node.js读写文件之批量替换图片的实现方法
Sep 07 Javascript
Centos6.8下Node.js安装教程
May 12 Javascript
React中使用collections时key的重要性详解
Aug 07 Javascript
Express使用html模板的详细代码
Sep 18 Javascript
JS/jQuery实现DIV延时几秒后消失或显示的方法
Feb 12 jQuery
通过一次报错详细谈谈Point事件
May 17 Javascript
实例分析编写vue组件方法
Feb 12 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
Sep 23 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使用curl访问https示例分享
2014/01/17 PHP
php上传文件常见问题总结
2015/02/03 PHP
php编写批量生成不重复的卡号密码代码
2015/05/14 PHP
PHP操作mysql数据库分表的方法
2016/06/09 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
ThinkPHP5&amp;5.1框架关联模型分页操作示例
2019/08/03 PHP
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
JQuery获取文本框中字符长度的代码
2011/09/29 Javascript
ExtJs使用总结(非常详细)
2012/03/22 Javascript
jQuery使用height()获取高度需要注意的地方
2014/12/13 Javascript
javascript密码强度校验代码(两种方法)
2015/08/10 Javascript
JavaScript中关联原型链属性特性
2016/02/13 Javascript
js控制TR的显示隐藏
2016/03/04 Javascript
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
简单两步使用node发送qq邮件的方法
2019/03/01 Javascript
[01:52]深扒TI7聊天轮盘语音出处7
2017/05/11 DOTA
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
django缓存配置的几种方法详解
2018/07/16 Python
python根据list重命名文件夹里的所有文件实例
2018/10/25 Python
利用Python将文本中的中英文分离方法
2018/10/31 Python
pandas分别写入excel的不同sheet方法
2018/12/11 Python
10行Python代码计算汽车数量的实现方法
2019/10/23 Python
python实现两个一维列表合并成一个二维列表
2019/12/02 Python
Windows下python3安装tkinter的问题及解决方法
2020/01/06 Python
python构造函数init实例方法解析
2020/01/19 Python
Python configparser模块常用方法解析
2020/05/22 Python
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
芝加哥牛排公司:Chicago Steak Company
2018/10/31 全球购物
Oral-B荷兰:牙医最推荐的品牌
2020/02/25 全球购物
服装厂厂长职责
2013/12/16 职场文书
九九重阳节标语
2014/10/07 职场文书
欠款起诉书范文
2015/05/19 职场文书
2015年小班保育员工作总结
2015/05/27 职场文书
参观监狱警示教育心得体会
2016/01/15 职场文书
解决jupyter notebook图片显示模糊和保存清晰图片的操作
2021/04/24 Python