获取元素偏移以及大小

在这里插入图片描述
offset就是偏移量 用offset系列的相关属性可以动态的得到该元素的位置(偏移)、大小
1.获得元素距离 带有定位的父元素的位置
2.获得元素自身的大小(宽度、高度)
3.返回的元素不带单位
element.offsetTop返回元素距离顶部的距离
element.offsetleft返回元素距离左边的距离

     <style>
        /* 如果不加这个 father距离左边的距离是108px */
        *{
            margin: 0;
            padding: 0;
        }
        .father{
            position: relative;
            width: 150px;
            height: 150px;
            background-color: pink;
            margin: 100px;
        }
        .son{
            width: 100px;
            height: 100px;
            background-color: red;
            margin-left: 20px;
        }
     </style>
</head>
<body>
    <div class="father">
        <div class="son"></div>
    </div>
    <script>
        var father=document.querySelector('.father');
        var son=document.querySelector('.son');
        console.log("father.offsetTop="+father.offsetTop); 
        console.log("father.offsetleft="+father.offsetLeft);
        // 如果父盒子不加定位,那么获取的就是子盒子到浏览器边缘的距离
        console.log(son.offsetLeft);//120
        // 如果给父盒子添加绝对定位或者说是相对定位 
        // 则得到的距离是子盒子左边缘到父盒子左边缘的距离20
    </script>
</body>

在这里插入图片描述
元素.offsetParent 获取父亲元素,如果父级没有定位,就返回body

console.log(son.offsetParent);//

在这里插入图片描述
把father的定位去掉
在这里插入图片描述

获取元素的宽高
元素.offsetHeight / offsetWidth=width+paidding+border

    <style>
        .box{
            height: 200px;
            background-color: aqua;
            padding: 10px;
            /* margin: 100px; */
            border: 10px solid red;
        }
    </style>
</head>
<body>
    <div class="box"></div>
    <script>
        var box = document.querySelector('.box');
        console.log(box.offsetHeight);//200
        console.log(box.offsetWidth);//1022
    </script>
</body>

在这里插入图片描述

### 微信小程序获取元素位置并滚动至指定元素 在微信小程序中,为了实现获取特定元素的位置并将页面滚动到该元素的功能,可以利用`wx.createSelectorQuery()`接口来查询节点信息,并通过设置`scroll-view`组件的属性来进行滚动操作。 #### 使用 `createSelectorQuery` 此函数创建一个 SelectorQuery 对象实例用于选择对应的 DOM 节点。可以通过调用`.select(selector)`方法传入 CSS 选择器字符串定位单个节点;也可以使用`.selectAll(selector)`选取多个匹配的选择器下的所有节点[^4]。 当需要获取某个具体元素的信息时,在上述对象上调用.boundingClientRect() 方法即可得到包含 top, bottom, left 和 right 属性的对象表示目标区域相对于视窗的位置以及尺寸大小等数据[^3]。 ```javascript // 获取单个元素信息示例 Page({ onLoad: function () { const query = wx.createSelectorQuery(); query.select(&#39;#myElement&#39;).boundingClientRect(function (rect) { console.log(&#39;top:&#39;, rect.top); console.log(&#39;left:&#39;, rect.left); // 可在此处处理其他逻辑... }).exec(); } }) ``` 对于想要让页面自动滚向某一处的情况,则可以在知晓目的坐标之后调整带有 scroll-into-view 或者 scrollTop 特性的容器样式达到效果: 如果要使整个页面发生位移,那么应该作用于最外层布局上定义好的 `<scroll-view>` 组件之上。其中 key 值为 id 的子标签将会被带到可见区域内显示出来[^2]。 ```html <!-- WXML --> <scroll-view scroll-y="true" bindscrolltolower="loadMore"> <!-- 列表项... --> </scroll-view> <button type="primary" bindtap="goToTarget">Go To Target Element</button> <!-- 需要跳转的目标元素需赋予唯一ID --> <view id=&#39;target&#39;>Here is the target element.</view> ``` ```javascript // JS Page({ goToTarget:function(){ this.setData({ scrollToView:&#39;target&#39; }); }, }); ``` 另外一种方式就是直接修改 ScrollView 的 scrollTop 参数值从而控制其内部内容上下移动距离,这通常适用于已知确切偏移量的情形下[^1]。 ```css /* WXSS */ .scrollable-area{ height: 80vh; /* 设置可滚动区域的高度 */ overflow:hidden; } ``` ```javascript // JavaScript Page({ data:{ scrollTopValue:0, }, handleScroll(e){ let offsetTop=e.detail.scrollTop; this.setData({scrollTopValue :offsetTop+someDelta}); } }) ``` 综上所述,开发者可以根据实际需求灵活运用这些技术手段完成对页面内任意位置元素访问的同时还能提供良好的用户体验交互设计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值