Click here to Skip to main content
15,885,156 members
Articles / Web Development / XHTML

JavaScript Image Popup

Rate me:
Please Sign up or sign in to vote.
4.89/5 (15 votes)
28 Jan 2009CPOL1 min read 216.2K   5.8K   48   10
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. HTML
    <div id="imgbox"></div>

    The CSS element:

    CSS
    #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. JavaScript
      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. JavaScript
      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. JavaScript
      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. HTML
    <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.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Founder Tejsoft Pty Ltd
Australia Australia
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
QuestionHow images can be shown? Pin
Member 1169671316-May-15 23:37
Member 1169671316-May-15 23:37 
GeneralMy vote of 1 Pin
Member 111647192-Nov-14 19:36
Member 111647192-Nov-14 19:36 
QuestionGood Pin
engmebeed3-Oct-12 21:46
engmebeed3-Oct-12 21:46 
QuestionFollowing on from JavaScript Image Popup Pin
Martin Goodrich23-Sep-12 0:21
Martin Goodrich23-Sep-12 0:21 
Hi this is a really nice little example but I'd like to consider taking it to another level.

Consider that I have a div that I am dynamically filling with ImageButtons containing the thumbnail image. I would like to add the same ability to be able to click on one of the links and produce an enlarged image.

I've tried so many things but so far I've been unsuccessful. If anybody has an example I would be forever in their debt if they would be kind enough to share it with me.
SuggestionRe: Following on from JavaScript Image Popup Pin
ASPDev20025-Sep-12 13:02
ASPDev20025-Sep-12 13:02 
GeneralMy vote of 5 Pin
Nana Nurhayanto17-Oct-10 20:58
Nana Nurhayanto17-Oct-10 20:58 
GeneralCalculating position Pin
Alex.Shnaider2-Feb-09 20:01
Alex.Shnaider2-Feb-09 20:01 
JokeWow! Pin
SmirkinGherkin28-Jan-09 23:48
SmirkinGherkin28-Jan-09 23:48 
GeneralRe: Wow! Pin
emiaj29-Jan-09 12:04
emiaj29-Jan-09 12:04 
GeneralRe: Wow! Pin
Member 378218930-Jan-09 2:04
Member 378218930-Jan-09 2:04 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.