Jquery判断页面元素是否在浏览器的可视区域内

前端开发中,有时需要判断某个元素是否在浏览器的可视区域内,或者是否已经滚动出了可视区域.首先想到的便是javascript操作,原生方法自然可以,不过Jquery已经封装了一些属性,使用起来更方便些,我们这里就讨论这种Jquery的方式.

假设此元素为 #item,先说几个关键的属性:

jQuery('#item').offset().top

item 的绝对偏移量,指#item的实际尺寸(即不包括外边框margin)的上边界到页面顶端的距离.这个值不随窗口滚动而改变

jQuery('#item').outerHeight()

item 的实际尺寸,即 height+padding+border

jQuery('#item').outerHeight(true)

item的实际尺寸及外边距,即 height+padding+border+margin

jQuery(window).scrollTop()

窗口滚动的顶部偏移量,即此时页面的上边界到可视区域的上边界的偏移量,简单的可以理解成整个页面滚动了多少距离

jQuery(window).height()

浏览器窗口可视区域的高度

在窗口上下滚动的情况下,一个页面元素的状态有3种,1.向上滚动超出可视区域,2.向下滚动超出可视区域,3.在可视区域内.很明显,我们需要的就是1和2两种情况.

情况1:

由于元素随页面向上滚动,所以自然能想到,在页面顶部偏移量不断增加的过程中,边界是从上至下经过一段距离,而这个距离的区域恰好就是元素本身的偏移量加上元素本身的高度,所以当

jQuery(window).scrollTop()>(jQuery('#item').offset().top+jQuery('#item').outerHeight())

这个表达式结果为true时,表示元素已经向上滚动,并超出了可视区域.

情况2:

与情况1相反,向下滚动的过程,页面顶部的偏移量是在不断减少中,所以当它小于元素偏移量与可视区域高度的差值的时候,元素则向下并超出了可视区域,即

jQuery(window).scrollTop()

那么结论就是将这两种情况作或运算即可达到目的.以下表达式结果如果为true,则 #item 不在可视区域内.反之则在可视区域内.

(jQuery(window).scrollTop()>(jQuery('#item').offset().top+jQuery('#item').outerHeight()))||((jQuery(window).scrollTop()+jQuery(window).height())

参考文章

相关阅读:

jquery如何判断3张图片都被点击过,并且是按顺序点击的

请问有没有跨平台的集群管理软件?

一个关于slice的问题

php关于可变类名的疑问

resin出现没响应的情况,有什么方法查看产生问题的原因?

停用硬件加速后,canvas渲染速度变快了?

大家怎样通过模板导出word

对已授权的微信用户,怎么能更换他的头像呢?

一个AJAX请求如何获取后端口多次返回的状态信息

标签怎么修改播放器按钮的样式

php 设计问题,我写了一个Config类,读取配置文件

spring mvc无法进入controller

多tab下ajax动态分页

怎样获取鼠标悬停1秒后的位置

margin: 150 auto;这种方式不能居中吗?

使用了七牛云储存水印样式后分享到qq空间出错

如何用C语言实现采用共享内存的进程间通信?

手机前端开发

less的函数内只能写css属性?能写css选择器吗?

ios app崩溃的时候如何通过代码层面确定崩溃位置

php开发是可视的吗,javascript,html_Jquery判断页面元素是否在浏览器的可视区域内,javascript,html,css,html5 - phpStudy...相关推荐

  1. JavaScript 鼠标坐标、元素尺寸、浏览器尺寸及坐标

    鼠标坐标 客户端(可视)的鼠标坐标 MouseEvent.clientX:MouseEvent.clientY在元素上单击鼠标按钮时输出鼠标指针在窗口之间的坐标. 页面鼠标坐标page 光标到页面而非 ...

  2. 手机php网站不显示图片,javascript,_手机页面用innerHTML拼接的图片不显示,javascript - phpStudy...

    手机页面用innerHTML拼接的图片不显示 测试代码 input,button{ height:35px; } add function addEmotion(t){ alert(t); } var ...

  3. html跳转qq浏览器,javascript,_银联在线支付接口,qq浏览器不能跳转,javascript - phpStudy...

    银联在线支付接口,qq浏览器不能跳转 银联在线支付接口,qq浏览器不能跳转,其他浏览器可以跳转 //html代码 提交 确认充值 //js代码 function topupmoney() { //充值 ...

  4. php是否qq里面打开网页,javascript,_js判断页面是否为手机qq打开?,javascript - phpStudy...

    js判断页面是否为手机qq打开? //微信微博 var browser = { versions: function() { var u = navigator.userAgent, app = na ...

  5. 浏览器了解(四)javascript解析

    Javascript解析 首先我们来了解以下几点: 1.       javascript是如何操作DOMTree的?浏览器通过binding机制完成javascript和DOM的绑定,简单来说,ja ...

  6. html5 自动失去焦点,JavaScript onblur 事件:页面元素失去焦点

    JavaScript onblur 事件 页面元素失去焦点时会触发 onblur 事件. 下面的例子验证用户输入的内容是否符合要求的11位手机号码: function checkMobile(inpu ...

  7. JavaScript学习笔记(四)之浏览器篇

    目录 1.内核版本 2.浏览器对象 window navigator screen location document cookies history 3.操作DOM 插播querySelector语 ...

  8. javascript编写_如何通过编写自己的Web开发框架来提高JavaScript技能

    javascript编写 Have you ever asked yourself how a framework works? 您是否曾经问过自己框架是如何工作的? When I discovere ...

  9. C#开发微信门户及应用(44)--微信H5页面开发的经验总结

    在我们开发微信页面的时候,需要大量用到了各种呈现的效果,一般可以使用Boostrap的效果来设计不同的页面,不过微信团队也提供很多这方面的资源,包括JSSDK的接口,以及Weui的页面样式和相关功能页 ...

最新文章

  1. 数据结构与算法(8-1)顺序表查找及优化
  2. sharepoint指定的人可以看到列表项
  3. HDU1599 find the mincost route Floyd算法求最小环
  4. SpringSecurity实现拦截未登录页面
  5. 基于SpringCloud实现Shard-Jdbc的分库分表模式,数据库扩容方案
  6. mqtt安装使用教程。(基于rabbitmq插件,docker部署,k8s部署,python教程)
  7. java基础之集合:List Set Map的概述以及使用场景
  8. JavaIO编程之ReadLine
  9. [生存志] 第54节 武经七书司马法
  10. 北斗卫星导航系统基础篇之(三)——北斗缩略词详解
  11. 小程序包大小超过限制
  12. matlab共轭梯度法解线性方程组,计算方法——共轭梯度法求解线性方程组.pdf
  13. python海龟怎样写字又快又好看_python海龟画图
  14. c语言极限,C语言问题合集
  15. android x86 remix,Phoenix OS X86 与 Remix OS X86 对比体验
  16. 2022-渗透测试-xss小游戏通关
  17. linux后台挂起、恢复进程相关命令
  18. 发邮件时提示连接服务器失败,发送邮件时经常出现发送失败或是连接超时什么原因...
  19. 2020.03.18模拟赛17(第三题)
  20. 弘辽科技:淘宝排名下降怎么回事呢?是什么原因导致排名下降?

热门文章

  1. CGContext转CC
  2. nHibernate Mapping By Code - Introduction
  3. 广州技术沙龙第 2、3 期参会者twitter、blog、兴趣大合集
  4. java mysql show status_Java 能不能执行mysql 中的show master status 命令
  5. excel按季度分类汇总_Excel数据分析实战(1)--电商销售记录分析
  6. 爬虫,关于 video 标签 src 带有blob:http的 一些想法
  7. 如何理解Java中的自动拆箱和自动装箱?
  8. 了解JVM运行时的内存分配
  9. Android 分享功能大全
  10. mongoose查找若存在,则什么都不做,若不存在,则插入