zoukankan      html  css  js  c++  java
  • Jquery Offset, Document, Window 都是什么

    From http://www.cnblogs.com/luhe/archive/2012/11/14/2769263.html
     

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

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

    实验:

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

       图1:document高度超过window,window出现滚动条,拖动滚动条,提交按钮的offset().top不变,因为按钮与document上边缘距离未变。

      

      图2:document中的div有滚动条,提交按钮的offset().top随div滚动条变化而变化,因为按钮与document上边缘距离已变。

      

      offset().left 同理。

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

    应用:

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

      scrollTop获取的是什么值?根据我的实验,只有元素具有滚动条,并且滚动了一定距离,才有scrollTop值,没有滚动条的元素scrollTop=0。

      上面提交button无滚动条,它的scrollTop恒等于0。

      以前我有种错误的认知:document里面的元素与document具有相同的滚动值,这是错误的,子元素与容器的滚动值无关。

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

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

      2.浮动div在滚动条滚动时保持在原位

      按图1,

    var firstTop = $("浮动DIV").offset().top;
    var top = firstTop + $(document).scrollTop();
    $(浮动DIV).offset({ top: top });

      按图2,

    var top = $(浮动DIV).offset().top;
    $("浮动DIV").offset({ top: top });
  • 相关阅读:
    SpringBoot 添加JSP支持
    SpringBoot的过滤器和拦截器和全局异常处理
    SpringBoot日志配置-logback和log4j2
    SpringBoot使用thymeleaf模板
    乐观锁与悲观锁
    js中的val extinner 的区别
    centos7安装最新版node和npm
    ES2020,你需要知道的一切内容!
    U盘弹出文件或目录损坏且无法读取实测解决教程
    MySQL远程连接丢失问题解决方法
  • 原文地址:https://www.cnblogs.com/webglcn/p/3282771.html
Copyright © 2011-2022 走看看