Security News
Cloudflare Adds Security.txt Setup Wizard
Cloudflare has launched a setup wizard allowing users to easily create and manage a security.txt file for vulnerability disclosure on their websites.
element-resize-detector
Advanced tools
The element-resize-detector npm package is a utility for detecting changes in the size of HTML elements. It provides a way to listen for resize events on any DOM element, which can be useful for responsive design, dynamic content adjustments, and more.
Basic Resize Detection
This feature allows you to listen for resize events on a specific DOM element. When the element is resized, the provided callback function is executed.
const elementResizeDetectorMaker = require('element-resize-detector');
const erd = elementResizeDetectorMaker();
const element = document.getElementById('myElement');
erd.listenTo(element, function(element) {
console.log('Element resized:', element);
});
Unlisten to Resize Events
This feature allows you to stop listening to resize events on a specific DOM element. This can be useful for cleanup or when the resize detection is no longer needed.
const elementResizeDetectorMaker = require('element-resize-detector');
const erd = elementResizeDetectorMaker();
const element = document.getElementById('myElement');
function onResize(element) {
console.log('Element resized:', element);
}
erd.listenTo(element, onResize);
// Later, if you want to stop listening to resize events
erd.uninstall(element);
Batch Listening
This feature allows you to listen for resize events on multiple elements at once. The provided callback function is executed whenever any of the elements are resized.
const elementResizeDetectorMaker = require('element-resize-detector');
const erd = elementResizeDetectorMaker();
const elements = document.querySelectorAll('.resize-listen');
function onResize(element) {
console.log('Element resized:', element);
}
elements.forEach(element => erd.listenTo(element, onResize));
The resize-observer-polyfill package provides a polyfill for the ResizeObserver API, which is a native browser API for observing changes to the size of an element. It offers similar functionality to element-resize-detector but leverages the native API when available, providing a more standardized approach.
The react-resize-detector package is a React-specific utility for detecting element resize events. It provides a higher-order component and hooks for integrating resize detection into React applications, making it a more seamless choice for React developers compared to element-resize-detector.
The vue-resize package is a Vue.js directive for detecting element resize events. It is tailored for Vue.js applications, providing a more idiomatic way to handle resize detection in Vue components compared to element-resize-detector.
Super-optimized cross-browser resize listener for elements.
npm install element-resize-detector
Include the script in the browser:
<!DOCTYPE hml>
<html>
<head></head>
<body>
<script src="node_modules/element-resize-detector/dist/element-resize-detector.min.js"></script>
</body>
</html>
This will create a global function elementResieDetectorMaker
, which is the maker function that makes an element resize detector instance.
You can also require
it like so:
var elementResizeDetectorMaker = require("element-resize-detector");
//With default options (will use the object-based approach).
var erdDefault = elementResizeDetectorMaker();
//With the experimental super fast scroll-based approach.
var erdUltraFast = elementResizeDetectorMaker({
strategy: "scroll" //<- For ultra performance.
});
Listens to the element for resize events and calls the listener function with the element as argument on resize events.
Example usage:
erd.listenTo(document.getElementById("test"), function(element) {
//Should probably use jQuery for the width and height for compability.
var width = element.offsetWidth;
var height = element.offsetHeight;
console.log("Size: " + width + "x" + height);
});
Caveats:
display: static
it will be changed to display: relative
. This means if you have unintentional top/right/bottom/left
styles on the element (which was ignored when being static
) they will now be applied to the element. This will also mean that if there are any elements with position: absolute
as children to the element, they will now be positioned relative to the element.<object>
element will be injected as a direct child to the element. It has position: absolute
so it will not affect the page flow. It is also visibly hidden.This library is using the two approaches (scroll and object) as first described at http://www.backalleycoder.com/2013/03/18/cross-browser-event-based-element-resize-detection/.
The scroll based approach implementation was based on Marc J's implementation https://github.com/marcj/css-element-queries/blob/master/src/ResizeSensor.js.
Please note that both approaches have been heavily reworked for better performance and robustness.
FAQs
Resize event emitter for elements.
The npm package element-resize-detector receives a total of 908,320 weekly downloads. As such, element-resize-detector popularity was classified as popular.
We found that element-resize-detector demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Cloudflare has launched a setup wizard allowing users to easily create and manage a security.txt file for vulnerability disclosure on their websites.
Security News
The Socket Research team breaks down a malicious npm package targeting the legitimate DOMPurify library. It uses obfuscated code to hide that it is exfiltrating browser and crypto wallet data.
Security News
ENISA’s 2024 report highlights the EU’s top cybersecurity threats, including rising DDoS attacks, ransomware, supply chain vulnerabilities, and weaponized AI.