Using offsetLeft and offsetTop properties
Here's an example.
I have a DIV element, which is draggable. Drag the element anywhere on web page and drop it. Next, click the element to get the X and Y coordinates.
<!DOCTYPE html> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script> <style> #theText { width: 200px; padding: 10px; border: solid 1px #ddd; cursor: move; } </style> </head> <body> <h2>Drag the text and stop. Then click text to get its X and Y coordinates.</h2> <!--will get the X and Y position of this element--> <div id='theText'> some content here... </div> <p id="coord"></p> <!--show x, y coordinates here.--> </body> <script> window.addEventListener('click', function (e) { if (e.target.id == 'theText') { document.getElementById('coord').innerHTML = 'X: ' + e.target.offsetLeft + ' Y: ' + e.target.offsetTop; } }); $(document).ready(function () { $(function () { $('#theText').draggable({}); }); }); </script> </html>
Using getBoundingClientRect() Method
You can also use .getBoundingClientRect() method to get the X and Y coordinates of an element. However, "getBoundingClientRect()" will return values relative to the "viewport".
For example,
<!DOCTYPE html> <html> <head> <style> * { font-family: Calibri; } div, p { font-size: 18px; } body { height: 2000px; } #theText { width: 200px; padding: 10px; border: solid 1px #ddd; position: absolute; bottom: 2%; left: 40%; } p { position: fixed; } #coord1 { top: 50px; } </style> </head> <body> <h2>Scroll this page up and down</h2> <div id='theText'> some content here... </div> <!--show x, y coordinates--> <p id="coord"></p> <p id="coord1"></p> </body> <script> window.addEventListener('scroll', function (e) { document.getElementById('coord').innerHTML = 'X: ' + theText.offsetLeft + ' Y: ' + theText.offsetTop; document.getElementById('coord1').innerHTML = 'X: ' + theText.getBoundingClientRect().left + ' Y: ' + theText.getBoundingClientRect().top; }); </script> </html>
Articles you don't want to miss 👇
• What is map() function in JavaScript? Benefits of using map() function in your application.
• How to get the X character (any particular character) in a string using JavaScript
• How to create a simple CRUD application using plain JavaScript
• How to use .map() function to extract only numbers from an array of values in JavaScript?