jquery offset函数应用实例


Posted in Javascript onNovember 14, 2012

我们有时候需要实现这样一种功能:点击一个按钮,然后在按钮的下方显示一个div。当按钮位于角落时,div的位置设定就需要调整,不然,div将显示不完全。

我打算使用offset()方法实现此功能,但要先弄清楚他的功能。

offset()的top是指元素与document的上边的距离,而不是浏览器当前窗体的上边缘,如图1。

 图1:document高度超过window,浏览器出现滚动条,滚动滚动条,提交按钮的offset不变。

jquery offset函数应用实例

图2:document中的div有滚动条,提交按钮的offset随div的滚动变化而变化,与document无关

jquery offset函数应用实例

offset().left 同理。

通过上面的实验我们可以得出以下结论:offset() 获取指元素(html 元素)距离document上边缘、左边缘的像素,我们只要清楚浏览器中document是那部分就可以正确使用offset()。关于document可以阅读 JQuery   window、document、 body

那么我们怎么保证元素完整的显示在浏览器视窗里呢?我们可以结合offset 和 scrollTop来实现。

scrollTop获取的是什么值?根据我的实验,只有元素具有滚动条,并且滚动了一定距离,才有scrollTop值,没有滚动条的元素scrollTop=0,比如一个button的scrollTop恒等于0。以前我有种错误的认知:document与他里面的子元素具有相同的滚动值,这是错误的,子元素与容器的滚动值无关。

按图1(document有滚动条),需计算控件的offsetTop、高度,document的scrollTop;

按图2(document无滚动条),计算控件的offsetTop、高度

源代码:jquery_offset.rar

Javascript 相关文章推荐
实现点击列表弹出列表索引的两种方式
Mar 08 Javascript
AngularJS快速入门
Apr 02 Javascript
jQuery实现进度条效果代码
Dec 17 Javascript
Bootstrap模块dropdown实现下拉框响应
May 22 Javascript
jQuery.Validate表单验证插件的使用示例详解
Jan 04 Javascript
使用async await 封装 axios的方法
Jul 09 Javascript
详解Ubuntu安装angular-cli遇到的坑
Sep 08 Javascript
手写Vue弹窗Modal的实现代码
Sep 11 Javascript
详解微信小程序之提高应用速度小技巧
Jan 07 Javascript
javascript 函数的暂停和恢复实例详解
Apr 25 Javascript
JS绘图Flot应用图形绘制异常解决方案
Oct 16 Javascript
使用vue判断当前环境是安卓还是IOS
Apr 12 Vue.js
如何让div span等元素能响应键盘事件操作指南
Nov 13 #Javascript
给artDialog 5.02 增加ajax get功能详细介绍
Nov 13 #Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
Nov 13 #Javascript
Google的跟踪代码 动态加载js代码方法应用
Nov 12 #Javascript
Javascript开发之三数组对象实例介绍
Nov 12 #Javascript
在浏览器窗口上添加遮罩层的方法
Nov 12 #Javascript
php对mongodb的扩展(小试牛刀)
Nov 11 #Javascript
You might like
Session的工作方式
2006/10/09 PHP
Breeze 文章管理系统 v1.0.0正式发布
2006/12/14 PHP
php中批量修改文件后缀名的函数代码
2011/10/23 PHP
使用PHP求两个文件的相对路径
2013/06/20 PHP
php利用事务处理转账问题
2015/04/22 PHP
PHP中危险的file_put_contents函数详解
2017/11/04 PHP
初识JQuery 实例一(first)
2011/03/16 Javascript
JavaScript利用正则表达式去除日期中的“-”
2014/07/01 Javascript
Flexigrid在IE下不显示数据的有效处理方法
2014/09/04 Javascript
javascript函数自动执行常用方法汇总
2016/03/28 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
2016/06/22 Javascript
关于JS中的方法是否加括号的问题
2016/07/27 Javascript
angular中ui calendar的一些使用心得(推荐)
2017/11/03 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
2018/08/03 Javascript
Electron + vue 打包桌面操作流程详解
2019/06/24 Javascript
vue-cli点击实现全屏功能
2020/03/07 Javascript
python装饰器decorator介绍
2014/11/21 Python
跟老齐学Python之使用Python查询更新数据库
2014/11/25 Python
Python NumPy库安装使用笔记
2015/05/18 Python
Python合并字符串的3种方法
2015/05/21 Python
python开发之list操作实例分析
2016/02/22 Python
python进程管理工具supervisor的安装与使用教程
2017/09/05 Python
django 发送手机验证码的示例代码
2018/04/25 Python
python实现NB-IoT模块远程控制
2018/06/20 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
2019/01/22 Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
2019/05/13 Python
CSS3实战第一波 让我们尽情的圆角吧
2010/08/27 HTML / CSS
英国女鞋购物网站:Moda in Pelle
2019/02/18 全球购物
Booking.com亚太地区:Booking.com APAC
2020/02/07 全球购物
在校学生职业规划范文
2014/01/08 职场文书
经营理念口号
2014/06/21 职场文书
改作风抓落实促发展心得体会
2014/09/10 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
浅谈golang package中init方法的多处定义及运行顺序问题
2021/05/06 Golang
Prometheus 监控MySQL使用grafana展示
2021/08/30 MySQL
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫