获取DOM尺寸

视口的尺寸

// IE8 不兼容
window.innerWidth / window.innerHeight

// IE8 以下 标准模式 document.compatMode == "CSS1Compat"
document.documentElement.clientWidth 
document.documentElement.clientHeight

// IE8 以下 怪异模式 document.compatMode == "BackCompat"
document.body.clientWidth 
document.body.clientHeight

 

元素的几何尺寸 

div.getBoundingClientRect()  // 返回的是对象,border盒子宽高


div.scrollWidth / div.scrollHeight  // 1 元素内容的高度,包括溢出的不可见内容

div.offsetWidth / div.offsetHeight  // 2 返回的是数字,border盒子宽高

div.clientWidth / div.clientHeight  // 3 返回的是数字,padding盒子宽高,不含滚动条

div.offsetLeft / div.offsetTop  // 对于无定位祖先元素,相对于文档的坐标;对于有定位的祖先元素,相对于最近有定位的祖先元素坐标

获取样式

dom.style //  获取行内样式 可读,可写 CSSStyleDeclaration

window.getComputedStyle(dom, null) // 只读,IE8 IE8以下不兼容 获取显示属性 CSSStyleDeclaration

dom.currentStyle  // IE8 IE8以下 使用

 

查看滚动条的距离

// IE8 以及 IE8以下不兼容
window.pageXOffset/window.pageYOffset  

window.scrollX/window.scrollY

// 兼容写法
document.body.scrollLeft + document.documentElement.scrollLeft
document.body.scrollTop + document.documentElement.scrollTop

 

滚动条滚动

window上的三个方法

scroll(0, 100) / scrollTo(0, 100)
scrollBy(0, 100)  // 增量

 

 

 

### 在 UniApp 中获取 DOM 元素的 Class 属性 在 UniApp 开发环境中,可以通过 `uni.createSelectorQuery()` 方法来实现对 DOM 元素的选择和属性读取。具体到获取 DOM 元素的 `class` 属性,可以利用 `boundingClientRect` 或者直接通过 `fields` 参数指定需要查询的内容。 以下是具体的实现方式: #### 实现代码示例 ```javascript // 假设目标元素具有特定的 class 名称为 'domItem' export default { methods: { getClassOfElement() { const query = uni.createSelectorQuery().in(this); // 创建选择器查询对象 query.select('.domItem').fields({ // 选择目标元素并定义要获取的字段 dataset: true, // 是否获取 data-* 属性 size: false, // 不需要尺寸信息 rect: false, // 不需要位置信息 scrollOffset: false, // 不需要滚动偏移量 properties: ['class'] // 明确指明需要获取的属性列表 }, (res) => { console.log('Class of the element:', res.class); // 输出目标元素的 class 属性 }).exec(); // 执行查询 } }, mounted() { this.getClassOfElement(); // 确保在组件挂载完成后再执行查询 } }; ``` 上述代码展示了如何使用 `uni.createSelectorQuery()` 来获取 `.domItem` 类名下的 DOM 元素的 `class` 属性[^1]。需要注意的是,此方法仅适用于已渲染至页面上的 DOM 结构,并且应在生命周期钩子 `mounted` 后调用以确保 DOM 已经加载完毕。 如果存在动态更新的情况(例如由 Vue 数据驱动的模板),则可能涉及异步渲染问题。此时应结合 `this.$nextTick` 确保操作发生在 DOM 更新之后[^2]。 --- ### 注意事项 - 如果尝试访问未完全渲染或者尚未存在的 DOM 节点,可能会导致查询失败或返回空值。 - 查询时需注意 CSS Selectors 的书写准确性,错误的选择器可能导致无法匹配任何节点。 - 当前 API 支持多种字段选项配置,开发者可根据实际需求调整参数设置。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值