SlideShare une entreprise Scribd logo
1  sur  81
Télécharger pour lire hors ligne
jQuery,
eCSStender
& you
Aaron Gustafson
Easy Designs, LLC
slideshare.net/AaronGustafson
?
?
jQuery, eCSStender & you




Download...




                                eCSStender.org
jQuery Summit - November 2010                    12
jQuery, eCSStender & you




Download...




                                eCSStender.org
jQuery Summit - November 2010                    13
jQuery, eCSStender & you




Download...




                                github.com/easy-designs/eCSStender.js
jQuery Summit - November 2010                                           14
jQuery, eCSStender & you




...collect extensions...




jQuery Summit - November 2010   15
jQuery, eCSStender & you




...collect extensions...




jQuery Summit - November 2010   16
jQuery, eCSStender & you




...include...
   <script      type="text/javascript"   src="eCSStender.js"></script>
   <script      type="text/javascript"   src="eCSStender.CSS3-backgrounds-and-borders.js"></script>
   <script      type="text/javascript"   src="eCSStender.CSS3-transforms.js"></script>
   <script      type="text/javascript"   src="eCSStender.CSS3-color.js"></script>
   <script      type="text/javascript"   src="eCSStender.CSS3-transitions.js"></script>




jQuery Summit - November 2010                                                                         17
jQuery, eCSStender & you




...and write your CSS
   section,
   article,
   blockquote {
     border-radius: 10px;
     box-shadow: 0 0 15px 1px #000;
     color: rgb(255, 255, 255);
     transform-origin: 50% 50%;
     transition: all 0.5s linear;
   }
   section:hover,
   body:focus section,
   section:hover blockquote,
   body:focus blockquote {
     transform: rotate(-15deg);
   }
   section:hover article,
   body:focus article {
     transform: rotate(30deg);
   }




jQuery Summit - November 2010         18
jQuery, eCSStender & you




Need selectors?
   <script type="text/javascript" src="eCSStender.js"></script>
   <script type="text/javascript" src="sizzle.js"></script>
   <script type="text/javascript">
     // <![CDATA[
     eCSStender.addMethod('findBySelector',Sizzle);
     // ]]>
   </script>
   <script type="text/javascript" src="eCSStender.CSS3-selectors.js"></script>




jQuery Summit - November 2010                                                    20
jQuery, eCSStender & you




Compound classes in IE6?
   p.test {
     color: green;
   }
   p.alt.test {
     color: red;
   }




jQuery Summit - November 2010   21
jQuery, eCSStender & you




Adjacent siblings?
   p + p {
     color: green;
   }




jQuery Summit - November 2010   22
jQuery, eCSStender & you




General siblings?
   p ~ p {
     color: green;
   }




jQuery Summit - November 2010   23
jQuery, eCSStender & you




Advanced pseudo-classes?
   tr {
     background: white;
   }
   td:empty {
     background: green;
   }




jQuery Summit - November 2010   24
jQuery, eCSStender & you




Consider border-radius
   #foo {
     border-radius: 3px;
   }




jQuery Summit - November 2010   26
jQuery, eCSStender & you




Consider border-radius
   #foo {
     -moz-border-radius: 3px;
     -webkit-border-radius: 3px;
     -o-border-radius: 3px;
     -khtml-border-radius: 3px;
     border-radius: 3px;
   }




jQuery Summit - November 2010      27
jQuery, eCSStender & you




Consider border-radius
   #foo {
     border-radius: 10px 5px;
   }




jQuery Summit - November 2010   28
jQuery, eCSStender & you




Consider border-radius
   #foo {
     -moz-border-radius: 10px 5px;
     -webkit-border-top-left-radius: 10px;
     -webkit-border-top-right-radius: 5px;
     -webkit-border-bottom-right-radius: 10px;
     -webkit-border-bottom-left-radius: 10px;
     -o-border-radius: 10px 5px;
     -khtml-border-top-left-radius: 10px;
     -khtml-border-top-right-radius: 5px;
     -khtml-border-bottom-right-radius: 10px;
     -khtml-border-bottom-left-radius: 10px;
     border-radius: 10px 5px;
   }




jQuery Summit - November 2010                    29
jQuery, eCSStender & you




Ah, memories...
   #foo {
     padding: 10px;
     width: 200px;
     width: 180px;
     height: 200px;
     height: 180px;
   }

   /* or */

   #foo {
     padding: 10px;
     width: 200px;
     height: 200px;
   }
   * html #foo {
     width: 180px;
     height: 180px;
   }




jQuery Summit - November 2010   30
jQuery, eCSStender & you




Simplified CSS3?
   <script      type="text/javascript"   src="eCSStender.js"></script>
   <script      type="text/javascript"   src="eCSStender.CSS3-backgrounds-and-borders.js"></script>
   <script      type="text/javascript"   src="eCSStender.CSS3-transforms.js"></script>
   <script      type="text/javascript"   src="eCSStender.CSS3-color.js"></script>
   <script      type="text/javascript"   src="eCSStender.CSS3-transitions.js"></script>




jQuery Summit - November 2010                                                                         31
jQuery, eCSStender & you




Yup!
  section,
  article,
  blockquote {
    border-radius: 10px;
    box-shadow: 0 0 15px 1px #000;
    color: rgb(255, 255, 255);
    transform-origin: 50% 50%;
    transition: all 0.5s linear;
  }
  section:hover,
  body:focus section,
  section:hover blockquote,
  body:focus blockquote {
    transform: rotate(-15deg);
  }
  section:hover article,
  body:focus article {
    transform: rotate(30deg);
  }




jQuery Summit - November 2010        32
jQuery, eCSStender & you




Valid extension of CSS



                                -prefix-


jQuery Summit - November 2010              34
jQuery, eCSStender & you




Browser vendors do it




         -moz-                  -webkit-   -ms-   -o-




jQuery Summit - November 2010                           35
THE FUTURE OF CSS
jQuery, eCSStender & you




Pointless, but possible
   .bowling-alley img {
     -easy-physics-fill: lead;
   }
   .beach img {
     -easy-physics-fill: rubber;
   }
   .disney img {
     -easy-physics-fill: helium;
   }




jQuery Summit - November 2010      38
Trivia Question:
   Who were the
co-creators of CSS?




    (First person to answer correctly, gets a book)
jQuery, eCSStender & you




Step 1: Register extensions



                                Register




jQuery Summit - November 2010              41
jQuery, eCSStender & you




Step 2: Find stylesheets


                                <html>

                                  CSS    Inspect




jQuery Summit - November 2010                      42
jQuery, eCSStender & you




Step 3: Collect the rules



                                Collect




jQuery Summit - November 2010             43
jQuery, eCSStender & you




Step 4: parse & process



                                Process




jQuery Summit - November 2010             44
jQuery, eCSStender & you




Step 5: Trigger extensions




jQuery Summit - November 2010   45
jQuery, eCSStender & you




    Helping hands
๏   Dean Edward’s IE scripts
๏   Selectivizr
๏   css3-mediaqueries.js

                                    Browser
                                    Patchers




    jQuery Summit - November 2010              47
jQuery, eCSStender & you




    Alternative syntax
๏   SASS (Syntactically Awesome Stylesheets)
๏   LESS (Leaner CSS)
๏   OO CSS (purely conceptual)

                                         Browser    Shorthand
                                         Patchers    Parsers




    jQuery Summit - November 2010                               48
jQuery, eCSStender & you




    Capability checking
๏   Modernizr
                                               Testing
                                               Scripts



                                    Browser         Shorthand
                                    Patchers         Parsers




    jQuery Summit - November 2010                               49
jQuery, eCSStender & you




    Something new
๏   More CSS
                                               Testing
                                               Scripts



                                    Browser         Shorthand
                                    Patchers         Parsers

                                               Custom
                                                CSS
                                               Parsers




    jQuery Summit - November 2010                               50
jQuery, eCSStender & you




    Ecosystem
๏   jQuery plug-ins
๏   CSS Sandpaper                     One-off CSS
๏   CVI scripts                     scripts& libraries

                                                   Testing
                                                   Scripts


                                        Browser          Shorthand
                                        Patchers          Parsers

                                                   Custom
                                                    CSS
                                                   Parsers




    jQuery Summit - November 2010                                    51
jQuery, eCSStender & you




Unity!
                                  One-off CSS
                                scripts& libraries

                                               Testing
                                               Scripts


                                    Browser          Shorthand
                                    Patchers          Parsers

                                               Custom
                                                CSS
                                               Parsers




jQuery Summit - November 2010                                    52
Let’s make
something awesome!

       I thought you’d never ask.
jQuery, eCSStender & you




Pointless, but possible




jQuery Summit - November 2010   54
jQuery, eCSStender & you




Step 1: Dependencies
   <script type="text/javascript" src="eCSStender.js"></script>
   <script type="text/javascript" src="jquery.js"></script>
   <script type="text/javascript" src="jquery.EasyPhysics.js"></script>




jQuery Summit - November 2010                                             55
jQuery, eCSStender & you




Step 1: Dependencies
   // jquery.EasyPhysics.js
   EasyPhysics.Balloon      = function( el   ) {
      new PhysicalObject(
         el,   // element
         0,    // velocity
         -0.5, // kinetic energy
         -0.1  // gravitational effect
      );
   };
   EasyPhysics.RubberBall = function( el     ) {
      new PhysicalObject( el, 0, -0.8, 0.5   );
   };
   EasyPhysics.BowlingBall = function( el    ) {
      new PhysicalObject( el, 1, -0.4, 0.9   );
   };




jQuery Summit - November 2010                      56
jQuery, eCSStender & you




Step 2: Registration
   eCSStender.register(




        );




jQuery Summit - November 2010   57
jQuery, eCSStender & you




Step 2: Registration
   eCSStender.register(
     { property: '-easy-physics-fill',
        fingerprint: 'net.easy-designs.-easy-physics'
     },




        );




jQuery Summit - November 2010                           58
jQuery, eCSStender & you




Step 2: Registration
   eCSStender.register(
     { property: '-easy-physics-fill',
        fingerprint: 'net.easy-designs.-easy-physics'
     },
     false,




        );




jQuery Summit - November 2010                           59
jQuery, eCSStender & you




Step 2: Registration
   eCSStender.register(
     { property: '-easy-physics-fill',
        fingerprint: 'net.easy-designs.-easy-physics'
     },
     false,
     function( selector, properties ){
        var $el = $(selector);
        switch ( properties['-easy-physics-fill'] )
        {
          case 'helium':
            new EasyPhysics.Balloon( $el );
            break;
          case 'rubber':
            new EasyPhysics.RubberBall( $el );
            break;
          case 'lead':
            new EasyPhysics.BowlingBall( $el );
            break;
        }
     });




jQuery Summit - November 2010                           60
jQuery, eCSStender & you




Pointless, but possible
   .bowling-alley img {
     -easy-physics-fill: lead;
   }
   .beach img {
     -easy-physics-fill: rubber;
   }
   .disney img {
     -easy-physics-fill: helium;
   }




jQuery Summit - November 2010      61
I love you you know.

 I know.
Does the browser
support border-radius?

              Nope.




isSupported()
jQuery, eCSStender & you




isSupported()
   eCSStender.isSupported(
      'property',
      'visibility: hidden'
   );
   // true

   eCSStender.isSupported(
      'property',
      'foo: bar'
   );
   // false




jQuery Summit - November 2010   64
jQuery, eCSStender & you




isSupported()
   eCSStender.isSupported(
      'property',
      'visibility',
      'hidden'
   );
   // true

   eCSStender.isSupported(
      'property',
      'color',
      ['#000000','black','rgb(0,0,0)']
   );
   // true




jQuery Summit - November 2010            65
jQuery, eCSStender & you




isSupported()
   var
   el = document.createElement('b'),
   html = document.createElement('p');
   html.appendChild(el);

   eCSStender.isSupported(
      'selector',
      'p b',
      html,
      el
   );
   // true

   eCSStender.isSupported(
      'selector',
      'p ?? b',
      html,
      el
   );
   // false




jQuery Summit - November 2010            66
Can you make my
  CSS smarter?

         Of course.
jQuery, eCSStender & you




Inline style sucks...
   <div style="display: none;">
     <p>Some content</p>
   </div>




jQuery Summit - November 2010     68
jQuery, eCSStender & you




...don’t do it!
   <div style="display: none;">
     <p>Some content</p>
   </div>




jQuery Summit - November 2010     69
jQuery, eCSStender & you




makeUniqueClass()
   (function(){
     var
     e          = eCSStender,
     the_class = e.makeUniqueClass(),
     the_regex = /:checked/,
     classify = function() {
        var
        inputs = document.getElementsByTagName('input'),
        i      = inputs.length;
        while ( i-- ) {
          if ( inputs[i].checked ) {
            e.addClass( inputs[i], the_class );
          } else {
            e.removeClass( inputs[i], the_class );
          }
        }
     };

     // ...
   })();



                           excerpt from :checked CSS3 Selectors extension
            github.com/easy-designs/eCSStender.CSS3-selectors.js

jQuery Summit - November 2010                                               70
jQuery, eCSStender & you




embedCSS()
   eCSStender.embedCSS(
      'p { color: red; }',
      'screen',
      false
   );
   // embeds the declaration block in
   // a screen-specific stylesheet immediately




jQuery Summit - November 2010                    71
jQuery, eCSStender & you




applyWeightedStyle()
   eCSStender.applyWeightedStyle(
     el, { 'visibility': 'hidden' }, 10 );
   // el now has visibility: hidden set
   // with a specificity of 10

   eCSStender.applyWeightedStyle(
     el, { 'visibility': 'visible' }, 1 );
   // el is not set to visible because
   // the specificity is not high enough

   eCSStender.applyWeightedStyle(
     el, { 'visibility': 'visible' }, 10 );
   // el is now “visible” because the specificity
   // is equal to the prior specificity

   eCSStender.applyWeightedStyle(
     el, { 'visibility': 'hidden' }, 100 );
   // el is now “hidden” again because the
   // specificity is greater than the prior one




jQuery Summit - November 2010                       72
jQuery, eCSStender & you




As flexible as possible
   function embed( selector, properties, medium )
   {
     var style_block = '', prop;
     for ( prop in properties )
     {
       if ( eCSStender.isInheritedProperty( properties, prop ) ) {
          continue;
       };
       style_block += prop + ':' + properties[prop] + ';';
     }
     if ( style_block != EMPTY )
     {
       eCSStender.embedCSS(
          selector + '{' + style_block + '}', medium
       );
     }
   }




                                excerpt from CSS3 Selectors extension
            github.com/easy-designs/eCSStender.CSS3-selectors.js

jQuery Summit - November 2010                                           73
jQuery, eCSStender & you




As flexible as possible
   function inline( selector, properties, medium, specificity ) {
     if ( medium != 'screen' ){ return; }
     try {
       var
       $els = $( selector ),
       i    = $els.length;
       while ( i-- ) {
         eCSStender.applyWeightedStyle( $els[i], properties, specificity );
       }
       $els = null;
     } catch(e) {
       // throw new Error( LIB_ERROR + selector );
     }
   }




                                excerpt from CSS3 Selectors extension
            github.com/easy-designs/eCSStender.CSS3-selectors.js

jQuery Summit - November 2010                                                 74
jQuery, eCSStender & you




As flexible as possible
   eCSStender.register(
    // ...
    function( selector, properties, medium, specificity ) {
      var
      calc = 'p:nth-child(2n+1)',
      d = div.cloneNode(true),
      p = para.cloneNode(true),
      func = inline;
      d.appendChild( p );
      // embedding is the way to go
      if ( ( eCSStender.isSupported( 'selector', 'p:nth-child(odd)', d, p ) &&
             ! eCSStender.isSupported( 'selector', calc, d, p ) &&
             selector.match( /:nth-child(s*(?:even|odd)s*)/ ) != null ) ||
           eCSStender.isSupported( 'selector', calc, d, p ) ) {
        func = embed;
      }
      func( selector, properties, medium, specificity );
      return func;
    });




                           excerpt from :checked CSS3 Selectors extension
            github.com/easy-designs/eCSStender.CSS3-selectors.js

jQuery Summit - November 2010                                                    75
jQuery, eCSStender & you




addRules()
   var style = eCSStender.embedCSS(
      'p { color: red; }',
      'screen',
      false
   );

   // ...

   eCSStender.addRules(
      style,
      'p { color: blue; }'
   );




jQuery Summit - November 2010         76
Can you look
something up for me?

             No problemo.
jQuery, eCSStender & you




lookup()
   var matches = eCSStender.lookup(
      {
         selector:    'h1',
         specificity: { min: 0, max: 2 }
      },
      '*'
   );
   // looks for rules where the
   // selector includes an h1 and the
   // specificity is between 0 and 2
   // e.g.
   // [ { medium:        'all'
   //       selector:    'h1',
   //       specificity: 1
   //       properties: { color: 'red' }
   //     }, ... ]




jQuery Summit - November 2010              78
Help make me better!




              MIT Licensed

Fork: github.com/easy-designs/eCSStender.js
Discuss: groups.google.com/group/ecsstender
jQuery, eCSStender & you
                     by Aaron Gustafson
                     Slides available at
          http://slideshare.net/AaronGustafson
           This presentation is licensed under
                   Creative Commons
      Attribution-Noncommercial-Share Alike 3.0
                   More on eCSStender:
                   http://eCSStender.org
                       @eCSStender

                    flickr Photo Credits
             “Everyone loves books but I thought this was the
          dullest photo i had ever taken. I guess not.“ by boltron-
                            “Sharing” by bengrey
               “Three wise monkeys” by Anderson Mancini
                   “Chemcraft manual” by underwhelmer
                 “crawfordmarketcarrotman” by Rigmarole
                       “Röck!! on the right” by Adactio
                          “Internals” by alexsnaps
                     “Wood” by Joost J. Bakker IJmuiden
      “Tribute to Willy Puchner's ‘The Penguins Longing’” by Curnen
http://flickr.com/photos/aarongustafson/galleries/72157625226185257/

Contenu connexe

Tendances

jQuery and Ruby Web Frameworks
jQuery and Ruby Web FrameworksjQuery and Ruby Web Frameworks
jQuery and Ruby Web FrameworksYehuda Katz
 
Introduction to jQuery
Introduction to jQueryIntroduction to jQuery
Introduction to jQueryZeeshan Khan
 
Styling Components with JavaScript: MelbCSS Edition
Styling Components with JavaScript: MelbCSS EditionStyling Components with JavaScript: MelbCSS Edition
Styling Components with JavaScript: MelbCSS Editionbensmithett
 
J query b_dotnet_ug_meet_12_may_2012
J query b_dotnet_ug_meet_12_may_2012J query b_dotnet_ug_meet_12_may_2012
J query b_dotnet_ug_meet_12_may_2012ghnash
 
How dojo works
How dojo worksHow dojo works
How dojo worksAmit Tyagi
 
SharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentialsSharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentialsMark Rackley
 
Styling components with JavaScript
Styling components with JavaScriptStyling components with JavaScript
Styling components with JavaScriptbensmithett
 
In the DOM, no one will hear you scream
In the DOM, no one will hear you screamIn the DOM, no one will hear you scream
In the DOM, no one will hear you screamMario Heiderich
 

Tendances (11)

jQuery and Ruby Web Frameworks
jQuery and Ruby Web FrameworksjQuery and Ruby Web Frameworks
jQuery and Ruby Web Frameworks
 
dojo.Patterns
dojo.Patternsdojo.Patterns
dojo.Patterns
 
Pocket Knife JS
Pocket Knife JSPocket Knife JS
Pocket Knife JS
 
Introduction to jQuery
Introduction to jQueryIntroduction to jQuery
Introduction to jQuery
 
Html5
Html5Html5
Html5
 
Styling Components with JavaScript: MelbCSS Edition
Styling Components with JavaScript: MelbCSS EditionStyling Components with JavaScript: MelbCSS Edition
Styling Components with JavaScript: MelbCSS Edition
 
J query b_dotnet_ug_meet_12_may_2012
J query b_dotnet_ug_meet_12_may_2012J query b_dotnet_ug_meet_12_may_2012
J query b_dotnet_ug_meet_12_may_2012
 
How dojo works
How dojo worksHow dojo works
How dojo works
 
SharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentialsSharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentials
 
Styling components with JavaScript
Styling components with JavaScriptStyling components with JavaScript
Styling components with JavaScript
 
In the DOM, no one will hear you scream
In the DOM, no one will hear you screamIn the DOM, no one will hear you scream
In the DOM, no one will hear you scream
 

Similaire à jQuery, eCSStender & You: Simplify CSS3 Development

jQuery, eCSStender & You [DevChatt 2011]
jQuery, eCSStender & You [DevChatt 2011]jQuery, eCSStender & You [DevChatt 2011]
jQuery, eCSStender & You [DevChatt 2011]Aaron Gustafson
 
Declarative and standards-based web application development with the Ample SDK
Declarative and standards-based web application development with the Ample SDKDeclarative and standards-based web application development with the Ample SDK
Declarative and standards-based web application development with the Ample SDKBéla Varga
 
SSR with Quasar Framework - JSNation 2019
SSR with Quasar Framework - JSNation 2019SSR with Quasar Framework - JSNation 2019
SSR with Quasar Framework - JSNation 2019Razvan Stoenescu
 
jQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPagesjQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPagesMark Roden
 
JavaScript front end performance optimizations
JavaScript front end performance optimizationsJavaScript front end performance optimizations
JavaScript front end performance optimizationsChris Love
 
JavaScripters Event on Sep 10, 2016 · 10:30 AM: Sass
JavaScripters Event on Sep 10, 2016 · 10:30 AM: SassJavaScripters Event on Sep 10, 2016 · 10:30 AM: Sass
JavaScripters Event on Sep 10, 2016 · 10:30 AM: SassJavaScripters Community
 
Be German About Your Frontend
Be German About Your FrontendBe German About Your Frontend
Be German About Your FrontendArush Sehgal
 
How to make Ajax Libraries work for you
How to make Ajax Libraries work for youHow to make Ajax Libraries work for you
How to make Ajax Libraries work for youSimon Willison
 
jQuery Tips Tricks Trivia
jQuery Tips Tricks TriviajQuery Tips Tricks Trivia
jQuery Tips Tricks TriviaCognizant
 
20111129 modernizr
20111129 modernizr20111129 modernizr
20111129 modernizrbrooky-yen
 
End-to-end HTML5 APIs - The Geek Gathering 2013
End-to-end HTML5 APIs - The Geek Gathering 2013End-to-end HTML5 APIs - The Geek Gathering 2013
End-to-end HTML5 APIs - The Geek Gathering 2013Alexandre Morgaut
 
A brief look at CSS3 techniques by Aaron Rodgers, Web Designer @ vzaar.com
A brief look at CSS3 techniques by Aaron Rodgers, Web Designer @ vzaar.comA brief look at CSS3 techniques by Aaron Rodgers, Web Designer @ vzaar.com
A brief look at CSS3 techniques by Aaron Rodgers, Web Designer @ vzaar.comapplicake
 
Dmytro Kochergin Angular 2 and New Java Script Technologies
Dmytro Kochergin Angular 2 and New Java Script TechnologiesDmytro Kochergin Angular 2 and New Java Script Technologies
Dmytro Kochergin Angular 2 and New Java Script TechnologiesLogeekNightUkraine
 
Web APIs in Node.js Core: Past, Present, and Future (JSConf EU 2019)
Web APIs in Node.js Core: Past, Present, and Future (JSConf EU 2019)Web APIs in Node.js Core: Past, Present, and Future (JSConf EU 2019)
Web APIs in Node.js Core: Past, Present, and Future (JSConf EU 2019)Igalia
 
BrazilJS Perf Doctor Talk
BrazilJS Perf Doctor TalkBrazilJS Perf Doctor Talk
BrazilJS Perf Doctor TalkJosh Holmes
 
Talk Paris Infovis 091207132953 Phpapp01(2)
Talk Paris Infovis 091207132953 Phpapp01(2)Talk Paris Infovis 091207132953 Phpapp01(2)
Talk Paris Infovis 091207132953 Phpapp01(2)johnnybiz
 

Similaire à jQuery, eCSStender & You: Simplify CSS3 Development (20)

jQuery, eCSStender & You [DevChatt 2011]
jQuery, eCSStender & You [DevChatt 2011]jQuery, eCSStender & You [DevChatt 2011]
jQuery, eCSStender & You [DevChatt 2011]
 
Declarative and standards-based web application development with the Ample SDK
Declarative and standards-based web application development with the Ample SDKDeclarative and standards-based web application development with the Ample SDK
Declarative and standards-based web application development with the Ample SDK
 
Jquery
JqueryJquery
Jquery
 
SSR with Quasar Framework - JSNation 2019
SSR with Quasar Framework - JSNation 2019SSR with Quasar Framework - JSNation 2019
SSR with Quasar Framework - JSNation 2019
 
jQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPagesjQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPages
 
JavaScript front end performance optimizations
JavaScript front end performance optimizationsJavaScript front end performance optimizations
JavaScript front end performance optimizations
 
Coding the UI
Coding the UICoding the UI
Coding the UI
 
Coding Ui
Coding UiCoding Ui
Coding Ui
 
JavaScripters Event on Sep 10, 2016 · 10:30 AM: Sass
JavaScripters Event on Sep 10, 2016 · 10:30 AM: SassJavaScripters Event on Sep 10, 2016 · 10:30 AM: Sass
JavaScripters Event on Sep 10, 2016 · 10:30 AM: Sass
 
Brunch With Coffee
Brunch With CoffeeBrunch With Coffee
Brunch With Coffee
 
Be German About Your Frontend
Be German About Your FrontendBe German About Your Frontend
Be German About Your Frontend
 
How to make Ajax Libraries work for you
How to make Ajax Libraries work for youHow to make Ajax Libraries work for you
How to make Ajax Libraries work for you
 
jQuery Tips Tricks Trivia
jQuery Tips Tricks TriviajQuery Tips Tricks Trivia
jQuery Tips Tricks Trivia
 
20111129 modernizr
20111129 modernizr20111129 modernizr
20111129 modernizr
 
End-to-end HTML5 APIs - The Geek Gathering 2013
End-to-end HTML5 APIs - The Geek Gathering 2013End-to-end HTML5 APIs - The Geek Gathering 2013
End-to-end HTML5 APIs - The Geek Gathering 2013
 
A brief look at CSS3 techniques by Aaron Rodgers, Web Designer @ vzaar.com
A brief look at CSS3 techniques by Aaron Rodgers, Web Designer @ vzaar.comA brief look at CSS3 techniques by Aaron Rodgers, Web Designer @ vzaar.com
A brief look at CSS3 techniques by Aaron Rodgers, Web Designer @ vzaar.com
 
Dmytro Kochergin Angular 2 and New Java Script Technologies
Dmytro Kochergin Angular 2 and New Java Script TechnologiesDmytro Kochergin Angular 2 and New Java Script Technologies
Dmytro Kochergin Angular 2 and New Java Script Technologies
 
Web APIs in Node.js Core: Past, Present, and Future (JSConf EU 2019)
Web APIs in Node.js Core: Past, Present, and Future (JSConf EU 2019)Web APIs in Node.js Core: Past, Present, and Future (JSConf EU 2019)
Web APIs in Node.js Core: Past, Present, and Future (JSConf EU 2019)
 
BrazilJS Perf Doctor Talk
BrazilJS Perf Doctor TalkBrazilJS Perf Doctor Talk
BrazilJS Perf Doctor Talk
 
Talk Paris Infovis 091207132953 Phpapp01(2)
Talk Paris Infovis 091207132953 Phpapp01(2)Talk Paris Infovis 091207132953 Phpapp01(2)
Talk Paris Infovis 091207132953 Phpapp01(2)
 

Plus de Aaron Gustafson

Delivering Critical Information and Services [JavaScript & Friends 2021]
Delivering Critical Information and Services [JavaScript & Friends 2021]Delivering Critical Information and Services [JavaScript & Friends 2021]
Delivering Critical Information and Services [JavaScript & Friends 2021]Aaron Gustafson
 
Adapting to Reality [Guest Lecture, March 2021]
Adapting to Reality [Guest Lecture, March 2021]Adapting to Reality [Guest Lecture, March 2021]
Adapting to Reality [Guest Lecture, March 2021]Aaron Gustafson
 
Designing the Conversation [Beyond Tellerrand 2019]
Designing the Conversation [Beyond Tellerrand 2019]Designing the Conversation [Beyond Tellerrand 2019]
Designing the Conversation [Beyond Tellerrand 2019]Aaron Gustafson
 
Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]
Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]
Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]Aaron Gustafson
 
Progressive Web Apps: Where Do I Begin?
Progressive Web Apps: Where Do I Begin?Progressive Web Apps: Where Do I Begin?
Progressive Web Apps: Where Do I Begin?Aaron Gustafson
 
Media in the Age of PWAs [ImageCon 2019]
Media in the Age of PWAs [ImageCon 2019]Media in the Age of PWAs [ImageCon 2019]
Media in the Age of PWAs [ImageCon 2019]Aaron Gustafson
 
Adapting to Reality [Starbucks Lunch & Learn]
Adapting to Reality [Starbucks Lunch & Learn]Adapting to Reality [Starbucks Lunch & Learn]
Adapting to Reality [Starbucks Lunch & Learn]Aaron Gustafson
 
Conversational Semantics for the Web [CascadiaJS 2018]
Conversational Semantics for the Web [CascadiaJS 2018]Conversational Semantics for the Web [CascadiaJS 2018]
Conversational Semantics for the Web [CascadiaJS 2018]Aaron Gustafson
 
Better Performance === Greater Accessibility [Inclusive Design 24 2018]
Better Performance === Greater Accessibility [Inclusive Design 24 2018]Better Performance === Greater Accessibility [Inclusive Design 24 2018]
Better Performance === Greater Accessibility [Inclusive Design 24 2018]Aaron Gustafson
 
PWA: Where Do I Begin? [Microsoft Ignite 2018]
PWA: Where Do I Begin? [Microsoft Ignite 2018]PWA: Where Do I Begin? [Microsoft Ignite 2018]
PWA: Where Do I Begin? [Microsoft Ignite 2018]Aaron Gustafson
 
Designing the Conversation [Concatenate 2018]
Designing the Conversation [Concatenate 2018]Designing the Conversation [Concatenate 2018]
Designing the Conversation [Concatenate 2018]Aaron Gustafson
 
Designing the Conversation [Accessibility DC 2018]
Designing the Conversation [Accessibility DC 2018]Designing the Conversation [Accessibility DC 2018]
Designing the Conversation [Accessibility DC 2018]Aaron Gustafson
 
Performance as User Experience [AEADC 2018]
Performance as User Experience [AEADC 2018]Performance as User Experience [AEADC 2018]
Performance as User Experience [AEADC 2018]Aaron Gustafson
 
The Web Should Just Work for Everyone
The Web Should Just Work for EveryoneThe Web Should Just Work for Everyone
The Web Should Just Work for EveryoneAaron Gustafson
 
Performance as User Experience [AEA SEA 2018]
Performance as User Experience [AEA SEA 2018]Performance as User Experience [AEA SEA 2018]
Performance as User Experience [AEA SEA 2018]Aaron Gustafson
 
Performance as User Experience [An Event Apart Denver 2017]
Performance as User Experience [An Event Apart Denver 2017]Performance as User Experience [An Event Apart Denver 2017]
Performance as User Experience [An Event Apart Denver 2017]Aaron Gustafson
 
Advanced Design Methods 1, Day 2
Advanced Design Methods 1, Day 2Advanced Design Methods 1, Day 2
Advanced Design Methods 1, Day 2Aaron Gustafson
 
Advanced Design Methods 1, Day 1
Advanced Design Methods 1, Day 1Advanced Design Methods 1, Day 1
Advanced Design Methods 1, Day 1Aaron Gustafson
 
Designing the Conversation [Paris Web 2017]
Designing the Conversation [Paris Web 2017]Designing the Conversation [Paris Web 2017]
Designing the Conversation [Paris Web 2017]Aaron Gustafson
 
Exploring Adaptive Interfaces [Generate 2017]
Exploring Adaptive Interfaces [Generate 2017]Exploring Adaptive Interfaces [Generate 2017]
Exploring Adaptive Interfaces [Generate 2017]Aaron Gustafson
 

Plus de Aaron Gustafson (20)

Delivering Critical Information and Services [JavaScript & Friends 2021]
Delivering Critical Information and Services [JavaScript & Friends 2021]Delivering Critical Information and Services [JavaScript & Friends 2021]
Delivering Critical Information and Services [JavaScript & Friends 2021]
 
Adapting to Reality [Guest Lecture, March 2021]
Adapting to Reality [Guest Lecture, March 2021]Adapting to Reality [Guest Lecture, March 2021]
Adapting to Reality [Guest Lecture, March 2021]
 
Designing the Conversation [Beyond Tellerrand 2019]
Designing the Conversation [Beyond Tellerrand 2019]Designing the Conversation [Beyond Tellerrand 2019]
Designing the Conversation [Beyond Tellerrand 2019]
 
Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]
Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]
Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]
 
Progressive Web Apps: Where Do I Begin?
Progressive Web Apps: Where Do I Begin?Progressive Web Apps: Where Do I Begin?
Progressive Web Apps: Where Do I Begin?
 
Media in the Age of PWAs [ImageCon 2019]
Media in the Age of PWAs [ImageCon 2019]Media in the Age of PWAs [ImageCon 2019]
Media in the Age of PWAs [ImageCon 2019]
 
Adapting to Reality [Starbucks Lunch & Learn]
Adapting to Reality [Starbucks Lunch & Learn]Adapting to Reality [Starbucks Lunch & Learn]
Adapting to Reality [Starbucks Lunch & Learn]
 
Conversational Semantics for the Web [CascadiaJS 2018]
Conversational Semantics for the Web [CascadiaJS 2018]Conversational Semantics for the Web [CascadiaJS 2018]
Conversational Semantics for the Web [CascadiaJS 2018]
 
Better Performance === Greater Accessibility [Inclusive Design 24 2018]
Better Performance === Greater Accessibility [Inclusive Design 24 2018]Better Performance === Greater Accessibility [Inclusive Design 24 2018]
Better Performance === Greater Accessibility [Inclusive Design 24 2018]
 
PWA: Where Do I Begin? [Microsoft Ignite 2018]
PWA: Where Do I Begin? [Microsoft Ignite 2018]PWA: Where Do I Begin? [Microsoft Ignite 2018]
PWA: Where Do I Begin? [Microsoft Ignite 2018]
 
Designing the Conversation [Concatenate 2018]
Designing the Conversation [Concatenate 2018]Designing the Conversation [Concatenate 2018]
Designing the Conversation [Concatenate 2018]
 
Designing the Conversation [Accessibility DC 2018]
Designing the Conversation [Accessibility DC 2018]Designing the Conversation [Accessibility DC 2018]
Designing the Conversation [Accessibility DC 2018]
 
Performance as User Experience [AEADC 2018]
Performance as User Experience [AEADC 2018]Performance as User Experience [AEADC 2018]
Performance as User Experience [AEADC 2018]
 
The Web Should Just Work for Everyone
The Web Should Just Work for EveryoneThe Web Should Just Work for Everyone
The Web Should Just Work for Everyone
 
Performance as User Experience [AEA SEA 2018]
Performance as User Experience [AEA SEA 2018]Performance as User Experience [AEA SEA 2018]
Performance as User Experience [AEA SEA 2018]
 
Performance as User Experience [An Event Apart Denver 2017]
Performance as User Experience [An Event Apart Denver 2017]Performance as User Experience [An Event Apart Denver 2017]
Performance as User Experience [An Event Apart Denver 2017]
 
Advanced Design Methods 1, Day 2
Advanced Design Methods 1, Day 2Advanced Design Methods 1, Day 2
Advanced Design Methods 1, Day 2
 
Advanced Design Methods 1, Day 1
Advanced Design Methods 1, Day 1Advanced Design Methods 1, Day 1
Advanced Design Methods 1, Day 1
 
Designing the Conversation [Paris Web 2017]
Designing the Conversation [Paris Web 2017]Designing the Conversation [Paris Web 2017]
Designing the Conversation [Paris Web 2017]
 
Exploring Adaptive Interfaces [Generate 2017]
Exploring Adaptive Interfaces [Generate 2017]Exploring Adaptive Interfaces [Generate 2017]
Exploring Adaptive Interfaces [Generate 2017]
 

Dernier

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 

Dernier (20)

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 

jQuery, eCSStender & You: Simplify CSS3 Development

  • 1. jQuery, eCSStender & you Aaron Gustafson Easy Designs, LLC slideshare.net/AaronGustafson
  • 2. ?
  • 3. ?
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12. jQuery, eCSStender & you Download... eCSStender.org jQuery Summit - November 2010 12
  • 13. jQuery, eCSStender & you Download... eCSStender.org jQuery Summit - November 2010 13
  • 14. jQuery, eCSStender & you Download... github.com/easy-designs/eCSStender.js jQuery Summit - November 2010 14
  • 15. jQuery, eCSStender & you ...collect extensions... jQuery Summit - November 2010 15
  • 16. jQuery, eCSStender & you ...collect extensions... jQuery Summit - November 2010 16
  • 17. jQuery, eCSStender & you ...include... <script type="text/javascript" src="eCSStender.js"></script> <script type="text/javascript" src="eCSStender.CSS3-backgrounds-and-borders.js"></script> <script type="text/javascript" src="eCSStender.CSS3-transforms.js"></script> <script type="text/javascript" src="eCSStender.CSS3-color.js"></script> <script type="text/javascript" src="eCSStender.CSS3-transitions.js"></script> jQuery Summit - November 2010 17
  • 18. jQuery, eCSStender & you ...and write your CSS section, article, blockquote { border-radius: 10px; box-shadow: 0 0 15px 1px #000; color: rgb(255, 255, 255); transform-origin: 50% 50%; transition: all 0.5s linear; } section:hover, body:focus section, section:hover blockquote, body:focus blockquote { transform: rotate(-15deg); } section:hover article, body:focus article { transform: rotate(30deg); } jQuery Summit - November 2010 18
  • 19.
  • 20. jQuery, eCSStender & you Need selectors? <script type="text/javascript" src="eCSStender.js"></script> <script type="text/javascript" src="sizzle.js"></script> <script type="text/javascript"> // <![CDATA[ eCSStender.addMethod('findBySelector',Sizzle); // ]]> </script> <script type="text/javascript" src="eCSStender.CSS3-selectors.js"></script> jQuery Summit - November 2010 20
  • 21. jQuery, eCSStender & you Compound classes in IE6? p.test { color: green; } p.alt.test { color: red; } jQuery Summit - November 2010 21
  • 22. jQuery, eCSStender & you Adjacent siblings? p + p { color: green; } jQuery Summit - November 2010 22
  • 23. jQuery, eCSStender & you General siblings? p ~ p { color: green; } jQuery Summit - November 2010 23
  • 24. jQuery, eCSStender & you Advanced pseudo-classes? tr { background: white; } td:empty { background: green; } jQuery Summit - November 2010 24
  • 25.
  • 26. jQuery, eCSStender & you Consider border-radius #foo { border-radius: 3px; } jQuery Summit - November 2010 26
  • 27. jQuery, eCSStender & you Consider border-radius #foo { -moz-border-radius: 3px; -webkit-border-radius: 3px; -o-border-radius: 3px; -khtml-border-radius: 3px; border-radius: 3px; } jQuery Summit - November 2010 27
  • 28. jQuery, eCSStender & you Consider border-radius #foo { border-radius: 10px 5px; } jQuery Summit - November 2010 28
  • 29. jQuery, eCSStender & you Consider border-radius #foo { -moz-border-radius: 10px 5px; -webkit-border-top-left-radius: 10px; -webkit-border-top-right-radius: 5px; -webkit-border-bottom-right-radius: 10px; -webkit-border-bottom-left-radius: 10px; -o-border-radius: 10px 5px; -khtml-border-top-left-radius: 10px; -khtml-border-top-right-radius: 5px; -khtml-border-bottom-right-radius: 10px; -khtml-border-bottom-left-radius: 10px; border-radius: 10px 5px; } jQuery Summit - November 2010 29
  • 30. jQuery, eCSStender & you Ah, memories... #foo { padding: 10px; width: 200px; width: 180px; height: 200px; height: 180px; } /* or */ #foo { padding: 10px; width: 200px; height: 200px; } * html #foo { width: 180px; height: 180px; } jQuery Summit - November 2010 30
  • 31. jQuery, eCSStender & you Simplified CSS3? <script type="text/javascript" src="eCSStender.js"></script> <script type="text/javascript" src="eCSStender.CSS3-backgrounds-and-borders.js"></script> <script type="text/javascript" src="eCSStender.CSS3-transforms.js"></script> <script type="text/javascript" src="eCSStender.CSS3-color.js"></script> <script type="text/javascript" src="eCSStender.CSS3-transitions.js"></script> jQuery Summit - November 2010 31
  • 32. jQuery, eCSStender & you Yup! section, article, blockquote { border-radius: 10px; box-shadow: 0 0 15px 1px #000; color: rgb(255, 255, 255); transform-origin: 50% 50%; transition: all 0.5s linear; } section:hover, body:focus section, section:hover blockquote, body:focus blockquote { transform: rotate(-15deg); } section:hover article, body:focus article { transform: rotate(30deg); } jQuery Summit - November 2010 32
  • 33.
  • 34. jQuery, eCSStender & you Valid extension of CSS -prefix- jQuery Summit - November 2010 34
  • 35. jQuery, eCSStender & you Browser vendors do it -moz- -webkit- -ms- -o- jQuery Summit - November 2010 35
  • 36.
  • 38. jQuery, eCSStender & you Pointless, but possible .bowling-alley img { -easy-physics-fill: lead; } .beach img { -easy-physics-fill: rubber; } .disney img { -easy-physics-fill: helium; } jQuery Summit - November 2010 38
  • 39. Trivia Question: Who were the co-creators of CSS? (First person to answer correctly, gets a book)
  • 40.
  • 41. jQuery, eCSStender & you Step 1: Register extensions Register jQuery Summit - November 2010 41
  • 42. jQuery, eCSStender & you Step 2: Find stylesheets <html> CSS Inspect jQuery Summit - November 2010 42
  • 43. jQuery, eCSStender & you Step 3: Collect the rules Collect jQuery Summit - November 2010 43
  • 44. jQuery, eCSStender & you Step 4: parse & process Process jQuery Summit - November 2010 44
  • 45. jQuery, eCSStender & you Step 5: Trigger extensions jQuery Summit - November 2010 45
  • 46.
  • 47. jQuery, eCSStender & you Helping hands ๏ Dean Edward’s IE scripts ๏ Selectivizr ๏ css3-mediaqueries.js Browser Patchers jQuery Summit - November 2010 47
  • 48. jQuery, eCSStender & you Alternative syntax ๏ SASS (Syntactically Awesome Stylesheets) ๏ LESS (Leaner CSS) ๏ OO CSS (purely conceptual) Browser Shorthand Patchers Parsers jQuery Summit - November 2010 48
  • 49. jQuery, eCSStender & you Capability checking ๏ Modernizr Testing Scripts Browser Shorthand Patchers Parsers jQuery Summit - November 2010 49
  • 50. jQuery, eCSStender & you Something new ๏ More CSS Testing Scripts Browser Shorthand Patchers Parsers Custom CSS Parsers jQuery Summit - November 2010 50
  • 51. jQuery, eCSStender & you Ecosystem ๏ jQuery plug-ins ๏ CSS Sandpaper One-off CSS ๏ CVI scripts scripts& libraries Testing Scripts Browser Shorthand Patchers Parsers Custom CSS Parsers jQuery Summit - November 2010 51
  • 52. jQuery, eCSStender & you Unity! One-off CSS scripts& libraries Testing Scripts Browser Shorthand Patchers Parsers Custom CSS Parsers jQuery Summit - November 2010 52
  • 53. Let’s make something awesome! I thought you’d never ask.
  • 54. jQuery, eCSStender & you Pointless, but possible jQuery Summit - November 2010 54
  • 55. jQuery, eCSStender & you Step 1: Dependencies <script type="text/javascript" src="eCSStender.js"></script> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.EasyPhysics.js"></script> jQuery Summit - November 2010 55
  • 56. jQuery, eCSStender & you Step 1: Dependencies // jquery.EasyPhysics.js EasyPhysics.Balloon = function( el ) { new PhysicalObject( el, // element 0, // velocity -0.5, // kinetic energy -0.1 // gravitational effect ); }; EasyPhysics.RubberBall = function( el ) { new PhysicalObject( el, 0, -0.8, 0.5 ); }; EasyPhysics.BowlingBall = function( el ) { new PhysicalObject( el, 1, -0.4, 0.9 ); }; jQuery Summit - November 2010 56
  • 57. jQuery, eCSStender & you Step 2: Registration eCSStender.register( ); jQuery Summit - November 2010 57
  • 58. jQuery, eCSStender & you Step 2: Registration eCSStender.register( { property: '-easy-physics-fill', fingerprint: 'net.easy-designs.-easy-physics' }, ); jQuery Summit - November 2010 58
  • 59. jQuery, eCSStender & you Step 2: Registration eCSStender.register( { property: '-easy-physics-fill', fingerprint: 'net.easy-designs.-easy-physics' }, false, ); jQuery Summit - November 2010 59
  • 60. jQuery, eCSStender & you Step 2: Registration eCSStender.register( { property: '-easy-physics-fill', fingerprint: 'net.easy-designs.-easy-physics' }, false, function( selector, properties ){ var $el = $(selector); switch ( properties['-easy-physics-fill'] ) { case 'helium': new EasyPhysics.Balloon( $el ); break; case 'rubber': new EasyPhysics.RubberBall( $el ); break; case 'lead': new EasyPhysics.BowlingBall( $el ); break; } }); jQuery Summit - November 2010 60
  • 61. jQuery, eCSStender & you Pointless, but possible .bowling-alley img { -easy-physics-fill: lead; } .beach img { -easy-physics-fill: rubber; } .disney img { -easy-physics-fill: helium; } jQuery Summit - November 2010 61
  • 62. I love you you know. I know.
  • 63. Does the browser support border-radius? Nope. isSupported()
  • 64. jQuery, eCSStender & you isSupported() eCSStender.isSupported( 'property', 'visibility: hidden' ); // true eCSStender.isSupported( 'property', 'foo: bar' ); // false jQuery Summit - November 2010 64
  • 65. jQuery, eCSStender & you isSupported() eCSStender.isSupported( 'property', 'visibility', 'hidden' ); // true eCSStender.isSupported( 'property', 'color', ['#000000','black','rgb(0,0,0)'] ); // true jQuery Summit - November 2010 65
  • 66. jQuery, eCSStender & you isSupported() var el = document.createElement('b'), html = document.createElement('p'); html.appendChild(el); eCSStender.isSupported( 'selector', 'p b', html, el ); // true eCSStender.isSupported( 'selector', 'p ?? b', html, el ); // false jQuery Summit - November 2010 66
  • 67. Can you make my CSS smarter? Of course.
  • 68. jQuery, eCSStender & you Inline style sucks... <div style="display: none;"> <p>Some content</p> </div> jQuery Summit - November 2010 68
  • 69. jQuery, eCSStender & you ...don’t do it! <div style="display: none;"> <p>Some content</p> </div> jQuery Summit - November 2010 69
  • 70. jQuery, eCSStender & you makeUniqueClass() (function(){ var e = eCSStender, the_class = e.makeUniqueClass(), the_regex = /:checked/, classify = function() { var inputs = document.getElementsByTagName('input'), i = inputs.length; while ( i-- ) { if ( inputs[i].checked ) { e.addClass( inputs[i], the_class ); } else { e.removeClass( inputs[i], the_class ); } } }; // ... })(); excerpt from :checked CSS3 Selectors extension github.com/easy-designs/eCSStender.CSS3-selectors.js jQuery Summit - November 2010 70
  • 71. jQuery, eCSStender & you embedCSS() eCSStender.embedCSS( 'p { color: red; }', 'screen', false ); // embeds the declaration block in // a screen-specific stylesheet immediately jQuery Summit - November 2010 71
  • 72. jQuery, eCSStender & you applyWeightedStyle() eCSStender.applyWeightedStyle( el, { 'visibility': 'hidden' }, 10 ); // el now has visibility: hidden set // with a specificity of 10 eCSStender.applyWeightedStyle( el, { 'visibility': 'visible' }, 1 ); // el is not set to visible because // the specificity is not high enough eCSStender.applyWeightedStyle( el, { 'visibility': 'visible' }, 10 ); // el is now “visible” because the specificity // is equal to the prior specificity eCSStender.applyWeightedStyle( el, { 'visibility': 'hidden' }, 100 ); // el is now “hidden” again because the // specificity is greater than the prior one jQuery Summit - November 2010 72
  • 73. jQuery, eCSStender & you As flexible as possible function embed( selector, properties, medium ) { var style_block = '', prop; for ( prop in properties ) { if ( eCSStender.isInheritedProperty( properties, prop ) ) { continue; }; style_block += prop + ':' + properties[prop] + ';'; } if ( style_block != EMPTY ) { eCSStender.embedCSS( selector + '{' + style_block + '}', medium ); } } excerpt from CSS3 Selectors extension github.com/easy-designs/eCSStender.CSS3-selectors.js jQuery Summit - November 2010 73
  • 74. jQuery, eCSStender & you As flexible as possible function inline( selector, properties, medium, specificity ) { if ( medium != 'screen' ){ return; } try { var $els = $( selector ), i = $els.length; while ( i-- ) { eCSStender.applyWeightedStyle( $els[i], properties, specificity ); } $els = null; } catch(e) { // throw new Error( LIB_ERROR + selector ); } } excerpt from CSS3 Selectors extension github.com/easy-designs/eCSStender.CSS3-selectors.js jQuery Summit - November 2010 74
  • 75. jQuery, eCSStender & you As flexible as possible eCSStender.register( // ... function( selector, properties, medium, specificity ) { var calc = 'p:nth-child(2n+1)', d = div.cloneNode(true), p = para.cloneNode(true), func = inline; d.appendChild( p ); // embedding is the way to go if ( ( eCSStender.isSupported( 'selector', 'p:nth-child(odd)', d, p ) && ! eCSStender.isSupported( 'selector', calc, d, p ) && selector.match( /:nth-child(s*(?:even|odd)s*)/ ) != null ) || eCSStender.isSupported( 'selector', calc, d, p ) ) { func = embed; } func( selector, properties, medium, specificity ); return func; }); excerpt from :checked CSS3 Selectors extension github.com/easy-designs/eCSStender.CSS3-selectors.js jQuery Summit - November 2010 75
  • 76. jQuery, eCSStender & you addRules() var style = eCSStender.embedCSS( 'p { color: red; }', 'screen', false ); // ... eCSStender.addRules( style, 'p { color: blue; }' ); jQuery Summit - November 2010 76
  • 77. Can you look something up for me? No problemo.
  • 78. jQuery, eCSStender & you lookup() var matches = eCSStender.lookup( { selector: 'h1', specificity: { min: 0, max: 2 } }, '*' ); // looks for rules where the // selector includes an h1 and the // specificity is between 0 and 2 // e.g. // [ { medium: 'all' // selector: 'h1', // specificity: 1 // properties: { color: 'red' } // }, ... ] jQuery Summit - November 2010 78
  • 79.
  • 80. Help make me better! MIT Licensed Fork: github.com/easy-designs/eCSStender.js Discuss: groups.google.com/group/ecsstender
  • 81. jQuery, eCSStender & you by Aaron Gustafson Slides available at http://slideshare.net/AaronGustafson This presentation is licensed under Creative Commons Attribution-Noncommercial-Share Alike 3.0 More on eCSStender: http://eCSStender.org @eCSStender flickr Photo Credits “Everyone loves books but I thought this was the dullest photo i had ever taken. I guess not.“ by boltron- “Sharing” by bengrey “Three wise monkeys” by Anderson Mancini “Chemcraft manual” by underwhelmer “crawfordmarketcarrotman” by Rigmarole “Röck!! on the right” by Adactio “Internals” by alexsnaps “Wood” by Joost J. Bakker IJmuiden “Tribute to Willy Puchner's ‘The Penguins Longing’” by Curnen http://flickr.com/photos/aarongustafson/galleries/72157625226185257/