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 相关文章推荐
按给定几率进行随机抽取的js代码
Dec 28 Javascript
jquery div 居中技巧应用介绍
Nov 24 Javascript
js实现Select下拉框具有输入功能的方法
Feb 06 Javascript
jquery实现鼠标滑过小图查看大图的方法
Jul 20 Javascript
js随机生成字母数字组合的字符串 随机动画数字
Sep 02 Javascript
angularjs中的$eval方法详解
Apr 24 Javascript
Angular实现的敏感文字自动过滤与提示功能示例
Dec 29 Javascript
微信小程序wx.getImageInfo()如何获取图片信息
Jan 26 Javascript
vue.js通过路由实现经典的三栏布局实例代码
Jul 08 Javascript
微信小程序页面上下滚动效果
Nov 18 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
Jul 28 Javascript
前端vue+elementUI如何实现记住密码功能
Sep 20 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
php适配器模式介绍
2012/08/14 PHP
php实现执行某一操作时弹出确认、取消对话框
2013/12/30 PHP
PHP COOKIE及时生效的方法介绍
2014/02/14 PHP
php操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
PHP-FPM 的管理和配置详解
2019/02/17 PHP
php常用日期时间函数实例小结
2019/07/04 PHP
用js实现的一个Flash滚动轮换显示图片代码生成器
2007/03/14 Javascript
JavaScript中的稀疏数组与密集数组[译]
2012/09/17 Javascript
鼠标经过显示二级菜单js特效
2013/08/13 Javascript
javascript判断是否按回车键并解决浏览器之间的差异
2014/05/13 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
2015/03/03 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
2015/03/03 Javascript
jquery显示loading图片直到网页加载完成的方法
2015/06/25 Javascript
javascript瀑布流式图片懒加载实例解析与优化
2016/02/23 Javascript
基于jquery实现无限级树形菜单
2016/03/22 Javascript
js尾调用优化的实现
2019/05/23 Javascript
JavaScript 预解析的4种实现方法解析
2019/09/03 Javascript
webpack是如何实现模块化加载的方法
2019/11/06 Javascript
使用pkg打包ThinkJS项目的方法步骤
2019/12/30 Javascript
利用Python如何批量更新服务器文件
2018/07/29 Python
Django中URL的参数传递的实现
2019/08/04 Python
python异常处理try except过程解析
2020/02/03 Python
Django查询优化及ajax编码格式原理解析
2020/03/25 Python
python爬虫中PhantomJS加载页面的实例方法
2020/11/12 Python
联想英国官网:Lenovo英国
2019/07/17 全球购物
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
实习生自荐信范文
2013/11/13 职场文书
小学关爱留守儿童活动方案
2014/08/25 职场文书
安全生产工作汇报材料
2014/10/28 职场文书
建国大业观后感600字
2015/06/01 职场文书
企业法人任命书
2015/09/21 职场文书
2016年寒假见闻
2015/10/10 职场文书
大学生党课心得体会
2016/01/07 职场文书
《和时间赛跑》读后感3篇
2019/12/16 职场文书
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL