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 相关文章推荐
IE与Firefox在JavaScript上的7个不同句法分享
Oct 30 Javascript
一个JavaScript获取元素当前高度的实例
Oct 29 Javascript
jQuery实现带滚动线条导航效果的方法
Jan 30 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
Mar 10 Javascript
JavaScript实现垂直滚动条效果
Jan 18 Javascript
jQuery读取XML文件的方法示例
Feb 03 Javascript
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
Oct 25 Javascript
vue+node+webpack环境搭建教程
Nov 05 Javascript
详解小程序原生使用ES7 async/await语法
Aug 06 Javascript
Vue Router history模式的配置方法及其原理
May 30 Javascript
基于react项目打包css引用路径错误解决方案
Oct 28 Javascript
超详细小程序定位地图模块全系列开发教学
Nov 24 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
ThinkPHP视图查询详解
2014/06/30 PHP
关于PHP开发的9条建议
2015/07/27 PHP
Yii实现简单分页的方法
2016/04/29 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
JS创建优美的页面滑动块效果 - Glider.js
2007/09/27 Javascript
JS 密码强度验证(兼容IE,火狐,谷歌)
2010/03/15 Javascript
从零开始学习jQuery (四) jQuery中操作元素的属性与样式
2011/02/23 Javascript
window.open以post方式将内容提交到新窗口
2012/12/26 Javascript
JS执行删除前的判断代码
2014/02/18 Javascript
JavaScript不刷新实现浏览器的前进后退功能
2014/11/05 Javascript
基于WebUploader的文件上传js插件
2016/08/19 Javascript
jQuery Chosen通用初始化
2017/03/07 Javascript
input type=file 选择图片并且实现预览效果的实例
2017/10/26 Javascript
解决option标签selected=&quot;selected&quot;属性失效的问题
2017/11/06 Javascript
浅谈Node.js爬虫之网页请求模块
2018/01/11 Javascript
详解react内联样式使用webpack将px转rem
2018/09/13 Javascript
基于vue实现移动端圆形旋钮插件效果
2018/11/28 Javascript
js变量值传到php过程详解 将php解析成数据
2019/06/26 Javascript
微信小程序Echarts覆盖正常组件问题解决
2019/07/13 Javascript
vue使用echarts实现水平柱形图实例
2020/09/09 Javascript
详解javascript脚本何时会被执行
2021/02/05 Javascript
有关wxpython pyqt内存占用问题分析
2014/06/09 Python
python 获取图片分辨率的方法
2019/01/08 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
2019/04/26 Python
不到40行代码用Python实现一个简单的推荐系统
2019/05/10 Python
PyQt5重写QComboBox的鼠标点击事件方法
2019/06/25 Python
matplotlib交互式数据光标实现(mplcursors)
2021/01/13 Python
使用css3绘制出各种几何图形
2016/08/17 HTML / CSS
html5利用canvas实现颜色容差抠图功能
2019/12/23 HTML / CSS
会计实习期自我鉴定
2013/10/06 职场文书
法定代表人身份证明书(含说明)
2014/10/02 职场文书
国际残疾人日广播稿范文
2014/10/09 职场文书
先进工作者申报材料
2014/12/23 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书
redis内存空间效率问题的深入探究
2021/05/17 Redis