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 ajax BUG:object doesn't support this property or method
Jul 06 Javascript
jQuery实现复选框成对选择及对应取消的方法
Mar 03 Javascript
yui3的AOP(面向切面编程)和OOP(面向对象编程)
May 01 Javascript
JavaScript中使用自然对数ln的方法
Jun 14 Javascript
JS实现的N多简单无缝滚动代码(包含图文效果)
Nov 06 Javascript
js采用concat和sort将N个数组拼接起来的方法
Jan 21 Javascript
jQuery查找节点方法完整实例
Sep 13 Javascript
原生JavaScript实现AJAX、JSONP
Feb 07 Javascript
基于JavaScript实现拖动滑块效果
Feb 16 Javascript
Vue.js组件实现选项卡以及切换特效
Jul 24 Javascript
jquery css实现流程进度条
Mar 26 jQuery
js简单粗暴的发布订阅示例代码
Jan 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中的一些数组排序方法分享
2012/07/20 PHP
PHP_Cooikes不同页面无法传递的解决方法
2014/03/07 PHP
PHP基本语法总结
2014/09/06 PHP
Yii数据库缓存实例分析
2016/03/29 PHP
浅谈PHP中try{}catch{}的使用方法
2016/12/09 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
PHP中实现中文字串截取无乱码的解决方法
2018/05/29 PHP
jQuery.Validate 使用笔记(jQuery Validation范例 )
2010/06/25 Javascript
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
js替代copy(示例代码)
2013/11/27 Javascript
深入理解Javascript动态方法调用与参数修改的问题
2013/12/10 Javascript
无刷新预览所选择的图片示例代码
2014/04/02 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
js放大镜放大购物图片效果
2017/01/18 Javascript
javascript回调函数的概念理解与用法分析
2017/05/27 Javascript
bootstrap fileinput实现文件上传功能
2017/08/23 Javascript
深入理解Vuex 模块化(module)
2017/09/26 Javascript
Javacript中自定义的map.js  的方法
2017/11/26 Javascript
jQuery中$原理实例分析
2018/08/13 jQuery
详解基于iview-ui的导航栏路径(面包屑)配置
2019/02/22 Javascript
Layui Table js 模拟选中checkbox的例子
2019/09/03 Javascript
Vue中常用rules校验规则(实例代码)
2019/11/14 Javascript
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
python计算方程式根的方法
2015/05/07 Python
Python探索之爬取电商售卖信息代码示例
2017/10/27 Python
利用python对Excel中的特定数据提取并写入新表的方法
2018/06/14 Python
Django实战之用户认证(用户登录与注销)
2018/07/16 Python
Python的高阶函数用法实例分析
2019/04/11 Python
Django 对IP访问频率进行限制的例子
2019/08/30 Python
基于spring boot 日志(logback)报错的解决方式
2020/02/20 Python
python多进程下的生产者和消费者模型
2020/05/07 Python
快速实现一个简单的canvas迷宫游戏的示例
2018/07/04 HTML / CSS
eBay荷兰购物网站:eBay.nl
2020/06/26 全球购物
2015年优质护理服务工作总结
2015/04/08 职场文书
元旦晚会主持词开场白
2015/05/28 职场文书
雷锋之歌观后感
2015/06/10 职场文书