【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;
相关推荐
Web极客码13 小时前
深入了解WordPress网站访客意图
服务器·前端·wordpress
幺风13 小时前
Claude Code 源码分析 — Tool/MCP/Skill 可扩展工具系统
前端·javascript·ai编程
vjmap13 小时前
唯杰地图CAD图层加高性能特效扩展包发布
前端·gis
ZC跨境爬虫13 小时前
3D 地球卫星轨道可视化平台开发 Day7(AI异步加速+卫星系列精简+AI Agent自动评论)
前端·人工智能·3d·html·json
ID_1800790547313 小时前
淘宝 API 上货 / 商品搬家 业务场景实现 + JSON 返回示例
前端·javascript·json
M ? A14 小时前
Vue 动态组件在 React 中,VuReact 会如何实现?
前端·javascript·vue.js·经验分享·react.js·面试·vureact
vipbic14 小时前
独立开发复盘:我用 Uni-app + Strapi v5 肝了一个“会上瘾”的打卡小程序
前端·微信小程序
IT_陈寒15 小时前
Vite的热更新突然失效,原来是因为这个配置
前端·人工智能·后端
ZC跨境爬虫15 小时前
3D 地球卫星轨道可视化平台开发 Day8(分步渲染200颗卫星+ 前端分页控制)
前端·python·3d·重构·html
竹林81815 小时前
RainbowKit快速集成多链钱包连接,我如何从“连不上”到“丝滑切换”
前端·javascript