【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;
相关推荐
codingWhat22 分钟前
介绍一个手势识别库——AlloyFinger
前端·javascript·vue.js
Lee川22 分钟前
深度拆解:基于面向对象思维的“就地编辑”组件全模块解析
javascript·架构
代码老中医30 分钟前
2026年CSS彻底疯了:这6个新特性让我删掉了三分之一JS代码
前端
进击的尘埃30 分钟前
Web Worker 与 OffscreenCanvas:把主线程从重活里解放出来
javascript
不会敲代码131 分钟前
Zustand:轻量级状态管理,从入门到实践
前端·typescript
踩着两条虫31 分钟前
VTJ.PRO 双向代码转换原理揭秘
前端·vue.js·人工智能
扉川川31 分钟前
OpenClaw 架构解析:一个生产级 AI Agent 是如何设计的
前端·人工智能
远山枫谷34 分钟前
一文理清页面/组件通信与 Store 全局状态管理
前端·微信小程序
codingWhat34 分钟前
手撸一个「能打」的 React Table 组件
前端·javascript·react.js
进击的尘埃34 分钟前
用 TypeScript 的 infer 搓一个类型安全的深层路径访问工具
javascript