Thursday, September 4, 2025
HomeLanguagesJavascriptJavaScript | ResizeObserver Interface

JavaScript | ResizeObserver Interface

The ResizeObserver Interface is used to provide a mechanism to monitor the changes to the dimensions of an element. The notifications of the changes are delivered to the observer whenever changes take place.

This is a useful API as traditional methods of monitoring the changes were composed of hacks or were poor in performance. The traditional methods included checking the size once a few milliseconds which had a massive performance hit. This Interface solves these problems and gives more control to determine the changes.

Using the ResizeObserver
A ResizeObserver object is first created using the ResizeObserver() constructor. This constructor has a callback parameter that can be used to specify the function to be called whenever a resize is observed.

The callback parameter has 2 parameters:

  • The entries parameter contains objects of ResizeObserverEntry that can be used to access the new dimensions of the element after each change.
  • The observer parameter which is the reference to the observer itself.

Syntax:




let resizeObserver = new ResizeObserver((entries) => {
  for (entry of entries) {
      // access the entry properties
  }
});


The ResizeObserver.observe() method is used to start observing the required element for changes. The element that has to be monitored is passed to this method as a parameter.

Example 1: Get the height and width of the element when changes are observed




<!DOCTYPE html>
<html>
  
<head>
    <title>Resize Observer API</title>
    <style>
        #box {
            resize: both;
            border: solid;
            background-color: green;
            height: 100px;
            width: 300px;
            overflow: auto;
        }
    </style>
</head>
  
<body>
    <h1 style="color: green">
      GeeksForGeeks
  </h1>
    <b>Resize Observer API</b>
    <p>Check the console to know the 
      current dimensions of the div.</p>
    <div id="box">GeeksForGeeks</div>
  
    <script>
        boxElem = document.querySelector('#box')
  
        let resizeObserver = new ResizeObserver((entries) => {
            for (entry of entries) {
  
                // get the height and width of the element
                console.log('Height: ', entry.contentRect.height);
                console.log('Width:', entry.contentRect.width);
            }
        });
  
        // observe the given element for changes
        resizeObserver.observe(boxElem);
    </script>
</body>
  
</html>


Output:

  • Before Resizing the element:
    note-dimen-change-before
  • After Resizing the element:
    note-dimen-change-after

Example 2: Change the text size of an element depending on the height




<!DOCTYPE html>
<html>
  <head>
    <title>Resize Observer API</title>
    <style>
      #box {
        resize: both;
        border: solid;
        background-color: green;
        height: 100px;
        width: 300px;
        overflow: auto;
      }
    </style>
  </head>
  
  <body>
    <h1 style="color: green">GeeksForGeeks</h1>
    <b>Resize Observer API</b>
    <p>Check the console to know the
      current dimensions of the div.</p>
    <div id="box">GeeksForGeeks</div>
  
    <script>
      boxElem = document.querySelector("#box");
  
      let resizeObserver = new ResizeObserver(entries => {
        for (entry of entries) {
          boxElem.style.fontSize = 
            entry.contentRect.height + 'px';
        }
      });
  
      resizeObserver.observe(boxElem);
    </script>
  </body>
</html>


Output:

  • Before Resizing the element:
    change-text-height-before
  • After Resizing the element:
    change-text-height-after

Supported Browsers: The browser supported by ResizeObserver Interface are listed below:

  • Chrome 64
  • Firefox 69
  • Opera 51
Whether you’re preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, neveropen Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we’ve already empowered, and we’re here to do the same for you. Don’t miss out – check it out now!
RELATED ARTICLES

Most Popular

Dominic
32264 POSTS0 COMMENTS
Milvus
81 POSTS0 COMMENTS
Nango Kala
6629 POSTS0 COMMENTS
Nicole Veronica
11799 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11859 POSTS0 COMMENTS
Shaida Kate Naidoo
6749 POSTS0 COMMENTS
Ted Musemwa
7025 POSTS0 COMMENTS
Thapelo Manthata
6698 POSTS0 COMMENTS
Umr Jansen
6717 POSTS0 COMMENTS