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 相关文章推荐
jQuery中siblings()方法用法实例
Jan 08 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
Dec 29 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
May 24 Javascript
一个超简单的jQuery回调函数例子(分享)
Aug 08 Javascript
JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
Oct 10 Javascript
vue指令以及dom操作详解
Mar 04 Javascript
十大热门的JavaScript框架和库
Mar 21 Javascript
Django使用多数据库的方法
Sep 06 Javascript
微信小程序地图导航功能实现完整源代码附效果图(推荐)
Apr 28 Javascript
vue中监听返回键问题
Aug 28 Javascript
使用JS实现动态时钟
Mar 12 Javascript
vue实现省市区联动 element-china-area-data插件
Apr 22 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
PHP中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
Sublime里直接运行PHP配置方法
2014/11/28 PHP
WebQQ最新登陆协议的用法
2014/12/22 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
2015/12/20 PHP
PHP中Laravel 关联查询返回错误id的解决方法
2017/04/01 PHP
动态调用css文件——jquery的应用
2007/02/20 Javascript
JQuery表格内容过滤的实现方法
2013/07/05 Javascript
javascript利用apply和arguments复用方法
2013/11/25 Javascript
JS将所有对象s的属性复制给对象r(原生js+jquery)
2014/01/25 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
javascript原始值和对象引用实例分析
2015/04/25 Javascript
bootstrap下拉列表与输入框组结合的样式调整
2016/10/08 Javascript
BootStrap实现带有增删改查功能的表格(DEMO详解)
2016/10/26 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
2016/10/30 Javascript
Node.js中使用mongoose操作mongodb数据库的方法
2017/09/12 Javascript
Vue 引入AMap高德地图的实现代码
2019/04/29 Javascript
vue页面切换项目实现转场动画的方法
2019/11/12 Javascript
JavaScript中变量提升和函数提升的详解
2020/08/07 Javascript
JavaScript仿京东轮播图效果
2021/02/25 Javascript
Python实现计算字符串中出现次数最多的字符示例
2019/01/21 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
python实现kNN算法识别手写体数字的示例代码
2019/08/16 Python
Python解析多帧dicom数据详解
2020/01/13 Python
解析HTML5中的新功能本地存储localStorage
2016/03/01 HTML / CSS
HTML5通用接口详解
2016/06/12 HTML / CSS
耐克中国官方商城:Nike中国
2018/10/18 全球购物
机电专业个人自荐信格式模板
2013/09/23 职场文书
英语自荐信范文
2013/12/11 职场文书
先进个人事迹材料
2014/12/29 职场文书
个人总结怎么写
2015/02/26 职场文书
2019年工作总结范文
2019/05/21 职场文书
pytorch 梯度NAN异常值的解决方案
2021/06/05 Python
总结Java对象被序列化的两种方法
2021/06/30 Java/Android
《仙剑客栈2》第一弹正式宣传片公开 年内发售
2022/04/07 其他游戏
处理canvas绘制图片模糊问题
2022/05/11 Javascript
详解NumPy中的线性关系与数据修剪压缩
2022/05/25 Python