【JS】获取元素宽高(例如div)

文章目录

基础用法

高度类型选择(宽度同理):

属性 描述
offsetHeight 包含边框+内边距+内容
clientHeight 包含内边距+内容(不包含边框)
scrollHeight 包含滚动内容的全高(含隐藏部分)

JS可使用getElementById等选择器替换useRef

js 复制代码
const targetDiv = document.getElementById('myDiv');
const offsetHeight = targetDiv.offsetHeight
js 复制代码
import React, { useRef, useEffect, useState } from 'react';

function HeightComponent() {
  // 1. 创建 ref 对象
  const divRef = useRef(null);
  const [height, setHeight] = useState(0);

  // 3. 在组件挂载后访问 DOM
  useEffect(() => {
    if (divRef.current) {
      // 4. 获取高度
      const divHeight = divRef.current.offsetHeight;
      setHeight(divHeight);
      console.log('Div 高度:', divHeight);
    }
  }, []); // 空依赖数组确保只在挂载时运行

  // 响应尺寸变化(可选)
  useEffect(() => {
    const handleResize = () => {
      if (divRef.current) {
        setHeight(divRef.current.offsetHeight);
      }
    };

    window.addEventListener('resize', handleResize);
    return () => window.removeEventListener('resize', handleResize);
  }, []);

  return (
    <div>
      {/* 2. 绑定 ref 到目标 div */}
      <div 
        ref={divRef} 
        style={{ padding: '20px', border: '1px solid red' }}
      >
        这是一个需要测量高度的 div<br />
        内容高度会变化...
      </div>
      
      <p>Div 高度: {height}px</p>
    </div>
  );
}

export default HeightComponent;
相关推荐
海云前端1几秒前
Webpack打包提速95%实战:从20秒到1.5秒的优化技巧
前端
烟袅5 分钟前
LeetCode 142:环形链表 II —— 快慢指针定位环的起点(JavaScript)
前端·javascript·算法
梦6509 分钟前
什么是react?
前端·react.js·前端框架
zhougl99610 分钟前
cookie、session、token、JWT(JSON Web Token)
前端·json
Ryan今天学习了吗13 分钟前
💥不说废话,带你上手使用 qiankun 微前端并深入理解原理!
前端·javascript·架构
高端章鱼哥15 分钟前
前端新人最怕的“居中问题”,八种CSS实现居中的方法一次搞懂!
前端
冷亿!16 分钟前
Html爱心代码动态(可修改内容+带源码)
前端·html
Predestination王瀞潞20 分钟前
Java EE开发技术(第六章:EL表达式)
前端·javascript·java-ee
掘金0129 分钟前
在 Vue 3 项目中使用 MQTT 获取数据
前端·javascript·vue.js
QuantumLeap丶29 分钟前
《uni-app跨平台开发完全指南》- 03 - Vue.js基础入门
前端·vue.js·uni-app