【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;
相关推荐
GISer_Jing1 小时前
WebGL跨端兼容实战:移动端适配全攻略
前端·aigc·webgl
迦南giser1 小时前
前端性能——传输优化
前端
小白_ysf1 小时前
Vue 中常见的加密方法(对称、非对称、杂凑算法)
前端·vue.js·算法
2501_944448002 小时前
Flutter for OpenHarmony衣橱管家App实战:支持我们功能实现
android·javascript·flutter
人工智能训练7 小时前
【极速部署】Ubuntu24.04+CUDA13.0 玩转 VLLM 0.15.0:预编译 Wheel 包 GPU 版安装全攻略
运维·前端·人工智能·python·ai编程·cuda·vllm
会跑的葫芦怪8 小时前
若依Vue 项目多子路径配置
前端·javascript·vue.js
2601_949593658 小时前
基础入门 React Native 鸿蒙跨平台开发:模拟智能音响
react native·react.js·harmonyos
xiaoqi9229 小时前
React Native鸿蒙跨平台如何进行狗狗领养中心,实现基于唯一标识的事件透传方式是移动端列表开发的通用规范
javascript·react native·react.js·ecmascript·harmonyos
jin1233229 小时前
React Native鸿蒙跨平台剧本杀组队消息与快捷入口组件,包含消息列表展示、快捷入口管理、快捷操作触发和消息详情预览四大核心功能
javascript·react native·react.js·ecmascript·harmonyos
烬头882111 小时前
React Native鸿蒙跨平台实现二维码联系人APP(QRCodeContactApp)
javascript·react native·react.js·ecmascript·harmonyos