SlideShare una empresa de Scribd logo
1 de 283
Descargar para leer sin conexión
Hello.

http://is.gd/AWD_WV_NYC_2012
ADAPTIVE WEB DESIGN WORKSHOP




    The Agenda
๏   Progressive Enhancement

    ‣ vs Graceful Degradation

    ‣ How & Why It Works

๏   Content & Organization
๏   Semantics

    ‣ HTML5

    ‣ Microformats




                                   2
ADAPTIVE WEB DESIGN WORKSHOP




    The Agenda
๏   Design

    ‣ Parsing Errors

    ‣ Designing in Layers

    ‣ Adaptive (& Responsive) Layouts

    ‣ “Mobile First”
๏   Interactivity

    ‣ Unobtrusive JavaScript
    ‣ Adaptive Interfaces

    ‣ Hijax

                                        3
ADAPTIVE WEB DESIGN WORKSHOP




    The Agenda
๏   Accessibility

    ‣ Design Considerations

    ‣ ARIA




                                   4
VillageReach.org
Progressive
Enhancement
?
Technological
 restrictions
MCMLXXVII
  (that’s 1977)
HTML   CSS
fault tolerance
n. a system’s ability to continue to
operate when it encounters and
unexpected error.
Browsers IGNORE
 what they don’t
   understand
Graceful
Degradation
Modern
Browsers
   Older Browsers
Modern
Browsers
   Older Browsers
Progressive
Enhancement
Progressive
Graceful Degradation   Enhancement
Content
Content
:-)
Ooooh.
Shiny!
Progressive
Enhancement
 ISN’T about
  browsers.
Browsers and
 technologies
COME AND GO
Don’t lose sight
of your USERS
User Experience




             BASIC                          ADVANCED

                     Browser Capabilities
User Experience




             BASIC                          ADVANCED

                     Browser Capabilities


                        Content
User Experience




                      Semantics
             BASIC                          ADVANCED

                     Browser Capabilities


                        Content
User Experience




                         Design

                      Semantics
             BASIC                          ADVANCED

                     Browser Capabilities


                        Content
User Experience




                     Interactivity

                         Design

                      Semantics
             BASIC                          ADVANCED

                     Browser Capabilities


                        Content
User Experience



                     Accessibility

                     Interactivity

                         Design

                      Semantics
             BASIC                          ADVANCED

                     Browser Capabilities


                        Content
User Experience



                          ARIA

                      JavaScript

                           CSS

                         HTML
             BASIC                          ADVANCED

                     Browser Capabilities


                     Text & HTTP
User Experience




             BASIC                          ADVANCED

                     Browser Capabilities


                        Content
Content
 is WHY
we build
websites
Clear,
well-written
prose is key.
Organize
 & prioritize
your content
Don’t
obscure
content.
Header

                       Nav
Features

                      Extra

                       Social
Programs
                    Newsletter



 News



           Footer
Header

Features               Nav

Programs              Extra

 News                 Social

                    Newsletter

           Footer
User Experience




                      Semantics
             BASIC                          ADVANCED

                     Browser Capabilities


                        Content
ADAPTIVE WEB DESIGN WORKSHOP




Semantics 101
 <p>HTML5 introduces several <em>really</em>
 useful elements and a ton of new APIs.</p>


 <p>Please fill out the form below.
 <strong>Note: all fields are required.</strong></p>


 <p>I like to work with markup languages because
 <strong>they are simple and easy to read</strong>.
 They also have that certain <i lang="fr" title="I
 don&#8217;t know what">je ne sais quoi</i>.</p>
ADAPTIVE WEB DESIGN WORKSHOP




Semantics 101




                               small
ADAPTIVE WEB DESIGN WORKSHOP




Semantics 101


                               hr
ADAPTIVE WEB DESIGN WORKSHOP




Organization
 <figure id="fig-1">
  <img src="photo.jpeg" alt=""/>
  <figcaption>Photo of Albert Einstein</figcaption>
 </figure>


 <figure id="fig-2">
  <table>
    <caption>2011 Forecast Earnings</caption>
    <!-- a bunch of data -->
  </table>
 </figure>
ADAPTIVE WEB DESIGN WORKSHOP




Organization
 <section>
  <!-- pretty much anything can go here -->
 </section>


 <article>
  <!-- pretty much anything can go here -->
 </article>
section
section > article
article
article > section
ADAPTIVE WEB DESIGN WORKSHOP




Organization
 <header>
  <!-- titles, etc. go here -->
 </header>


 <footer>
  <!-- meta/supplementary information goes here -->
 </footer>
header
footer
article
article > header
article
article > footer
ADAPTIVE WEB DESIGN WORKSHOP




Organization
 <nav>
  <ol>
    <li><a href="#details">Details</a></li>
    <li><a href="#lodging">Lodging</a></li>
    <li><a href="#location">Location</a></li>
    <li><a href="#topics">Topics</a></li>
    <li><a href="#contact">Contact Us</a></li>
  </ol>
  <p><a href="register">Register Now</a>
    <b>Only 5 spaces left</b></p>
 </nav>
nav
nav
ADAPTIVE WEB DESIGN WORKSHOP




Implicit sections (HTML4)
                               <h1> HTML5
                               <p> HTML5 is currently under development...
                               <p> Like its immediate predecessors, HTML...


                               <h2> W3C standardization process
                               <p> The Web Hypertext Application...
                               <p> The HTML5 specification...
                               <p> According to the W3C timetable...
                               <p> Ian Hickson, editor of the HTML5...


                               <h2> Markup
                               <p> HTML5 introduces a number of...
                               <p> The HTML5 syntax is no longer...




                                1 HTML5
                                1.1 W3C standardization process
                                1.2 Markup
ADAPTIVE WEB DESIGN WORKSHOP




Explicit sections (HTML5)
                                    <h1> HTML5
                                    <p> HTML5 is currently under development...
                                    <p> Like its immediate predecessors, HTML...


                                    <h2> W3C standardization process
                          section


                                    <p> The Web Hypertext Application...
                                    <p> The HTML5 specification...
                                    <p> According to the W3C timetable...
                                    <p> Ian Hickson, editor of the HTML5...


                                    <h2> Markup
                          section




                                    <p> HTML5 introduces a number of...
                                    <p> The HTML5 syntax is no longer...




                                     1 HTML5
                                     1.1 W3C standardization process
                                     1.2 Markup
ADAPTIVE WEB DESIGN WORKSHOP




Explicit sections (HTML5)
                                    <h1> HTML5
                                    <p> HTML5 is currently under development...
                                    <p> Like its immediate predecessors, HTML...


                                    <h1> W3C standardization process
                          section


                                    <p> The Web Hypertext Application...
                                    <p> The HTML5 specification...
                                    <p> According to the W3C timetable...
                                    <p> Ian Hickson, editor of the HTML5...


                                    <h1> Markup
                          section




                                    <p> HTML5 introduces a number of...
                                    <p> The HTML5 syntax is no longer...




                                     1 HTML5
                                     1.1 W3C standardization process
                                     1.2 Markup
ADAPTIVE WEB DESIGN WORKSHOP




Explicit sections (HTML5)
                                    <h1> HTML5
                                    <p> HTML5 is currently under development...
                                    <p> Like its immediate predecessors, HTML...


                                    <h4> W3C standardization process
                          section


                                    <p> The Web Hypertext Application...
                                    <p> The HTML5 specification...
                                    <p> According to the W3C timetable...
                                    <p> Ian Hickson, editor of the HTML5...


                                    <h6> Markup
                          section




                                    <p> HTML5 introduces a number of...
                                    <p> The HTML5 syntax is no longer...




                                     1 HTML5
                                     1.1 W3C standardization process
                                     1.2 Markup
ADAPTIVE WEB DESIGN WORKSHOP




    Sections
๏   section
๏   article
๏   aside
๏   footer
๏   header
๏   nav




                                   84
ADAPTIVE WEB DESIGN WORKSHOP




Outline limitations in HTML4
                               <h1> Title
                               <h2> Subtitle
                               <p> Text content continues...
                               <p> Text content continues...
                               <p> Text content continues...
                               <p> Text content continues...
                               <p> Text content continues...
                               <p> Text content continues...
                               <p> Text content continues...




                                1 Title
                                1.1 Subtitle
ADAPTIVE WEB DESIGN WORKSHOP




Heading groups (HTML5)

                          hgroup
                                   <h1> Title
                                   <h2> Subtitle
                                   <p> Text content continues...
                                   <p> Text content continues...
                                   <p> Text content continues...
                                   <p> Text content continues...
                                   <p> Text content continues...
                                   <p> Text content continues...
                                   <p> Text content continues...




                                    1 Title
ADAPTIVE WEB DESIGN WORKSHOP




Aside: rooted sections
                               <h1> Title
                               <p> Text content continues...
                               <p> Text content continues...


                               <h2> Section heading
                               <p> Text content continues...
                               <blockquote>
                                 <h2> Rooted heading
                                 <p> Text content continues...
                                 <p> Text content continues...
                               <p> Text content continues...
                               <p> Text content continues...




                                1 Title
                                1.1 Section heading
ADAPTIVE WEB DESIGN WORKSHOP




    Sectioning roots
๏   body
๏   blockquote
๏   details
๏   fieldset
๏   figure
๏   td




                                   88
ADAPTIVE WEB DESIGN WORKSHOP




Dates & Times
 <input type="date" name="dob"/>
ADAPTIVE WEB DESIGN WORKSHOP




Numbers
 <input type="number" name="foo"/>




 <input type="range" min="1" max="11" name="foo"/>
ADAPTIVE WEB DESIGN WORKSHOP




Format validation
 <input type="email" …/>       <input type="url" …/>
ADAPTIVE WEB DESIGN WORKSHOP




Format validation
 <input type="text"
        pattern="d{6}w{3}"
        placeholder="6 digits followed by 3 letters"
        .../>
Ad-hoc
Semantics
ADAPTIVE WEB DESIGN WORKSHOP




Classi cation
ADAPTIVE WEB DESIGN WORKSHOP




Identi cation
ADAPTIVE WEB DESIGN WORKSHOP




Microformats
 <section class="vcard">
  <figure>
    <img class="photo" src="aaron-gustafson.jpg" alt=""/>
  </figure>
  <h1 class="fn">Aaron Gustafson</h1>
  …
  <p>Aaron … is <b class="role">Group Manager</b> of the
    <a class="org" href="http://webstandards.org">Web
    Standards Project (WaSP)</a> ….</p>
 </section>
Header
ADAPTIVE WEB DESIGN WORKSHOP




Semantics
 <div id="header">
  <a href="#donate" class="donate-link"
     title="Click here to view our donation options">Donate</a>
  <a href="http://villagereach.org/feed/" class="rss-link"
     title="View our RSS Feed">RSS Feed</a>
  <div id="site-title">
    <a href="http://villagereach.org" title="Village Reach: Home">
     <span>Village Reach</span>
    </a>
  </div>
 </div><!-- #header -->
Features




Programs




 News
ADAPTIVE WEB DESIGN WORKSHOP




Semantics
 <div class="entry-content entry">
  <!-- Features -->
  <div class="boxes three home">
    <!-- Programs -->
  </div>
  <div id="latestNews">
    <!-- Latest News -->
  </div>
 </div>
Nav
ADAPTIVE WEB DESIGN WORKSHOP




Semantics
 <div id="hybrid-search-3" class="widget search widget-search">
  <div class="widget-inside">
    <form method="get" class="search-form" id="search-form"
 action="http://villagereach.org/">
      <!--Search Form -->
    </form><!-- .search-form -->
  </div>
 </div>
 <div id="navigation">
  <div id="page-nav" class="page-nav">
    <ul class="menu sf-menu">
      <!-- Navigation -->
    </ul>
  </div>
 </div><!-- #navigation -->
Extra

   Social


Newsletter
ADAPTIVE WEB DESIGN WORKSHOP




Semantics
 <div id="text-8" class="widget widget_text widget-widget_text">
  <div class="widget-inside">
    <!-- Extra -->
  </div>
 </div>
 <div id="text-7" class="widget widget_text widget-widget_text">
  <div class="widget-inside">
    <!-- Social -->
  </div>
 </div>
 <div id="mc_signup_container">
  <!-- Newsletter -->
 </div>
Footer
ADAPTIVE WEB DESIGN WORKSHOP




Semantics
 <div id="footer-container">
  <div id="footer">
    <p class="copyright">Copyright &#169; 2011 <a class="site-link"
 href="http://villagereach.org" title="VillageReach"
 rel="home"><span>VillageReach</span></a>. - All rights
 reserved.</p>
  </div><!-- #footer -->
 </div><!-- #footer-container -->
User Experience




                         Design

                      Semantics
             BASIC                          ADVANCED

                     Browser Capabilities


                        Content
ADAPTIVE WEB DESIGN WORKSHOP




Parsing errors


                               p{
                                 color: red;
                               }
ADAPTIVE WEB DESIGN WORKSHOP




Parsing errors


                               p{
                                 color: red;
                               }
ADAPTIVE WEB DESIGN WORKSHOP




Parsing errors


                               p{
                                 color: red;
                                 font-weight: bold;
                               }
ADAPTIVE WEB DESIGN WORKSHOP




Parsing errors


                               p{
                                 color: red;
                                 font-weight: bold;
                               }
ADAPTIVE WEB DESIGN WORKSHOP




Parsing errors
 p {
   color: #ccc;
   color: rgba( 0, 0, 0, .5 );
 }
ADAPTIVE WEB DESIGN WORKSHOP




Parsing errors
 html[lang] p {
   color: #ccc;
   color: rgba( 0, 0, 0, .5 );
 }
ADAPTIVE WEB DESIGN WORKSHOP




Parsing errors
 @-moz-document url-prefix() {
   html[lang] p {
     color: #ccc;
     color: rgba( 0, 0, 0, .5 );
   }
 }
#intro {
  /* Basic Layout */
}

/* ... */

body[id=css-zen-garden] #intro {
 /* Advanced Layout */
}
#intro {
  /* Basic Layout */
}

/* ... */

[foo], #intro {
  /* Advanced Layout */
}
ADAPTIVE WEB DESIGN WORKSHOP




Parsing errors
 @import 'not-for-IE7-or-below.css' screen;

 @media screen, print, refrigerator {
   /* IE will get these rules */
 }
ADAPTIVE WEB DESIGN WORKSHOP




Organization



                               design
ADAPTIVE WEB DESIGN WORKSHOP




Organization


                               type        color


                                  layout
ADAPTIVE WEB DESIGN WORKSHOP




Organization
 /* =Typography */
 img {
   display: block;
 }

 /* =Layout */
 @media screen {
   .frame .inner {
     border: 10px solid;
   }
 }

 /* =Color */
 .frame .inner {
   background-color: rgb(227, 222, 215);
   border-color: rgb(227, 222, 215);
 }
ADAPTIVE WEB DESIGN WORKSHOP




Organization

                  type.css




                 layout.css    main.css




                  color.css
ADAPTIVE WEB DESIGN WORKSHOP




Organization
 {embed="styles/typography"}

 @media screen {
   {embed="styles/layout-screen"}
 }

 {embed="styles/color"}
                                    Example using ExpressionEngine embed tags
ADAPTIVE WEB DESIGN WORKSHOP




Organization
 {embed="styles/reset"}

 {embed="styles/typography"}

 @media screen {
   {embed="styles/layout-screen"}
 }

 @media print {
   {embed="styles/layout-print"}
 }

 {embed="styles/color"}

 {embed="styles/effects"}
                                    Example using ExpressionEngine embed tags
ADAPTIVE WEB DESIGN WORKSHOP




Monkey-patching
 <link rel="stylesheet" href="main.css"/>
 <!--[if IE 9]><link rel="stylesheet" href="ie9.css"/><![endif]-->
 <!--[if lte IE 8]><link rel="stylesheet" href="ie8.css"/><![endif]-->
 <!--[if lte IE 7]><link rel="stylesheet" href="ie7.css"/><![endif]-->
 <!--[if lte IE 6]><link rel="stylesheet" href="ie6.css"/><![endif]-->
ADAPTIVE WEB DESIGN WORKSHOP




Monkey-patching
 @-moz-document url-prefix() {

       /* GENERATED CONTENT - FF3 doesn't allow positioning */
       #extra-mile:before {
          content: '';
       }
       #extra-mile:first-of-type:before {
          content: url(extra-mile-sign.png);
       }

 }
ADAPTIVE WEB DESIGN WORKSHOP




Media Queries
ADAPTIVE WEB DESIGN WORKSHOP




@Media blocks
 @media screen {
   /* Styles for screen media only */
 }
ADAPTIVE WEB DESIGN WORKSHOP




@Media blocks+
 @media screen and (max-width:450px) {
   /* Styles for screen media when browser
      is 450px wide or below */
 }
ADAPTIVE WEB DESIGN WORKSHOP




Don’t do this
 @media
   screen and (min-device-width:1024px)
          and (max-width:989px),
   screen and (max-device-width:480px),
   screen and (max-device-width:480px)
          and (orientation:landscape),
   screen and (min-device-width:481px)
          and (orientation:portrait) {
   /* Layout for narrower desktop (below 990px)
      or
      iPhone running iOS 3 (or equivalent)
      or
      iPhone running iOS 4 (or equivalent) in “landscape” view
      or
      iPad (or equivalent) in “portrait” view */
 }
ADAPTIVE WEB DESIGN WORKSHOP




Mobile First w/ media queries
 /* Universal Layout */

 @media screen {
   /* Styles for all screens */
 }

 @media screen and (min-width:481px) {
   /* Styles for all screens 480px+ width */
 }

 @media screen and (min-width:754px) {
   /* Styles for all screens 754px+ width */
 }
ADAPTIVE WEB DESIGN WORKSHOP




Mobile First w/ media queries
 #hd {
   background: url(hd-bg-small.png) repeat-x 50% 50%;
 }
 #hd .logo a {
   background: url(logo-small.png) no-repeat 50% 0;
   display: block;
   width: 240px;
   height: 109px;
   /* … */
 }
 @media screen and (min-width: 481px) {
   #hd {
     background: url(hd-bg.png) no-repeat 50% 52px;
   }
   #hd .logo a {
     background-image: url(logo.png);
     width: 342px;
     height: 155px;
   }
 }
Header

                       Nav
Features

                      Extra

                       Social
Programs
                    Newsletter



 News



           Footer
User Experience




                     Interactivity

                         Design

                      Semantics
             BASIC                          ADVANCED

                     Browser Capabilities


                        Content
Photo credit: spike55151
ADAPTIVE WEB DESIGN WORKSHOP




Sins of our past
 <a href="javascript:someFunction();">some text</a>


 <a href="javascript:void(null);"
    onclick="someFunction();">some text</a>


 <a href="#" onclick="someFunction();">some text</a>
ADAPTIVE WEB DESIGN WORKSHOP




A minor improvement
 <a href="http://offsite.com"
    onclick="newWin( this.href ); return false;">
    some text</a>
Photo credit: Giando
ADAPTIVE WEB DESIGN WORKSHOP




Event listeners
 window.onload = handleExternalLinks;

 function handleExternalLinks()
 {
   var server = document.location.hostname;
   var anchors = document.getElementsByTagName("a");
   var i, href;
   for( i=0; i < anchors.length; i++ )
   {
     href = anchors[i].href;
     if ( href.indexOf("http://" + server) == -1 &&
           href.indexOf("https://" + server) == -1 )
     {
        // HREF is not a file on my server
        anchors[i].onclick = function()
        {
           newWin( this.href );
        };
     }
   }
 }
Photo credit: hebedesign
ADAPTIVE WEB DESIGN WORKSHOP




Listen and delegate
 document
   .getElementsByTagName( 'body' )[0]
     .onclick = clickDelegator;

 function clickDelegator( e )
 {
   e = ( e ) ? e : event;
   var el = e.target || e.srcElement;
   // external links
   if ( el.nodeName.toLowerCase() == 'a' &&
        el.getAttribute( 'rel' ) == 'external' )
   {
      newWin( el.href );
   }
 }
Photo credit: ambery
Without JavaScript
With JavaScript
ADAPTIVE WEB DESIGN WORKSHOP




Anchor-include pattern
Source of blog entry page

 <a href="/archives/{entry_date format='%Y/%m/%d'}/{url_title}/
    comments/#comments"
    data-replace="/comments/{url_title}/">View comments on this
    entry and add your own</a>


 {if segment_4=="comments"}
     <section id="comments" class="focal">
     {embed="inc/.comments" url_title="{url_title}"}
     </section>
 {if:else}
     {comment_loader}
 {/if}
                                              Examples use ExpressionEngine tags
ADAPTIVE WEB DESIGN WORKSHOP




Anchor-include pattern
Source of /comments/{url_title} (technically /pages/comments/{url_title})

 {embed="inc/.comments" url_title="{segment_3}"}
                                                          Example uses ExpressionEngine tags
ADAPTIVE WEB DESIGN WORKSHOP




Anchor-include pattern
                                                                  https://gist.github.com/b976b67e88ffbfc9f125


 $.fn.ajaxInclude = function(){
      return this.each(function() {
           var $el               = $( this ),
                 target          = $el.data( 'target' ),
                 $targetEl       = target && $( target ) || $el,
                 methods         = [ 'append', 'replace', 'before', 'after' ],
                 ml              = methods.length,
                 method,
                 url;
           while ( ml-- ) {
                 method = methods[ ml ];
                 if ( $el.is( '[data-' + method + ']' ) ) {
                       url       = $el.data( method );
                       break;
                 }
           }
           if ( method == 'replace' ) { method += 'With'; }
           if ( url && method ) {
                 $.get( url, function( data ){
                       $el.trigger( 'ajaxInclude', [$targetEl, data] );
                       $targetEl[ method ]( data );
                 });
           }
      });
 };
ADAPTIVE WEB DESIGN WORKSHOP




Anchor-include pattern
Replace:
 <a data-replace="articles/latest/fragment"
    href="...">Latest Articles</a>


Before:
 <a data-before="articles/latest/fragment"
    href="...">Latest Articles</a>


After:
 <a data-after="articles/latest/fragment"
    href="...">Latest Articles</a>
ADAPTIVE WEB DESIGN WORKSHOP




Anchor-include pattern
 $("[data-append],[data-replace],”+
   “[data-after],[data-before]").ajaxInclude();
ADAPTIVE WEB DESIGN WORKSHOP




                               162
JavaScript
             CSS
ADAPTIVE WEB DESIGN WORKSHOP




Remember stu like this?
 <a href="foo.html"
    style="color:blue;"
    onmouseover="this.style.color='red'"
    onmouseout="this.style.color='blue'">Foo</a>
ADAPTIVE WEB DESIGN WORKSHOP




Remember stu like this?
 <a href="foo.html"
    style="color:blue;"
    onmouseover="this.style.color='red'"
    onmouseout="this.style.color='blue'">Foo</a>


 a, a:link, a:visited {
   color: blue;
 }
 a:hover {
   color: red;
 }
ADAPTIVE WEB DESIGN WORKSHOP




Isn’t this the same?
 for( i=0; i<objects.length; i++){
   objects[i].style.display = 'none';
 }
ADAPTIVE WEB DESIGN WORKSHOP




Small improvement
 for( i=0; i<objects.length; i++){
   objects[i].style.position = 'absolute';
   objects[i].style.left      = '-999em';
 }
ADAPTIVE WEB DESIGN WORKSHOP




Separation
  for( i=0; i<objects.length; i++){
    objects[i].addClassName( 'hidden' );
  }


  .hidden {
    position: absolute;
    left: -999em;
  }
ADAPTIVE WEB DESIGN WORKSHOP




    Maintenance options
๏   external style rules added to your CSS le (by hand)
๏   external CSS le added to the document (by hand)
๏   external CSS le added to the document via script
๏   embedding CSS in the document via script




                                                          168
ADAPTIVE WEB DESIGN WORKSHOP




Option 1: Add by hand
 /* =START WickedCool Script CSS (do not remove) */
 .wicked {
   color: red;
   font: bold 4em/2 "Comic Sans";
 }
 .cool {
   color: blue;
   font: bold 4em/2 "Comic Sans";
 }
 /* =END WickedCool Script CSS */
ADAPTIVE WEB DESIGN WORKSHOP




Option 2: Include by hand
  <script src="WickedCool.js"></script>
  <link rel="stylesheet" href="WickedCool.css" />
ADAPTIVE WEB DESIGN WORKSHOP




Option 2: Include by hand
  <script src="WickedCool.js"></script>
  <link rel="stylesheet" href="WickedCool.css" />


  <head>
    <!-- … -->
    <link rel="stylesheet" href="WickedCool.css" />
  </head>
  <body>
    <!-- … -->
    <script src="WickedCool.js"></script>
  </body>
ADAPTIVE WEB DESIGN WORKSHOP




Option 3: Scripted include
  function FindPath( filename )
  {
    var path = false;
    var scripts = document.getElementsByTagName( 'script' );
    for( var i=0; i<scripts.length; i++ )
    {
      if( scripts[i].getAttribute( 'src' ) &&
          scripts[i].getAttribute( 'src' )
                    .indexOf( filename ) != -1 )
      {
        path = scripts[i]
                 .getAttribute( 'src' )
                 .replace( new RegExp( filename ), '' );
        break;
      }
    }
    return path;
  }
ADAPTIVE WEB DESIGN WORKSHOP




Option 3: Scripted include
  var WickedCool = {
     jsFile:    'WickedCool.js',
     cssFile:   'WickedCool.css',
     initialize: function(){
       // determine the path
       var path = FindPath( this.jsFile );
       // add the CSS file
       var css = document.createElement( 'link' );
       css.setAttribute( 'rel', 'stylesheet' );
       css.setAttribute( 'href', path + this.cssFile );
       document.getElementsByTagName( 'head' )[0]
               .appendChild( css );
       // do the rest of the wicked cool stuff
     }
  };
ADAPTIVE WEB DESIGN WORKSHOP




Option 4: Scripted embed
  function addCSS( styles )
  {
    var el = document.createElement( 'style' );
         el.setAttribute( 'type', 'text/css' );
    if ( el.styleSheet )
    {
      el.styleSheet.cssText = styles;
    }
    else
    {
      el.appendChild( document.createTextNode( styles ) );
    }
    document.getElementsByTagName( 'head' )[0]
             .appendChild( el );
  }
ADAPTIVE WEB DESIGN WORKSHOP




Option 4: Scripted embed
  var WickedCool = {
     _css: '.wicked { color: red; ' +
           '          font: bold 4em/2 "Comic Sans"; } ' +
           '.cool { color: blue; ' +
           '        font: bold 4em/2' "Comic Sans"; }',
     initialize: function()
     {
       // add the CSS
       addCSS( this._css );
       // do the rest of the wicked cool stuff
     }
  };




                                              based on the work of Nicholas Zakas
Apply No Style
Before Its Time
ADAPTIVE WEB DESIGN WORKSHOP




How do we do that?
  .TabInterface-folder {
    /* ... */
  }


  #TabInterface .tab {
    /* ... */
  }
  #TabInterface .tab.active {
    /* ... */
  }




                                176
ADAPTIVE WEB DESIGN WORKSHOP




How do we do that?
               Tactic                Default        Activated


add “-on” to the class         .tabbed         .tabbed-on




add an activation class .auto-submit           .auto-submit.active



change the form of the
                               .replace-me     .replaced
class
ADAPTIVE WEB DESIGN WORKSHOP




Adaptive UI
ADAPTIVE WEB DESIGN WORKSHOP




Adaptive UI
ADAPTIVE WEB DESIGN WORKSHOP




Swapping content
 var trigger = 659;

 // …

 function toggleDisplay()
 {
     var width = $window.width();
     if ( showing == 'old' &&
           width <= trigger )
     {
          $old_nav.replaceWith($new_nav);
          showing = 'new';
     }
     else if ( showing == 'new' &&
                width > trigger )
     {
          $new_nav.replaceWith($old_nav);
          showing = 'old';
     }
 }
ADAPTIVE WEB DESIGN WORKSHOP




Semantics
 <ul>
  <li>
    <a href="#"><img src="…" alt="" /></a>
    <span>Your new online source for information
      on our progress</span>
  </li>
  <li>
    <a href="#"><img src="…" alt="" /></a>
    <span>VillageReach Announces Mozambique
      National Expansion</span>
  </li>
  <li>
    <a href="#"><img src="…" alt="" /></a>
    <span>VillageReach's innovative approach
      for last mile communities</span>
  </li>
  …
 </ul>
ADAPTIVE WEB DESIGN WORKSHOP




Style?
 <ul style=”height: 300px;”>
  <li style=”height: 300px;” >
    <a href="#"><img src="…" alt="" /></a>
    <span>Your new online source for information
      on our progress</span>
  </li>
  <li style=”height: 300px;” >
    <a href="#"><img src="…" alt="" /></a>
    <span>VillageReach Announces Mozambique
      National Expansion</span>
  </li>
  <li style=”height: 300px;” >
    <a href="#"><img src="…" alt="" /></a>
    <span>VillageReach's innovative approach
      for last mile communities</span>
  </li>
  …
 </ul>
ADAPTIVE WEB DESIGN WORKSHOP




Style?
 <ul class="jcarousel-skin-vr" style=”height: 300px;”>
  <li style=”height: 300px;”>
    <a href="#"><img src="…" alt="" /></a>
    <span>Your new online source for information
      on our progress</span>
  </li>
  <li style=”height: 300px;”>
    <a href="#"><img src="…" alt="" /></a>
    <span>VillageReach Announces Mozambique
      National Expansion</span>
  </li>
  <li style=”height: 300px;”>
    <a href="#"><img src="…" alt="" /></a>
    <span>VillageReach's innovative approach
      for last mile communities</span>
  </li>
  …
 </ul>
ADAPTIVE WEB DESIGN WORKSHOP




Script
 <ul id="vr-carousel">
  <li>
    <a href="#"><img src="…" alt="" /></a>
    <span>Your new online source for information
      on our progress</span>
  </li>
  <li>
    <a href="#"><img src="…" alt="" /></a>
    <span>VillageReach Announces Mozambique
      National Expansion</span>
  </li>
  <li>
    <a href="#"><img src="…" alt="" /></a>
    <span>VillageReach's innovative approach
      for last mile communities</span>
  </li>
  …
 </ul>
ADAPTIVE WEB DESIGN WORKSHOP




Script
 $j('#vr-carousel').jcarousel({
  auto: 6,
  visible: 1,
  animation: 0,
  wrap: 'both',
  scroll: 1,
  initCallback: vrCarousel_initCallback,
  itemFirstInCallback: vrCarousel_itemFirstInCallback,
  itemFirstInCallback: vrCarousel_fadeIn,
  itemFirstOutCallback: vrCarousel_fadeOut
 });
ADAPTIVE WEB DESIGN WORKSHOP




Script
 function vrCarousel_initCallback( carousel, item, idx, state )
 {
   // Pause autoscrolling if the user moves
   // with the cursor over the clip.
   carousel.clip.hover(function() {
       carousel.stopAuto();
   }, function() {
       carousel.startAuto();
   });

  $j('.jcarousel-item').css('opacity', 0);
 };
ADAPTIVE WEB DESIGN WORKSHOP




Script
 function vrCarousel_initCallback( carousel, item, idx, state )
 {
   var $i = carousel.list.find(‘img’), h = 0;

    // get the max h
    $i.each(function(){
     var test = $j(this).height();
     if ( test > h ){ h = test; }
    });

    // …

    carousel.list.height(h);
    $j('.jcarousel-item').css({
     opacity: 0, height: h
    });

 };
http://flex.madebymufffin.com
User Experience



                     Accessibility

                     Interactivity

                         Design

                      Semantics
             BASIC                          ADVANCED

                     Browser Capabilities


                        Content
Accessibility
“special needs”
    can be
 CONTEXTUAL
ADAPTIVE WEB DESIGN WORKSHOP




What is it?
ADAPTIVE WEB DESIGN WORKSHOP




What is it?




 <button>Tweet</button>

 <a class=”button”>Tweet</a>
ADAPTIVE WEB DESIGN WORKSHOP




What is it?




 <button>Tweet</button>

 <a class=”button”>Tweet</a>
ADAPTIVE WEB DESIGN WORKSHOP




What is it?
ADAPTIVE WEB DESIGN WORKSHOP




What is it?




 <button>Search Mail</button>

 <div>Search Mail</div>
ADAPTIVE WEB DESIGN WORKSHOP




What is it?




 <button>Search Mail</button>

 <div>Search Mail</div>
ADAPTIVE WEB DESIGN WORKSHOP




ARIA maps the OS to the web
Semantics+
ADAPTIVE WEB DESIGN WORKSHOP




All the web’s a play…
 <section id="main" role="main">
  <!-- The primary content for the page would go here -->
 </section>
<header role="banner">
<nav role="navigation">
<form role="search">
<section role="main">
<footer role="contentinfo">
<nav role="navigation">
<nav role="navigation">
ADAPTIVE WEB DESIGN WORKSHOP




Semantic comparison
             Ad-hoc                   ARIA Role               HTML5

 #header, #top                 banner                header (kind of)


 #main, #content               main                  none


 #extra, .sidebar              complementary, note   aside


 #footer, #bottom              contentinfo           footer


 #nav                          navigation            nav


 .hentry                       article               article
ADAPTIVE WEB DESIGN WORKSHOP




These are the droids you seek
 <span role="button">OK</span>


 <div role="alert">
  <p>Something went wrong.</p>
 </div>


 <div role="alertdialog">
  <p>Something went wrong.</p>
  <img src="x.png" alt="dismiss" role="button" />
 </div>
ADAPTIVE WEB DESIGN WORKSHOP




What is it?




 <a role=”button”>Tweet</a>
    class=”button”>Tweet</a>
ADAPTIVE WEB DESIGN WORKSHOP




What is it?




 <a role=”button”>Tweet</a>
ADAPTIVE WEB DESIGN WORKSHOP




What’s happening?

                               B       B
                               (off)   (on)




 <span>
  <img src="bold-off.png" alt="bold" />
 </span>
 <span>
  <img src="bold-on.png" alt="bold" />
 </span>
ADAPTIVE WEB DESIGN WORKSHOP




What’s happening?

                               B       B
                               (off)   (on)




 <span>
  <img src="bold-off.png" alt="not bold" />
 </span>
 <span>
  <img src="bold-on.png" alt="bold" />
 </span>
ADAPTIVE WEB DESIGN WORKSHOP




What’s happening?

                               B       B
                               (off)   (on)




 <span role="button" aria-pressed="false">
  <img src="bold-off.png" alt="not bold" />
 </span>
 <span role="button" aria-pressed="true">
  <img src="bold-on.png" alt="bold" />
 </span>
ADAPTIVE WEB DESIGN WORKSHOP




Complex interfaces
ADAPTIVE WEB DESIGN WORKSHOP




Traditional approach
 <h1>Pumpkin Pie</h1>
 <div class="container">
  <div class="section">
    <h2>Overview</h2>
    <img src="pie.jpg" alt="">
    <p>Whether you're hosting a festive party or a casual
    get-together with friends, our Pumpkin Pie will make
    entertaining easy!</p>
    <!-- ... -->
  </div>
  <!-- ... -->
  <ul class="tabs">
    <li><a href="#">Overview</a></li>
    <li><a href="#">Ingredients</a></li>
    <li><a href="#">Directions</a></li>
    <li><a href="#">Nutrition</a></li>
  </ul>
 </div>
ADAPTIVE WEB DESIGN WORKSHOP




Cleaner approach
 <h1>Pumpkin Pie</h1>
 <div class="tabbed">
  <h2>Overview</h2>
  <img src="pie.jpg" alt="" />
  <p>Whether you're hosting a festive party or a casual
  get-together with friends, our Pumpkin Pie will make
  entertaining easy!</p>
  <!-- ... -->
  <h2>Ingredients</h2>
  <ul>
    <li>1 (9<abbr title="inch">in</abbr>) unbaked deep
       dish pie crust</li>
    <li>½ cup white sugar</li>
    <!-- ... -->
  </ul>
  <h2>Directions</h2>
  <!-- ... -->
 </div>
ADAPTIVE WEB DESIGN WORKSHOP




Cleaner approach
 <h1>Pumpkin Pie</h1>
 <div class="tabbed">
  <h2>Overview</h2>
  <img src="pie.jpg" alt="" />
  <p>Whether you're hosting a festive party or a casual
  get-together with friends, our Pumpkin Pie will make
  entertaining easy!</p>
  <!-- ... -->
  <h2>Ingredients</h2>
  <ul>
    <li>1 (9<abbr title="inch">in</abbr>) unbaked deep
       dish pie crust</li>
    <li>½ cup white sugar</li>
    <!-- ... -->
  </ul>
  <h2>Directions</h2>
  <!-- ... -->
 </div>
ADAPTIVE WEB DESIGN WORKSHOP




No JS, basic CSS
ADAPTIVE WEB DESIGN WORKSHOP




Widget logic



               Split                 Page
          the content &
           make some
               tabs


                                     JS?
                               Yes          No
ADAPTIVE WEB DESIGN WORKSHOP




On DOM ready
 <h1>Pumpkin Pie</h1>
 <div class="tabbed-on">
  <section>
    <h2>Overview</h2>
    <img src="pie.jpg" alt="">
    <p>Whether you're hosting a festive party or a casual
    get-together with friends, our Pumpkin Pie will make
    entertaining easy!</p>
    <!-- ... -->
  </section>
  <!-- ... -->
  <ul class="tabs">
    <li><a href="#">Overview</a></li>
    <li><a href="#">Ingredients</a></li>
    <li><a href="#">Directions</a></li>
    <li><a href="#">Nutrition</a></li>
  </ul>
 </div>
ADAPTIVE WEB DESIGN WORKSHOP




Adding ARIA
                               role="tablist"




                                                232
ADAPTIVE WEB DESIGN WORKSHOP




Adding ARIA




               role="tab"
               aria-selected="true"
               aria-controls="folder-1"
ADAPTIVE WEB DESIGN WORKSHOP




Adding ARIA                    role="tab"
                               aria-selected="false"
                               aria-controls="folder-4"
ADAPTIVE WEB DESIGN WORKSHOP




Adding ARIA




                               role="tabpanel"
                               aria-hidden="false"
                               aria-labelledby="folder-1-tab"
ADAPTIVE WEB DESIGN WORKSHOP




Adding ARIA




                               role="application"
                               aria-activedescendant="folder-1"
ADAPTIVE WEB DESIGN WORKSHOP




Result!
ADAPTIVE WEB DESIGN WORKSHOP




Hey! Over here!
ADAPTIVE WEB DESIGN WORKSHOP




Hey! Over here!




 <input class="tweet-counter" value="140" disabled="disabled">
ADAPTIVE WEB DESIGN WORKSHOP




Hey! Over here!




 <span id="chars_left_notice" class="numeric">
  <strong id="status-field-char-counter"
        class="char-counter">140</strong>
 </span>
ADAPTIVE WEB DESIGN WORKSHOP




Hey! Over here!




 <span class="tweet-counter">140
  <b class="hidden"> characters remaining</b></span>


 .hidden {
   position: absolute;
   left: −999em;
 }
ADAPTIVE WEB DESIGN WORKSHOP




Hey! Over here!




 <span class="tweet-counter">maximum of 140 characters</span>



 <span class="tweet-counter">140
  <b class="hidden"> characters remaining</b></span>
ADAPTIVE WEB DESIGN WORKSHOP




Hey! Over here!




 <span aria-live="polite" aria-atomic="true"
       class="tweet-counter">140<b class="hidden">
       characters remaining</b></span>
ADAPTIVE WEB DESIGN WORKSHOP




Hey! Over here!
Photo credit: emilio labrador
ADAPTIVE WEB DESIGN WORKSHOP




Typical hiding schemes
                                                             Accessibility
 CSS Rules                     Display E ect
                                                             E ect
 visibility: hidden;           Element is hidden from        Content is ignored by screen
                               view, but is not removed      readers
                               from the normal ow (i.e. it
                               still takes up the space it
                               normally would)

 display: none;                Element is removed from       Content is ignored by screen
                               the normal ow and hidden;     readers
                               the space it occupied is
                               collapsed

 height: 0;                    Element is collapsed and      Content is ignored by screen
 width: 0;                     contents are hidden           readers
 overflow: hidden;
ADAPTIVE WEB DESIGN WORKSHOP




Typical hiding schemes
                                                             Accessibility
 CSS Rules                     Display E ect
                                                             E ect
 text-indent: -999em;          Contents are shifted o -      Screen readers have access
                               screen and hidden from        to the content, but the
                               view, but links may “focus”   content is limited to text and
                               oddly and negative indent     inline elements
                               may not prove long enough
                               to fully hide content


 position: absolute;           Content is removed from       Screen readers have access
 left: -999em;                 the normal ow and shifted     to the content
                               o the left-hand edge; the
                               space it occupied is
                               collapsed
ADAPTIVE WEB DESIGN WORKSHOP




Typical hiding schemes
                                                             Accessibility
 CSS Rules                     Display E ect
                                                             E ect
 position: absolute;           Content is positioned         Screen readers have access
 /* IE6, IE7 */                absolutely (and is removed    to the content
 clip: rect(
   1px 1px 1px 1px             from the normal ow), but
       );                      remains in place and is
 /* W3C */                     clipped to become invisible
 clip: rect(
   1px, 1px, 1px, 1px
       );
 padding: 0;
 border: 0;
 height: 1px;
 width: 1px;
 overflow: hidden;
ADAPTIVE WEB DESIGN WORKSHOP




Typical hiding schemes
                                                             Accessibility
 CSS Rules                     Display E ect
                                                             E ect
 visibility: hidden;           Element is hidden from        Content is ignored by screen
                               view, but is not removed      readers
                               from the normal ow (i.e. it
                               still takes up the space it
                               normally would)

 display: none;                Element is removed from       Content is ignored by screen
                               the normal ow and hidden;     readers
                               the space it occupied is
                               collapsed

 height: 0;                    Element is collapsed and      Content is ignored by screen
 width: 0;                     contents are hidden           readers
 overflow: hidden;
ADAPTIVE WEB DESIGN WORKSHOP




“Fixing” libraries
 (function(){
   var $button = $('#myButton'),
       $text = $('#myText'),
       visible = true;
   $button.click(function(){
    if ( visible ) {
      $text.slideUp('fast');
    } else {
      $text.slideDown('fast');
    }
    visible = ! visible;
   });
 })();
ADAPTIVE WEB DESIGN WORKSHOP




“Fixing” libraries
 (function(){
   var $button = $('#myButton'),
       $text = $('#myText'),
       visible = true;
   $button.click(function(){
    if ( visible ) {
      $text.slideUp('fast',function(){
         $text.addClass('accessibly-hidden')
             .slideDown(0);
       });
    } else {
      $text.slideUp(0,function(){
         $text.removeClass('accessibly-hidden')
             .slideDown('fast');
       });
    }
    visible = ! visible;
   });
 })();
photo by cfpg
ADAPTIVE WEB DESIGN WORKSHOP




Managing focus
 <div tabindex="0">
  <p>This <code>div</code> can now receive focus using a
 keyboard’s <kbd>tab</kbd> key. How cool is that?</p>
 </div>

 <div tabindex="-1">
  <p>This <code>div</code> won’t be focused by a user via the
 <kbd>tab</kbd> key, but JavaScript can <code>focus()</code> it.
 Nifty, huh?</p>
 </div>
Header
ADAPTIVE WEB DESIGN WORKSHOP




ARIA Roles
 <div id="header">
  <a href="#donate" class="donate-link"
     title="Click here to view our donation options">Donate</a>
  <a href="http://villagereach.org/feed/" class="rss-link"
     title="View our RSS Feed">RSS Feed</a>
  <div id="site-title">
    <a href="http://villagereach.org" title="Village Reach: Home">
     <span>Village Reach</span>
    </a>
  </div>
 </div><!-- #header -->
Features




Programs




 News
ADAPTIVE WEB DESIGN WORKSHOP




ARIA Roles
 <div class="entry-content entry">
  <!-- Features -->
  <div class="boxes three home">
    <!-- Programs -->
  </div>
  <div id="latestNews">
    <!-- Latest News -->
  </div>
 </div>
Nav
ADAPTIVE WEB DESIGN WORKSHOP




ARIA Roles
 <div id="hybrid-search-3" class="widget search widget-search">
  <div class="widget-inside">
    <form method="get" class="search-form" id="search-form"
 action="http://villagereach.org/">
      <!--Search Form -->
    </form><!-- .search-form -->
  </div>
 </div>
 <div id="navigation">
  <div id="page-nav" class="page-nav">
    <ul class="menu sf-menu">
      <!-- Navigation -->
    </ul>
  </div>
 </div><!-- #navigation -->
Extra

   Social


Newsletter
ADAPTIVE WEB DESIGN WORKSHOP




ARIA Roles
 <div id="text-8" class="widget widget_text widget-widget_text">
  <div class="widget-inside">
    <!-- Extra -->
  </div>
 </div>
 <div id="text-7" class="widget widget_text widget-widget_text">
  <div class="widget-inside">
    <!-- Social -->
  </div>
 </div>
 <div id="mc_signup_container">
  <!-- Newsletter -->
 </div>
Footer
ADAPTIVE WEB DESIGN WORKSHOP




ARIA Roles
 <div id="footer-container">
  <div id="footer">
    <p class="copyright">Copyright &#169; 2011 <a class="site-link"
 href="http://villagereach.org" title="VillageReach"
 rel="home"><span>VillageReach</span></a>. - All rights
 reserved.</p>
  </div><!-- #footer -->
 </div><!-- #footer-container -->
ADAPTIVE WEB DESIGN WORKSHOP




ARIA Roles & States
 <div class="jcarousel-container jcarousel-container-horizontal"
      style="display: block; ">
  <ul id="vr-carousel">
  <li>
    <a href="#"><img src="…" alt="" /></a>
    <span>Your new online source for information
     on our progress</span>
  </li>
  <li>
    <a href="#"><img src="…" alt="" /></a>
    <span>VillageReach Announces Mozambique
     National Expansion</span>
  </li>
  …
  </ul>
 </div>
ADAPTIVE WEB DESIGN WORKSHOP




ARIA Roles & States
 <div id="jcarousel-control">
  <div class="jcarousel-prev jcarousel-prev-horizontal"
        style="display: block; " disabled="false"></div>
  <span id="jcarousel-control-caption">
    VillageReach Announces Mozambique National Expansion
  </span>
  <div class="jcarousel-next jcarousel-next-horizontal"
        style="display: block; " disabled="false"></div>
 </div>
Adaptive Web Design
    Workshop
          by Aaron Gustafson



            More of the same:
     http://adaptivewebdesign.info
         http://easy-designs.net
      http://blog.easy-designs.net
      http://aaron-gustafson.com



             Slides available at
  http://slideshare.net/AaronGustafson



 © Aaron Gustafson. All Rights Reserved.

Más contenido relacionado

La actualidad más candente

IBM Portal Web intro
IBM Portal Web introIBM Portal Web intro
IBM Portal Web introdanisman
 
4Ward Company Presentation
4Ward Company Presentation4Ward Company Presentation
4Ward Company Presentation4Ward
 
WebSphere Portal Business Overview
WebSphere Portal Business OverviewWebSphere Portal Business Overview
WebSphere Portal Business OverviewJoel Demay
 
DPC2007 Zend Framework (Gaylord Aulke)
DPC2007 Zend Framework (Gaylord Aulke)DPC2007 Zend Framework (Gaylord Aulke)
DPC2007 Zend Framework (Gaylord Aulke)dpc
 
Seamless Integrations between WebCenter Content, Site Studio, and WebCenter S...
Seamless Integrations between WebCenter Content, Site Studio, and WebCenter S...Seamless Integrations between WebCenter Content, Site Studio, and WebCenter S...
Seamless Integrations between WebCenter Content, Site Studio, and WebCenter S...Brian Huff
 
Station Four: Web Redesign Presentation
Station Four: Web Redesign PresentationStation Four: Web Redesign Presentation
Station Four: Web Redesign Presentationcolberding
 
DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)
DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)
DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)dpc
 
Websphere Portal
Websphere PortalWebsphere Portal
Websphere Portaldominion
 
Integrating IBM Web Sphere Portal With Web Analytic Hosted And Non Hosted Sit...
Integrating IBM Web Sphere Portal With Web Analytic Hosted And Non Hosted Sit...Integrating IBM Web Sphere Portal With Web Analytic Hosted And Non Hosted Sit...
Integrating IBM Web Sphere Portal With Web Analytic Hosted And Non Hosted Sit...Chris Sparshott
 
WebSphere Portal Technical Overview
WebSphere Portal Technical OverviewWebSphere Portal Technical Overview
WebSphere Portal Technical OverviewVincent Perrin
 
Ajax and Accessibiity
Ajax and AccessibiityAjax and Accessibiity
Ajax and AccessibiityMark Meeker
 
01 web sphere portal business overview
01 web sphere portal business overview01 web sphere portal business overview
01 web sphere portal business overviewygolani
 
Putting *Sparkle* in Your Social Applications! Customization and Branding wit...
Putting *Sparkle* in Your Social Applications! Customization and Branding wit...Putting *Sparkle* in Your Social Applications! Customization and Branding wit...
Putting *Sparkle* in Your Social Applications! Customization and Branding wit...Mitch Cohen
 

La actualidad más candente (19)

Word camp nextweb
Word camp nextwebWord camp nextweb
Word camp nextweb
 
IBM Portal Web intro
IBM Portal Web introIBM Portal Web intro
IBM Portal Web intro
 
4Ward Company Presentation
4Ward Company Presentation4Ward Company Presentation
4Ward Company Presentation
 
WebSphere Portal Business Overview
WebSphere Portal Business OverviewWebSphere Portal Business Overview
WebSphere Portal Business Overview
 
About 4Ward
About 4WardAbout 4Ward
About 4Ward
 
JavaOne 2010 Keynote
JavaOne 2010 Keynote JavaOne 2010 Keynote
JavaOne 2010 Keynote
 
DPC2007 Zend Framework (Gaylord Aulke)
DPC2007 Zend Framework (Gaylord Aulke)DPC2007 Zend Framework (Gaylord Aulke)
DPC2007 Zend Framework (Gaylord Aulke)
 
IBM WebSphere Portal
IBM WebSphere PortalIBM WebSphere Portal
IBM WebSphere Portal
 
Web Sphere Portal
Web Sphere PortalWeb Sphere Portal
Web Sphere Portal
 
Seamless Integrations between WebCenter Content, Site Studio, and WebCenter S...
Seamless Integrations between WebCenter Content, Site Studio, and WebCenter S...Seamless Integrations between WebCenter Content, Site Studio, and WebCenter S...
Seamless Integrations between WebCenter Content, Site Studio, and WebCenter S...
 
Station Four: Web Redesign Presentation
Station Four: Web Redesign PresentationStation Four: Web Redesign Presentation
Station Four: Web Redesign Presentation
 
DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)
DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)
DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)
 
Websphere Portal
Websphere PortalWebsphere Portal
Websphere Portal
 
Integrating IBM Web Sphere Portal With Web Analytic Hosted And Non Hosted Sit...
Integrating IBM Web Sphere Portal With Web Analytic Hosted And Non Hosted Sit...Integrating IBM Web Sphere Portal With Web Analytic Hosted And Non Hosted Sit...
Integrating IBM Web Sphere Portal With Web Analytic Hosted And Non Hosted Sit...
 
RadPHP XE Datasheet
RadPHP XE DatasheetRadPHP XE Datasheet
RadPHP XE Datasheet
 
WebSphere Portal Technical Overview
WebSphere Portal Technical OverviewWebSphere Portal Technical Overview
WebSphere Portal Technical Overview
 
Ajax and Accessibiity
Ajax and AccessibiityAjax and Accessibiity
Ajax and Accessibiity
 
01 web sphere portal business overview
01 web sphere portal business overview01 web sphere portal business overview
01 web sphere portal business overview
 
Putting *Sparkle* in Your Social Applications! Customization and Branding wit...
Putting *Sparkle* in Your Social Applications! Customization and Branding wit...Putting *Sparkle* in Your Social Applications! Customization and Branding wit...
Putting *Sparkle* in Your Social Applications! Customization and Branding wit...
 

Similar a Adaptive Web Design Workshop [WebVisions NYC 2012]

HTML5 & CSS3 Workshop [FoWD NYC 2011]
HTML5 & CSS3 Workshop [FoWD NYC 2011]HTML5 & CSS3 Workshop [FoWD NYC 2011]
HTML5 & CSS3 Workshop [FoWD NYC 2011]Aaron Gustafson
 
WordCamp Thessaloniki2011 The NextWeb
WordCamp Thessaloniki2011 The NextWebWordCamp Thessaloniki2011 The NextWeb
WordCamp Thessaloniki2011 The NextWebGeorge Kanellopoulos
 
WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)Shumpei Shiraishi
 
Progressive EEnhancement [EECI 2011]
Progressive EEnhancement [EECI 2011]Progressive EEnhancement [EECI 2011]
Progressive EEnhancement [EECI 2011]Aaron Gustafson
 
Crafting Rich Experiences with Progressive Enhancement [WebVisions 2011]
Crafting Rich Experiences with Progressive Enhancement [WebVisions 2011]Crafting Rich Experiences with Progressive Enhancement [WebVisions 2011]
Crafting Rich Experiences with Progressive Enhancement [WebVisions 2011]Aaron Gustafson
 
HTML5 Smart Markup for Smarter Websites [FoWD NYC 2011]
HTML5 Smart Markup for Smarter Websites [FoWD NYC 2011]HTML5 Smart Markup for Smarter Websites [FoWD NYC 2011]
HTML5 Smart Markup for Smarter Websites [FoWD NYC 2011]Aaron Gustafson
 
HTML Hypermedia APIs and Adaptive Web Design - Nordic APIs
HTML Hypermedia APIs and Adaptive Web Design - Nordic APIsHTML Hypermedia APIs and Adaptive Web Design - Nordic APIs
HTML Hypermedia APIs and Adaptive Web Design - Nordic APIsGustaf Nilsson Kotte
 
qooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Frameworkqooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Frameworkecker
 
Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]Aaron Gustafson
 
HTML5: Smart Markup for Smarter Websites [Future of Web Apps, Las Vegas 2011]
HTML5: Smart Markup for Smarter Websites [Future of Web Apps, Las Vegas 2011]HTML5: Smart Markup for Smarter Websites [Future of Web Apps, Las Vegas 2011]
HTML5: Smart Markup for Smarter Websites [Future of Web Apps, Las Vegas 2011]Aaron Gustafson
 
soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch
 
HTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersHTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersSascha Corti
 
No Feature Solutions with SharePoint
No Feature Solutions with SharePointNo Feature Solutions with SharePoint
No Feature Solutions with SharePointmikehuguet
 
Summit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan Wright
Summit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan WrightSummit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan Wright
Summit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan WrightAndrew Ly
 
Why You Need a Front End Developer
Why You Need a Front End DeveloperWhy You Need a Front End Developer
Why You Need a Front End DeveloperMike Wilcox
 
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)Saltlux zinyus
 

Similar a Adaptive Web Design Workshop [WebVisions NYC 2012] (20)

HTML5 & CSS3 Workshop [FoWD NYC 2011]
HTML5 & CSS3 Workshop [FoWD NYC 2011]HTML5 & CSS3 Workshop [FoWD NYC 2011]
HTML5 & CSS3 Workshop [FoWD NYC 2011]
 
Word camp nextweb
Word camp nextwebWord camp nextweb
Word camp nextweb
 
WordCamp Thessaloniki2011 The NextWeb
WordCamp Thessaloniki2011 The NextWebWordCamp Thessaloniki2011 The NextWeb
WordCamp Thessaloniki2011 The NextWeb
 
WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)
 
WHAT IS HTML5?(20100510)
WHAT IS HTML5?(20100510)WHAT IS HTML5?(20100510)
WHAT IS HTML5?(20100510)
 
Progressive EEnhancement [EECI 2011]
Progressive EEnhancement [EECI 2011]Progressive EEnhancement [EECI 2011]
Progressive EEnhancement [EECI 2011]
 
Crafting Rich Experiences with Progressive Enhancement [WebVisions 2011]
Crafting Rich Experiences with Progressive Enhancement [WebVisions 2011]Crafting Rich Experiences with Progressive Enhancement [WebVisions 2011]
Crafting Rich Experiences with Progressive Enhancement [WebVisions 2011]
 
HTML5 Smart Markup for Smarter Websites [FoWD NYC 2011]
HTML5 Smart Markup for Smarter Websites [FoWD NYC 2011]HTML5 Smart Markup for Smarter Websites [FoWD NYC 2011]
HTML5 Smart Markup for Smarter Websites [FoWD NYC 2011]
 
What is HTML5
What is HTML5What is HTML5
What is HTML5
 
HTML Hypermedia APIs and Adaptive Web Design - Nordic APIs
HTML Hypermedia APIs and Adaptive Web Design - Nordic APIsHTML Hypermedia APIs and Adaptive Web Design - Nordic APIs
HTML Hypermedia APIs and Adaptive Web Design - Nordic APIs
 
qooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Frameworkqooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Framework
 
Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
 
HTML5: Smart Markup for Smarter Websites [Future of Web Apps, Las Vegas 2011]
HTML5: Smart Markup for Smarter Websites [Future of Web Apps, Las Vegas 2011]HTML5: Smart Markup for Smarter Websites [Future of Web Apps, Las Vegas 2011]
HTML5: Smart Markup for Smarter Websites [Future of Web Apps, Las Vegas 2011]
 
soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5
 
HTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersHTML5 Intoduction for Web Developers
HTML5 Intoduction for Web Developers
 
No Feature Solutions with SharePoint
No Feature Solutions with SharePointNo Feature Solutions with SharePoint
No Feature Solutions with SharePoint
 
web designing course bangalore
web designing course bangaloreweb designing course bangalore
web designing course bangalore
 
Summit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan Wright
Summit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan WrightSummit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan Wright
Summit Australia 2019 - PowerApp Portals - Andrew Ly & Lachlan Wright
 
Why You Need a Front End Developer
Why You Need a Front End DeveloperWhy You Need a Front End Developer
Why You Need a Front End Developer
 
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
 

Más 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
 

Más 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]
 

Último

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024SynarionITSolutions
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 

Último (20)

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 

Adaptive Web Design Workshop [WebVisions NYC 2012]

  • 2. ADAPTIVE WEB DESIGN WORKSHOP The Agenda ๏ Progressive Enhancement ‣ vs Graceful Degradation ‣ How & Why It Works ๏ Content & Organization ๏ Semantics ‣ HTML5 ‣ Microformats 2
  • 3. ADAPTIVE WEB DESIGN WORKSHOP The Agenda ๏ Design ‣ Parsing Errors ‣ Designing in Layers ‣ Adaptive (& Responsive) Layouts ‣ “Mobile First” ๏ Interactivity ‣ Unobtrusive JavaScript ‣ Adaptive Interfaces ‣ Hijax 3
  • 4. ADAPTIVE WEB DESIGN WORKSHOP The Agenda ๏ Accessibility ‣ Design Considerations ‣ ARIA 4
  • 5.
  • 8. ?
  • 10.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18. HTML CSS
  • 19. fault tolerance n. a system’s ability to continue to operate when it encounters and unexpected error.
  • 20.
  • 21.
  • 22.
  • 23. Browsers IGNORE what they don’t understand
  • 25. Modern Browsers Older Browsers
  • 26. Modern Browsers Older Browsers
  • 31.
  • 32. :-)
  • 33.
  • 37. Don’t lose sight of your USERS
  • 38. User Experience BASIC ADVANCED Browser Capabilities
  • 39. User Experience BASIC ADVANCED Browser Capabilities Content
  • 40. User Experience Semantics BASIC ADVANCED Browser Capabilities Content
  • 41. User Experience Design Semantics BASIC ADVANCED Browser Capabilities Content
  • 42. User Experience Interactivity Design Semantics BASIC ADVANCED Browser Capabilities Content
  • 43. User Experience Accessibility Interactivity Design Semantics BASIC ADVANCED Browser Capabilities Content
  • 44. User Experience ARIA JavaScript CSS HTML BASIC ADVANCED Browser Capabilities Text & HTTP
  • 45. User Experience BASIC ADVANCED Browser Capabilities Content
  • 46. Content is WHY we build websites
  • 50.
  • 51. Header Nav Features Extra Social Programs Newsletter News Footer
  • 52. Header Features Nav Programs Extra News Social Newsletter Footer
  • 53. User Experience Semantics BASIC ADVANCED Browser Capabilities Content
  • 54.
  • 55. ADAPTIVE WEB DESIGN WORKSHOP Semantics 101 <p>HTML5 introduces several <em>really</em> useful elements and a ton of new APIs.</p> <p>Please fill out the form below. <strong>Note: all fields are required.</strong></p> <p>I like to work with markup languages because <strong>they are simple and easy to read</strong>. They also have that certain <i lang="fr" title="I don&#8217;t know what">je ne sais quoi</i>.</p>
  • 56. ADAPTIVE WEB DESIGN WORKSHOP Semantics 101 small
  • 57. ADAPTIVE WEB DESIGN WORKSHOP Semantics 101 hr
  • 58.
  • 59.
  • 60.
  • 61.
  • 62. ADAPTIVE WEB DESIGN WORKSHOP Organization <figure id="fig-1"> <img src="photo.jpeg" alt=""/> <figcaption>Photo of Albert Einstein</figcaption> </figure> <figure id="fig-2"> <table> <caption>2011 Forecast Earnings</caption> <!-- a bunch of data --> </table> </figure>
  • 63. ADAPTIVE WEB DESIGN WORKSHOP Organization <section> <!-- pretty much anything can go here --> </section> <article> <!-- pretty much anything can go here --> </article>
  • 64.
  • 67.
  • 70. ADAPTIVE WEB DESIGN WORKSHOP Organization <header> <!-- titles, etc. go here --> </header> <footer> <!-- meta/supplementary information goes here --> </footer>
  • 71.
  • 73.
  • 79. ADAPTIVE WEB DESIGN WORKSHOP Organization <nav> <ol> <li><a href="#details">Details</a></li> <li><a href="#lodging">Lodging</a></li> <li><a href="#location">Location</a></li> <li><a href="#topics">Topics</a></li> <li><a href="#contact">Contact Us</a></li> </ol> <p><a href="register">Register Now</a> <b>Only 5 spaces left</b></p> </nav>
  • 80.
  • 81. nav
  • 82.
  • 83. nav
  • 84.
  • 85. ADAPTIVE WEB DESIGN WORKSHOP Implicit sections (HTML4) <h1> HTML5 <p> HTML5 is currently under development... <p> Like its immediate predecessors, HTML... <h2> W3C standardization process <p> The Web Hypertext Application... <p> The HTML5 specification... <p> According to the W3C timetable... <p> Ian Hickson, editor of the HTML5... <h2> Markup <p> HTML5 introduces a number of... <p> The HTML5 syntax is no longer... 1 HTML5 1.1 W3C standardization process 1.2 Markup
  • 86. ADAPTIVE WEB DESIGN WORKSHOP Explicit sections (HTML5) <h1> HTML5 <p> HTML5 is currently under development... <p> Like its immediate predecessors, HTML... <h2> W3C standardization process section <p> The Web Hypertext Application... <p> The HTML5 specification... <p> According to the W3C timetable... <p> Ian Hickson, editor of the HTML5... <h2> Markup section <p> HTML5 introduces a number of... <p> The HTML5 syntax is no longer... 1 HTML5 1.1 W3C standardization process 1.2 Markup
  • 87. ADAPTIVE WEB DESIGN WORKSHOP Explicit sections (HTML5) <h1> HTML5 <p> HTML5 is currently under development... <p> Like its immediate predecessors, HTML... <h1> W3C standardization process section <p> The Web Hypertext Application... <p> The HTML5 specification... <p> According to the W3C timetable... <p> Ian Hickson, editor of the HTML5... <h1> Markup section <p> HTML5 introduces a number of... <p> The HTML5 syntax is no longer... 1 HTML5 1.1 W3C standardization process 1.2 Markup
  • 88. ADAPTIVE WEB DESIGN WORKSHOP Explicit sections (HTML5) <h1> HTML5 <p> HTML5 is currently under development... <p> Like its immediate predecessors, HTML... <h4> W3C standardization process section <p> The Web Hypertext Application... <p> The HTML5 specification... <p> According to the W3C timetable... <p> Ian Hickson, editor of the HTML5... <h6> Markup section <p> HTML5 introduces a number of... <p> The HTML5 syntax is no longer... 1 HTML5 1.1 W3C standardization process 1.2 Markup
  • 89. ADAPTIVE WEB DESIGN WORKSHOP Sections ๏ section ๏ article ๏ aside ๏ footer ๏ header ๏ nav 84
  • 90. ADAPTIVE WEB DESIGN WORKSHOP Outline limitations in HTML4 <h1> Title <h2> Subtitle <p> Text content continues... <p> Text content continues... <p> Text content continues... <p> Text content continues... <p> Text content continues... <p> Text content continues... <p> Text content continues... 1 Title 1.1 Subtitle
  • 91. ADAPTIVE WEB DESIGN WORKSHOP Heading groups (HTML5) hgroup <h1> Title <h2> Subtitle <p> Text content continues... <p> Text content continues... <p> Text content continues... <p> Text content continues... <p> Text content continues... <p> Text content continues... <p> Text content continues... 1 Title
  • 92. ADAPTIVE WEB DESIGN WORKSHOP Aside: rooted sections <h1> Title <p> Text content continues... <p> Text content continues... <h2> Section heading <p> Text content continues... <blockquote> <h2> Rooted heading <p> Text content continues... <p> Text content continues... <p> Text content continues... <p> Text content continues... 1 Title 1.1 Section heading
  • 93. ADAPTIVE WEB DESIGN WORKSHOP Sectioning roots ๏ body ๏ blockquote ๏ details ๏ fieldset ๏ figure ๏ td 88
  • 94.
  • 95. ADAPTIVE WEB DESIGN WORKSHOP Dates & Times <input type="date" name="dob"/>
  • 96. ADAPTIVE WEB DESIGN WORKSHOP Numbers <input type="number" name="foo"/> <input type="range" min="1" max="11" name="foo"/>
  • 97. ADAPTIVE WEB DESIGN WORKSHOP Format validation <input type="email" …/> <input type="url" …/>
  • 98. ADAPTIVE WEB DESIGN WORKSHOP Format validation <input type="text" pattern="d{6}w{3}" placeholder="6 digits followed by 3 letters" .../>
  • 100. ADAPTIVE WEB DESIGN WORKSHOP Classi cation
  • 101. ADAPTIVE WEB DESIGN WORKSHOP Identi cation
  • 102. ADAPTIVE WEB DESIGN WORKSHOP Microformats <section class="vcard"> <figure> <img class="photo" src="aaron-gustafson.jpg" alt=""/> </figure> <h1 class="fn">Aaron Gustafson</h1> … <p>Aaron … is <b class="role">Group Manager</b> of the <a class="org" href="http://webstandards.org">Web Standards Project (WaSP)</a> ….</p> </section>
  • 103.
  • 104.
  • 105.
  • 106. Header
  • 107. ADAPTIVE WEB DESIGN WORKSHOP Semantics <div id="header"> <a href="#donate" class="donate-link" title="Click here to view our donation options">Donate</a> <a href="http://villagereach.org/feed/" class="rss-link" title="View our RSS Feed">RSS Feed</a> <div id="site-title"> <a href="http://villagereach.org" title="Village Reach: Home"> <span>Village Reach</span> </a> </div> </div><!-- #header -->
  • 109. ADAPTIVE WEB DESIGN WORKSHOP Semantics <div class="entry-content entry"> <!-- Features --> <div class="boxes three home"> <!-- Programs --> </div> <div id="latestNews"> <!-- Latest News --> </div> </div>
  • 110. Nav
  • 111. ADAPTIVE WEB DESIGN WORKSHOP Semantics <div id="hybrid-search-3" class="widget search widget-search"> <div class="widget-inside"> <form method="get" class="search-form" id="search-form" action="http://villagereach.org/"> <!--Search Form --> </form><!-- .search-form --> </div> </div> <div id="navigation"> <div id="page-nav" class="page-nav"> <ul class="menu sf-menu"> <!-- Navigation --> </ul> </div> </div><!-- #navigation -->
  • 112. Extra Social Newsletter
  • 113. ADAPTIVE WEB DESIGN WORKSHOP Semantics <div id="text-8" class="widget widget_text widget-widget_text"> <div class="widget-inside"> <!-- Extra --> </div> </div> <div id="text-7" class="widget widget_text widget-widget_text"> <div class="widget-inside"> <!-- Social --> </div> </div> <div id="mc_signup_container"> <!-- Newsletter --> </div>
  • 114. Footer
  • 115. ADAPTIVE WEB DESIGN WORKSHOP Semantics <div id="footer-container"> <div id="footer"> <p class="copyright">Copyright &#169; 2011 <a class="site-link" href="http://villagereach.org" title="VillageReach" rel="home"><span>VillageReach</span></a>. - All rights reserved.</p> </div><!-- #footer --> </div><!-- #footer-container -->
  • 116. User Experience Design Semantics BASIC ADVANCED Browser Capabilities Content
  • 117. ADAPTIVE WEB DESIGN WORKSHOP Parsing errors p{ color: red; }
  • 118. ADAPTIVE WEB DESIGN WORKSHOP Parsing errors p{ color: red; }
  • 119. ADAPTIVE WEB DESIGN WORKSHOP Parsing errors p{ color: red; font-weight: bold; }
  • 120. ADAPTIVE WEB DESIGN WORKSHOP Parsing errors p{ color: red; font-weight: bold; }
  • 121. ADAPTIVE WEB DESIGN WORKSHOP Parsing errors p { color: #ccc; color: rgba( 0, 0, 0, .5 ); }
  • 122. ADAPTIVE WEB DESIGN WORKSHOP Parsing errors html[lang] p { color: #ccc; color: rgba( 0, 0, 0, .5 ); }
  • 123. ADAPTIVE WEB DESIGN WORKSHOP Parsing errors @-moz-document url-prefix() { html[lang] p { color: #ccc; color: rgba( 0, 0, 0, .5 ); } }
  • 124. #intro { /* Basic Layout */ } /* ... */ body[id=css-zen-garden] #intro { /* Advanced Layout */ }
  • 125. #intro { /* Basic Layout */ } /* ... */ [foo], #intro { /* Advanced Layout */ }
  • 126. ADAPTIVE WEB DESIGN WORKSHOP Parsing errors @import 'not-for-IE7-or-below.css' screen; @media screen, print, refrigerator { /* IE will get these rules */ }
  • 127. ADAPTIVE WEB DESIGN WORKSHOP Organization design
  • 128. ADAPTIVE WEB DESIGN WORKSHOP Organization type color layout
  • 129. ADAPTIVE WEB DESIGN WORKSHOP Organization /* =Typography */ img { display: block; } /* =Layout */ @media screen { .frame .inner { border: 10px solid; } } /* =Color */ .frame .inner { background-color: rgb(227, 222, 215); border-color: rgb(227, 222, 215); }
  • 130. ADAPTIVE WEB DESIGN WORKSHOP Organization type.css layout.css main.css color.css
  • 131. ADAPTIVE WEB DESIGN WORKSHOP Organization {embed="styles/typography"} @media screen {   {embed="styles/layout-screen"} } {embed="styles/color"} Example using ExpressionEngine embed tags
  • 132. ADAPTIVE WEB DESIGN WORKSHOP Organization {embed="styles/reset"} {embed="styles/typography"} @media screen {   {embed="styles/layout-screen"} } @media print {   {embed="styles/layout-print"} } {embed="styles/color"} {embed="styles/effects"} Example using ExpressionEngine embed tags
  • 133. ADAPTIVE WEB DESIGN WORKSHOP Monkey-patching <link rel="stylesheet" href="main.css"/> <!--[if IE 9]><link rel="stylesheet" href="ie9.css"/><![endif]--> <!--[if lte IE 8]><link rel="stylesheet" href="ie8.css"/><![endif]--> <!--[if lte IE 7]><link rel="stylesheet" href="ie7.css"/><![endif]--> <!--[if lte IE 6]><link rel="stylesheet" href="ie6.css"/><![endif]-->
  • 134. ADAPTIVE WEB DESIGN WORKSHOP Monkey-patching @-moz-document url-prefix() { /* GENERATED CONTENT - FF3 doesn't allow positioning */ #extra-mile:before { content: ''; } #extra-mile:first-of-type:before { content: url(extra-mile-sign.png); } }
  • 135. ADAPTIVE WEB DESIGN WORKSHOP Media Queries
  • 136. ADAPTIVE WEB DESIGN WORKSHOP @Media blocks @media screen { /* Styles for screen media only */ }
  • 137. ADAPTIVE WEB DESIGN WORKSHOP @Media blocks+ @media screen and (max-width:450px) { /* Styles for screen media when browser is 450px wide or below */ }
  • 138. ADAPTIVE WEB DESIGN WORKSHOP Don’t do this @media screen and (min-device-width:1024px) and (max-width:989px), screen and (max-device-width:480px), screen and (max-device-width:480px) and (orientation:landscape), screen and (min-device-width:481px) and (orientation:portrait) { /* Layout for narrower desktop (below 990px) or iPhone running iOS 3 (or equivalent) or iPhone running iOS 4 (or equivalent) in “landscape” view or iPad (or equivalent) in “portrait” view */ }
  • 139. ADAPTIVE WEB DESIGN WORKSHOP Mobile First w/ media queries /* Universal Layout */ @media screen { /* Styles for all screens */ } @media screen and (min-width:481px) { /* Styles for all screens 480px+ width */ } @media screen and (min-width:754px) { /* Styles for all screens 754px+ width */ }
  • 140.
  • 141.
  • 142.
  • 143.
  • 144. ADAPTIVE WEB DESIGN WORKSHOP Mobile First w/ media queries #hd { background: url(hd-bg-small.png) repeat-x 50% 50%; } #hd .logo a { background: url(logo-small.png) no-repeat 50% 0; display: block; width: 240px; height: 109px; /* … */ } @media screen and (min-width: 481px) { #hd { background: url(hd-bg.png) no-repeat 50% 52px; } #hd .logo a { background-image: url(logo.png); width: 342px; height: 155px; } }
  • 145. Header Nav Features Extra Social Programs Newsletter News Footer
  • 146.
  • 147. User Experience Interactivity Design Semantics BASIC ADVANCED Browser Capabilities Content
  • 149. ADAPTIVE WEB DESIGN WORKSHOP Sins of our past <a href="javascript:someFunction();">some text</a> <a href="javascript:void(null);" onclick="someFunction();">some text</a> <a href="#" onclick="someFunction();">some text</a>
  • 150. ADAPTIVE WEB DESIGN WORKSHOP A minor improvement <a href="http://offsite.com" onclick="newWin( this.href ); return false;"> some text</a>
  • 152. ADAPTIVE WEB DESIGN WORKSHOP Event listeners window.onload = handleExternalLinks; function handleExternalLinks() { var server = document.location.hostname; var anchors = document.getElementsByTagName("a"); var i, href; for( i=0; i < anchors.length; i++ ) { href = anchors[i].href; if ( href.indexOf("http://" + server) == -1 && href.indexOf("https://" + server) == -1 ) { // HREF is not a file on my server anchors[i].onclick = function() { newWin( this.href ); }; } } }
  • 154. ADAPTIVE WEB DESIGN WORKSHOP Listen and delegate document .getElementsByTagName( 'body' )[0] .onclick = clickDelegator; function clickDelegator( e ) { e = ( e ) ? e : event; var el = e.target || e.srcElement; // external links if ( el.nodeName.toLowerCase() == 'a' && el.getAttribute( 'rel' ) == 'external' ) { newWin( el.href ); } }
  • 156.
  • 157.
  • 158.
  • 159.
  • 160.
  • 161.
  • 162.
  • 163.
  • 164.
  • 167. ADAPTIVE WEB DESIGN WORKSHOP Anchor-include pattern Source of blog entry page <a href="/archives/{entry_date format='%Y/%m/%d'}/{url_title}/ comments/#comments" data-replace="/comments/{url_title}/">View comments on this entry and add your own</a> {if segment_4=="comments"} <section id="comments" class="focal"> {embed="inc/.comments" url_title="{url_title}"} </section> {if:else} {comment_loader} {/if} Examples use ExpressionEngine tags
  • 168. ADAPTIVE WEB DESIGN WORKSHOP Anchor-include pattern Source of /comments/{url_title} (technically /pages/comments/{url_title}) {embed="inc/.comments" url_title="{segment_3}"} Example uses ExpressionEngine tags
  • 169. ADAPTIVE WEB DESIGN WORKSHOP Anchor-include pattern https://gist.github.com/b976b67e88ffbfc9f125 $.fn.ajaxInclude = function(){ return this.each(function() { var $el = $( this ), target = $el.data( 'target' ), $targetEl = target && $( target ) || $el, methods = [ 'append', 'replace', 'before', 'after' ], ml = methods.length, method, url; while ( ml-- ) { method = methods[ ml ]; if ( $el.is( '[data-' + method + ']' ) ) { url = $el.data( method ); break; } } if ( method == 'replace' ) { method += 'With'; } if ( url && method ) { $.get( url, function( data ){ $el.trigger( 'ajaxInclude', [$targetEl, data] ); $targetEl[ method ]( data ); }); } }); };
  • 170. ADAPTIVE WEB DESIGN WORKSHOP Anchor-include pattern Replace: <a data-replace="articles/latest/fragment" href="...">Latest Articles</a> Before: <a data-before="articles/latest/fragment" href="...">Latest Articles</a> After: <a data-after="articles/latest/fragment" href="...">Latest Articles</a>
  • 171. ADAPTIVE WEB DESIGN WORKSHOP Anchor-include pattern $("[data-append],[data-replace],”+ “[data-after],[data-before]").ajaxInclude();
  • 172. ADAPTIVE WEB DESIGN WORKSHOP 162
  • 173. JavaScript CSS
  • 174. ADAPTIVE WEB DESIGN WORKSHOP Remember stu like this? <a href="foo.html" style="color:blue;" onmouseover="this.style.color='red'" onmouseout="this.style.color='blue'">Foo</a>
  • 175. ADAPTIVE WEB DESIGN WORKSHOP Remember stu like this? <a href="foo.html" style="color:blue;" onmouseover="this.style.color='red'" onmouseout="this.style.color='blue'">Foo</a> a, a:link, a:visited { color: blue; } a:hover { color: red; }
  • 176. ADAPTIVE WEB DESIGN WORKSHOP Isn’t this the same? for( i=0; i<objects.length; i++){ objects[i].style.display = 'none'; }
  • 177. ADAPTIVE WEB DESIGN WORKSHOP Small improvement for( i=0; i<objects.length; i++){ objects[i].style.position = 'absolute'; objects[i].style.left = '-999em'; }
  • 178. ADAPTIVE WEB DESIGN WORKSHOP Separation for( i=0; i<objects.length; i++){ objects[i].addClassName( 'hidden' ); } .hidden { position: absolute; left: -999em; }
  • 179. ADAPTIVE WEB DESIGN WORKSHOP Maintenance options ๏ external style rules added to your CSS le (by hand) ๏ external CSS le added to the document (by hand) ๏ external CSS le added to the document via script ๏ embedding CSS in the document via script 168
  • 180. ADAPTIVE WEB DESIGN WORKSHOP Option 1: Add by hand /* =START WickedCool Script CSS (do not remove) */ .wicked { color: red; font: bold 4em/2 "Comic Sans"; } .cool { color: blue; font: bold 4em/2 "Comic Sans"; } /* =END WickedCool Script CSS */
  • 181. ADAPTIVE WEB DESIGN WORKSHOP Option 2: Include by hand <script src="WickedCool.js"></script> <link rel="stylesheet" href="WickedCool.css" />
  • 182. ADAPTIVE WEB DESIGN WORKSHOP Option 2: Include by hand <script src="WickedCool.js"></script> <link rel="stylesheet" href="WickedCool.css" /> <head> <!-- … --> <link rel="stylesheet" href="WickedCool.css" /> </head> <body> <!-- … --> <script src="WickedCool.js"></script> </body>
  • 183. ADAPTIVE WEB DESIGN WORKSHOP Option 3: Scripted include function FindPath( filename ) { var path = false; var scripts = document.getElementsByTagName( 'script' ); for( var i=0; i<scripts.length; i++ ) { if( scripts[i].getAttribute( 'src' ) && scripts[i].getAttribute( 'src' ) .indexOf( filename ) != -1 ) { path = scripts[i] .getAttribute( 'src' ) .replace( new RegExp( filename ), '' ); break; } } return path; }
  • 184. ADAPTIVE WEB DESIGN WORKSHOP Option 3: Scripted include var WickedCool = { jsFile: 'WickedCool.js', cssFile: 'WickedCool.css', initialize: function(){ // determine the path var path = FindPath( this.jsFile ); // add the CSS file var css = document.createElement( 'link' ); css.setAttribute( 'rel', 'stylesheet' ); css.setAttribute( 'href', path + this.cssFile ); document.getElementsByTagName( 'head' )[0] .appendChild( css ); // do the rest of the wicked cool stuff } };
  • 185. ADAPTIVE WEB DESIGN WORKSHOP Option 4: Scripted embed function addCSS( styles ) { var el = document.createElement( 'style' ); el.setAttribute( 'type', 'text/css' ); if ( el.styleSheet ) { el.styleSheet.cssText = styles; } else { el.appendChild( document.createTextNode( styles ) ); } document.getElementsByTagName( 'head' )[0] .appendChild( el ); }
  • 186. ADAPTIVE WEB DESIGN WORKSHOP Option 4: Scripted embed var WickedCool = { _css: '.wicked { color: red; ' + ' font: bold 4em/2 "Comic Sans"; } ' + '.cool { color: blue; ' + ' font: bold 4em/2' "Comic Sans"; }', initialize: function() { // add the CSS addCSS( this._css ); // do the rest of the wicked cool stuff } }; based on the work of Nicholas Zakas
  • 188. ADAPTIVE WEB DESIGN WORKSHOP How do we do that? .TabInterface-folder { /* ... */ } #TabInterface .tab { /* ... */ } #TabInterface .tab.active { /* ... */ } 176
  • 189. ADAPTIVE WEB DESIGN WORKSHOP How do we do that? Tactic Default Activated add “-on” to the class .tabbed .tabbed-on add an activation class .auto-submit .auto-submit.active change the form of the .replace-me .replaced class
  • 190. ADAPTIVE WEB DESIGN WORKSHOP Adaptive UI
  • 191. ADAPTIVE WEB DESIGN WORKSHOP Adaptive UI
  • 192. ADAPTIVE WEB DESIGN WORKSHOP Swapping content var trigger = 659; // … function toggleDisplay() { var width = $window.width(); if ( showing == 'old' && width <= trigger ) { $old_nav.replaceWith($new_nav); showing = 'new'; } else if ( showing == 'new' && width > trigger ) { $new_nav.replaceWith($old_nav); showing = 'old'; } }
  • 193.
  • 194.
  • 195.
  • 196.
  • 197. ADAPTIVE WEB DESIGN WORKSHOP Semantics <ul> <li> <a href="#"><img src="…" alt="" /></a> <span>Your new online source for information on our progress</span> </li> <li> <a href="#"><img src="…" alt="" /></a> <span>VillageReach Announces Mozambique National Expansion</span> </li> <li> <a href="#"><img src="…" alt="" /></a> <span>VillageReach's innovative approach for last mile communities</span> </li> … </ul>
  • 198. ADAPTIVE WEB DESIGN WORKSHOP Style? <ul style=”height: 300px;”> <li style=”height: 300px;” > <a href="#"><img src="…" alt="" /></a> <span>Your new online source for information on our progress</span> </li> <li style=”height: 300px;” > <a href="#"><img src="…" alt="" /></a> <span>VillageReach Announces Mozambique National Expansion</span> </li> <li style=”height: 300px;” > <a href="#"><img src="…" alt="" /></a> <span>VillageReach's innovative approach for last mile communities</span> </li> … </ul>
  • 199.
  • 200. ADAPTIVE WEB DESIGN WORKSHOP Style? <ul class="jcarousel-skin-vr" style=”height: 300px;”> <li style=”height: 300px;”> <a href="#"><img src="…" alt="" /></a> <span>Your new online source for information on our progress</span> </li> <li style=”height: 300px;”> <a href="#"><img src="…" alt="" /></a> <span>VillageReach Announces Mozambique National Expansion</span> </li> <li style=”height: 300px;”> <a href="#"><img src="…" alt="" /></a> <span>VillageReach's innovative approach for last mile communities</span> </li> … </ul>
  • 201. ADAPTIVE WEB DESIGN WORKSHOP Script <ul id="vr-carousel"> <li> <a href="#"><img src="…" alt="" /></a> <span>Your new online source for information on our progress</span> </li> <li> <a href="#"><img src="…" alt="" /></a> <span>VillageReach Announces Mozambique National Expansion</span> </li> <li> <a href="#"><img src="…" alt="" /></a> <span>VillageReach's innovative approach for last mile communities</span> </li> … </ul>
  • 202. ADAPTIVE WEB DESIGN WORKSHOP Script $j('#vr-carousel').jcarousel({ auto: 6, visible: 1, animation: 0, wrap: 'both', scroll: 1, initCallback: vrCarousel_initCallback, itemFirstInCallback: vrCarousel_itemFirstInCallback, itemFirstInCallback: vrCarousel_fadeIn, itemFirstOutCallback: vrCarousel_fadeOut });
  • 203. ADAPTIVE WEB DESIGN WORKSHOP Script function vrCarousel_initCallback( carousel, item, idx, state ) { // Pause autoscrolling if the user moves // with the cursor over the clip. carousel.clip.hover(function() { carousel.stopAuto(); }, function() { carousel.startAuto(); }); $j('.jcarousel-item').css('opacity', 0); };
  • 204. ADAPTIVE WEB DESIGN WORKSHOP Script function vrCarousel_initCallback( carousel, item, idx, state ) { var $i = carousel.list.find(‘img’), h = 0; // get the max h $i.each(function(){ var test = $j(this).height(); if ( test > h ){ h = test; } }); // … carousel.list.height(h); $j('.jcarousel-item').css({ opacity: 0, height: h }); };
  • 206. User Experience Accessibility Interactivity Design Semantics BASIC ADVANCED Browser Capabilities Content
  • 208. “special needs” can be CONTEXTUAL
  • 209.
  • 210.
  • 211.
  • 212. ADAPTIVE WEB DESIGN WORKSHOP What is it?
  • 213. ADAPTIVE WEB DESIGN WORKSHOP What is it? <button>Tweet</button> <a class=”button”>Tweet</a>
  • 214. ADAPTIVE WEB DESIGN WORKSHOP What is it? <button>Tweet</button> <a class=”button”>Tweet</a>
  • 215. ADAPTIVE WEB DESIGN WORKSHOP What is it?
  • 216. ADAPTIVE WEB DESIGN WORKSHOP What is it? <button>Search Mail</button> <div>Search Mail</div>
  • 217. ADAPTIVE WEB DESIGN WORKSHOP What is it? <button>Search Mail</button> <div>Search Mail</div>
  • 218. ADAPTIVE WEB DESIGN WORKSHOP ARIA maps the OS to the web
  • 220. ADAPTIVE WEB DESIGN WORKSHOP All the web’s a play… <section id="main" role="main"> <!-- The primary content for the page would go here --> </section>
  • 221.
  • 226.
  • 229.
  • 231. ADAPTIVE WEB DESIGN WORKSHOP Semantic comparison Ad-hoc ARIA Role HTML5 #header, #top banner header (kind of) #main, #content main none #extra, .sidebar complementary, note aside #footer, #bottom contentinfo footer #nav navigation nav .hentry article article
  • 232.
  • 233. ADAPTIVE WEB DESIGN WORKSHOP These are the droids you seek <span role="button">OK</span> <div role="alert"> <p>Something went wrong.</p> </div> <div role="alertdialog"> <p>Something went wrong.</p> <img src="x.png" alt="dismiss" role="button" /> </div>
  • 234. ADAPTIVE WEB DESIGN WORKSHOP What is it? <a role=”button”>Tweet</a> class=”button”>Tweet</a>
  • 235. ADAPTIVE WEB DESIGN WORKSHOP What is it? <a role=”button”>Tweet</a>
  • 236.
  • 237. ADAPTIVE WEB DESIGN WORKSHOP What’s happening? B B (off) (on) <span> <img src="bold-off.png" alt="bold" /> </span> <span> <img src="bold-on.png" alt="bold" /> </span>
  • 238. ADAPTIVE WEB DESIGN WORKSHOP What’s happening? B B (off) (on) <span> <img src="bold-off.png" alt="not bold" /> </span> <span> <img src="bold-on.png" alt="bold" /> </span>
  • 239. ADAPTIVE WEB DESIGN WORKSHOP What’s happening? B B (off) (on) <span role="button" aria-pressed="false"> <img src="bold-off.png" alt="not bold" /> </span> <span role="button" aria-pressed="true"> <img src="bold-on.png" alt="bold" /> </span>
  • 240. ADAPTIVE WEB DESIGN WORKSHOP Complex interfaces
  • 241. ADAPTIVE WEB DESIGN WORKSHOP Traditional approach <h1>Pumpkin Pie</h1> <div class="container"> <div class="section"> <h2>Overview</h2> <img src="pie.jpg" alt=""> <p>Whether you're hosting a festive party or a casual get-together with friends, our Pumpkin Pie will make entertaining easy!</p> <!-- ... --> </div> <!-- ... --> <ul class="tabs"> <li><a href="#">Overview</a></li> <li><a href="#">Ingredients</a></li> <li><a href="#">Directions</a></li> <li><a href="#">Nutrition</a></li> </ul> </div>
  • 242. ADAPTIVE WEB DESIGN WORKSHOP Cleaner approach <h1>Pumpkin Pie</h1> <div class="tabbed"> <h2>Overview</h2> <img src="pie.jpg" alt="" /> <p>Whether you're hosting a festive party or a casual get-together with friends, our Pumpkin Pie will make entertaining easy!</p> <!-- ... --> <h2>Ingredients</h2> <ul> <li>1 (9<abbr title="inch">in</abbr>) unbaked deep dish pie crust</li> <li>½ cup white sugar</li> <!-- ... --> </ul> <h2>Directions</h2> <!-- ... --> </div>
  • 243. ADAPTIVE WEB DESIGN WORKSHOP Cleaner approach <h1>Pumpkin Pie</h1> <div class="tabbed"> <h2>Overview</h2> <img src="pie.jpg" alt="" /> <p>Whether you're hosting a festive party or a casual get-together with friends, our Pumpkin Pie will make entertaining easy!</p> <!-- ... --> <h2>Ingredients</h2> <ul> <li>1 (9<abbr title="inch">in</abbr>) unbaked deep dish pie crust</li> <li>½ cup white sugar</li> <!-- ... --> </ul> <h2>Directions</h2> <!-- ... --> </div>
  • 244. ADAPTIVE WEB DESIGN WORKSHOP No JS, basic CSS
  • 245. ADAPTIVE WEB DESIGN WORKSHOP Widget logic Split Page the content & make some tabs JS? Yes No
  • 246. ADAPTIVE WEB DESIGN WORKSHOP On DOM ready <h1>Pumpkin Pie</h1> <div class="tabbed-on"> <section> <h2>Overview</h2> <img src="pie.jpg" alt=""> <p>Whether you're hosting a festive party or a casual get-together with friends, our Pumpkin Pie will make entertaining easy!</p> <!-- ... --> </section> <!-- ... --> <ul class="tabs"> <li><a href="#">Overview</a></li> <li><a href="#">Ingredients</a></li> <li><a href="#">Directions</a></li> <li><a href="#">Nutrition</a></li> </ul> </div>
  • 247. ADAPTIVE WEB DESIGN WORKSHOP Adding ARIA role="tablist" 232
  • 248. ADAPTIVE WEB DESIGN WORKSHOP Adding ARIA role="tab" aria-selected="true" aria-controls="folder-1"
  • 249. ADAPTIVE WEB DESIGN WORKSHOP Adding ARIA role="tab" aria-selected="false" aria-controls="folder-4"
  • 250. ADAPTIVE WEB DESIGN WORKSHOP Adding ARIA role="tabpanel" aria-hidden="false" aria-labelledby="folder-1-tab"
  • 251. ADAPTIVE WEB DESIGN WORKSHOP Adding ARIA role="application" aria-activedescendant="folder-1"
  • 252. ADAPTIVE WEB DESIGN WORKSHOP Result!
  • 253.
  • 254. ADAPTIVE WEB DESIGN WORKSHOP Hey! Over here!
  • 255. ADAPTIVE WEB DESIGN WORKSHOP Hey! Over here! <input class="tweet-counter" value="140" disabled="disabled">
  • 256. ADAPTIVE WEB DESIGN WORKSHOP Hey! Over here! <span id="chars_left_notice" class="numeric"> <strong id="status-field-char-counter" class="char-counter">140</strong> </span>
  • 257. ADAPTIVE WEB DESIGN WORKSHOP Hey! Over here! <span class="tweet-counter">140 <b class="hidden"> characters remaining</b></span> .hidden { position: absolute; left: −999em; }
  • 258. ADAPTIVE WEB DESIGN WORKSHOP Hey! Over here! <span class="tweet-counter">maximum of 140 characters</span> <span class="tweet-counter">140 <b class="hidden"> characters remaining</b></span>
  • 259. ADAPTIVE WEB DESIGN WORKSHOP Hey! Over here! <span aria-live="polite" aria-atomic="true" class="tweet-counter">140<b class="hidden"> characters remaining</b></span>
  • 260. ADAPTIVE WEB DESIGN WORKSHOP Hey! Over here!
  • 261. Photo credit: emilio labrador
  • 262. ADAPTIVE WEB DESIGN WORKSHOP Typical hiding schemes Accessibility CSS Rules Display E ect E ect visibility: hidden; Element is hidden from Content is ignored by screen view, but is not removed readers from the normal ow (i.e. it still takes up the space it normally would) display: none; Element is removed from Content is ignored by screen the normal ow and hidden; readers the space it occupied is collapsed height: 0; Element is collapsed and Content is ignored by screen width: 0; contents are hidden readers overflow: hidden;
  • 263. ADAPTIVE WEB DESIGN WORKSHOP Typical hiding schemes Accessibility CSS Rules Display E ect E ect text-indent: -999em; Contents are shifted o - Screen readers have access screen and hidden from to the content, but the view, but links may “focus” content is limited to text and oddly and negative indent inline elements may not prove long enough to fully hide content position: absolute; Content is removed from Screen readers have access left: -999em; the normal ow and shifted to the content o the left-hand edge; the space it occupied is collapsed
  • 264. ADAPTIVE WEB DESIGN WORKSHOP Typical hiding schemes Accessibility CSS Rules Display E ect E ect position: absolute; Content is positioned Screen readers have access /* IE6, IE7 */ absolutely (and is removed to the content clip: rect( 1px 1px 1px 1px from the normal ow), but ); remains in place and is /* W3C */ clipped to become invisible clip: rect( 1px, 1px, 1px, 1px ); padding: 0; border: 0; height: 1px; width: 1px; overflow: hidden;
  • 265. ADAPTIVE WEB DESIGN WORKSHOP Typical hiding schemes Accessibility CSS Rules Display E ect E ect visibility: hidden; Element is hidden from Content is ignored by screen view, but is not removed readers from the normal ow (i.e. it still takes up the space it normally would) display: none; Element is removed from Content is ignored by screen the normal ow and hidden; readers the space it occupied is collapsed height: 0; Element is collapsed and Content is ignored by screen width: 0; contents are hidden readers overflow: hidden;
  • 266. ADAPTIVE WEB DESIGN WORKSHOP “Fixing” libraries (function(){ var $button = $('#myButton'), $text = $('#myText'), visible = true; $button.click(function(){ if ( visible ) { $text.slideUp('fast'); } else { $text.slideDown('fast'); } visible = ! visible; }); })();
  • 267. ADAPTIVE WEB DESIGN WORKSHOP “Fixing” libraries (function(){ var $button = $('#myButton'), $text = $('#myText'), visible = true; $button.click(function(){ if ( visible ) { $text.slideUp('fast',function(){ $text.addClass('accessibly-hidden') .slideDown(0); }); } else { $text.slideUp(0,function(){ $text.removeClass('accessibly-hidden') .slideDown('fast'); }); } visible = ! visible; }); })();
  • 269. ADAPTIVE WEB DESIGN WORKSHOP Managing focus <div tabindex="0"> <p>This <code>div</code> can now receive focus using a keyboard’s <kbd>tab</kbd> key. How cool is that?</p> </div> <div tabindex="-1"> <p>This <code>div</code> won’t be focused by a user via the <kbd>tab</kbd> key, but JavaScript can <code>focus()</code> it. Nifty, huh?</p> </div>
  • 270. Header
  • 271. ADAPTIVE WEB DESIGN WORKSHOP ARIA Roles <div id="header"> <a href="#donate" class="donate-link" title="Click here to view our donation options">Donate</a> <a href="http://villagereach.org/feed/" class="rss-link" title="View our RSS Feed">RSS Feed</a> <div id="site-title"> <a href="http://villagereach.org" title="Village Reach: Home"> <span>Village Reach</span> </a> </div> </div><!-- #header -->
  • 273. ADAPTIVE WEB DESIGN WORKSHOP ARIA Roles <div class="entry-content entry"> <!-- Features --> <div class="boxes three home"> <!-- Programs --> </div> <div id="latestNews"> <!-- Latest News --> </div> </div>
  • 274. Nav
  • 275. ADAPTIVE WEB DESIGN WORKSHOP ARIA Roles <div id="hybrid-search-3" class="widget search widget-search"> <div class="widget-inside"> <form method="get" class="search-form" id="search-form" action="http://villagereach.org/"> <!--Search Form --> </form><!-- .search-form --> </div> </div> <div id="navigation"> <div id="page-nav" class="page-nav"> <ul class="menu sf-menu"> <!-- Navigation --> </ul> </div> </div><!-- #navigation -->
  • 276. Extra Social Newsletter
  • 277. ADAPTIVE WEB DESIGN WORKSHOP ARIA Roles <div id="text-8" class="widget widget_text widget-widget_text"> <div class="widget-inside"> <!-- Extra --> </div> </div> <div id="text-7" class="widget widget_text widget-widget_text"> <div class="widget-inside"> <!-- Social --> </div> </div> <div id="mc_signup_container"> <!-- Newsletter --> </div>
  • 278. Footer
  • 279. ADAPTIVE WEB DESIGN WORKSHOP ARIA Roles <div id="footer-container"> <div id="footer"> <p class="copyright">Copyright &#169; 2011 <a class="site-link" href="http://villagereach.org" title="VillageReach" rel="home"><span>VillageReach</span></a>. - All rights reserved.</p> </div><!-- #footer --> </div><!-- #footer-container -->
  • 280.
  • 281. ADAPTIVE WEB DESIGN WORKSHOP ARIA Roles & States <div class="jcarousel-container jcarousel-container-horizontal" style="display: block; "> <ul id="vr-carousel"> <li> <a href="#"><img src="…" alt="" /></a> <span>Your new online source for information on our progress</span> </li> <li> <a href="#"><img src="…" alt="" /></a> <span>VillageReach Announces Mozambique National Expansion</span> </li> … </ul> </div>
  • 282. ADAPTIVE WEB DESIGN WORKSHOP ARIA Roles & States <div id="jcarousel-control"> <div class="jcarousel-prev jcarousel-prev-horizontal" style="display: block; " disabled="false"></div> <span id="jcarousel-control-caption"> VillageReach Announces Mozambique National Expansion </span> <div class="jcarousel-next jcarousel-next-horizontal" style="display: block; " disabled="false"></div> </div>
  • 283. Adaptive Web Design Workshop by Aaron Gustafson More of the same: http://adaptivewebdesign.info http://easy-designs.net http://blog.easy-designs.net http://aaron-gustafson.com Slides available at http://slideshare.net/AaronGustafson © Aaron Gustafson. All Rights Reserved.