65.9K
CodeProject is changing. Read more.
Home

JavaScript Image Popup

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.89/5 (14 votes)

Jan 28, 2009

CPOL

1 min read

viewsIcon

218294

downloadIcon

5854

A simple way to show a pop up image on mouse over of a smaller image.

Introduction

Many a times, developers require to show larger popup images when users hover their mouse pointer over a thumbnail image. I will explain here a very simple JavaScript that can be used to show a popup image. The script is tested, and works fine in IE 7.0 and Mozilla Firefox 3.0.

Steps for the implementation

  1. Create a DIV named "imgbox" on the HTML page on which your thumbnail images will be shown. The DIV and the CSS element ID associated with the DIV is shown below:
  2. <div id="imgbox"></div>

    The CSS element:

    #imgbox 
    {
        vertical-align : middle;
        position : absolute;
        border: 1px solid #999;
        background : #FFFFFF; 
        filter: Alpha(Opacity=100);
        visibility : hidden;
        height : 200px;
        width : 200px;
        z-index : 50;
        overflow : hidden;
        text-align : center;
    }
  3. Here is the JavaScript code to show the popup image:
    1. Get the left and top positions of the thumbnail image:
    2. function getElementLeft(elm) 
      {
          var x = 0;
      
          //set x to elm’s offsetLeft
          x = elm.offsetLeft;
      
          //set elm to its offsetParent
          elm = elm.offsetParent;
      
          //use while loop to check if elm is null
          // if not then add current elm’s offsetLeft to x
          //offsetTop to y and set elm to its offsetParent
      
          while(elm != null)
          {
              x = parseInt(x) + parseInt(elm.offsetLeft);
              elm = elm.offsetParent;
          }
          return x;
      }
      
      function getElementTop(elm) 
      {
          var y = 0;
      
          //set x to elm’s offsetLeft
          y = elm.offsetTop;
      
          //set elm to its offsetParent
          elm = elm.offsetParent;
      
          //use while loop to check if elm is null
          // if not then add current elm’s offsetLeft to x
          //offsetTop to y and set elm to its offsetParent
      
          while(elm != null)
          {
              y = parseInt(y) + parseInt(elm.offsetTop);
              elm = elm.offsetParent;
          }
      
          return y;
      }
    3. Get the thumbnail image source, make the DIV visible, increase the height and width to the required size, and attach the image to the DIV.
    4. function Large(obj)
      {
          var imgbox=document.getElementById("imgbox");
          imgbox.style.visibility='visible';
          var img = document.createElement("img");
          img.src=obj.src;
          img.style.width='200px';
          img.style.height='200px';
          
          if(img.addEventListener){
              img.addEventListener('mouseout',Out,false);
          } else {
              img.attachEvent('onmouseout',Out);
          }             
          imgbox.innerHTML='';
          imgbox.appendChild(img);
          imgbox.style.left=(getElementLeft(obj)-50) +'px';
          imgbox.style.top=(getElementTop(obj)-50) + 'px';
      }
    5. Hide the DIV at mouse out.
    6. function Out()
      {
          document.getElementById("imgbox").style.visibility='hidden';
      }
  4. Add a OnMouseOver client-side event call for the thumbnail images to show the popup image on mouse-over.
  5. <img id='img1' src='images/Sample.jpg' onmouseover="Large(this)" />

Comments

Hope this JavaScript would solve your popup image requirement. If you have implemented a popup image feature in some other way, or developed a feature-rich script, please put a link to your CodeProject article so that others can refer it too.