An interaction that zooms into an image and displays a higher resolution image that can be panned.
Zoom can be triggered by a tap on a button element, a tap on the image directly (which will focus on the coordinates tapped), or through a pinch gesture.
data-ur-set="zoom"
data-ur-zoom-component="img"
data-ur-zoom-component="button"
data-ur-zoom-component="loading"
data-ur-set="zoom"
data-ur-touch
: enabled/disabled (allow clicking image to zoom)
data-ur-zoom-component="img"
data-ur-src
: source of the larger imagedata-ur-width
: integer (width of larger image), use this to start the zoom animation before loading the larger imagedata-ur-height
: integer (height of larger image), used with data-ur-width
data-ur-zoom-component="button"
data-ur-zoom-component="loading"
You can also directly initialize the widget in JavaScript (components can be passed in as strings/elements/arrays):
Uranium.lib.zoom({ set: "#a", loading: "#b", imgs: [ { img: "#c", width: 1024, height: 768 } ] });
<div data-ur-set="zoom"> <img data-ur-zoom-component="img" src="images/pic1.jpg" data-ur-src="images/pic2.jpg"> <div data-ur-zoom-component="button"> <span>+</span> <span>−</span> </div> <div data-ur-zoom-component="loading" data-ur-state="disabled">Loading…</div> </div>
/* Recommended SCSS Styling (using the Bourbon mixin library) */ [data-ur-set="zoom"] { display: inline-block; overflow: hidden; position: relative; max-width: 100%; // for when zoom is combined with carousel } [data-ur-zoom-component="img"] { vertical-align: top; &[data-ur-state="enabled-in"], &[data-ur-state="enabled-out"] { @include transition(0.4s ease-in-out); @include transition-property(transform); } &[data-ur-state="enabled-slide"] { @include transition(0.3s ease-out); @include transition-property(transform); } } [data-ur-zoom-component="loading"][data-ur-state="disabled"] { display: none; }
/* Recommended CSS Styling */ [data-ur-set="zoom"] { display: inline-block; overflow: hidden; position: relative; max-width: 100%; // for when zoom is combined with carousel } [data-ur-zoom-component="img"] { vertical-align: top; } [data-ur-zoom-component="img"][data-ur-state="enabled-in"], [data-ur-zoom-component="img"][data-ur-state="enabled-out"] { -webkit-transition: 0.4s ease-in-out; -moz-transition: 0.4s ease-in-out; transition: 0.4s ease-in-out; -webkit-transition-property: -webkit-transform; -moz-transition-property: -moz-transform; transition-property: transform; } [data-ur-zoom-component="img"][data-ur-state="enabled-slide"] { -webkit-transition: 0.3s ease-out; -moz-transition: 0.3s ease-out; transition: 0.3s ease-out; -webkit-transition-property: -webkit-transform; -moz-transition-property: -moz-transform; transition-property: transform; } [data-ur-zoom-component="loading"][data-ur-state="disabled"] { display: none; }
Here we place zoom interactions inside a carousel
<div data-ur-set="carousel" data-ur-fill="1"> <div data-ur-carousel-component="dots"></div> <a data-ur-carousel-component="button" data-ur-carousel-button-type="prev">Prev</a> <a data-ur-carousel-component="button" data-ur-carousel-button-type="next">Next</a> <div data-ur-set="zoom"> <div data-ur-zoom-component="button"> <span>+</span> <span>−</span> </div> <div data-ur-carousel-component="scroll_container"> <div data-ur-carousel-component="item"> <img data-ur-zoom-component="img" src="images/pic1.jpg" data-ur-src="images/pic2.jpg" data-ur-width="1000" data-ur-height="573"> </div> <div data-ur-carousel-component="item"> <img data-ur-zoom-component="img" src="images/pic3.jpg" data-ur-src="images/pic3.jpg"> </div> <div data-ur-carousel-component="item"> <img data-ur-zoom-component="img" src="images/pic4.jpg" data-ur-src="images/pic4.jpg"> </div> </div> </div>