Camera is a responsive/adaptive slideshow. Try to resize the browser window
It uses a light version of jQuery mobile, navigate the slides by swiping with your fingers
It's completely free (even if a donation is appreciated)
Camera slideshow provides many options to customize your project as more as possible
It supports captions, HTML elements and videos and it's validated in HTML5 (have a look)
Different color skins and layouts available, fullscreen ready too

I made Camera slideshow for free

I developed it for one of my projects and I decided to share it.

If you like you can reciprocate in many ways as you can see

if you like camera
be social

Be social

Share this page or follow me on Dribbble, Twitter, Facebook etc.

if you like camera
buy something

Buy something

Buy one of my themes on ThemeForest or hire me to adapt this plugin

If you like Camera slideshow, or if you used it for a commercial purposes, please consider a donation via Paypal or credit card

$

if you like camera
make a donation

Make a donation

You can buy me a beer, or an ice-cream for my daughter via Paypal


Introduction, where I talk about Camera slideshow

And I apologize for my bad English

HI THERE. First of all excuse me for my bad english, second excuse me if you will find some bugs on Camera slideshow. I developed it for free, so it's not easy to find the time to work on it. If you want to help me with a donation I'll appreciate :-)

Camera slideshow is an open source project, based on Diapo slideshow (http://www.pixedelic.com/plugins/diapo, no more supported, sorry), but improved a lot. You can suggest changes or improvements if you want. You can download it and use for free, you can also include it in your projects and sell it as part of a bigger work (in this case please consider a donation).

Camera slideshow (as Diapo) is tested on new browsers, but I tried to make it compatible with the old versions of Internet Explorer too (8 and 7). But I don't think I will spend many hours to improve this feature, sorry.

Camera slideshow requires jQuery 1.4+ and other jQuery plugins are necessary if you want to use some functionalities: jQuery Easing (visit the project page) and a customized version of jQuery Mobile (visit the project page) to use Camera with mobile devices. These plugins are included in the zip you can download at the bottom of this page.


Usage, how to include Camera into your projects

And all the methods

The basis

This is the basic structure to make Camera work:

<div class="camera_wrap">
    <div data-src="images/image_1.jpg"></div>
    <div data-src="images/image_1.jpg"></div>
    <div data-src="images/image_2.jpg"></div>
</div>

Just put this code into your HTML page and the basic slideshow will be ready to use. See the other demos to create more complex slideshows.

For jQuery newbies: after downloading and unzipping Camera, you can see some files in the folder called Examples included in the zip: there I provided some examples of Camera slideshow.

As you can see in the examples themselves, before the Camera plugin, you must call jQuery in the head of your document: without jQuery the slideshow doesn't work.

Then you must call jQuery Easing plugin and jQuery Mobile plugin. After that you must call Camera plugin and initialize the function camera with the simply method jQuery('YOUR_TARGET').camera();


Skins

Do not forget to call also "camera.css". By editing this CSS file you can create your own personal skin, of course. But Camera already provides some skins. It has got 33 different colors for the icons. To use them just add one of this classes to the target element (if you don't use any of this classes the color of the icons will be petroleum/graphite):

camera_amber_skin  |  camera_ash_skin  |  camera_azure_skin  |  camera_beige_skin  |  camera_black_skin  |  camera_blue_skin  |  camera_brown_skin  |  camera_burgundy_skin  |  camera_charcoal_skin  |  camera_chocolate_skin  |  camera_coffee_skin  |  camera_cyan_skin  |  camera_fuchsia_skin  |  camera_gold_skin  |  camera_green_skin  |  camera_grey_skin  |  camera_indigo_skin  |  camera_khaki_skin  |  camera_lime_skin  |  camera_magenta_skin  |  camera_maroon_skin  |  camera_orange_skin  |  camera_olive_skin  |  camera_pink_skin  |  camera_pistachio_skin  |  camera_pink_skin  |  camera_red_skin  |  camera_tangerine_skin  |  camera_turquoise_skin  |  camera_violet_skin  |  camera_white_skin  |  camera_yellow_skin


Methods

This is the main function to start your slideshow. Have a look to the options for more detailed info about how to set the slideshow.

jQuery('YOUR_TARGET').camera(); //the basic method

jQuery('YOUR_TARGET').camera({ //here I declared some settings, the height and the presence of the thumbnails 
	height: '41%',
	pagination: false,
	thumbnails: true
});

You can use the public methods below to stop the slideshow, for instance, when you open a lightbox. They simply add or remove a class to the target element.

jQuery('YOUR_TARGET').cameraStop(); //stop the slideshow

jQuery('YOUR_TARGET').cameraPlay(); //start the slideshow

jQuery('YOUR_TARGET').cameraPause(); //pause the slideshow (some difference between 'pause' and 'stop': when you stop the loader and the commands are hidden)

jQuery('YOUR_TARGET').cameraResume(); //resume the slideshow after pausing

Options, and callbacks too

To customize almost everything
alignment: 'center'
topLeft, topCenter, topRight, centerLeft, center, centerRight, bottomLeft, bottomCenter, bottomRight
autoAdvance: true
true, false
mobileAutoAdvance: true
true, false. Auto-advancing for mobile devices
barDirection: 'leftToRight'
'leftToRight', 'rightToLeft', 'topToBottom', 'bottomToTop'
barPosition: 'bottom'
'left', 'right', 'top', 'bottom'
cols: 6
easing: 'easeInOutExpo'
for the complete list http://jqueryui.com/demos/effect/easing.html
mobileEasing: ''
leave empty if you want to display the same easing on mobile devices and on desktop etc.
fx: 'random'
'random','simpleFade', 'curtainTopLeft', 'curtainTopRight', 'curtainBottomLeft', 'curtainBottomRight', 'curtainSliceLeft', 'curtainSliceRight', 'blindCurtainTopLeft', 'blindCurtainTopRight', 'blindCurtainBottomLeft', 'blindCurtainBottomRight', 'blindCurtainSliceBottom', 'blindCurtainSliceTop', 'stampede', 'mosaic', 'mosaicReverse', 'mosaicRandom', 'mosaicSpiral', 'mosaicSpiralReverse', 'topLeftBottomRight', 'bottomRightTopLeft', 'bottomLeftTopRight', 'bottomLeftTopRight', 'scrollLeft', 'scrollRight', 'scrollHorz', 'scrollBottom', 'scrollTop'

N.B.: you can also use more than one effect, just separate them with commas: 'simpleFade, scrollRight, scrollBottom'
mobileFx: ''
leave empty if you want to display the same effect on mobile devices and on desktop etc.
gridDifference: 250
to make the grid blocks slower than the slices, this value must be smaller than transPeriod
height: '50%'
here you can type pixels (for instance '300px'), a percentage (relative to the width of the slideshow, for instance '50%') or auto
hover: true
true, false. Pause on state hover. Not available for mobile devices
imagePath: 'images/'
the path to the image folder (it serves for the blank.gif, when you want to display videos)
loader: 'pie'
pie, bar, none (even if you choose "pie", old browsers like IE8- can't display it... they will display always a loading bar)
loaderColor: '#eeeeee'
loaderBgColor: '#222222'
loaderOpacity: .8
0, .1, .2, .3, .4, .5, .6, .7, .8, .9, 1
loaderPadding: 2
how many empty pixels you want to display between the loader and its background
loaderStroke: 7
the thickness both of the pie loader and of the bar loader. Remember: for the pie, the loader thickness must be less than a half of the pie diameter
minHeight: '200px'
you can also leave it blank
navigation: true
if true the navigation button (prev, next and play/stop buttons) will be visible, if false they will be always hidden
navigationHover: true
if true the navigation button (prev, next and play/stop buttons) will be visible on hover state only, if false they will be visible always
mobileNavHover: true
same as above, but only for mobile devices
opacityOnGrid: false
true, false. Decide to apply a fade effect to blocks and slices: if your slideshow is fullscreen or simply big, I recommend to set it false to have a smoother effect
overlayer: true
true, false. Decide to put a layer on the images to prevent the users grab them simply by clicking the right button of their mouse (.camera_overlayer)
pagination: true
true, false
playPause: true
true or false, to display or not the play/pause buttons
pauseOnClick: true
true, false. It stops the slideshow when you click the sliders
pieDiameter: 38
piePosition: 'rightTop'
'rightTop', 'leftTop', 'leftBottom', 'rightBottom'
portrait: false
true, false. Select true if you don't want that your images are cropped
rows: 4
slicedCols: 12
if 0 the same value of cols
slicedRows: 8
if 0 the same value of rows
slideOn: 'random'
next, prev, random: decide if the transition effect will be applied to the current (prev) or the next slide
thumbnails: false
true, false
time: 7000
milliseconds between the end of the sliding effect and the start of the nex one
transPeriod: 1500
length of the sliding effect in milliseconds

Callbacks

onStartLoading: function() { }
this callback is invoked when the image on a slide start loading
onLoaded: function() { }
this callback is invoked when the image on a slide has completely loaded
onStartTransition: function() { }
this callback is invoked when the transition effect starts
onEndTransition: function() { }
this callback is invoked when the transition effect ends

Since Camera 1.3.0 you can get the index of the current slider by using the callbacks in this way:

onLoaded: function(){
  var ind = t.find('.camera_target .cameraSlide.cameranext').index();
}

With the method above you can get the index of the slide that will display after the transition effect.

onEndTransition: function(){
  var ind = t.find('.camera_target .cameraSlide.cameracurrent').index();
}

With the method above you can get the index of the slide at the end of the transition effect.


Apis, classes and HTML5 data- attributes

To manipulate almost everything...

A simple slide

This is the "simple anathomy" of a slide:

<div data-src="images/image_1.jpg"></div>

Captions

You can add a caption to the slide, just put a div with class "camera_caption" into the div above:

<div data-src="images/image_1.jpg">
	<div class="camera_caption">The text of your caption</div>
</div>

By adding one more class to the "camera_caption" div you can decide the effect of the caption. The possible classes are: "moveFromLeft", "moveFomRight", "moveFromTop", "moveFromBottom", "fadeIn", "fadeFromLeft", "fadeFromRight", "fadeFromTop", "fadeFromBottom"


HTML elements

You can also put some HTML elements into your slides. These elements must be wrapped into a div with position:absolute and they can be included in the transition effect too:

<div data-src="images/image_1.jpg">
	<div class="fadeIn camera_effected">The text of your html element</div>
</div>

An HTML element can have a class "fadeIn": in this case it will be displayed with a fading effect. By adding the class "camera_effected" to the div, it will be included in the transition effect (but pay attention, this could make the transition slow).


Videos

To include a video into your slideshow you must put an iframe into one of your slides:

<div data-src="images/image_1.jpg">
	<iframe src="http://player.vimeo.com/video/1084537" width="100%" height="100%" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
</div>

As you can see I set the width and the height of the iframe to 100%, so it changes its size according with the size of the slideshows (I mean the iframe, the video in the iframe will mantain its ratio).

The iframes can't be included in the transition effect, so you can use a screenshot of the iframe as image for your slide. By default they are displayed after the transition, but you can decide to display them only after clicking the image of the slide itself. Just add to the div (the slide) the attribute data-video="hide" (see below the data- attributes).


The "data-" attributes

The URL of the image on the slide is added by using the HTML5 data- attribute. This allows to load the image only when the slideshow calls it and not (lazy load method).

By using the HTML5 data- attribute you can add many properties to your slide, that overwrite the general ones. For instance the URL of the thumbnails:

<div data-src="images/image_1.jpg" data-thumb="images/thumbs/image_1.jpg"></div>

or a particular alignment for one slide only:

<div data-src="images/image_1.jpg" data-alignment="topLeft"></div>

Here below you can see all the other "data-" possibilities

data-alignment
"topLeft", "topCenter", "topRight", "centerLeft", "center", "centerRight", "bottomLeft", "bottomCenter", "bottomRight"
data-easing
for the complete list http://jqueryui.com/demos/effect/easing.html
data-mobileEasing
the easing effect for mobile devices only
data-fx
"random","simpleFade", "curtainTopLeft", "curtainTopRight", "curtainBottomLeft", "curtainBottomRight", "curtainSliceLeft", "curtainSliceRight", "blindCurtainTopLeft", "blindCurtainTopRight", "blindCurtainBottomLeft", "blindCurtainBottomRight", "blindCurtainSliceBottom", "blindCurtainSliceTop", "stampede", "mosaic", "mosaicReverse", "mosaicRandom", "mosaicSpiral", "mosaicSpiralReverse", "topLeftBottomRight", "bottomRightTopLeft", "bottomLeftTopRight", "bottomLeftTopRight"
data-link
the URL where you go by clicking your slide
data-portrait
"true", "false". Select "true" if you don't want that your images are cropped
data-slideOn
"next", "prev", "random": decide if the transition effect will be applied to the current (prev) or the next slide
data-src
the URL of the image of the slide
data-target
"_blank", "_new", "_parent", "_self", "_top", the target values for the data-link attribute
data-thumb
the URL of the thumbnail of the slide (if the value of the 'thumbnail' option is true)
data-time
the milliseconds between the end of the sliding effect and the start of the nex one
data-transPeriod
the length of the sliding effect in milliseconds
data-video="hide"
"hide" is the unique possible value. If you use this data- attribute means you are using a video on your slideshow. The videos on Camera can be displayed only after the transition. By adding this data- attribute you must click the image to display the video, otherwise the video will be displayed automatically after the transition. More info are available on the demo pages

Download, support, contacts, changelog

And if you want donations

Support for me

If you want to support my work you can buy something from my ThemeForest page: ThemeForest, I'll really appreciate

You can also share this page or follow me on Dribbble, Twitter, Facebook etc.


Support for you

If you need support or if you want to report a bug or ask an implementation the only way is by join the Camera slideshow Google group: http://groups.google.com/group/camera-slideshow


Hiring

If you want you can hire me at manu at pixedelic dot com (include some details about your project and do not ask for support at this address). Do not use this address to ask support please.


Download

To download this file just enter the donation you want to make. If you don't want to donate anything just type 0. Then click "Download"

(you can type 0) $
download  download camera.js (dev. version)

To download this file just enter the donation you want to make. If you don't want to donate anything just type 0. Then click "Download"

(you can type 0) $
download  download camera.min.js (min. version)

To download this file just enter the donation you want to make. If you don't want to donate anything just type 0. Then click "Download"

(you can type 0) $
download  download Camera slideshow (zip with demo inside)

Se also the project on the github repository: https://github.com/pixedelic/Camera


Changelog

v.1.3.4 - 2012.06.23
Fixed some issues with rtl direction
v.1.3.3 - 2012.06.17
Fixed a misprint (sorry)
v.1.3.2 - 2012.06.12
Fixed a bug with the nextSlide function
Added the pageshow event
Fixed a problem with iframes
v.1.3.1 - 2012.05.28
Fixed an issue with portrait mode
v.1.3.0 - 2012.05.23
Changed the behavior of some callbacks and added the class "cameranext" (read the documentation about the callbacks)
v.1.2.0 - 2012.05.04
Changed the lazy loading way of working
v.1.1.2 - 2012.04.29
Fixed some issues with old IE version
Added a demo file with a PHP function to create randomically ordered slideshow
v.1.1.0 - 2012.04.21
Fixed an issue with the image loader on IE8 (thanks to Aquila)
Changed the fullscreen demo to solve an issue with IE7... I hate IE :-)
v.1.0.8 - 2012.04.05
Fixed an issue with the image loader on IE
v.1.0.6 - 2012.03.24
Removed cameraPlay function
Used cameraPause and cameraResume instead of cameraStop and cameraPlay
Now cameraStop is used to block (destroy) the timer of the slideshow (you can't resume it after that)
Fixed a problem with links
Fixed a problem with the captions (thank you to @sattes
v.1.0.5 - 2012.03.13
Added onStartTransition callback
v.1.0.4 - 2012.03.08
Fixed a bug with the captions
v.1.0.3 - 2012.02.23
Made some changes according with the WP version and fixed a bug of cameraResume method
v.1.0.2 - 2012.02.18
Added 'minHeight' option
v.1.0.1 - 2012.02.18
Fixed a problem with IE8-
v.1.0.0 - 2012.02.17
First release

©2012 by Manuel Masia | Pixedelic.com