reel

verb
  1. ...
  2. the room reeled GO ROUND, go round and round, whirl, spin, revolve, swirl, twirl, turn, swim.
Fork me on GitHub

Try dragging this area or roll your mouse wheel over it Now even on iPhone

Reel 1.1.3 is a jQuery plugin which takes an image tag and makes it a live "projection" of pre-built animation frames sequence. Its aim is to provide a 360° view of something or someplace. Great alternative to widely used Flash and Java techniques.

back up

Download jquery.reel.js

version 1.1.3, minified, gziped, CDN, ~ 5.2 kB
More download options...
scroll down to...
back up

Demonstration

An image is worth a thousand words. And how about an interactive one!

Try reel for yourself. Place your mouse pointer over images below. And roll your mouse wheel up/down or drag the mouse left/right (or even up/down).

NEW

In response to the mouse activity, the images reel their contents frame by frame. Indicated by a black square sliding alongside the edge(s). If not, either some downloading momentarily failed so try it again first. Or something terrible went wrong. In that case we would love to know it so please do report a bug

Reel also supports stitched panorama style view:

Photos credits: RC formula by Erik Kluka | Mini Cooper S by PhotoSpherix | Moro Rock, Giant Sequoia National Park, California USA by Henning Leweke (cc)

Please note that the above images are scaled down to about 50% of their real-life size in order to save bandwidth.

Many examples plus code reside in tests in the Sampler »

back up

RSS Latest news

2012-01-25
NEW Reel usage has truly flourished since the last news and now well over 100 websites around the globe have put their trust into Reel. Be it Blackberry, Honda, BMW, Adidas, Diesel or BASF, you name it. To showcase these, Reel got its own Google+ page and each week one site is picked and featured there. Do not miss! Also, even better version 1.2 is just around the corner :)
2011-05-08
Reel 1.1.3 doesn't add any new functionality or options. Instead it promptly fixes the jQuery 1.6 incompatibility and is now fully compatible with all versions of jQuery from 1.4.2 up. And it also fixes some minor stuff along the way.
2011-05-07
An incompatibility with the latest jQuery 1.6 released few days ago has been discovered. 1.5.x works just fine. Working hard to fix it soon. Sorry for the trouble, folks.
2011-04-30
Even before the Reel 1.1.2 release, Rowlands Group announced the release of their Formatter beta 3 for Drupal and short after Josh Gourneau announced his Python script for producing the sprites . Lovely tools emerging from the community :)
2011-04-25
Recently I took time to nail some issues reported directly by e-mail or on Github and the latest patch release 1.1.2 which came out this Easter Monday fixes many of them improving the overall experience especially in IE, Firefox and Safari (iPad).
2011-03-21
Patch release 1.1.1 out! Amongst few performance improvements it fixes first-sequence-frame-vanishing and ios-vertical-scrolling bugs, which were troubling many of you. Performance on iPad has also been enhanced. Thank you all for your kind support and contributions!
2011-01-06
Reel got a very nice Christmas gift in Olivier de Broqueville 's announcement of Adobe's approval of his free 360° Rotation Viewer widget, a Dreamweaver extension having Reel under the bonnet! Tidbit for all you Dreamweavers. Happy new year!
2010-11-27
Brand new jQuery Reel 1.1 is OUT! It took long, but so many feature requests by users had been satisfied: vertical setups (multi-row and orbital modes), animation!, sequence of individual images, better iPad compatibility and many more - see changelog. Despite tons of changes 1.1 is fully backwards compatible with 1.0, so effective from today the CDN now by default serves version 1.1. You have helped me great deal. Thank you all a enjoy this release :)
2010-04-26
Last week Reel got its first ever tutorial - Full 360-Degree Product Image Rotation in JavaScript
2010-04-24
Some of you may have noticed weird skipping motion of stitched panoramas. Sadly, I didn't. Luckily, Elissaios Koumridis did and reported it. Thanks! It's now all fixed and covered with tests :-)
2010-04-19
Reel 1.0.4 "Touchy" is out. And it is a rather significant release. Long awaited by the community, one known issue has been resolved and Reel now works on iPhone in Safari! Thanks to the help of Michael Crane and other kind iPhone testers. It should also work on other Apple touch devices as iPad and iPod Touch. Opera Mini is still not supported though, but just hold on... See all changes
2010-03-29
iPhone/iPad Tester wanted. If you own an iPhone (or iPad) and are willing to help the Reel community, please contact me right away.
We got the testers, thanks!
2010-03-23
As the word is spreading (thanks to mentions in posts like Best jQuery Plugins - August 2009 or more recent How jQuery is Killing Flash and blog posts in AjaxLine jQuery Wisdom Design Beep aext.net w3avenue and AjaxMint ), a positive response can be observed among users and audience. Thank you! Many of you already use Reel plugin for your own wonderful stuff. There are many new features on the list for upcoming 1.1.x version. Stay tuned, folks! Meantime, three easy examples of Reel plugin usage were added to the How to section.
2009-08-31
The Reel plugin version 1.0 is out. On top of the RC it now also supports classic-style stitched panoramas and many more. Inspect version change log for details.
2009-08-25
First release candidate is out!
Expand older news »
back up

How to?

  1. You obviously have an image you want to make interactive in your HTML document.
  2. Collect all rotation frames into a single reel sprite OR stitch them together OR prepare a sequence of individual frames
  3. Link jquery.reel.js in your document.
  4. And on the image use the jQuery method: .reel() Some examples with an IMG tag id "my_image":
    • This will simply make it reel: $('#my_image').reel()
    • Don't have 36 frames? 27, you say? No problem: $('#my_image').reel({ frames: 27 })
    • Want to use your own CSS class? There's an option for just that: $('#my_image').reel({ klass: 'MyThreeSixty' })
    Check out other options you can use and combine
back up

Is it compatible?

* Under the hood Reel uses mere CSS background image positioning which is pretty common in all today's browsers. No magic. Even Internet Explorer 5.5 is capable of it. Hence the extra wide compatibility. See detailed report.
back up

Is it free?

back up

Download

Current version is 1.1.3 (from 2011-05-08)

You can shave off more then half of the size by having the files served from CDN locations instead of downloading.

See change log for changes

back up

Syntax

The syntax is pretty straightforward. The plugin exposes just one method: .reel([options])
back up

Options

Reel has a handful of options you can use to override the default values.

type option default
jQuery area undefined NEW Use jQuery to extend the area sensitive to mouse or touch interaction. Will use the area of the image if left undefined.
Number brake 0.5 NEW Braking force applied when slowing down the free spinning when dragged and thrown.
Boolean clickfree false NEW Binds to mouse leave/enter events instead of down/up mouse events.
Boolean cw false NEW If your Reel image motion doesn't follow the mouse when dragged (moves in opposite direction), set this to true to indicate clockwise organization of frames.
Number delay -1 NEW Delay before Reel starts rotating by itself in seconds (no auto-play by default (-1)).
Boolean directional false NEW Two sets of frames are used when true. One set for forward followed by one for backward motion.
Boolean draggable true NEW Allows mouse or finger drag interaction when true (allowed by default).
Number entry undefined NEW Speed of the opening animation in Hz. Defaults to value of speed option.
Number footage 6 Number of frames per line (when horizontal) or per column (when vertical).
Number frame 1 Initial frame. Plugin instance starts with this frame. Frame 1 is the top left corner of the image. Thus loaded with the highest priority (as all frames in the top row not matter if horizontal or vertical).
Number frames 36 Total number of frames.
Function graph undefined NEW Custom graph function.
String hint Text hint for hotspot tooltip.
Boolean horizontal true Flow of frames on the sheet. Default is line-by-line rather than column-by-column.
jQuery hotspot undefined DEPRECATED Use area instead.
String image undefined NEW Allows to override default sprite resolution based on IMG src filename by passing the path to the image sprite directly.
Array images [] NEW When sprite image is too memory-intensive you can revert to using a sequence of individual images instead.
Number indicator 0 Can display a range progress indicator inside the image. By passing a positive value in pixels a black square marker will stick to the bottom edge of your image. Customize the color by CSS. Its class name is jquery-reel-indicator (use !important to override the black)
Boolean inversed false NEW Flags inversed organization of frames in orbital object movie.
String klass You can pass your custom CSS class name for the plugin DOM node. It will accompany the fixed jquery-reel base class.
Number laziness 8 NEW on "lazy" devices tempo is divided by this divisor for better performace.
Boolean loops true Can be used to suppress default wrap around behavior of the sequence. Use this option when your captured sequence is a incomplete revolution.
String monitor undefined NEW For development you can monitor any stored value in the upper left corner of the viewport by passing its name. Customize it using CSS. Its class name is jquery-reel-monitor
Number opening 0 Duration of opening animation (in seconds).
Number orbital 0 NEW View centering tolerance (in frames) for dual-orbit object movies.
String path undefined NEW URL path to be prepended to either `image` or `images` filenames.
Number preloader 4 NEW Size (height) of a image loading indicator (in pixels). Indicator appears along the bottom edge of Reel image when using `images` sequence. Customize it using CSS. Its class name is jquery-reel-preloader
Number rebound 0.5 NEW Time spent on the edge (in seconds) of a non-looping panorama before it bounces back.
Boolean reversed false DEPRECATED Use cw instead.
Number revolution undefined NEW Distance mouse must be dragged to cause one full revolution (when undefined, defaults to double the viewport width or half the `stitched` option).
Number row 1 NEW Initial row for multi-row setups (see rows for more).
Number rows 0 NEW Number of rows for a multi-row setup (default 0 means single-row setup).
Number spacing 0 Spacing between frames on the sheet (in pixels).
Number speed 0 NEW Animated rotation speed in revolutions per second (Hz). Animation is disabled by default (0).
Number step undefined NEW Initial step (overrides `frame`). See steps for more.
Number steps undefined NEW Number of steps a revolution is divided into (by default equal to `frames`).
Number stitched 0 Pixel width of stitched panorama image. If supplied the default frame-by-frame behavior changes to panoramic behavior which works with the classic style panorama.
String suffix "-reel" A portion of the sheet filename inserted right before image type extension. For example, for an image /path/to/image.jpg the sheet will be /path/to/image-reel.jpg by default.
Number tempo 25 NEW Shared animation ticker tempo in ticks per second. Doesn't affect the speed.
Number timeout 2 NEW Idle timeout after which animation is resumed (in seconds).
Boolean throwable true NEW Allows drag & throw interaction (allowed by default).
String tooltip DEPRECATED Use hint instead.
Boolean vertical false NEW Switches orbital object movie to vertical mode.
Boolean wheelable true NEW Allows mouse wheel interaction (allowed by default).
back up

Requirements

back up

Known issues

back up

Author

back up

Changelog

Version 1.1.3
  • Promptly resolves sudden incompatibility with new jQuery 1.6 » Github issue GH-32
  • Enhanced test for by testing for CSS value equivalency rather for string equality » Github issue GH-33
  • `leader` tests Opera bug fixed » Github issue GH-34
Version 1.1.2
  • All known Internet Explorer bugs fixed:
    • Fixed two issues preventing Reel from animating itself in IE » Github issue GH-30
    • Fixed iframe-related bug in IE » Github issue GH-25
    • Fixed broken-image-overlay bug when using sprite on IE 7 and lower.
    • Fixed the overgrown indicator bug in IE 6.
  • Unwanted brief image disappearance of image on start eliminated.
  • Sprite request duplication eliminated for Firefox and others.
  • Laziness factor has been adjusted for better performance on iPhones.
  • Revised adaptive ticker:
    • Ticker is now driven by a "leader" - the oldest living instance on page - and `$.reel.leader` references its data. This removes the first-reel-sets-the-tempo limitation in older versions.
    • Overall `$.reel.cost` per timer tick in ms is being continuously calculated and then used to elevate timer accuracy.
    • Several performance tests included.
Version 1.1.1
  • Per document `$.reel.touchy` and `$.reel.lazy` properties added to manifest key user agent qualities.
  • Animation timer now automatically adapts to your viewer's device performance to stay in sync.
  • Vertical page scrolling now possible in Safari on iOS » Github issue GH-7
  • Initial frame 1 now doesn't disappear after loading » Github issue GH-11
  • New `center` store key now stores if on the center point in orbital setups.
  • iPad has been excluded from "lazy" devices list, because it in fact isn't lazy device at all. This means much fluent experience on iPads.
Version 1.1
  • Animation
    • The projector can now self-animate. The animation is controlled with bunch of options.
      • delay option for autoplay delay (use -1 to prevent it).
      • speed option sets the speed of animation (in Hz).
      • rebound options is how long in seconds will a non-looping reel stay on edge before bouncing back from it.
      • timeout option is a period of user inactivity after which animation is resumed again.
    • To control the animation from outside, new events `"play"`, `"pause"` ańd `"stop"` have been added.
    • Having one shared ticker for animation purposes. tempo option sets the speed in ticks per second.
    • Slower devices are detected and their tempo is decreased accordingly for better performance.
    • Duration of an opening animation is set using new opening option. Custom opening speed can be set using new entry option.
  • Rendering
    • Suggestive open/closed palm cursor used for mouse pointer over the projector.
    • iPhone downsizing bug is gone, however it decreases visual quality to fit in memory.
    • Image(s) loading status is now indicated by a horizontal progress bar at the bottom of the image. Height of the loader indicator can be adjusted by using new preloader option.
    • Added monitor option accepting a string key of any value stored within. It is then displayed in the upper left corner of the viewport.
    • Teardown sequence now wipes out everything.
  • Math
    • Decimal fraction is now used as a base for internal computations instead of using frames.
      • steps option divides Reel into different amount of steps other than defined by frames.
      • step option can be used to override initial frame option.
      • revolution option is a pixel distance mouse drag has to travel for full revolution.
  • Events
    • Instance now emits "loaded" event after image(s) preloading is done.
    • Internal data storage now report every manipulation by "store" or "recall" events. Name and value are passed as additional params to the handler.
  • Interaction
    • New draggable , wheelable and throwable options added for interaction style control.
    • New boolean clickfree option which causes binding to mouseenter/leave events rather than down/up for click-free interaction.
    • Prevented text selection of the projector on iPhone.
  • Multi-Row Object Movies
    • You can no go beyond the simple 360° with support for multiple horizontal rows.
      • rows option sets the vertical rows count.
      • row the initial row on which to start.
  • Dual-Axis Object Movies
    • New orbital option allows to specify centering tolerance and the movie is switched to dual-axis mode for one horizontal plus one vertical orbit.
  • Sequence of Images
    • Added the image option which allows custom image sprite to be used.
    • Array of individual images can now be supplied instead of using a collective sprite - this feature effectively overcomes the memory limit on iPhone imposed on large JPEG sprites exhibited by downsizing the sprite. See FAQ for more on this.
  • Other Options
    • All default options are now made available for manipulation as `$.reel.def` object.
    • The `sensitivity` option has become obsolete and had been removed.
    • The problematic `saves` option does no longer make sense (as there is no other option) and had been removed all together.
    • The hotspot option deprecated in favor to new area to stop being misleading.
    • New directional boolean option to flag bi-directional sprites.
    • New laziness option allows to customize the tempo divisor for lazy devices.
  • Content Delivery Network
    • Reel's own cloud CDN has been started and recommended for use instead of download.
    • For convenience, a "bundle" is available on the http://code.vostrel.cz/jquery.reel-bundle.js and it contains Reel along side with jQuery.mouseWheel and jQuery.disableTextSelect optional plugins.
  • As of this release the minimal version of jQuery has been increased to 1.4.2.
Version 1.0.4
  • Added long awaited support for iPhone/iPad/iPod family of touch-enabled devices.
  • Fixed miscalculation bugs GH-4 and GH-6 in stitched panoramas.
  • Added teardown event for effective reversal of initialization and to pair setup.
  • As of this release the minimal version of jQuery has been increased to 1.4.x.
  • Added very preliminary test suite. Hurray!
  • Added compatibility with another nice mouse wheel plugin, Three Dub Media's $.event.special.wheel.
Version 1.0.3
  • User neptune (thanks!) found a nasty mishap where option tooltip was used instead of hint on several places. To stay backwards compatibile tooltip will stay as an alias of new option hint (which is preferred).
Version 1.0.2
  • Added support for counter-clockwise sprite by specifying option reversed
  • Validation of tags on which reel is applied added. Only IMG tags with assigned all src, width and height pass.
Version 1.0.1
  • Support for more classical stitched panoramic images added the stitched option accepting pixel length (width) of stitched panoramic reel image.
  • Mouse wheel sensitivity handling was improved.
  • Indicator now displayed without any extra CSS.
  • Fixed corrupted detection of movement direction.
  • Added new sensitivity option which enables control over sensitivity of mouse interaction.
  • Polishing options.
    • Added hint option to allow custom tooltip instructions to be displayed on hotspot(s).
    • The panorama option has been removed.
    • Added klass option to allow custom CSS class on plugin instance.
    • Option suffix default value changed from "-sheet" to "-reel".
    • Option save corrected to saves
  • Added new hotspot option accepting a jQuery. It allows binding mouse interaction events to custom DOM node.
Initial version 1.0
Expand entries for older versions »
back up

Badge for your site

4 badges available, GIF, small and served fast from CDN location.