Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

194
Views
Adding zoom on hover function to all elements of a class

I want to add the hover zoom effect to all images that pertain to the class "img-container".

To achieve this goal, I am using this code:

var container = document.getElementsByClassName('img-container');
    console.log(container.length);

            window.addEventListener("load", function(){
            for(var i = 0; i < container.length; i++){
                var current_img = container[i];
                var imgsrc = current_img.currentStyle || window.getComputedStyle(current_img, false),
                    imgsrc = imgsrc.backgroundImage.slice(4, -1).replace(/"/g, ""),
                    img = new Image();

                    img.src = imgsrc;
                img.onload = function(){
                    var imgWidth = img.naturalWidth,
                        imgHeight = img.naturalHeight,
                        ratio = imgHeight/imgWidth,
                        percentage = ratio * 100 + "%";

                        current_img.onmousemove = function(e){
                            var boxWidth = current_img.clientWidth,
                            xPos = e.pageX - this.offsetLeft,
                            yPos = e.pageY - this.offsetTop,    
                            xPercent = xPos / (boxWidth / 100) + "%",
                            yPercent = yPos / (boxWidth * ratio / 100) + "%";

                            Object.assign(current_img.style, {
                                backgroundPosition: xPercent + " " + yPercent,
                                backgroundSize: imgWidth + "px"
                            });                     
                        };
                    };


                    current_img.onmouseleave = function(e){
                        Object.assign(current_img.style, {
                            backgroundPosition: "center",
                            backgroundSize: "cover"
                        }); 
                    };
                };
            });

This, however is not working, and I fail to see the logical error that I performed. This code works fine when I use getElementById instead of class, but using that would require me to repeat the code many times, which is unfeasible.

about 4 years ago · Santiago Trujillo
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!