##### Original By Chris Coyier, expanded upon by many others

# AnythingSlider

Theme:

- ### Other Information

  - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla aliquet accumsan eros, et iaculis massa fringilla auctor.
  - Proin a mi ante, ut lobortis risus. Sed fringilla augue sed enim faucibus eget aliquam tellus ultricies.
  - Morbi a magna eu ligula scelerisque lobortis vel non nisi.
  - Aliquam condimentum libero eget elit ultrices sit amet ullamcorper felis gravida.

- ### Queenie's Killer Tomato Bagel Sandwich

  #### Ingredients

  - 1 bagel, split and toasted
  - 2 tablespoons cream cheese
  - 1 roma (plum) tomatoes, thinly sliced
  - salt and pepper to taste
  - 4 leaves fresh basil

- > In awe I watched the waxing moon ride across the zenith of the heavens like an ambered chariot towards the ebon void of infinite space wherein the tethered belts of Jupiter and Mars hang forever festooned in their orbital majesty. And as I looked at all this I thought... I must put a roof on this lavatory.
  > -- Les Dawson

- > Life is conversational. Web design should be the same way. On the web, you’re talking to someone you’ve probably never met - so it’s important to be clear and precise. Thus, well structured navigation and content organization goes hand in hand with having a good conversation.

  - Chikezie Ejiasi

## Features

- Panels are HTML Content (can be anything).
- Multiple AnythingSliders allowable per-page.
- Add or remove content, then easily update the slider.
- Themes can be applied to individual sliders.
- Infinite/Continuous sliding (always slides in the direction you are going, even at "last" slide). This can be disabled.
- Show multiple slides within AnythingSlider at once. *New in version 1.5.14*
- Expand the slider to fit inside of its container (so it now works with full width or any percentage width fluid layouts). *New in version 1.5.16*
- Optionally resize each panel (specified per panel in css).
- Optional Next / Previous Panel Arrows.
- Use keyboard navigation or tabs that are built and added dynamically (any number of panels).
- Link to specific slides or go forward or back one slide from static text links - go to Slide 4 (Quote #2) in second example.
- Each panel has a hashtag (can link directly to specific panels) or use the ID of an element inside the panel.
- Optional custom function for formatting navigation text.
- Auto-playing slideshow (optional feature, can start playing or stopped).
- Pauses slideshow on hover (optional).
- Optionally play the slideshow once through, stopping on the last page.
- Extend the script by binding to custom events, last triggered event: none
- Optional FX extension to add animation to panels elements as they scroll into and out of view. See the demo page.
- Optional Video extension allows video to pauses playing when not in view and resumes when in view (if files are hosted on the web). This currently works for YouTube, Vimeo and HTML5 video. *New in version 1.6*
- Works with jQuery 1.4.2+.

## Default Options

See the documentation for complete description of these options (appearance, navigation, slideshow, callbacks & events, video, interativity & misc).

>     $('#slider').anythingSlider({
>       // Appearance
>       theme               : "default", // Theme name
>       expand              : false,     // If true, the entire slider will expand to fit the parent element
>       resizeContents      : true,      // If true, solitary images/objects in the panel will expand to fit the viewport
>       vertical            : false,     // If true, all panels will slide vertically; they slide horizontally otherwise
>       showMultiple        : false,     // Set this value to a number and it will show that many slides at once
>       easing              : "swing",   // Anything other than "linear" or "swing" requires the easing plugin or jQuery UI

>       buildArrows         : true,      // If true, builds the forwards and backwards buttons
>       buildNavigation     : true,      // If true, builds a list of anchor links to link to each panel
>       buildStartStop      : true,      // If true, builds the start/stop button

>       appendForwardTo     : null,      // Append forward arrow to a HTML element (jQuery Object, selector or HTMLNode), if not null
>       appendBackTo        : null,      // Append back arrow to a HTML element (jQuery Object, selector or HTMLNode), if not null
>       appendControlsTo    : null,      // Append controls (navigation + start-stop) to a HTML element (jQuery Object, selector or HTMLNode), if not null
>       appendNavigationTo  : null,      // Append navigation buttons to a HTML element (jQuery Object, selector or HTMLNode), if not null
>       appendStartStopTo   : null,      // Append start-stop button to a HTML element (jQuery Object, selector or HTMLNode), if not null

>       toggleArrows        : false,     // If true, side navigation arrows will slide out on hovering & hide @ other times
>       toggleControls      : false,     // if true, slide in controls (navigation + play/stop button) on hover and slide change, hide @ other times

>       startText           : "Start",   // Start button text
>       stopText            : "Stop",    // Stop button text
>       forwardText         : "&raquo;", // Link text used to move the slider forward (hidden by CSS, replaced with arrow image)
>       backText            : "&laquo;", // Link text used to move the slider back (hidden by CSS, replace with arrow image)
>       tooltipClass        : "tooltip", // Class added to navigation & start/stop button (text copied to title if it is hidden by a negative text indent)

>       // Function
>       enableArrows        : true,      // if false, arrows will be visible, but not clickable.
>       enableNavigation    : true,      // if false, navigation links will still be visible, but not clickable.
>       enableStartStop     : true,      // if false, the play/stop button will still be visible, but not clickable. Previously "enablePlay"
>       enableKeyboard      : true,      // if false, keyboard arrow keys will not work for this slider.

>       // Navigation
>       startPanel          : 1,         // This sets the initial panel
>       changeBy            : 1,         // Amount to go forward or back when changing panels.
>       hashTags            : true,      // Should links change the hashtag in the URL?
>       infiniteSlides      : true,      // if false, the slider will not wrap & not clone any panels
>       navigationFormatter : null,      // Details at the top of the file on this use (advanced use)
>       navigationSize      : false,     // Set this to the maximum number of visible navigation tabs; false to disable

>       // Slideshow options
>       autoPlay            : false,     // If true, the slideshow will start running; replaces "startStopped" option
>       autoPlayLocked      : false,     // If true, user changing slides will not stop the slideshow
>       autoPlayDelayed     : false,     // If true, starting a slideshow will delay advancing slides; if false, the slider will immediately advance to the next slide when slideshow starts
>       pauseOnHover        : true,      // If true & the slideshow is active, the slideshow will pause on hover
>       stopAtEnd           : false,     // If true & the slideshow is active, the slideshow will stop on the last page. This also stops the rewind effect when infiniteSlides is false.
>       playRtl             : false,     // If true, the slideshow will move right-to-left

>       // Times
>       delay               : 3000,      // How long between slideshow transitions in AutoPlay mode (in milliseconds)
>       resumeDelay         : 15000,     // Resume slideshow after user interaction, only if autoplayLocked is true (in milliseconds).
>       animationTime       : 600,       // How long the slideshow transition takes (in milliseconds)
>       delayBeforeAnimate  : 0,         // How long to pause slide animation before going to the desired slide (used if you want your "out" FX to show).

>       // Callbacks
>       onBeforeInitialize  : function(e, slider) {}, // Callback before the plugin initializes
>       onInitialized       : function(e, slider) {}, // Callback when the plugin finished initializing
>       onShowStart         : function(e, slider) {}, // Callback on slideshow start
>       onShowStop          : function(e, slider) {}, // Callback after slideshow stops
>       onShowPause         : function(e, slider) {}, // Callback when slideshow pauses
>       onShowUnpause       : function(e, slider) {}, // Callback when slideshow unpauses - may not trigger properly if user clicks on any controls
>       onSlideInit         : function(e, slider) {}, // Callback when slide initiates, before control animation
>       onSlideBegin        : function(e, slider) {}, // Callback before slide animates
>       onSlideComplete     : function(slider) {},    // Callback when slide completes; this is the only callback without an event "e" variable

>       // Interactivity
>       clickForwardArrow   : "click",         // Event used to activate forward arrow functionality (e.g. add jQuery mobile's "swiperight")
>       clickBackArrow      : "click",         // Event used to activate back arrow functionality (e.g. add jQuery mobile's "swipeleft")
>       clickControls       : "click focusin", // Events used to activate navigation control functionality
>       clickSlideshow      : "click",         // Event used to activate slideshow play/stop button

>       // Video
>       resumeOnVideoEnd    : true,      // If true & the slideshow is active & a supported video is playing, it will pause the autoplay until the video is complete
>       addWmodeToObject    : "opaque",  // If your slider has an embedded object, the script will automatically add a wmode parameter with this setting
>       isVideoPlaying      : function(base){ return false; } // return true if video is playing or false if not - used by video extension
>     });

## Known Issues

- Please refer to the documentation.

## Changelog

Only the latest versions will be shown here. See the full change log here.

### Version 1.7.27

- Fixed a bug that previously would show the slide before the desired one, if the window location hash was targeting an ID in the slider and `infiniteSlides` was set to false.

### Version 1.7.26

- Modified the `navigationFormatter` option to now allow applying attributes directly to the tab as well as modifying the contents. Please refer to the documentation for more details.
- The `tooltipClass` option now applies the tooltip class to the navigation tab (LI) automatically instead of checking to see if the text is hidden. In order to modify the tab title, you'll need to use the new `navigationFormatter` method.

### Version 1.7.25

- When `hashTags` is true, the browser hash will now update when clicking on the slider arrows as well as navigation buttons.
- Yet another fix for the `$targetPage` callback variable.
- When a hash tag sets the slider position, the `$lastPage` and `$targetPage` callback variables are now set properly during the onInitialized event.
- When `resizeContents` is false, the outer wrapper will no longer animate a resize if there is no change in dimensions. Fix for issue #264.
- Webkit browsers should now resize the outer wrapper properly when the slide is set by the hash.

### Version 1.7.24

- The `toggleArrows` option now accounts for arrows that don't have an absolute position, left or right, set to zero. Thanks to Krinkle for bringing up the issue (#260) and sharing a fix.

### Version 1.7.23

- Fixed `$targetPage` callback parameter to actually point to the right page. Continuation of issue #233.

### Version 1.7.22

- Fixed the navigation tooltips, apparently it's been broken this entire time... Updated the first slider on the main demo page to show navigation tooltips.

### Version 1.7.21

- Removed `max-width: 32766px` from the css as the latest version of Opera (11.60+) no longer appears to have this limitation - YAY!
- AnythingSlider can now use the animate.css library!
  - Updated the FX extension to also add "animate.css" css3 animations to panels.
  - Added CSS3 demo page to demonstrate this new functionality.
  - See the "animate.css" demo of all of the animations and get the latest version from daneden.me/animate/.
- Commented out the `appendForwardTo`, `appendBackTo`, `appendControlsTo`, `appendNavigationTo` and `appendStartStopTo` options from the plugin to reduce the size of the minified version. These options were set to null as placeholders in the code. They should continue to function as before.
- General code cleanup to reduce the size of the minified version.
- Fixed an issue with the exactPage variable, utilized by the FX extension, as mentioned in issue #233.

### Version 1.7.20

- Fixed `targetPage` containing the incorrect page when `infiniteSlides` is `false`. Fix for issue #233.
- Hopefully fixed the issue with IE8 and the navigation. Fix for issues #206 and #182.

### Version 1.7.19

- Added package.json file to register this plugin with the new jquery plugin page (in development).

### Version 1.7.18

- Another fix for issue #216. This time it ignores "#/" and "#!/" in the location hash.