SlideShare ist ein Scribd-Unternehmen logo
1 von 157
Downloaden Sie, um offline zu lesen
Advanced HTML & CSS
Techniques for Developing
Webkit Mobile Applications

                                Michael T. Smith
        Senior Developer, Magnani Caruso Dutton
                            September 16, 2009
Who I Am?
Who I Am?
- Senior Developer, Magnani Caruso Dutton
Who I Am?
- Senior Developer, Magnani Caruso Dutton
- Discover Financial Services, AT&T, London 2012
Who I Am?
- Senior Developer, Magnani Caruso Dutton
- Discover Financial Services, AT&T, London 2012
- Full Time Web Developer
Who I Am?
- Senior Developer, Magnani Caruso Dutton
- Discover Financial Services, AT&T, London 2012
- Full Time Web Developer
- Part Time Cocoa Developer
iPhone, Pre, Android?
iPhone, Pre, Android?
- iPhone, iPod touch?
iPhone, Pre, Android?
- iPhone, iPod touch?
  - More than 45,000,000 sold
iPhone, Pre, Android?
- iPhone, iPod touch?
  - More than 45,000,000 sold
- Palm Pre?
iPhone, Pre, Android?
- iPhone, iPod touch?
  - More than 45,000,000 sold
- Palm Pre?
  - 1,500,000 by end of year (?)
iPhone, Pre, Android?
- iPhone, iPod touch?
  - More than 45,000,000 sold
- Palm Pre?
  - 1,500,000 by end of year (?)
- Android?
iPhone, Pre, Android?
- iPhone, iPod touch?
  - More than 45,000,000 sold
- Palm Pre?
  - 1,500,000 by end of year (?)
- Android?
  - 8,000,000 by end of year (?)
iPhone, Pre, Android?
- iPhone, iPod touch?
  - More than 45,000,000 sold
- Palm Pre?
  - 1,500,000 by end of year (?)
- Android?
  - 8,000,000 by end of year (?)
iPhone, Pre, Android?
- iPhone, iPod touch?
  - More than 45,000,000 sold
- Palm Pre?
  - 1,500,000 by end of year (?)
- Android?
  - 8,000,000 by end of year (?)

                                   ...but...
WebKit
WebKit
- WebKit browser engine across all three platforms
WebKit
- WebKit browser engine across all three platforms
- Build for one -- test for all
WebKit
- WebKit browser engine across all three platforms
- Build for one -- test for all
- Some differences
WebKit
- WebKit browser engine across all three platforms
- Build for one -- test for all
- Some differences
- Progressive enhancement
WebKit
- WebKit browser engine across all three platforms
- Build for one -- test for all
- Some differences
- Progressive enhancement
  - Somethings will work
WebKit
- WebKit browser engine across all three platforms
- Build for one -- test for all
- Some differences
- Progressive enhancement
  - Somethings will work
  - Others won’t
WebKit
- WebKit browser engine across all three platforms
- Build for one -- test for all
- Some differences
- Progressive enhancement
  - Somethings will work
  - Others won’t
  - The user doesn’t miss out
Webkit Background
Webkit Background
- Actively developed, open source browser engine
Webkit Background
- Actively developed, open source browser engine
- Dave Hyatt (http://surfingsafari.com),
  Safari & Webkit Architect
Webkit Background
- Actively developed, open source browser engine
- Dave Hyatt (http://surfingsafari.com),
  Safari & Webkit Architect
- Began implementing CSS extensions that are
  working drafts for the W3C
Let’s begin...
“Web Application” Basics
“Web Application” Basics
- Two forms:
“Web Application” Basics
- Two forms:
  - Web Application
“Web Application” Basics
- Two forms:
  - Web Application
    - the original, non-native answer to the SDK
“Web Application” Basics
- Two forms:
  - Web Application
    - the original, non-native answer to the SDK
  - Web-based App
“Web Application” Basics
- Two forms:
  - Web Application
    - the original, non-native answer to the SDK
  - Web-based App
    - going to flickr.com and getting a customized
      view
“Web Application” Basics




Web-based App     Web App
“Web Application” Basics
“Web Application” Basics
- Form is determined by user and developer
“Web Application” Basics
- Form is determined by user and developer
- User must choose to “Save to Home Screen”
“Web Application” Basics
- Form is determined by user and developer
- User must choose to “Save to Home Screen”
- Developer uses HTML meta tags to customize
  the application for the iPhone
HTML
HTML
<link rel="apple-touch-icon" href="/custom_icon.png">
HTML
<link rel="apple-touch-icon" href="/custom_icon.png">
HTML
<link rel="apple-touch-icon" href="/custom_icon.png">
HTML
<link rel="apple-touch-icon" href="/custom_icon.png">


<link rel="apple-touch-startup-image" href="/startup.png">
HTML
<link rel="apple-touch-icon" href="/custom_icon.png">


<link rel="apple-touch-startup-image" href="/startup.png">


<meta name="apple-mobile-web-app-status-bar-style" content="black">
HTML
<meta name="apple-mobile-web-app-status-bar-style"
      content="[default|black|black-translucent]">
HTML
<meta name="apple-mobile-web-app-status-bar-style"
      content="[default|black|black-translucent]">




      default
HTML
<meta name="apple-mobile-web-app-status-bar-style"
      content="[default|black|black-translucent]">




      default                    black
HTML
<meta name="apple-mobile-web-app-status-bar-style"
      content="[default|black|black-translucent]">




      default                    black               black-translucent
HTML
<link rel="apple-touch-icon" href="/custom_icon.png">


<link rel="apple-touch-startup-image" href="/startup.png">


<meta name="apple-mobile-web-app-status-bar-style" content="black">


<meta name="viewport" content ="initial-scale = 2.3, user-scalable = no">
HTML
<meta name="viewport" content ="width = [200 to 10,000 || device-width]">

<meta name="viewport" content ="height = [223 to 10,000 || device-height]">

<meta name="viewport" content ="minimum-scale = [0.01 to 10.0]">

<meta name="viewport" content ="maximum-scale = [0.01 to 10.0]">

<meta name="viewport"
      content ="initial-scale = [minimum-scale to maximum-scale]">

<meta name="viewport" content ="user-scalable = [yes||no]">



            All options can be combined via commas
HTML
<link rel="apple-touch-icon" href="/custom_icon.png">


<link rel="apple-touch-startup-image" href="/startup.png">


<meta name="apple-mobile-web-app-status-bar-style" content="black">


<meta name="viewport" content ="initial-scale = 2.3, user-scalable = no">


<meta name="apple-mobile-web-app-capable" content="yes">
HTML
<link rel="apple-touch-icon" href="/custom_icon.png">


<link rel="apple-touch-startup-image" href="/startup.png">


<meta name="apple-mobile-web-app-status-bar-style" content="black">


<meta name="viewport" content ="initial-scale = 2.3, user-scalable = no">


<meta name="apple-mobile-web-app-capable" content="yes">


<meta name="format-detection" content="telephone=no">
...which brings us
   to the CSS...
WebKit CSS Support
WebKit CSS Support
- WebKit’s CSS support is spectacular.
WebKit CSS Support
- WebKit’s CSS support is spectacular.
- Large subset of CSS 2.1 Specification
WebKit CSS Support
- WebKit’s CSS support is spectacular.
- Large subset of CSS 2.1 Specification
- Portions of CSS 3 Specification
WebKit CSS Support
- WebKit’s CSS support is spectacular.
- Large subset of CSS 2.1 Specification
- Portions of CSS 3 Specification
  - (most written using -webkit-rule notation)
WebKit CSS Support
- WebKit’s CSS support is spectacular.
- Large subset of CSS 2.1 Specification
- Portions of CSS 3 Specification
  - (most written using -webkit-rule notation)
- 200+ rules
border                             opacity                     counter-reset             -webkit-appearance
           border-bottom                          position                           list-style          -webkit-nbsp-mode
       border-bottom-color                           right                   list-style-image            -webkit-rtl-ordering
        border-bottom-style                           top                  list-style-position             -webkit-user-drag
       border-bottom-width                      unicode-bidi                   list-style-type           -webkit-user-modify
            border-color                        vertical-align                       orphans              -webkit-user-select
             border-left                            width                   page-break-after                 border-collapse
          border-left-color                        z-index                page-break-before                  border-spacing
          border-left-style                         zoom                   page-break-inside                  caption-side
          border-left-width                           clip                            widows                   empty-cells
            border-right                          overflow                       background                    table-layout
         border-right-color                      overflow-x            background-attachment          -webkit-border-horizontal-
         border-right-style                      overflow-y                background-color                      spacing
         border-right-width                         resize                background-image         -webkit-border-vertical-spacing
            border-style                          visibility             background-position         -webkit-column-break-after
             border-top                     -webkit-animation           background-position-x       -webkit-column-break-before
          border-top-color             -webkit-animation-delay          background-position-y       -webkit-column-break-inside
          border-top-style          -webkit-animation-direction           background-repeat             -webkit-column-count
          border-top-width          -webkit-animation-duration                          color            -webkit-column-gap
            border-width           -webkit-animation-iteration-        -webkit-background-clip           -webkit-column-rule
           margin-bottom                            count          -webkit-background-composite       -webkit-column-rule-color
             margin-left               -webkit-animation-name        -webkit-background-origin        -webkit-column-rule-style
            margin-right           -webkit-animation-play-state       -webkit-background-size        -webkit-column-rule-width
             margin-top              -webkit-animation-timing-                          font            -webkit-column-width
          padding-bottom                          function                         font-family              -webkit-columns
            padding-left             -webkit-backface-visibility                     font-size                    cursor
           padding-right                   -webkit-box-reflect                      font-style                    outline
            padding-top                        -webkit-mask                       font-variant                outline-color
   -webkit-border-bottom-left-       -webkit-mask-attachment                      font-weight                 outline-offset
                radius                -webkit-mask-box-image                             src                  outline-style
  -webkit-border-bottom-right-              -webkit-mask-clip                 unicode-range                   outline-width
                radius                -webkit-mask-composite                   letter-spacing                pointer-events
      -webkit-border-image                -webkit-mask-image                        text-align             -webkit-box-align
      -webkit-border-radius               -webkit-mask-origin                text-decoration            -webkit-box-direction
  -webkit-border-top-left-radius         -webkit-mask-position                     text-indent              -webkit-box-flex
 -webkit-border-top-right-radius       -webkit-mask-position-x                  text-overflow          -webkit-box-flex-group
        -webkit-box-sizing             -webkit-mask-position-y                   text-shadow               -webkit-box-lines
       -webkit-box-shadow                 -webkit-mask-repeat                 text-transform          -webkit-box-ordinal-group
-webkit-margin-bottom-collapse              -webkit-mask-size                    white-space              -webkit-box-orient
     -webkit-margin-collapse               -webkit-perspective                    word-break               -webkit-box-pack
       -webkit-margin-start          -webkit-perspective-origin                word-spacing             -webkit-touch-callout
   -webkit-margin-top-collapse              -webkit-transform                     word-wrap           -webkit-dashboard-region
      -webkit-padding-start            -webkit-transform-origin            -webkit-marquee           -webkit-tap-highlight-color
                bottom               -webkit-transform-origin-x      -webkit-marquee-direction
                 clear               -webkit-transform-origin-y     -webkit-marquee-increment
               direction             -webkit-transform-origin-z      -webkit-marquee-repetition
                display                 -webkit-transform-style        -webkit-marquee-speed
                 float                       -webkit-transition         -webkit-marquee-style
                height                 -webkit-transition-delay          -webkit-text-fill-color
                  left               -webkit-transition-duration         -webkit-text-security
             line-height            -webkit-transition-property        -webkit-text-size-adjust
             max-height               -webkit-transition-timing-          -webkit-text-stroke
             max-width                            function            -webkit-text-stroke-color
             min-height                            content            -webkit-text-stroke-width
             min-width                      counter-increment             -webkit-line-break
-webkit-border-radius
 -webkit-box-shadow
   -webkit-gradient
    -webkit-mask
  -webkit-transition
  -webkit-transform
  -webkit-animation
-webkit-border-radius
 -webkit-box-shadow
   -webkit-gradient
    -webkit-mask
  -webkit-transition
  -webkit-transform
  -webkit-animation
-webkit-border-radius
-webkit-border-radius
- Rounds the corners of a box
-webkit-border-radius
-webkit-border-radius
-webkit-border-radius: radius;
-webkit-border-radius: horizontal_radius
    vertical_radius;
-webkit-border-radius
-webkit-border-radius: radius;
-webkit-border-radius: horizontal_radius
    vertical_radius;

-webkit-border-bottom-left-radius: radius;
-webkit-border-bottom-right-radius: radius;
-webkit-border-top-left-radius: radius;
-webkit-border-top-right-radius: radius;
-webkit-border-radius
-webkit-border-radius
-webkit-border-radius
         header #information {
             display: block;
             position: absolute;
             top: 13px;
             left: 15px;
             height: 18px;
             width: 18px;
             z-index: 100;
             font-family: "Georgia";
             font-size: 15px;
             font-weight: bold;
             font-style: italic;
             text-decoration: none;
             text-align: center;
             color: #686868;
             background-color: #FFFFFF;
             -webkit-border-radius: 9px;
         }
-webkit-border-radius
         header #information {
             display: block;
             position: absolute;
             top: 13px;
             left: 15px;
             height: 18px;
             width: 18px;
             z-index: 100;
             font-family: "Georgia";
             font-size: 15px;
             font-weight: bold;
             font-style: italic;
             text-decoration: none;
             text-align: center;
             color: #686868;
             background-color: #FFFFFF;
             -webkit-border-radius: 9px;
         }
-webkit-border-radius
 -webkit-box-shadow
   -webkit-gradient
    -webkit-mask
  -webkit-transition
  -webkit-transform
  -webkit-animation
-webkit-box-shadow
-webkit-box-shadow
   (text-shadow)
-webkit-box-shadow
        (text-shadow)
- Simple shadow effects
- Very similar to layer effects in Photoshop
- Properties are arranged differently
-webkit-box-shadow
       (text-shadow)
text-shadow: color x_offset y_offset
    blur_radius;
-webkit-box-shadow: x_offset y_offset
    blur_radius color;

text-shadow: #000000 0 -1px 0;
-webkit-box-shadow: -1px 0 0 #000000;
text-shadow
   header h1 {
       display: block;
       position: relative;
       top: 9px;
       margin: 0;
       padding: 0;
       font-size: 18px;
       color: #FFFFFF;
       text-shadow: #000000 0 -1px 0;
       text-align: center;
   }
text-shadow
-webkit-border-radius
 -webkit-box-shadow
   -webkit-gradient
    -webkit-mask
  -webkit-transition
  -webkit-transform
  -webkit-animation
-webkit-gradient
-webkit-gradient
- Not actually a rule — A “CSS Property Function”
- Used anywhere a url() function can be used
- ‘Experimental CSS 3’
-webkit-gradient
-webkit-gradient
-webkit-gradient(type,
    start_point, end_point,
    stops
);
-webkit-gradient
-webkit-gradient(type,
    start_point, end_point,
    stops
);


-webkit-gradient(type,
    inner_center, inner_radius,
    outer_center, outer_radius,
    stops
);
-webkit-gradient
-webkit-gradient(linear,
    start_point, end_point,
    color-stop(position, color)
);


-webkit-gradient(radius,
    inner_center, inner_radius,
    outer_center, outer_radius,
    color-stop(position, color)
);
-webkit-gradient
    background: -webkit-gradient(linear,
        left top, left bottom,
        color-stop(0.00, #B8B8B7),
        color-stop(0.49, #9C9C9C),
        color-stop(0.50, #797979),
        color-stop(1.00, #656565)
    );
-webkit-gradient
    background: -webkit-gradient(linear,
        left top, left bottom,
        color-stop(0.00, #B8B8B7),
        color-stop(0.49, #9C9C9C),
        color-stop(0.50, #797979),
        color-stop(1.00, #656565)
    );
-webkit-border-radius
 -webkit-box-shadow
   -webkit-gradient
    -webkit-mask
  -webkit-transition
  -webkit-transform
  -webkit-animation
-webkit-mask
-webkit-mask
- Alpha-level based masks
-webkit-mask
- Alpha-level based masks
- Knock out portions of a box with a pattern (image,
  gradient, etc.)
-webkit-mask
- Alpha-level based masks
- Knock out portions of a box with a pattern (image,
  gradient, etc.)
- Works in a “layered” context:
-webkit-mask
- Alpha-level based masks
- Knock out portions of a box with a pattern (image,
  gradient, etc.)
- Works in a “layered” context:
   - mask
-webkit-mask
- Alpha-level based masks
- Knock out portions of a box with a pattern (image,
  gradient, etc.)
- Works in a “layered” context:
   - mask
   - border
-webkit-mask
- Alpha-level based masks
- Knock out portions of a box with a pattern (image,
  gradient, etc.)
- Works in a “layered” context:
   - mask
   - border
   - background
-webkit-mask
-webkit-mask
- Layers alpha channel masks on to objects
-webkit-mask
- Layers alpha channel masks on to objects
- Can clip complex shapes based on a grayscale
  image (even -webkit-gradient!)
-webkit-mask
- Layers alpha channel masks on to objects
- Can clip complex shapes based on a grayscale
  image (even -webkit-gradient!)
- A pain in the butt to use.
-webkit-mask
  -webkit-mask: attachment, clip, origin,
  image, repeat, composite, box-image;

-attachment: Allows the mask to scroll with the page
-clip: Extends mask into border
-origin: Mask’s anchor position
-image: The mask image
-repeat: Sets the mask’s ability to repeat
-composite: Extends mask into padding
-box-image: Sets a mask for a border box
-webkit-mask
 border: 1px solid #C0C8CC;
 border-left: 2px solid #C0C8CC;

 -webkit-border-top-right-radius: 6px;
          t
 -webkit-border-bottom-right-radius: 6px;

 -webkit-mask: no-repeat
     url(images/mask-btn-left.png);

 background-color: #B6BDC1;
 background:
     -webkit-gradient(linear,
       left bottom,
       left top,
       color-stop(0.48, #b5bcc0),
       color-stop(0.49, #c8d0d4),
       color-stop(0.50, #c0c8cc),
       color-stop(0.61, #d4dbdd),
       color-stop(1.00, #f4fcfe)
    );
-webkit-border-radius
 -webkit-box-shadow
   -webkit-gradient
    -webkit-mask
  -webkit-transition
  -webkit-transform
  -webkit-animation
-webkit-transition
-webkit-transition
- Basic CSS transition
-webkit-transition
- Basic CSS transition
- Specified by property
-webkit-transition
- Basic CSS transition
- Specified by property
- Similar (but simplified) timing functions to a
  tweening library
-webkit-transition
-webkit-transition: property duration
    timing_function delay;
-webkit-transition
-webkit-transition: property duration
    timing_function delay;

-webkit-transition-property: property;
-webkit-transition-duration: duration;
-webkit-transition-timing-
    function: timing_function;
-webkit-transition-delay: delay;
-webkit-transition
-webkit-transition
       #toDoInfo {
           position: absolute;
           left: 10px;
           top: -320px;
           z-index: 75;
           display: block;
           width: 300px;
           height: 320px;
           background: #B8B8B7;
           -webkit-border-radius: 10px;
           -webkit-transition: top .25s linear;
       }

       #toDoInfo.visible {
           top: 36px;
       }
-webkit-transition
-webkit-transition


  linear
-webkit-transition


  linear     ease
-webkit-transition


        linear   ease




ease-in-out
-webkit-transition


        linear              ease




ease-in-out      ease-out
-webkit-transition


        linear              ease




ease-in-out      ease-out     ease-in
-webkit-transition
-webkit-transition
- cubic-bezier() CSS Property function can create
  custom “tweens”
-webkit-transition
- cubic-bezier() CSS Property function can create
  custom “tweens”
-webkit-transition
- cubic-bezier() CSS Property function can create
  custom “tweens”


-webkit-transition-timing-function:
    cubic-bezier(p0x, p0y, p1x, p1y);
-webkit-border-radius
 -webkit-box-shadow
   -webkit-gradient
    -webkit-mask
  -webkit-transition
  -webkit-transform
  -webkit-animation
-webkit-transform
-webkit-transform
- Allows 3D and Flat transformations of objects
-webkit-transform
- Allows 3D and Flat transformations of objects
- Simple interface
-webkit-transform
- Allows 3D and Flat transformations of objects
- Simple interface
- Customizable (matrix) transformations
-webkit-transform
-webkit-transform: function(param);
-webkit-transform
 -webkit-transform: function(param);

  matrix          scale         translate
 matrix3d       scale3d       translate3d
                 scaleX        translateX
perspective      scaleY        translateY
                 scaleZ        translateZ
   rotate        skewX
 rotate3d        skewY
  rotateX
  rotateY
  rotateZ
-webkit-transform
 -webkit-transform: function(param);

  matrix          scale         translate
 matrix3d       scale3d       translate3d
                 scaleX        translateX
perspective      scaleY        translateY
                 scaleZ        translateZ
   rotate        skewX
 rotate3d        skewY
  rotateX
  rotateY
  rotateZ                  Example
-webkit-border-radius
 -webkit-box-shadow
   -webkit-gradient
    -webkit-mask
  -webkit-transition
  -webkit-transform
  -webkit-animation
-webkit-animation
-webkit-animation
- Explicit animation handled directly by CSS
-webkit-animation
- Explicit animation handled directly by CSS
- Repeated effects, keyframes
-webkit-animation
- Explicit animation handled directly by CSS
- Repeated effects, keyframes
- Uses an apple extension block (@-webkit-
  keyframes) to define the animation
-webkit-animation
- Explicit animation handled directly by CSS
- Repeated effects, keyframes
- Uses an apple extension block (@-webkit-
  keyframes) to define the animation

- “Normal” CSS to turn animation on
-webkit-animation
- Explicit animation handled directly by CSS
- Repeated effects, keyframes
- Uses an apple extension block (@-webkit-
  keyframes) to define the animation

- “Normal” CSS to turn animation on
                       Example
-webkit-animation
Simple animation setup:
@-webkit-keyframes bounce {
    from {
        left: 0px;
    }
    to {
        left: 200px;
    }
}
-webkit-animation
Simple animation setup:       Simple animation Trigger:
@-webkit-keyframes bounce {   div#bouncer {
    from {                      position: absolute;
        left: 0px;              -webkit-animation-name: bounce;
    }                           -webkit-animation-duration: 4s;
    to {                        -webkit-animation-iteration-count: 10;
        left: 200px;            -webkit-animation-direction: alternate;
    }                         }
}
Complex Animation Setup: Complex Animation Trigger:
@-webkit-keyframes pulseAndMove {   div#pulser {
    0% {                              position: absolute;
        background: #0F0;
                                      -webkit-animation-name: pulseAndMove;
        left: 0px;
        top: 0px;                     -webkit-animation-duration: 4s;
    }                                 -webkit-animation-iteration-count: 10;
   25% {                              -webkit-animation-direction: alternate;
        background: #F00;           }
        left: 20px;
        top: 20px;
    }
   50% {                                           Example
        background: #00F;
    }
   75% {
        background: #0FF;
        left: 50px;
        top: 50px;
    }
  100% {
        background: #F0F;
    }
}
...and everything else
...and everything else
- Just a taste
...and everything else
- Just a taste
- Apple is adding a lot more fine-grained control to CSS
...and everything else
- Just a taste
- Apple is adding a lot more fine-grained control to CSS

-webkit-background             -webkit-box
-webkit-marquee                -webkit-tap
-webkit-text                   -webkit-touch
-webkit-column
Tools
Tools
- CSS3 Gradient Builder
  http://gradients.glrzad.com (Damian built it!)
Tools
- CSS3 Gradient Builder
  http://gradients.glrzad.com (Damian built it!)
- Emulators:
  - iPhone — Native, easy to use
  - Android — Eclipse based, not easy to use
  - Palm Pre — VirtualBox image, easy to use, takes
    some time to install
Resources
Resources
- Safari CSS Reference Guide
  http://developer.apple.com/mac/library/
  documentation/AppleApplications/Reference/
  SafariCSSRef/Introduction.html
Resources
- Safari CSS Reference Guide
  http://developer.apple.com/mac/library/
  documentation/AppleApplications/Reference/
  SafariCSSRef/Introduction.html
- Safari Web Content Guide
  http://developer.apple.com/safari/library/
  documentation/AppleApplications/Reference/
  SafariWebContent/Introduction/Introduction.html
Resources
- Safari CSS Reference Guide
  http://developer.apple.com/mac/library/
  documentation/AppleApplications/Reference/
  SafariCSSRef/Introduction.html
- Safari Web Content Guide
  http://developer.apple.com/safari/library/
  documentation/AppleApplications/Reference/
  SafariWebContent/Introduction/Introduction.html
- Surfin’ Safari
  http://webkit.org/blog/
JavaScript?
JavaScript?
- A lot of new touch events
JavaScript?
- A lot of new touch events
- HTML / JS Client Side Storage
JavaScript?
- A lot of new touch events
- HTML / JS Client Side Storage
- GeoLocation API
JavaScript?
- A lot of new touch events
- HTML / JS Client Side Storage
- GeoLocation API


         NYC JS Meetup
         7pm, October 6, 2009
            Rebar, Dumbo
Thanks...
- Damian Galarza, Associate Developer
  Magnani Caruso Dutton


- Victor Vasquez, Associate Designer
  Magnani Caruso Dutton
Me: http://michaeltsmith.net
     Code: http://github.com/michaeltsmith
Slides: http://www.slideshare.net/michaeltsmith
         michael@michaeltsmith.net




 Thank you, very much.

Weitere ähnliche Inhalte

Kürzlich hochgeladen

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
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
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
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
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
 

Kürzlich hochgeladen (20)

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...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
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
 

Empfohlen

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Empfohlen (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Advanced HTML & CSS Techniques for Developing Webkit Mobile Applications