SlideShare a Scribd company logo
1 of 101
HTML5 and CSS3
Evolution & Adoption
 Chris Mills, Opera Software
Who the hell am I?
‣ Opera open standards evangelist and tech writer
‣ Telling the world about open standards & Opera
‣ Improving web education
‣ Drumming in a heavy metal band
Today I'll cover
‣ How HTML5 and CSS3 evolved
‣ Why they are good for web developers (and
  users!)
‣ New features in action
‣ When (and how) you can start using them
Where did they evolve from?




             http://www.flickr.com/photos/dyanna/3202542828/
Brief history: inception
‣ HTML first proposed around 1990/1 by Tim
  Berners-Lee
‣ CSS invented by Håkon Wium Lie and Bert Bos
  around 1994/5
Brief history:
standardisation
‣ HTML3 first standardised around 1995
‣ CSS1 rec published in 1996, CSS2 rec published
 in 1998
Brief history: ironing things
out
‣ CSS 2.1 mostly written by about 1999, to remove
  errors and inconsistencies (although this is still
  not *completely* finished)
‣ HTML 4.01 finished by 2001
Finished! What next?
There’s nothing wrong with
HTML4 and CSS2...




             http://www.flickr.com/photos/birdfarm/519230710/
But things don't stand still!
‣ People started to use HTML and CSS for things
  they weren't originally intended for:
 ‣ Applications
 ‣ Multi-column layouts
 ‣ Animations and interaction
‣ Browsers began to implement new features
‣ New browsing devices appeared
This lead to...
‣ Inefficiency
‣ Inaccessibility
‣ Inconsistency
‣ Incompatibility
CSS3
‣ CSS3 work started around the same time as
  CSS2.1
‣ Earliest CSS3 drafts published in June 1999
‣ As of March 2011, there are over 40 CSS3
  module drafts published
‣ Some a lot more stable than others
CSS3 designed to
‣ Build on top of existing CSS1/2 features
‣ Add more efficient, powerful solutions for
  common design problems
‣ Degrade gracefully where possible
HTML5
‣ W3C decided the future was XHTML
‣ This didn’t go down well, and no-one gave a rat’s
  ass about XHTML2
‣ HTML5 (was web applications 1.0) started by
  WHATWG in 2004ish
‣ Adopted by W3C 2008
‣ WHATWG version became versionless in 2011
HTML5 designed to...
‣ Be backwards compatible
‣ Add more efficient, powerful features to the
  language (markup and APIs)
‣ Compete with plugin technologies
‣ Be more in keeping with what web developers
  are really doing
HTML5 and CSS3 have
more bling!
             As if! Not publishing this one...
Why are HTML5 and CSS3
so good for us?




           http://www.flickr.com/photos/mafleen/3780072133/
We've done most of
this stuff before...




            http://www.flickr.com/photos/monkeytime/4120229885/
... so why should we care?




           http://www.flickr.com/photos/philliecasablanca/2816530573/
Many reasons!
‣ Less inconsistent, unsemantic, presentational
  markup
‣ Less time spent with JavaScript
‣ Less time spent dicking about with Flash
‣ Better accessibility built in
‣ Less time spent in Photoshop
‣ More time spent in the pub
New markup: better
semantics




            http://www.flickr.com/photos/zscheyge/49012397/
Typical website structure
<div
id="header"></div>
<div
id="nav"></div>
<div
id="main">


<div
class="article"></div>


<div
class="article"></div>




...
</div>
<div
id="footer"></div>
Most common classes and
IDs?
Ian Hickson did a study at Google of the most
common classes/IDs on the Web. So did Opera
‣ http://code.google.com/webstats/2005-12/
  classes.html
‣ http://devfiles.myopera.com/articles/572/idlist-
  url.htm
‣ http://devfiles.myopera.com/articles/572/
  classlist-url.htm
Most common IDs
Most common classes
The HTML5 shizzle
<header></header>
<nav></nav>
<section
id="main">


<article></article>


<article></article>




...
</section>
<footer></footer>
<aside>
<aside>


<h2>About
the
author</h2>

 

<p>Chris
Mills
is
a
front‐end
bling
junkie





working
for
Opera
Software...</p>
</aside>
<time>
<p>Article
published
on
the



<time
datetime="2011‐03‐12T09:48"
pubdate>




12th
March
2011,
at
9:48am


</time>
</p>
<hgroup>
<hgroup>


<h1>Top
level
heading</h1>


<h2>This
is
a
really
descriptive
subtitle</h2>
</hgroup>
<figure> and <figcaption>
<figure>


<img
src="bear.jpg"







alt="this
is
the
bear
that
I
wrestled"
/>


<figcaption>This
is
the
bear
that
I


wrestled.</figcaption>
</figure>
Where does this leave the
humble <div>?
Use it for anything that isn’t covered by other new
elements, and is just a general grouping, e.g. for
styling purposes, for which you don’t want to
create a new section. An intro <div>, perhaps?
The HTML5 outlining
algorithm
Heading/section hierarchy based on sectioning
element hierarchy, not <hx> elements used
‣ No longer limited to six heading levels
‣ Hierarchy stays correct when syndicated
‣ You can retain HTML4 heading levels for
 backwards compatibility
The HTML5 outlining
algorithm
<h1>My
title</h1>
<div>


<h2>My
subtitle</h2>
</div>

<h1>My
title</h1>
<section>


<h2>My
subtitle</h2>
</section>
Lax syntax?
Some say that HTML5 syntax is really lax — you:
‣ don’t need to quote or self-close attributes
‣ can minimize attributes
‣ Have a really small doctype: <!doctype
html>
‣ can mix upper and lower case
‣ You don’t even need to include <html>, <head>
 and <body>!
Lax syntax?
This more accurately reflects what real developers
do, rather than what the XHTML spec THINKS they
should
‣ You can use the style you want (although you
  should stick to some best practices)
‣ The browser fills in a lot of this stuff
‣ The HTML5 spec defines how errors should be
  handled
Less Flash, more control:
<video>, web fonts and
more!




             http://www.flickr.com/photos/zscheyge/49012397/
<video> and <audio>
New elements, plus new API for controlling audio
and video
The old school way
<object
width="425"
height="344">
<param
name="movie"

value="http://www.example.com/
v/LtfQg4KkR88&hl=en&fs=1"></param>
<param
name="allowFullScreen"
value="true"></param>
<embed
src="http://www.example.com/v/
LtfQg4KkR88&hl=en&fs=1"


type="application/x‐shockwave‐flash"


allowfullscreen="true"
width="425"

height="344"></embed>
</object>
The badass sexy new way
<video
width="480px"







height="283px"







controls







poster="poster.png">


<source
src="video.mp4"
type="video/mp4">


<source
src="video.webm"
type="video/webm">


<p>Your
browser
doesn’t
support
HTML5
video.
<a

href="video.webm">Download
the
video
instead</a>.</
p>
</video>
Native video rocks!
‣ Plays nicely with other open standards
‣ Better accessibility features
‣ Don't need to use Flash
‣ API for easy customization
Web fonts
‣ Download custom fonts along with your web
  pages
‣ Solve our typography nightmares, without having
  to worry about hackish solutions like siFR and
  Cufon
Include the font
@font‐face
{


font‐family:
'ActionIsRegular';


src:
url('actionis‐webfont.eot?')
format('eot'),







url('actionis‐webfont.woff')
format('woff'),







url('actionis‐webfont.ttf')

format('truetype'),







url('actionis‐webfont.svg#webfontg3JxrxOm')

format('svg');


font‐weight:
normal;


font‐style:
normal;
}
Then use it in your page as
normal
p
{


font‐family:
“My
font”;
}
Going offline




                http://www.flickr.com/photos/zscheyge/49012397/
Offline apps!
‣ Generally, the web doesn't work very well
  without a web connection!
‣ What can we do about this?
Offline applications
‣ AppCache: Save an offline version of your web
  page files and use those to display your web
  page when you lose network.
‣ Web storage: Like cookies, but more powerful.
  Store things such as form data and user
  preferences
‣ WebSQL: A fully-functioning database in your
  browser. Store a user's data so they can
  continue working with it when the network goes
  down
Offline applications
‣ For more information, check out http://
 dev.opera.com/articles/view/taking-your-web-
 apps-offline-web-storage-appcache-websql/
Scriptable graphics with
<canvas>
<canvas>
Scriptable graphics
‣ Standard API for drawing
‣ Supporting across all modern browsers
The basic idea
<canvas
id="canvas"
width="400"
height="300">


...fallback...
</canvas>
<canvas> examples
‣ http://dev.opera.com/articles/view/html-5-
  canvas-the-basics/
‣ http://ejohn.org/blog/processingjs/
‣ http://www.hakim.se/experiments/
‣ http://www.canvasdemos.com/
‣ http://people.opera.com/patrickl/experiments/
  canvas/particle/3/
Cutting down on Photoshop
We need less Photoshop!
Doing things programmatically is so much more
flexible.

Classic examples:
 ‣ Drop shadows
 ‣ Gradients
 ‣ Rounded corners
 ‣ Transparency
Examples
div
{


text‐shadow:
black
3px
3px
5px;


box‐shadow:
black
4px
4px
5px;


background‐image:
‐o‐linear‐gradient(top


left,rgba(0,0,0,0),rgba(0,0,0,0.6));


background‐color:
rgb(204,204,204);


border‐radius:
10px;


//
opacity:
0.6;
}
Less JavaScript needed
with HTML5 forms




            http://www.flickr.com/photos/zscheyge/49012397/
HTML5 forms
Filling up the gaps in HTML4 (and so cutting down
on JS and hacks) with:
‣ More powerful form controls
‣ Built-in validation
Not relying on JS can mean smaller downloads,
and better compatibility
Date-time controls
<input
type=date>
<input
type=datetime>
<input
type=week>
<input
type=month>
color
<input
type=color>
Datalist
<input
type=text
list=mydata>
<datalist
id=mydata>


<option
label=Mr
value=Mister>


<option
label=Mrs
value=Mistress>


<option
label=Ms
value=Miss>
</datalist>
Other new input types
<input
type=email>
<input
type=url>
<input
type=tel>
Validation
Form validation used to be horrendous

var
elements
=
document.getElementsByTagName('input');





//
loop
through
all
input
elements
in
form



for(var
i
=
0;
i
<
elements.length;
i++)
{








Who wants to write this?



//
check
if
element
is
mandatory;
ie
has
a
pattern






var
pattern
=
elements.item(i).getAttribute('pattern');





if
(pattern
!=
null)
{







var
value
=
elements.item(i).value;









//
validate
the
value
of
this
element,
using
its
defined
pattern







var
offendingChar
=
value.match(pattern);









//
if
an
invalid
character
is
found
or
the
element
was
left
empty







if(offendingChar
!=
null
||
value.length
==
0)
{











//
add
up
all
error
messages









str
+=
elements.item(i).getAttribute('errorMsg')
+
"n"
+
















"Found
this
illegal
value:
'"
+
offendingChar
+
"'
n";











//
notify
user
by
changing
background
color,
in
this
case
to
red









elements.item(i).style.background
=
"red";








}





}



}






if
(str
!=
"")
{





//
do
not
submit
the
form





alert("ERROR
ALERT!!n"
+str);






return
false;


HTML5 gives you...
<input
type=text
required








pattern="[A‐z]{1,20}
[A‐z]{1,20}">
Other new attributes
autofocus
placeholder
min
max
step
New output mechanisms
<output>

<progress>

<meter>
CSS form pseudo-classes
input:valid
{
...
}

input:invalid
{
...
}

input:checked
{
...
}
Controlling behaviour with
CSS...
...again, means less
JavaScript
Designers don't like scripting!

Obvious behavioural stuff:
 ‣ Animation
 ‣ Showing/hiding
Animation
‣ CSS keyframe animations allow you to create
  animations that run independently
‣ Transitions allow animation that is dependant
  on state changes
Showing/hiding
‣ :target pseudo-class: apply CSS depending on
  whether the element selected is the target of a
  fragment identifier
‣ So when links are clicked you could make
  panels, etc. appear.
Controlling layouts
Controlling layouts
‣ Media queries allow you to apply CSS
  depending on browser/device attributes such
  as resolution, screen width and height, etc.
‣ Viewport allows you to customise the initial
  display of your pages on mobile devices
‣ Multi-column layout allows you to easily put
  your content into columns
Media queries
Media types on steroids
‣ Apply CSS depending on value of certain media
  features
‣ (http://people.opera.com/danield/css3/vangogh/
  index.php)
‣ http://mediaqueri.es
Media features
         width              color
        height           color-index
     device-width        monochrome
    device-height         resolution
      orientation           scan
     aspect-ratio            grid
   device-aspect-ratio
mediaqueri.es
mediaqueri.es
Viewport
‣ Meta tag introduced by Apple to control display
  of web apps on the iPhone
‣ Adopted by other vendors too
‣ Control initial zoom level, maximum zoom, width
  or displayed area, etc.
‣ Functionality available as CSS @-rule too
‣ http://dev.opera.com/articles/view/an-
  introduction-to-meta-viewport-and-viewport/
Viewport: the premise
‣ It's all about physical versus virtual pixels
‣ Desktop computers are fairly simple
‣ But mobiles lie
‣ Viewport suggests sizing to mobiles
Viewport example
<meta
name="viewport"

content="width=480">

<meta
name="viewport"

content="width=480,
user‐scalable=no">
Viewport properties

       width         initial-scale


       height       minimum-scale


    user-scalable   maximum-scale
CSS viewport
@viewport
{


width:
device‐width;
}

@viewport
{


width:
320px;


zoom:
2.3;


user‐zoom:
fixed;
}
CSS viewport properties
    width/min-width/
                        user-zoom
       max-width

   height/min-height/
                        orientation
       max-height

    zoom/min-zoom/
       max-zoom
CSS multi-col
div
{


column‐width:
100px;


column‐count:
4;


column‐gap:
20px;


column‐rule:
2px
solid
#33c;
}

section
{


break‐after:
column;
}
Less presentational markup
Less presentational markup
‣ CSS3 includes a wide variety of new selectors
  to allow you to select what you want more
  easily, with less classes/ids
‣ Features like multiple background images and
  rounded corners allow you to get rid of some of
  those nested divisions!
CSS3 selectors
[attr*=str]       :nth‐last‐of‐type(n)
[attr^=str]       :nth‐last‐child(n)
[attr~=str]       :only‐child
:first‐child      :only‐of‐type
:last‐child       :checked
:first‐of‐type    :valid
:last‐of‐type     :invalid
:nth‐child(n)     :enabled       :target
:nth‐of‐type(n)   :disabled      And
more!
Multiple backgrounds
header
{


background:
url(icon.gif)
top
left
no‐repeat,














url(pattern.jpg)
repeat,














url(center‐spine.png)
top
center














repeat‐y;


}
When (and how) can we
start using these tools?




               http://www.flickr.com/photos/bre/552152780/
We've already looked at the
spec development history
‣ But what really matters?
Browser adoption
‣ The specs don't matter if the browsers don't
  follow them consistently
‣ We don't have a browser war anymore like the
  days of old
‣ But there is still lots of competition
Developer adoption
‣ Browser adoption doesn't matter if developers
  don't care...
‣ ...although more often this isn't exactly the case
‣ Often we are not in the position to use new
  features
Stuck between a rock and a
hard place
‣ Older browsers don't support this stuff
‣ Some of us are forced to support them
‣ Many clients are still obsessed with "pixel perfect
 layouts" across all browsers
However...
‣ ...most browsers support most of this stuff now,
  even IE9!
‣ (well, the semantic elements need a little help,
  but not much)
‣ Most of it degrades gracefully
‣ And you can work around problems
‣ Depends on what your client needs
‣ By "identical", how similar do you mean??
Try to argue the case...
..."identical in every browser" is outdated
‣ Especially with mobile phones, iPad, tablets...
‣ And IE6 is a decade old now
‣ Flash doesn't even work on iDevices!
‣ Surely providing an acceptable experience in
   each browser is, well, acceptable?
‣ Then you can spend more less time on hacking
Selectivizr
CSS3 pie
Modernizr
I say use them now, as
much as possible!




             http://www.flickr.com/photos/ilamont/5538511847/
Thanks for listening!
‣ cmills@opera.com
‣ @chrisdavidmills
‣ http://dev.opera.com
‣ http://www.opera.com/wsc

More Related Content

Viewers also liked

Viewers also liked (9)

Accelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
Accelerated Adoption: HTML5 and CSS3 for ASP.NET DevelopersAccelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
Accelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
 
HTML5, CSS3, and JavaScript
HTML5, CSS3, and JavaScriptHTML5, CSS3, and JavaScript
HTML5, CSS3, and JavaScript
 
Responsive Webdesign
Responsive WebdesignResponsive Webdesign
Responsive Webdesign
 
Introduction to HTML5 & CSS3
Introduction to HTML5 & CSS3Introduction to HTML5 & CSS3
Introduction to HTML5 & CSS3
 
Responsive web designing ppt(1)
Responsive web designing ppt(1)Responsive web designing ppt(1)
Responsive web designing ppt(1)
 
Introduction to Responsive Web Design
Introduction to Responsive Web DesignIntroduction to Responsive Web Design
Introduction to Responsive Web Design
 
The HTML5 WebSocket API
The HTML5 WebSocket APIThe HTML5 WebSocket API
The HTML5 WebSocket API
 
Design Process in the Responsive Age
Design Process in the Responsive AgeDesign Process in the Responsive Age
Design Process in the Responsive Age
 
Building Rich Mobile Apps with HTML5, CSS3 and JavaScript
Building Rich Mobile Apps with HTML5, CSS3 and JavaScriptBuilding Rich Mobile Apps with HTML5, CSS3 and JavaScript
Building Rich Mobile Apps with HTML5, CSS3 and JavaScript
 

More from Chris Mills

Empowering the "mobile web"
Empowering the "mobile web"Empowering the "mobile web"
Empowering the "mobile web"
Chris Mills
 
Documentation and publishing
Documentation and publishingDocumentation and publishing
Documentation and publishing
Chris Mills
 

More from Chris Mills (20)

More efficient, usable web
More efficient, usable webMore efficient, usable web
More efficient, usable web
 
Feedback handling, community wrangling, panhandlin’
Feedback handling, community wrangling, panhandlin’Feedback handling, community wrangling, panhandlin’
Feedback handling, community wrangling, panhandlin’
 
APIs for modern web apps
APIs for modern web appsAPIs for modern web apps
APIs for modern web apps
 
APIs, now and in the future
APIs, now and in the futureAPIs, now and in the future
APIs, now and in the future
 
Guerrilla education
Guerrilla educationGuerrilla education
Guerrilla education
 
Web versus Native: round 1!
Web versus Native: round 1!Web versus Native: round 1!
Web versus Native: round 1!
 
BrazilJS MDN
BrazilJS MDNBrazilJS MDN
BrazilJS MDN
 
Empowering the "mobile web"
Empowering the "mobile web"Empowering the "mobile web"
Empowering the "mobile web"
 
Documentation and publishing
Documentation and publishingDocumentation and publishing
Documentation and publishing
 
MDN is easy!
MDN is easy!MDN is easy!
MDN is easy!
 
Getting rid of images with CSS
Getting rid of images with CSSGetting rid of images with CSS
Getting rid of images with CSS
 
Future layouts
Future layoutsFuture layouts
Future layouts
 
Laying out the future
Laying out the futureLaying out the future
Laying out the future
 
Accessibility doesn't exist
Accessibility doesn't existAccessibility doesn't exist
Accessibility doesn't exist
 
Responsive web design standards?
Responsive web design standards?Responsive web design standards?
Responsive web design standards?
 
Adapt! Media queries and viewport
Adapt! Media queries and viewportAdapt! Media queries and viewport
Adapt! Media queries and viewport
 
Adapt and respond: keeping responsive into the future
Adapt and respond: keeping responsive into the futureAdapt and respond: keeping responsive into the future
Adapt and respond: keeping responsive into the future
 
Angels versus demons: balancing shiny and inclusive
Angels versus demons: balancing shiny and inclusiveAngels versus demons: balancing shiny and inclusive
Angels versus demons: balancing shiny and inclusive
 
HTML5 and CSS3: does now really mean now?
HTML5 and CSS3: does now really mean now?HTML5 and CSS3: does now really mean now?
HTML5 and CSS3: does now really mean now?
 
The W3C and the web design ecosystem
The W3C and the web design ecosystemThe W3C and the web design ecosystem
The W3C and the web design ecosystem
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Recently uploaded (20)

[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
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...
 
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...
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
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, ...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 

HTML5 and CSS3: evolution and adoption

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n
  97. \n
  98. \n
  99. \n
  100. \n
  101. \n