# How to get the width of an element using a ref in React

If you are having trouble with the question: How to get the width of an element using a ref in React, this article is for you. Some ways will be mentioned, for example, using offsetWidth or the clientWidth method.

## Get the width of an element using a ref in React

For example, if we have a div tag of size 100×100, how do we get the value of the width of that element?

### Using offsetWidth method

This way, we will use the offsetWitdh way to get the width of an element to find in case we have set a ref for it. Using offsetWidth and offsetHeight in JavaScript means you can get the pixel size of an HTML element. The size is calculated using the size of the content inside the HTML element, including padding, borders, and scrollbars. Still, the margin attribute alone is not calculated by offsetWidth and offsetHeight.

Code:

import React, { useRef } from "react";
import { useState } from "react";

const App = () => {
const [size,setSize]=useState("");
const ref=useRef(null);
const handleClick=()=>{
setSize(ref.current.offsetHeight+"x"+ref.current.offsetWidth)
}
return (
<>
<h2>
Get the Width of an Element using a Ref in React | LearnShareIT
</h2>
<hr/>

<div ref={ref} style={{"width":"100px","height":"100px","backgroundColor":"green"}}>
<h2 style={{"textAlign":"center"}}>{size}</h2>
</div>
<br/>
<button onClick={handleClick}>Show the input value</button>
</>
);
};

export default App;

Output:

As the code above, I have shown you both the width and height of the div element whose ref is ref by accessing its current and accessing internal properties such as offsetWidth.

### Using clientWidth method

This way, we need to change the access property from offsetWidth to clientWidth to get the width value. Because clientWidth and clientHeight are the visible portions of the box content, excluding borders or scrollbars but including padding. Depending on the system scrollbar size, it cannot be calculated directly from CSS.

Code:

import React, { useRef } from "react";
import { useState } from "react";

const App = () => {
const [size, setSize] = useState("");
const ref = useRef(null);
const handleClick = () => {
setSize(ref.current.clientHeight + "x" + ref.current.clientWidth);
};
return (
<>
<h2>Get the Width of an Element using a Ref in React | LearnShareIT</h2>
<hr />

<div
ref={ref}
style={{ width: "100px", height: "100px", backgroundColor: "green" }}
>
<h2 style={{ textAlign: "center" }}>{size}</h2>
</div>
<br />
<button onClick={handleClick}>Show the input value</button>
</>
);
};

export default App;

Although in the case of this approach, the results returned by two methods are the same because clientWidth does not count the border of the box content. Depending on how you get the element’s width, you will choose the appropriate attribute.

## Summary

In summary, you can get the width of an element using a ref in React in several ways mentioned in the article. Still, you should choose carefully because the properties are different, as I mentioned in the article.

Maybe you are interested: