The 'imgPreview' plugin allows your users to preview an image before clicking on it and, out of necessity, will preload the image so when a user does click through to it there is no waiting time!
The image preview shows up in a tooltip-like box appearing alongside the user's cursor when hovering over a link. The plugin is entirely unobtrusive; it does not require any hooks to target specific links (no non-semantic classes); it will automatically detect the anchors that are linking to images and will only apply the preview effect to them.
There is now a screencast covering the creation of this plugin over here - the plugin has changed quite a bit since it's first version but it's still essentially the same.
JavaScript is required to view these demos.
Hover over the links: (if the image doesn't show up straight away, don't worry, it's just loading)
$('ul#first a').imgPreview();
$('ul#second a').imgPreview({ imgCSS: { width: 200 } });
$('ul#third a').imgPreview({ containerID: 'imgPreviewWithStyles', imgCSS: { // Limit preview size: height: 200 }, // When container is shown: onShow: function(link){ // Animate link: $(link).stop().animate({opacity:0.4}); // Reset image: $('img', this).stop().css({opacity:0}); }, // When image has loaded: onLoad: function(){ // Animate image $(this).animate({opacity:1}, 300); }, // When container hides: onHide: function(link){ // Animate link: $(link).stop().animate({opacity:1}); } });
/* CSS: (StyleSheet) */ #imgPreviewWithStyles { background: #222; -moz-border-radius: 10px; -webkit-border-radius: 10px; padding: 15px; z-index: 999; border: none; }
$('ul#fourth a').imgPreview({ containerID: 'imgPreviewWithStyles', imgCSS: { // Limit preview size: height: 200 }, // When container is shown: onShow: function(link){ $('<span>' + $(link).text() + '</span>').appendTo(this); }, // When container hides: onHide: function(link){ $('span', this).remove(); } });
/* CSS: (StyleSheet) */ #imgPreviewWithStyles { background: #222; -moz-border-radius: 10px; -webkit-border-radius: 10px; padding: 15px; z-index: 999; border: none; } /* Text below image */ #imgPreviewWithStyles span { color: white; text-align: center; display: block; padding: 10px 0 3px 0; }
Since the anchors are all linking to seperate websites we cannot retrieve the preview image from the 'href' attribute, so we get it from the 'rel' attribute instead:
<a href="http://google.com" rel="img/google.jpg">The Sun</a>
$('ul#fifth a').imgPreview({ containerID: 'imgPreviewWithStyles', /* Change srcAttr to rel: */ srcAttr: 'rel', imgCSS: { // Limit preview size: height: 200 }, // When container is shown: onShow: function(link){ $('<span>' + link.href + '</span>').appendTo(this); }, // When container hides: onHide: function(link){ $('span', this).remove(); } });
/* CSS: (StyleSheet) */ #imgPreviewWithStyles { background: #222; -moz-border-radius: 10px; -webkit-border-radius: 10px; padding: 15px; z-index: 999; border: none; } /* Text below image */ #imgPreviewWithStyles span { color: white; text-align: center; display: block; padding: 10px 0 3px 0; }
This page, © Copyright James Padolsey 2009