【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 分钟前
🚀别再卷 Redux 了!Zustand 才是 React 状态管理的躺平神器
前端·react.js·面试
鹿角片ljp6 分钟前
Spring Boot Web入门:从零开始构建web程序
前端·spring boot·后端
向下的大树12 分钟前
Vue 2迁移Vue 3实战:从痛点到突破
前端·javascript·vue.js
我很苦涩的13 分钟前
原生小程序使用echarts
前端·小程序·echarts
玉米Yvmi20 分钟前
从零理解 CSS 弹性布局:轻松掌控页面元素排布
前端·javascript·css
西洼工作室20 分钟前
前端js汉字手写练习系统
前端·javascript·css
程序员爱钓鱼24 分钟前
Node.js 编程实战:CSV&JSON &Excel 数据处理
前端·后端·node.js
徐同保28 分钟前
n8n+GPT-4o一次解析多张图片
开发语言·前端·javascript
DanyHope35 分钟前
LeetCode 128. 最长连续序列:O (n) 时间的哈希集合 + 剪枝解法全解析
前端·leetcode·哈希算法·剪枝
GISer_Jing40 分钟前
AI赋能前端:从核心概念到工程实践的全景学习指南
前端·javascript·aigc