JS实现长图上下滚动效果


Posted in Javascript onMarch 19, 2020

本文实例为大家分享了JS实现长图上下滚动的具体代码,供大家参考,具体内容如下

案例描述

将一张长图放在某一固定长宽的盒子里,当鼠标置于盒子的上半部分时,图片向下滑直到到达图片的底部停止;当鼠标置于盒子的下半部分时,图片向上滑直到到达图片的顶部停止。

案例图示

JS实现长图上下滚动效果

HTML

<div id="box">
 <img id="pic" src="./program1/images/1.jpg" alt="">
 <div id="top"></div>
<div id="bottom"></div>

CSS

CSS不作过多解释,详解请看注释部分

//通用样式
 * {
 margin: 0;
 padding: 0;
 }
 #box {
 width: 750px;
 height: 200px;
 border: 1px solid #000;
 margin: 200px auto;
 overflow: hidden; /*图片溢出部分隐藏*/
 position: relative; /*子绝父相*/
 }

 #pic {
 position: absolute;
 left: 0;
 right: 0;
 }

 
 #top {
 width: 100%;
 height: 50%;
 position: absolute; /*子绝父相*/
 left: 0;
 cursor: pointer; /*鼠标*/
  /* 顶部对齐 */
 top:0; 
 }
 
 #bottom {
 width: 100%;
 height: 50%;
 position: absolute; /*子绝父相*/
 left: 0;
 cursor: pointer;
 /* 底部对齐 */
 bottom: 0;
 }
</style>

JS核心代码

JS详解----监听鼠标进入事件(以盒子上半部分为例)

鼠标停留在盒子上半部分时,使用onmouseover事件。首先要清除定时器,否则可能会出现定时器重叠现象;再设置定时器,定时器中的num就是改变图片的top属性以达到图片向上滑动的效果。if语句中的条件是为了达到图片到达底部时停止向上滑的目的。(盒子下半部分类似)

top.onmouseover = function(){
  // 改变pic中的top 
  // 清除定时器
  // alert(0);
  clearInterval(intervalId);

  // 设置定时器 
  intervalId = setInterval(function(){
  if(num > -600){
   num -= 10;
   pic.style.top = num + "px";
  }
  
  },20);

JS详解----监听鼠标移出事件(以盒子上半部分为例)

鼠标移出时使用onmouseout事件,清除定时器。(盒子下半部分类似)

top.onmouseout = function() {
  clearInterval(intervalId);
 }

JS全部代码展示

<script>
 window.onload = function() {
 // 获取标签
 var box = document.getElementById('box');
 var pic = document.getElementById('pic');
 var top = document.getElementById('top');
 var bottom = document.getElementById('bottom');
 var intervalId, num = 0;
 // 鼠标进入上半部分
 top.onmouseover = function(){
  // 改变pic中的top 
  // 清除定时器
  // alert(0);
  clearInterval(intervalId);

  // 设置定时器
  intervalId = setInterval(function(){
  if(num > -600){
   num -= 10;
   pic.style.top = num + "px";
  }
  
  },20);

 };
  // 鼠标移出上半部分
 top.onmouseout = function() {
  clearInterval(intervalId);
 }
 // 鼠标进入下半部分
 bottom.onmouseover = function(){
  // 改变pic中的top 
  // 清除定时器
  // alert(0);
  clearInterval(intervalId);

  // 设置定时器
  intervalId = setInterval(function(){
  if(num < 0){
   num += 10;
   pic.style.top = num + "px";
  }
  
  },20);
 };
 // 鼠标移出下半部分
 bottom.onmouseout = function() {
  clearInterval(intervalId);
 };
 
 }
</script>

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

Javascript 相关文章推荐
javascript 无提示关闭窗口脚本
Aug 17 Javascript
javascript面向对象编程代码
Dec 19 Javascript
node.js中的fs.futimesSync方法使用说明
Dec 17 Javascript
jQuery Html控件基本操作(日常收集整理)
Mar 11 Javascript
深入解析JavaScript中函数的Currying柯里化
Mar 19 Javascript
原生JS实现图片左右轮播
Dec 30 Javascript
d3.js入门教程之数据绑定详解
Apr 28 Javascript
bootstrap表单示例代码分享
May 18 Javascript
JS获取字符对应的ASCII码实例
Sep 10 Javascript
微信小程序实现给嵌套template模板传递数据的方式总结
Dec 18 Javascript
vue之封装多个组件调用同一接口的案例
Aug 11 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
Jan 19 Javascript
JavaScript实现简单计算器
Mar 19 #Javascript
jQuery实现颜色打字机的完整代码
Mar 19 #jQuery
webpack 动态批量加载文件的实现方法
Mar 19 #Javascript
vue-cli3项目升级到vue-cli4 的方法总结
Mar 19 #Javascript
js实现经典贪吃蛇小游戏
Mar 19 #Javascript
javascrpt密码强度校验函数详解
Mar 18 #Javascript
Node.js Domain 模块实例详解
Mar 18 #Javascript
You might like
我的论坛源代码(八)
2006/10/09 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
2014/06/30 PHP
PHP分页类集锦
2014/11/18 PHP
用php来限制每个ip每天浏览页面数量的实现思路
2015/02/24 PHP
Yii框架组件和事件行为管理详解
2016/05/20 PHP
thinkPHP+ajax实现统计页面pv浏览量的方法
2017/03/15 PHP
用javascript实现画板的代码
2007/09/05 Javascript
JQuery上传插件Uploadify使用详解及错误处理
2010/04/27 Javascript
纯CSS打造的导航菜单(附jquery版)
2010/08/07 Javascript
Javascript生成json的函数代码(可以用php的json_decode解码)
2012/06/11 Javascript
Js+Flash实现访问剪切板操作
2012/11/20 Javascript
JavaScript中的字符串操作详解
2013/11/12 Javascript
Jquery取得iframe下内容的方法
2013/11/18 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
jQuery中:password选择器用法实例
2015/01/03 Javascript
jQuery使用$.get()方法从服务器文件载入数据实例
2015/03/25 Javascript
Js与Jq 获取页面元素值的方法和差异对比
2015/04/30 Javascript
js实现当鼠标移到表格上时显示这一格全部内容的代码
2016/06/12 Javascript
如何在Angular.JS中接收并下载PDF
2016/11/26 Javascript
JavaScript获取URL参数的方法之一
2017/03/24 Javascript
Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码
2017/08/22 Javascript
微信小程序picker组件下拉框选择input输入框的实例
2017/09/20 Javascript
JS匿名函数和匿名自执行函数概念与用法分析
2018/03/16 Javascript
vue操作下拉选择器获取选择的数据的id方法
2018/08/24 Javascript
浅入深出Vue之组件使用
2019/07/11 Javascript
微信小程序解析富文本过程详解
2019/07/13 Javascript
vue 解除鼠标的监听事件的方法
2019/11/13 Javascript
python迭代器实例简析
2014/09/25 Python
通过Python 获取Android设备信息的轻量级框架
2017/12/18 Python
Python 抓取微信公众号账号信息的方法
2019/06/14 Python
Python PyCharm如何进行断点调试
2019/07/05 Python
PyTorch预训练的实现
2019/09/18 Python
C#笔试题
2015/07/14 面试题
中学生操行评语大全
2014/04/24 职场文书
工作经验交流材料
2014/12/30 职场文书
Oracle11g R2 安装教程完整版
2021/06/04 Oracle