• js进阶 11-8 jquery如何获取元素相对于父元素的位置


    js进阶 11-8  jquery如何获取元素相对于父元素的位置

    一、总结

    一句话总结:用jquery的position方法,但是使用这个方法的前提是父元素相对定位,子元素绝对定位,否则和offset()一样。

    1、jquery中jquery集合中的匿名函数的两个参数是什么?

    $(selector).offset(function(index,oldoffset)),很多jquery集合中的匿名函数都是index和oldvalue两个参数

    2、jquery中position()和offset()的区别是什么?

    如果当前元素的祖辈元素全部都是默认定位(static),那么该函数返回的偏移位置与offset()函数相同。

    与offset()不同的是:position()返回的是相对于被定位的祖辈元素的坐标,offset()返回的是相对于当前文档的坐标。

    3、position()可以像jquery中的其它位置函数(offset(),scrollTop(),scrollLeft())一样不仅可以取值,也可以设置值么?

    不可以

    position()函数无法用于设置操作。只可以返回值。

    4、如何设置子元素相对于父元素偏移?

    在CSS定位布局中,如果我们对父元素设置position:relative,我们就可以使用position:absolute来设置子元素相对于父元素的定位距离

    5、jquery中的window对象怎么表示?

    $(window)

    114             $(window).scrollTop(500)

    二、jquery如何获取元素相对于父元素的位置

    1、相关知识

    1. offset() 方法返回或设置匹配元素相对于文档的偏移(位置)。
      1. 该方法返回的对象包含两个整型属性:top 和 left,以像素计。此方法只对可见元素有效。
      2. 设置偏移坐标:$(selector).offset(value)
      3. 使用函数来设置所有匹配元素的偏移坐标:$(selector).offset(function(index,oldoffset))
        • index - 可选。接受选择器的 index 位置
        • oldvalue - 可选。接受选择器的当前坐标
    2. position() 方法返回匹配元素相对于父元素的位置(偏移)。

      在CSS定位布局中,如果我们对父元素设置position:relative,我们就可以使用position:absolute来设置子元素相对于父元素的定位距离

      • position()函数用于返回当前匹配元素相对于其被定位的祖辈元素的偏移,也就是相对于被定位的祖辈元素的坐标。该函数只对可见元素有效。
      • 该函数返回一个坐标对象,该对象有一个left属性和top属性。position()中的坐标参考系是以被定位的祖辈元素的左上角为原点(0,0),向右为正,向下为正。
      • 如果当前元素的祖辈元素全部都是默认定位(static),那么该函数返回的偏移位置与offset()函数相同
      • 如果当前jQuery对象匹配多个元素,返回坐标时,position()函数只以其中第一个匹配的元素为准。如果没有匹配的元素,则返回undefined。
      • 与offset()不同的是:position()返回的是相对于被定位的祖辈元素的坐标,offset()返回的是相对于当前文档的坐标
      • position()函数无法用于设置操作
    3. scrollTop():获取或设置元素相对于垂直滚动条顶部的距离,
    4. scrollLeft():来获取或设置元素相对于水平滚动条左部的距离。

    2、代码

      1 <!DOCTYPE html>
      2 <html lang="en">
      3 <style>
      4 </style>
      5 <head>
      6     <meta charset="UTF-8">
      7     <title>演示文档</title>
      8     <script type="text/javascript" src="jquery-3.1.1.min.js"></script>
      9     <style>
     10         #main{
     11             margin:50px;
     12             padding: 50px;
     13             background: #ccc;
     14             width: 100px;height: 100px;
     15             position: relative;
     16         /*    overflow: auto;*/
     17         }
     18         #div1{
     19             position: absolute;
     20             width: 100px;height: 100px;
     21             background: red;
     22         }
     23     </style>
     24 </style>
     25 </head>
     26 <body>
     27     <div id="main">
     28         <div id="div1"></div>
     29         <ol>
     30             <li></li>
     31             <li></li>
     32             <li></li>
     33             <li></li>
     34             <li></li>
     35             <li></li>
     36             <li></li>
     37             <li></li>
     38             <li></li>
     39             <li></li>
     40             <li></li>
     41             <li></li>
     42             <li></li>
     43             <li></li>
     44             <li></li>
     45             <li></li>
     46             <li></li>
     47             <li></li>
     48             <li></li>
     49             <li></li>
     50             <li></li>
     51             <li></li>
     52             <li></li>
     53             <li></li>
     54             <li></li>
     55             <li></li>
     56             <li></li>
     57             <li></li>
     58             <li></li>
     59             <li></li>
     60             <li></li>
     61             <li></li>
     62             <li></li>
     63             <li></li>
     64             <li></li>
     65             <li></li>
     66             <li></li>
     67             <li></li>
     68             <li></li>
     69             <li></li>
     70             <li></li>
     71             <li></li>
     72             <li></li>
     73             <li></li>
     74             <li></li>
     75             <li></li>
     76             <li></li>
     77             <li></li>
     78             <li></li>
     79             <li></li>
     80         </ol>
     81     </div>
     82     <input id="btn1" type="button" value="获取">
     83     <input id="btn2" type="button" value="设置">
     84     <input id="btn3" type="button" value="设置2">
     85     <script type="text/javascript">
     86         $(function(){
     87             $('#btn1').click(function(){
     88                 var top = $("#div1").offset().top;
     89                 var left = $("#div1").offset().left;
     90                 alert(top+'
    '+left)
     91 
     92                 var top2 = $("#div1").position().top;
     93                 var left2= $("#div1").position().left;
     94                  alert(top2+'
    '+left2)
     95             })
     96 
     97             $('#btn2').click(function(){
     98                 // $("#div1").offset({
     99     //                 top:200,
    100     //                 left:200
    101     //             });
    102                 $("#div1").position({
    103                     top:200,
    104                     left:200
    105                 });  
    106 
    107             })
    108 
    109             var count=0
    110             $('#btn3').click(function(){
    111                 $('#main').scrollTop(count++*100)
    112                 alert($('#main').scrollTop())
    113             })
    114             $(window).scrollTop(500)
    115         })
    116     </script>
    117 </body>
    118 </html>
     
     
  • 相关阅读:
    Enumerable.Distinct方法去重
    datatable使用lambda
    jQuery获取单选框(复选框)选中的状态
    从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值
    SQL Server 中WITH (NOLOCK)浅析
    C#将int型数字转换成3位字符串,不足的时候,前面补0
    window.locatin.href 中特殊字符串问题
    windows下git bash不显示中文问题解决
    python获取文件行数
    自定义异常以及触发异常
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9206864.html
Copyright © 2020-2023  润新知