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 相关文章推荐
js实现的标题栏新消息闪烁提示效果
Jun 06 Javascript
js与jquery回车提交的方法
Feb 03 Javascript
JavaScript将当前时间转换成UTC标准时间的方法
Apr 06 Javascript
JavaScript基于ajax编辑信息用法实例
Jul 15 Javascript
jQuery图片轮播滚动切换代码分享
Apr 20 Javascript
基于JavaScript代码实现pc与手机之间的跳转
Dec 23 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
Dec 16 Javascript
Bootstrap导航条学习使用(一)
Feb 08 Javascript
解决vue-router在同一个路由下切换,取不到变化的路由参数问题
Sep 01 Javascript
微信小程序Page中data数据操作和函数调用方法
May 08 Javascript
微信小程序实现选择地址省市区三级联动
Jun 21 Javascript
javascript实现下拉菜单效果
Feb 09 Javascript
如何让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
ZendFramework2连接数据库操作实例
2017/04/18 PHP
Laravel5.1框架注册中间件的三种场景详解
2019/07/09 PHP
JavaScript 5 新增 Array 方法实现介绍
2012/02/06 Javascript
javascript Slip.js实现整屏滑动的手机网页
2015/11/25 Javascript
分享我的jquery实现下拉菜单心的
2015/11/29 Javascript
浅析在javascript中创建对象的各种模式
2016/05/06 Javascript
深入理解JQuery中的事件与动画
2016/05/18 Javascript
JavaScript简单实现弹出拖拽窗口(一)
2016/06/17 Javascript
AngularJs Managing Service Dependencies详解
2016/09/02 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
jQuery中 DOM节点操作方法大全
2017/10/12 jQuery
微信小程序获取手机系统信息的方法【附源码下载】
2017/12/07 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
2018/05/30 Javascript
Vue2.0点击切换类名改变样式的方法
2018/08/22 Javascript
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
vue.js路由mode配置之去掉url上默认的#方法
2019/11/01 Javascript
npm qs模块使用详解
2020/02/07 Javascript
vue下载二进制流图片操作
2020/10/26 Javascript
[01:06:26]全国守擂赛第二周 Team Coach vs DeMonsTer
2020/04/28 DOTA
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
2019/04/11 Python
python实现替换word中的关键文字(使用通配符)
2020/02/13 Python
CSS实现鼠标滑过鼠标点击代码写法
2016/12/26 HTML / CSS
JD Sports马来西亚:英国领先的运动鞋和运动服饰零售商
2018/03/13 全球购物
中国汽车租赁行业头部企业:一嗨租车
2019/05/16 全球购物
abstract class和interface有什么区别?
2012/01/03 面试题
行政经理岗位职责
2013/11/09 职场文书
九年级科学教学反思
2014/01/29 职场文书
四个太阳教学反思
2014/02/01 职场文书
学校课外活动总结
2014/05/08 职场文书
小学教师个人先进事迹材料
2014/05/17 职场文书
品牌转让协议书
2014/08/20 职场文书
竞选班干部演讲稿400字
2014/08/20 职场文书
承诺书范本
2015/01/21 职场文书
2015年党支部公开承诺书
2015/01/22 职场文书
2015年国际护士节演讲稿
2015/03/18 职场文书
JAVA API 实用类 String详解
2021/10/05 Java/Android