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 03 Javascript
jQuery 页面 Mask实现代码
Jan 09 Javascript
浅析jQuery中调用ajax方法时在不同浏览器中遇到的问题
Jun 11 Javascript
JavaScript定时器和优化的取消定时器方法
Jul 03 Javascript
JS调用某段SQL语句的方法
Oct 20 Javascript
AngularJS  双向数据绑定详解简单实例
Oct 20 Javascript
Vue原理剖析 实现双向绑定MVVM
May 03 Javascript
Vue自定义指令实现checkbox全选功能的方法
Feb 28 Javascript
基于angular6.0实现的一个组件懒加载功能示例
Apr 12 Javascript
原生JS实现的跳一跳小游戏完整实例
Jan 27 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
Sep 23 Javascript
javascript实现移动端上传图片功能
Aug 18 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中json_encode中文编码问题分析
2011/09/13 PHP
PHP生成Gif图片验证码
2013/10/27 PHP
php微信公众号开发模式详解
2016/11/28 PHP
PHP实现数组的笛卡尔积运算示例
2017/12/15 PHP
PHP数组遍历的几种常见方式总结
2019/02/15 PHP
javascript编程起步(第三课)
2007/02/27 Javascript
基于jQuery的合并表格中相同文本的相邻单元格的代码
2011/04/06 Javascript
用表格输出1-1000之间的数字实现代码(附特效)
2013/04/21 Javascript
jquery修改属性值实例代码(设置属性值)
2014/01/06 Javascript
浅析AngularJS中的生命周期和延迟处理
2015/06/18 Javascript
JavaScript预解析及相关技巧分析
2016/04/21 Javascript
学习Bootstrap滚动监听 附调用方法
2016/07/02 Javascript
浅谈EasyUI常用控件的禁用方法
2016/11/09 Javascript
JS实现动画兼容性的transition和transform实例分析
2016/12/13 Javascript
浅谈Vuejs中nextTick()异步更新队列源码解析
2017/12/31 Javascript
Router解决跨模块下的页面跳转示例
2018/01/11 Javascript
layUI使用layer.open,在content打开数据表格,获取值并返回的方法
2019/09/26 Javascript
浅析vue-router实现原理及两种模式
2020/02/11 Javascript
使用Python中的tkinter模块作图的方法
2017/02/07 Python
python 获取网页编码方式实现代码
2017/03/11 Python
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
Python matplotlib画图与中文设置操作实例分析
2019/04/23 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
2020/04/08 Python
Selenium webdriver添加cookie实现过程详解
2020/08/12 Python
python爬虫爬取网页数据并解析数据
2020/09/18 Python
布里斯班女装时尚品牌:Adrift
2017/12/28 全球购物
构造方法和其他方法的区别
2016/04/26 面试题
中英双版中文教师求职信
2013/10/27 职场文书
洗煤厂厂长岗位职责
2014/01/03 职场文书
购房协议书范本
2014/10/02 职场文书
2015年世界卫生日活动总结
2015/02/09 职场文书
德能勤绩廉个人总结
2015/02/14 职场文书
音乐教师求职信范文
2015/03/20 职场文书
2016情人节宣传语
2015/07/14 职场文书
2016教师节感恩话语
2015/12/09 职场文书
Python Matplotlib绘制条形图的全过程
2021/10/24 Python