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 相关文章推荐
pjblog中的UBBCode.js
Apr 25 Javascript
Ajax,UTF-8还是GB2312 eval 还是execScript
Nov 13 Javascript
JS 图片缩放效果代码
Jun 09 Javascript
json数据的列循环示例
Sep 06 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
Dec 05 Javascript
node.js中的fs.read方法使用说明
Dec 17 Javascript
WEB前端开发框架Bootstrap3 VS Foundation5
May 16 Javascript
vue如何解决循环引用组件报错的问题
Sep 22 Javascript
Angular2使用SVG自定义图表(条形图、折线图)组件示例
May 10 Javascript
Vue移动端右滑屏幕返回上一页附源码下载
Jun 26 Javascript
JavaScript面向对象程序设计中对象的定义和继承详解
Jul 29 Javascript
layui内置模块layim发送图片添加加载动画的方法
Sep 23 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
在PHP3中实现SESSION的功能(三)
2006/10/09 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
2013/04/25 PHP
php实现水仙花数的4个示例分享
2014/04/08 PHP
php字符串过滤与替换小结
2015/01/26 PHP
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
jQuery.extend 函数详解
2012/02/03 Javascript
js 自动播放的实例代码
2013/11/19 Javascript
弹出最简单的模式化遮罩层的js代码
2013/12/04 Javascript
jquery判断浏览器后退时候弹出消息的方法
2014/08/11 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
使用ajax+jqtransform实现动态加载select
2014/12/01 Javascript
js实现鼠标移到链接文字弹出一个提示层的方法
2015/05/11 Javascript
NodeJS实现阿里大鱼短信通知发送
2016/01/17 NodeJs
jQuery EasyUI提交表单验证
2016/07/19 Javascript
js中DOM三级列表(代码分享)
2017/03/20 Javascript
利用Vue.js实现求职在线之职位查询功能
2017/07/03 Javascript
jQuery子选择器与可见性选择器实例分析
2019/06/28 jQuery
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
[04:03][TI9趣味短片] 小鸽子茶话会
2019/08/20 DOTA
Python中字典创建、遍历、添加等实用操作技巧合集
2015/06/02 Python
Python对象属性自动更新操作示例
2018/06/15 Python
Python并发:多线程与多进程的详解
2019/01/24 Python
Pycharm如何打断点的方法步骤
2019/06/13 Python
使用matplotlib绘制图例标签中带有公式的图
2019/12/13 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
2020/05/21 Python
如何查看python关键字
2021/01/17 Python
文秘专业自荐信
2013/10/14 职场文书
大二法英学生职业生涯规划范文
2014/02/27 职场文书
房屋继承公证书
2014/04/10 职场文书
股权转让协议书范本
2014/04/12 职场文书
大学理论知识学习自我鉴定
2014/04/28 职场文书
传播学专业毕业生自荐书
2014/07/01 职场文书
铁路安全反思材料
2014/12/24 职场文书
个性发展自我评价2015
2015/03/09 职场文书
Nginx配置文件详解以及优化建议指南
2021/09/15 Servers