rolled back to classList, promoting poyfill in readme
authorHakim El Hattab <hakim.elhattab@gmail.com>
Sun, 15 Jan 2012 01:56:11 +0000 (17:56 -0800)
committerHakim El Hattab <hakim.elhattab@gmail.com>
Sun, 15 Jan 2012 01:56:11 +0000 (17:56 -0800)
README.md
js/reveal.js

index 8e8b4cd845c54fe59201370ac82a70200a07e3b4..1edbb070306b4fb7ee4166f0ddaccee8515a5dad 100644 (file)
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
 
 A CSS 3D slideshow tool for quickly creating good looking HTML presentations. Doesn't _rely_ on any external libraries but [highlight.js](http://softwaremaniacs.org/soft/highlight/en/description/) is included by default for code highlighting.
 
-Note that this requires a browser with support for CSS 3D transforms and classList. If CSS 3D support is not detected, the presentation will degrade to less exciting 2D transitions.
+Note that this requires a browser with support for CSS 3D transforms and ``classList``. If CSS 3D support is not detected, the presentation will degrade to less exciting 2D transitions. You could also use a polyfill for ``classList`` to make this work in < iOS 5 and < Safari 5.1, [here's one](https://github.com/remy/polyfills/blob/master/classList.js) from [@remy](https://github.com/remy).
 
 Curious about how this looks in action? [Check out the demo page](http://lab.hakim.se/reveal-js/).
 
@@ -24,6 +24,8 @@ Curious about how this looks in action? [Check out the demo page](http://lab.hak
   - Slides were moved one level deeper, into #reveal .slides
   - Controls and progress bar were moved into #reveal
 - CSS is now much more explicit, rooted at #reveal, to prevent conflicts
+- Config option for disabling updates to URL, defaults to true
+- Anchors with image children no longer rotate in 3D on hover
 
 ### 1.1
 
index 60bd0f419ca2ae99049a15c03aeaec141131011b..5d2f693b9ac0da28f79fd9a77b5b243510ea4d9d 100644 (file)
@@ -73,7 +73,7 @@
  *   - Controls and progress bar were moved into #reveal
  * - All CSS is now much more explicit, rooted at #reveal, to prevent conflicts
  * - Config option for disabling updates to URL, defaults to true
- * - Removed dependency on classList
+ * - Fix 3D link hover for anchors containing images
  * 
  *     
  * @author Hakim El Hattab | http://hakim.se
@@ -163,11 +163,11 @@ var Reveal = (function(){
                }
 
                if( config.transition !== 'default' ) {
-                       addClass( dom.wrapper, config.transition );
+                       dom.wrapper.classList.add( config.transition );
                }
 
                if( config.theme !== 'default' ) {
-                       addClass( dom.wrapper, config.theme );
+                       dom.wrapper.classList.add( config.theme );
                }
 
                if( config.rollingLinks ) {
@@ -308,7 +308,7 @@ var Reveal = (function(){
                    var node = nodes[i];
                    
                    if( node.textContent && !node.querySelector( 'img' ) && ( !node.className || !hasClass( node, 'roll' ) ) ) {
-                       addClass( node, 'roll' );
+                       node.classList.add( 'roll' );
                        node.innerHTML = '<span data-title="'+ node.text +'">' + node.innerHTML + '</span>';
                    }
                };
@@ -323,7 +323,7 @@ var Reveal = (function(){
         * can't be improved.
         */
        function activateOverview() {
-               addClass( dom.wrapper, 'overview' );
+               dom.wrapper.classList.add( 'overview' );
 
                var horizontalSlides = Array.prototype.slice.call( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) );
 
@@ -339,7 +339,7 @@ var Reveal = (function(){
                        hslide.style.OTransform = htransform;
                        hslide.style.transform = htransform;
 
-                       if( !hasClass( hslide, 'stack' ) ) {
+                       if( !hslide.classList.contains( 'stack' ) ) {
                                // Navigate to this slide on click
                                hslide.addEventListener( 'click', onOverviewSlideClicked, true );
                        }
@@ -370,7 +370,7 @@ var Reveal = (function(){
         * active slide.
         */
        function deactivateOverview() {
-               removeClass( dom.wrapper, 'overview' );
+               dom.wrapper.classList.remove( 'overview' );
 
                var slides = Array.prototype.slice.call( document.querySelectorAll( '#reveal .slides section' ) );
 
@@ -397,7 +397,7 @@ var Reveal = (function(){
         * false otherwise
         */
        function overviewIsActive() {
-               return hasClass( dom.wrapper, 'overview' );
+               return dom.wrapper.classList.contains( 'overview' );
        }
 
        /**
@@ -463,7 +463,7 @@ var Reveal = (function(){
 
                                // If this element contains vertical slides
                                if( slide.querySelector( 'section' ) ) {
-                                       addClass( slide, 'stack' );
+                                       slide.classList.add( 'stack' );
                                }
                        }
                }
@@ -508,13 +508,13 @@ var Reveal = (function(){
 
                // Remove the 'enabled' class from all directions
                [ dom.controlsLeft, dom.controlsRight, dom.controlsUp, dom.controlsDown ].forEach( function( node ) {
-                       removeClass( node, 'enabled' );
+                       node.classList.remove( 'enabled' );
                } )
 
-               if( routes.left ) addClass( dom.controlsLeft, 'enabled' );
-               if( routes.right ) addClass( dom.controlsRight, 'enabled' );
-               if( routes.up ) addClass( dom.controlsUp, 'enabled' );
-               if( routes.down ) addClass( dom.controlsDown, 'enabled' );
+               if( routes.left ) dom.controlsLeft.classList.add( 'enabled' );
+               if( routes.right ) dom.controlsRight.classList.add( 'enabled' );
+               if( routes.up ) dom.controlsUp.classList.add( 'enabled' );
+               if( routes.down ) dom.controlsDown.classList.add( 'enabled' );
        }
 
        /**
@@ -576,7 +576,7 @@ var Reveal = (function(){
                if( document.querySelector( VERTICAL_SLIDES_SELECTOR + '.present' ) ) {
                        var verticalFragments = document.querySelectorAll( VERTICAL_SLIDES_SELECTOR + '.present .fragment:not(.visible)' );
                        if( verticalFragments.length ) {
-                               addClass( verticalFragments[0], 'visible' );
+                               verticalFragments[0].classList.add( 'visible' );
                                return true;
                        }
                }
@@ -584,7 +584,7 @@ var Reveal = (function(){
                else {
                        var horizontalFragments = document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR + '.present .fragment:not(.visible)' );
                        if( horizontalFragments.length ) {
-                               addClass( horizontalFragments[0], 'visible' );
+                               horizontalFragments[0].classList.add( 'visible' );
                                return true;
                        }
                }
@@ -603,7 +603,7 @@ var Reveal = (function(){
                if( document.querySelector( VERTICAL_SLIDES_SELECTOR + '.present' ) ) {
                        var verticalFragments = document.querySelectorAll( VERTICAL_SLIDES_SELECTOR + '.present .fragment.visible' );
                        if( verticalFragments.length ) {
-                               removeClass( verticalFragments[ verticalFragments.length - 1 ], 'visible' );
+                               verticalFragments[ verticalFragments.length - 1 ].classList.remove( 'visible' );
                                return true;
                        }
                }
@@ -611,27 +611,13 @@ var Reveal = (function(){
                else {
                        var horizontalFragments = document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR + '.present .fragment.visible' );
                        if( horizontalFragments.length ) {
-                               removeClass( horizontalFragments[ horizontalFragments.length - 1 ], 'visible' );
+                               horizontalFragments[ horizontalFragments.length - 1 ].classList.remove( 'visible' );
                                return true;
                        }
                }
                
                return false;
        }
-
-       function hasClass( node, klass ) {
-               return !!node.className.match( klass );
-       }
-
-       function addClass( node, klass ) {
-               if( !hasClass( node, klass ) ) {
-                       node.className += ' ' + klass;
-               }
-       }
-
-       function removeClass( node, klass ) {
-               node.className = node.className.replace( klass, '' );
-       }
        
        /**
         * Triggers a navigation to the specified indices.