nanoGALLERY is a touch enabled and fully responsive image gallery with justified, cascading and grid layout.
It supports self hosted images and pulling in Flickr, Google Photos and Google+ photo albums.
Managing your photo galleries has never been so simple.
Image Gallery
nanoGALLERY is a full-featured image gallery plugin for jQuery.
Display thumbnails with title and description.
Choose between justified, cascading or grid layout.
Responsive thumbnail sizes (device size dependant).
Images are displayed in full view via a modal popup window.
Support self-hosted images as well as online photo sharing website (Flickr, Google Photos / Google+).
Thumbnail selection mode with checkboxes.
Flickr, Google Photos, Google+
Any photo published to your online photo sharing site (e.g. from your mobile phone) is automatically added to your website.
Display galleries on your website with your custom design.
Automatic thumbnail generation in different resolutions.
Huge bandwidth saving and fast photo downloading (photos are not store on your website).
Mobile Friendly
The script is touchscreen enabled and responsive.
Pagination and images support swipe gesture.
Galleries and photos are automatically resized depending on the device resolution.
Downloads small images on small display to save bandwidth.
Hover Effects
Spice up your Portfolio with eye-catching hover effects.
Effects can be combined for more possibilities.
2D/3D effects available.
Build your own custom effects.
Effects are touchscreen friendly.
Sub Galleries / Albums
Support multi-level navigation.
You can organize your images in albums.
Use a breadcrumb to navigate in photo albums.
Unlimited number of sub-levels.
Support deep linking to albums.
You can define thumbnail settings specific to the first navigation level.
Highly customizable
A ton of options to personalize your galleries.
Provides API methods and callbacks.
Customizable image toolbar.
Color schemes to change layout without editing any CSS file.
And more..
Support browser BACK/FORWARD navigation.
Can be controlled using mouse, keyboard or touchscreen.
RTL (Right To Left) and LTR (Left To Right) display.
Thumbnails can redirect to an URL instead of an image.
Support most browser versions, including IE9+ (and partial support for IE8).
Slideshow, fullscreen, pagination, image lazy load, themes, deep linking, data caching, image pre-loading, i18n...
This example shows you how to use icons from Font Awesome.
The breadcrumd home icon is replaced by a camera icon. It's defined twice: one is used by default (breadcrumbHome) and the other one is used on devices in french (breadcrumbHome_FR).
A search icon is displayed in the thumbnail description.
This shows you also how to change the label 'List of Albums' (parameter 'breadcrumbHome').
For this example, you also need to include Font Awesome in the HEAD of your page.
For any question or bug report please post directly on
GitHub.
Feature requests and possible improvements: all ideas are welcome.
Feel free to submit your own commit.
To be notified about updates, you can star and watch the nanoGALLERY repository on GitHub
nanoGALLERY for jQuery is licensed under CC BY-NC 3.0.
It may be used in commercial projects and applications, or in business environments with the purchase of a professional license.
Open source license
For personal, non-profit organizations, or open source projects (without any kind of fee), you may use nanoGALLERY for free. If fees are associated to the use of nanoGALLERY, your project is not eligible to this license.
All other uses are considered professional. The purchase of a license is required.
Professional license
Purchasing accepts most credit cards and takes seconds. Once purchased, you'll receive a Professional License PDF and you will be able to integrate nanoGALLERY in your projects.
By buying a pro license you support the future development of nanoGALLERY. It is much appreciated!
Website License - 25€
This licensing is for implementing nanoGALLERY on ONE website.
OEM License - 90€
The nanoGALLERY Professional OEM License is for including nanoGALLERY in your own non-free applications and products.
For example: premium themes, site templates, plugins.
Donator License
You decide freely the amount of your support.
If you have special needs, you can also ask for the author's permission. Contact: nano[at]brisbois.fr
List of basic properties accepted by the nanoGallery() method.
Property
Type
Default
Description
thumbnailHeight
integer string
154
Thumbnails image height in pixels, or 'auto'. 'auto' means cascading grid layout.
thumbnailWidth
integer string
230
Thumbnails image width in pixels, or 'auto'. 'auto' means justified layout.
thumbnailAlignment
string
'center'
Sets the thumbnail alignment.
Possible values: 'left', 'right', 'justified', 'center'.
Note: value 'justified' will ignore the 'thumbnailGutterWidth'.
thumbnailHoverEffect
string object array
'none'
Thumbnail mouse hover effect. The effect will also be triggered by 'tap' on touch-screen.
Combinations: define multiple effect names in the parameter to combine them. Example: thumbnailHoverEffect='borderDarker,labelAppear75'
Please note that some effects can not be combined (for example: 'imageSlideUp' and 'imageFlipHorizontal'). And some combinations can results in weirds effects...
Name of the theme.
Note: the corresponding css-file must be included in the html file.
Possible values: 'default', 'clean', 'light' or your custom one.
colorScheme
string object
'none'
Gallery color scheme (breadcrumb and thumbnails).
Possible values: 'none', 'dark','darkRed', 'darkGreen', 'darkBlue', 'darkOrange', 'light', 'lightBackground'
Custom color schemes are supported.
colorSchemeViewer
string object
'default'
Image viewer color scheme.
Possible values: 'none', 'dark', 'darkRed', 'darkGreen', 'darkBlue', 'darkOrange', 'light'
Custom color schemes are supported.
RTL
boolean
false
Sets the display direction from Right To Left (RTL). Default is from Left to Right (LTR).
Flickr Storage
Set up your HTML:
Put a <DIV> element in the <BODY> of your HTML page where you want the gallery to be displayed.
At this time, applications can not access Google Photos. There's no API. This means that nanoGALLERY can not directly acces your photos on Google Photos.
As an alternative, you can set your Google Photos albums public, then they'll be visible in nanoGALLERY.
To make an album public, you simply need to publish it on Google+. This can be done in Google Photos,
or in Picasa (click here)
Your published albums can be accessed in nanoGELLRY like albums on Google+ / Picasa.
Use the extension nanoPhotosProvider
nanoPhotosProvider is an extension to publish your self-hosted photos simply and automatically to nanoGALLERY.
The content of the gallery is provided on demand when browsing the albums.
Thumbnails are generated automatically. nanoPhotosProvider is a PHP application. It must be installed on your web server.
List of properties accepted by the nanoGallery() method.
Property
Type
Default
Description
theme
string
'default'
Name of the theme.
Note: the corresponding css-file must also be included in the html file.
Possible values: 'default', 'clean', 'light' or your custom one.
Gallery color scheme (breadcrumb and thumbnails).
Possible values: 'none', 'dark','darkRed', 'darkGreen', 'darkBlue', 'darkOrange', 'light', 'lightBackground'
Custom color schemes are supported.
RTL
boolean
false
Sets the display direction from Right To Left (RTL). Default is from Left to Right (LTR).
maxItemsPerLine
integer
0
Maximum number of thumbnails per row.
Ignored when thumbnailWidth is 'auto'. 0 = disabled.
maxWidth
integer
0
Maximum width of the gallery in pixels. 0 = disabled.
paginationDots
boolean
false
Displays dots for thumbnail pagination instead of page numbers
paginationVisiblePages
integer
10
Thumbnail pagination - maximum visible page numbers.
Maximum number of thumbnail lines per page (will activate pagination).
0= pagination is disabled.
Ignored when thumbnailWidth='auto' or thumbnailHeight='auto'.
paginationSwipe
boolean
true
On the gallery, enable swipe to go to next/previous page.
Enables hash tracking.
This will activate browser Back/Forward navigation (browser history support) and Deep Linking of images and photo albums.
Note: only one gallery per page should use this feature.
itemsSelectable
boolean
false
Enables thumbnail selection (CTRL+click, or long touch).
showCheckboxes
boolean
true
Displays a checkbox over selected thumbnails.
checkboxStyle
string
'left:15px; top:15px;'
Inline style for selection checkbox.
keepSelection
boolean
false
Do not lose selection on navigation.
i18n
object
UI string translations.
lazyBuild
string
'none'
Displays the gallery only when visible (= in the viewport)
Possible values: 'loadData', 'display', 'none'
lazyBuildTreshold
integer
150
Shortens the viewport area height (in pixel) for lazyBuild.
openOnStart
string
Opens the specified album or image at start.
Syntax: 'albumID' or 'albumID/imageID'
breakpointSizeSM
integer
480
Screen width breakpoint for size SM. Used for thumbnail sizes and image display.
breakpointSizeME
integer
992
Screen width breakpoint for size ME. Used for thumbnail sizes and image display.
breakpointSizeLA
integer
1200
Screen width breakpoint for size LA. Used for thumbnail sizes and image display.
breakpointSizeXL
integer
1800
Screen width breakpoint for size XL. Used for thumbnail sizes and image display.
Settings for thumbnails
General settings
Property
Type
Default
Description
thumbnailHeight
integer string
154
Thumbnails image height in pixels, or 'auto'.
This value will be applied to the thumbnail image. The whole thumbnail will be higher.
Display options for the image label (title and description).
Possible parameters: position, display, displayDescription, titleMaxLength, descriptionMaxLength, hideIcons, align, title, itemsCount.
Position of the label.
Possible values: 'overImageOnBottom', 'overImageOnTop', 'overImageOnMiddle', 'onBottom'
thumbnailLabel.display
boolean
true
Displays or hides the label.
thumbnailLabel.displayDescription
boolean
true
Displays the description.
thumbnailLabel.titleMaxLength
integer
0
Title maximum length to display.
thumbnailLabel.descriptionMaxLength
integer
0
Description maximum length to display.
thumbnailLabel.hideIcons
boolean
false
Hides thumbnails icons.
thumbnailLabel.align
string
Horizontal text alignment.
Possible values: 'right', 'center', 'left'
thumbnailLabel.title
string
Variable to set the image title (undescores are replaced by spaces).
Possible values: '%filename', '%filenameNoExt'
thumbnailLabel.itemsCount
string
Displays the number of items per photo album.
Possible values: 'none', 'title', 'description'
thumbnailHoverEffect
string object array
'none'
Thumbnail mouse hover effect. The effect will also be triggered by 'tap' on touch-screen.
Combinations: define multiple effect names in the parameter to combine them. Example: thumbnailHoverEffect='borderDarker,labelAppear75'
Please note that some effects can not be combined (for example: 'imageSlideUp' and 'imageFlipHorizontal'). And some combinations can results in weirds effects...
nanoGALLERY supports additionally 'Transit jQuery plugin' which provides better animation performances in some cases.
To activate it, just include the plugin in the <head> of your page:
<script type="text/javascript" src = "jquery.transit.min.js"> </script>
thumbnailHoverEffect.name
string
Name of the hover effect.
thumbnailHoverEffect.duration
integer
400
A number determining how long the animation will run (in milliseconds).
thumbnailHoverEffect.easing
string
'swing'
A string indicating which easing function to use for the transition.
thumbnailHoverEffect.delay
integer
0
Sets a timer to delay execution of the animation (in milliseconds)
Please note that this is not supported with transit.js
thumbnailHoverEffect.durationBack
integer
200
A number determining how long the back animation will run (in milliseconds).
thumbnailHoverEffect.easingBack
string
'swing'
A string indicating which easing function to use for the back transition.
thumbnailHoverEffect.delayBack
string
Sets a timer to delay execution of the back animation (in milliseconds).
Please note that this is not supported with transit.js
touchAnimation
boolean
true
Enables thumbnail hover animation on touch event (= tap twice to show the image).
touchAutoOpenDelay
integer
0
Delay in ms before opening the touched thumbnail.
Particular values:
-1= disabled (user needs to tap twice to open the thumbnail),
0= automatic (the plugin will determine automatically the delay).
Note: the parameter is ignored when 'touchAnimation=false'.
thumbnailDisplayInterval
integer
30
Interval in ms between the display of the thumbnails.
thumbnailDisplayTransition
boolean
true
Transition animation used to display each thumbnail.
thumbnailLazyLoad
boolean
true
Lazy load of thumbnails image (images are loaded only when displayed in the viewport).
thumbnailLazyLoadTreshold
integer
100
Extends the viewport area (in pixel) for thumbnails image lazy load.
thumbnailAdjustLastRowHeight
boolean
true
Automatically lower the last row height to avoid layout breaks (only for justified layout - thumbailWidth='auto').
thumbnailAlbumDisplayImage
boolean
false
On album's thumbnail click, displays the images instead of the thumbnails of the album's content.
galleryEnableKeyboard
boolean
false
Enables keyboard navigation beween albums.
ESC: display first level
Up, Right, PageUp: Display next album
Down, Left, PageDown: Display previous album
Thumbnails - Advanced sizes
thumbnailHeight and thumbnailWidth are used to define the size of the thumbnails.
Supported value formats are integer and string:
Value type
Description
Integer
To specify a fixed height and width.
Example: thumbnailHeight: 150, thumbnailWidth: 200
String
special value 'auto':
The width or the height is variable and is computed automatically by the plugin. The other value must must be fixed.
Example: thumbnailHeight: 'auto', thumbnailWidth: 200
multiple thumbnail sizes for fully responsive gallery
To define sizes dependant of the screen resolution.
Syntax: 'defaultValue XSn1 SMn2 MEn3 LAn4 XLn5' where n1 to n5 are the values for resolutions XS to XL.
Example 1: '200 XS80 SM150 LA250 XL400'
Example 2: '200 XSauto SMauto LA250'
And more...
Description
Google Photos storage
Thumbnails can be cropped (square) or not. To get the cropped thumbnail, add C after the size value.
Example 1: '200C'
Example 2: '200C XS80C SM150 LA250 XL400'
Flickr storage
Please note that depending of the defined size, the image retrieved may be in square format (cropped).
Thumbnails - Advanced effects
- Settings for advanced thumbnail hover effects:
Possible parameters: 'name', 'duration', 'durationBack', 'easing', 'easingBack', 'delay', 'delayBack'.
(Only 'name' is mandatory.)
For multi-level galleries (with albums), it's also possible to define settings specifically for the first navigation level.
Property
Description
thumbnailL1Height
Defines thumbnails height for the first navigation level. Supports the same settings as thumbnailHeight.
thumbnailL1Width
Defines thumbnails width for the first navigation level. Supports the same settings as thumbnailWidth.
thumbnailL1Label
Display options for the image label (title and description). Supports the same settings as thumbnailLabel (position, display, displayDescription, titleMaxLength, descriptionMaxLength, hideIcons, align, title, itemsCount).
thumbnailL1HoverEffect
Effect triggered on mouse hover or on tap (touch-screen). Supports the same settings as thumbnailHoverEffect.
touchAnimationL1
Delay in ms before opening the touched thumbnail. Same behaviour as as touchAnimation.
Image viewer color scheme.
Possible values: 'none', 'dark', 'darkRed', 'darkGreen', 'darkBlue', 'darkOrange', 'light'
Custom color schemes are supported.
slideshowDelay
integer
3000
Photo autoplay speed in milliseconds (slideshow)
slideshowAutoStart
boolean
false
Starts automatically the slideshow when an image is displayed
viewer
string
'internal'
Image display method.
Possible values: 'internal', 'fancybox'
fancyBoxOptions
object
null
Options for fancyBox (if used to display the images). This will overwrite the default settings.
viewerToolbar
object
Display options for the image toolbar (navigation buttons and captions).
viewerToolbar.display
boolean
true
Displays or hides the toolbar.
viewerToolbar.position
string
'bottom'
Vertical position. Posible values: 'top', 'bottom'
viewerToolbar.style
string
'innerImage'
Toolbar style. Possible values: 'innerImage', 'stuckImage', 'fullWidth'
viewerToolbar.autoMinimize
integer
800
Breakpoint for switching between minimized and standard toolbar. If the width is lower than this value, the toolbar is switched to minimized.
viewerToolbar.standard
string
List of items to display in the standard toolbar (comma separated). The order is taken into account.
Default value: 'minimizeButton, previousButton, pageCounter, nextButton, playPauseButton, fullscreenButton, infoButton, linkOriginalButton, closeButton, label'
Possible values: minimizeButton, previousButton, pageCounter, nextButton, playPauseButton, fullscreenButton, infoButton, linkOriginalButton, closeButton, label, customN
viewerToolbar.minimized
string
List of items to display in the minimized toolbar (comma separated). The order is taken into account.
Default value: 'minimizeButton,label'
Possible values: minimizeButton, previousButton, pageCounter, nextButton, playPauseButton, fullscreenButton, infoButton, linkOriginalButton, closeButton, label, customN
viewerDisplayLogo
boolean
false
Displays one logo over images (defined in CSS file).
viewerFullscreen
boolean
false
Displays images in fullscreen (on supported browser).
imageTransition
string
'swipe'
Image swipe animation. Possible values: 'slideAppear', 'swipe'.
Settings for gallery toolbar / breadcrumb
Property
Type
Default
Description
breadcrumbAutoHideTopLevel
boolean
false
The breadcrumb/toolbar is hidden when on top navigation level.
galleryFullpageButton
boolean
false
Enables button in the toolbar to display the gallery in fullpage.
galleryFullpageBgColor
string
'#111'
Background color of the gallery when in fullpage.
galleryToolbarHideIcons
boolean
false
Hides icons in toolbar (breadcrumb)
galleryToolbarWidthAligned
boolean
true
Toolbar is automatically resized to the width of the thumbnails area.
To see how to define the images and albums, select the method:
Important note: Google Photos access policies have changed on february 9, 2017.
nanoGALLERY can not access content added after this date.
Please switch to nanogallery2
You can manage the visibility of your Google Photos albums with tool:
nanoGPVisibility
nanoGALLERY - Google Photos informations
Property
Type
Default
Description
kind
string
Storage type (mandatory). Must be set to 'picasa' (the previous name of Google Photos)
userID
string
User ID of the Google Photos / Google+ account (mandatory). Use this form to retrieve your ID.
album
string
Album ID - to display only the specified album
To display an album that is limited to people who have a link with an authkey,
use this syntax: 'albumID&authkey=YourAuthkey'
where albumID is the ID of the album, and YourAuthkey is the album's authkey. Example: album: '5851968929721015169&authkey=Gv1sRgCJSlhdKSgoiXtgE'
displayBreadcrumb
boolean
true
Displays the navigation breadcrumb
blackList
string
'scrapbook|profil'
List of keywords to ignore - album's name containing one of the keywords in the title will be ignored.
Keyword separator is |
whiteList
string
List of keywords to authorize - album's name must contain one of the keywords to be displayed.
Keyword separator is |
albumList
string
List of albums to display (use album names or album IDs). Separator is |
photoSorting
string
'standard'
Albums sort order: 'standard', 'reversed', 'random', 'randomNN' (where NN is the maximum number of items to display), 'titleAsc', 'titleDesc'
albumSorting
string
'standard'
Photos sort order: 'standard', 'reversed', 'random', 'randomNN' (where NN is the maximum number of items to display), 'titleAsc', 'titleDesc'
picasaUseUrlCrossDomain
boolean
true
Access Google Plus / Google+ using the cross domain URL instead of the standard one.
albumMax
integer
0
Maximum number of albums to display (0=disabled).
Flickr specific settings
List of properties accepted by the nanoGallery() method. Following properties are specific to Flickr storage.
play on jsfiddle
Note: please setup your gallery in order to respect the Flickr terms of use
Property
Type
Default
Description
kind
string
Storage type (mandatory). Must be set to 'flickr'
userID
string
User ID of the Flickr account (mandatory)
To retrieve your Flickr user ID, use this page ->
Flickr userID
photoset
string
Photoset ID - to display only the specified photoset
If set to 'none', all pictures of the photostream are displayed.
displayBreadcrumb
boolean
true
Displays the navigation breadcrumb
blackList
string
List of keywords to ignore - albums containing one of the keywords in the title will be ignored.
Keyword separator is |
whiteList
string
List of keywords to authorize - albums must contain one of the keywords to be displayed.
Keyword separator is |
albumList
string
List of albums to display. Separator is |
photoSorting
string
'standard'
Albums sort order: 'standard', 'reversed', 'random', 'randomNN' (where NN is the maximum number of items to display), 'titleAsc', 'titleDesc'
albumSorting
string
'standard'
Photos sort order: 'standard', 'reversed', 'random', 'randomNN' (where NN is the maximum number of items to display), 'titleAsc', 'titleDesc'
flickrSkipOriginal
boolean
true
Doesn't display the original uploaded image (e.g. to avoid rotation issue).
Called after a thumbnail is clicked/touched to display the image. codepen
Can be used to replace the standard viewer/lightbox with an external lightbox.
fnChangeSelectMode
Called when entering or leaving selection mode.
fnImgToolbarCustInit
To customize the toolbar (custom icons and elements) on image display.
Called once on toolbar building to define the specified custom elements. jsfiddle
fnImgToolbarCustDisplay
Called on each image display. Called once for all image toolbar custom icons and elements. jsfiddle
fnImgToolbarCustClick
Fired on click event on image toolbar custom icon or element. jsfiddle
fnViewerInfo
If defined, it will add an info button to the image viewer toolbar.
Called when the user clicks this info button.
jsfiddle
fnProcessData
Used to extend data associated to thumbnails/images.
Called each time a new element (image or album) is added.
jsfiddle
Note: Standard thumbnails hover effects can be combined to hover effects managed by callbacks.
Removes the gallery.
Usage: $('#yourElement').nanoGallery('destroy');
displayItem
itemID
Displays an item (album or image).
Usage: $('#yourElement').nanoGallery('displayItem', 'itemID');
- to display an album: $('#yourElement').nanoGallery('displayItem', 'albumID')
- to display an image: $('#yourElement').nanoGallery('displayItem', 'albumID/imageID')
reload
Reloads the current album.
Usage: $('#yourElement').nanoGallery('reload');
jsfiddle
option
option_name
Returns the value of an option.
Usage: $('#yourElement').nanoGallery('option', option_name);
option
option_name, new_value
Sets the value of an option (note: only some options are supported).
Usage: $('#yourElement').nanoGallery('option', option_name, new_value);
getItem
item_index
Returns one item (object).
Usage: $('#yourElement').nanoGallery('getItem', item_index);
getItems
Returns every items (array of objects).
Usage: $('#yourElement').nanoGallery('getItems');
getItemsIndex
[item1, item2, ...]
Returns the indexes of some items (array).
Usage: $('#yourElement').nanoGallery('getItemsIndex', [item1, item2, item3, ...]);
getSelectMode
Is the gallery in selection mode.
Usage: $('#yourElement').nanoGallery('getSelectMode');
setSelectMode
true|false| 'album'| 'image'
Enter/leave the selection mode, and set the kind.
Usage: $('#yourElement').nanoGallery('setSelectMode', true|false|'album'|'image');
getSelectedItems
Returns the current selected items (array).
Usage: $('#yourElement').nanoGallery('getSelectedItems');
jsfiddle
selectItems
[item1, item2, ...]
Selects some items (array).
Usage: $('#yourElement').nanoGallery('selectItems', [item1, item2, item3, ...]);
Close the image viewer.
Usage: $('#yourElement').nanoGallery('closeViewer');
paginationPreviousPage
Go to previous gallery page (when gallery in pagination mode).
Usage: $('#yourElement').nanoGallery('paginationPreviousPage');
paginationNextPage
Go to next gallery page (when gallery in pagination mode).
Usage: $('#yourElement').nanoGallery('paginationNextPage');
paginationCountPages
Returns the number of gallery pages (when gallery in pagination mode).
Usage: $('#yourElement').nanoGallery('paginationCountPages');
paginationGotoPage
pageNumber
Go to a specific gallery page (when gallery in pagination mode).
Usage: $('#yourElement').nanoGallery('paginationGotoPage', pageNumber);
refreshSize
Force a gallery resize.
When the gallery container is hidden and is set to visible at a later time, this method will avoid incorrect thumbnail position.
Usage: $('#yourElement').nanoGallery('refreshSize');
Returns the number of images in the current displayed album.
Usage: $('#yourElement').nanoGallery('galleryCountImages');
moveToNextAlbum
Display next gallery album.
Usage: $('#yourElement').nanoGallery('moveToNextAlbum');
moveToPreviousAlbum
Display previous gallery album.
Usage: $('#yourElement').nanoGallery('moveToPreviousAlbum');
i18n
nanoGALLERY supports i18n. The language defined in the browser is used. If no corresponding definition is found, then the default language is used.
- Internationalization of UI elements
Following elements support multi-language: 'breadcrumbHome' 'paginationPrevious' 'paginationNext' 'thumbnailImageTitle' 'thumbnailAlbumTitle' 'thumbnailImageDescription' 'thumbnailAlbumDescription'.
Sets the correponding i18n properties. Use _LanguageCode to specify one language.