SlideShare une entreprise Scribd logo
1  sur  98
Télécharger pour lire hors ligne
Intro to @viewport & other new
Responsive Web Design CSS features
Andreas Bovens | Opera Software | @andreasbovens | #SOTB4
What have we been up to?
Opera for Android
phones & tablets
Opera for
Windows & Mac
Opera Mini for
Java & BlackBerry
Opera Max for Android
http://operasoftware.github.io/upstreamtools/
Four new CSS features to optimize
websites for different devices.
Four new CSS features to optimize
websites for different devices.
@viewport
viewport-percentage lengths
resolution media queries
object-fit & object-position
CSS image values
’00
How did we get here?
’10
’00
fluid layouts
basic html
’10
’00
fluid layouts
fixed layouts
basic html
tables & lots of hacks
’10
’00
fluid layouts
fixed layouts
basic html
tables & lots of hacks
fixed CSS widths
’10
’00
fluid layouts
fixed layouts
liquid / fluid layouts
basic html
tables & lots of hacks
fixed CSS widths
%, em-based CSS widths, 

max/min-widths
’10
’00
fluid layouts
fixed layouts
liquid / fluid layouts
responsive web design
basic html
tables & lots of hacks
fixed CSS widths
%, em-based CSS widths, 

max/min-widths
%, em-based CSS widths, 

max/min-widths,
media queries and more
’10
responsive web designexample
’00 ’10
on Google Trends
responsive web design
’00 ’10
but interestingly enough, it’s not such a new idea…
on Google Trends
responsive web design
Karl Gerstner
“Programme entwerfen”
’64
“Gerstner defined a design “programme” as a set of rules for constructing a
range of visual solutions. Connecting his methodology with the new field of
computer programming, Gerstner presented examples of computer-
generated patterns that were made by mathematically describing visual
elements and combining them according to simple rules.”
!
— Ellen Lupton, Thinking with Type (2nd edition), 2010, Princeton Architectural Press, p165
Karl Gerstner, Programme entwerfen, 2007. Copyright 2007 Lars Müller Publishers — used with kind permission.
FFWD to today
Image from http://www.html5rocks.com/en/tutorials/tooling/synchronized-cross-device-testing/ by Addy Osmani for HTML5 Rocks. CC-BY 3.0.
media queries + meta viewport
media queries + meta viewport
article, aside {width: 100%;}
@media screen and (min-width: 480px) {
article {float: left; width: 68%;}
aside {float: right; width: 30%;}
}
@media screen and (min-width: 800px) {
article {padding: 20px;}
}
Dealbreaker…
Dealbreaker…
Mobile browsers apply a default
zoom to deal with legacy web
pages…
Dealbreaker…
Mobile browsers apply a default
zoom to deal with legacy web
pages…
Dealbreaker…
Mobile browsers apply a default
zoom to deal with legacy web
pages…
Triggering “wrong” media queries…
to the rescuemeta viewport
<meta name="viewport"
content="width=device-width">
to the rescuemeta viewport
<meta name="viewport"
content="width=device-width">
article, aside {width: 100%;}
@media screen and (min-width: 480px) {
article {float: left; width: 68%;}
aside {float: right; width: 30%;}
}
@media screen and (min-width: 800px) {
article {padding: 20px;}
}
meta viewportmedia queries +
<meta name="viewport"
content="width=device-width">
applied on screens
with width >= 800px
article, aside {width: 100%;}
@media screen and (min-width: 480px) {
article {float: left; width: 68%;}
aside {float: right; width: 30%;}
}
@media screen and (min-width: 800px) {
article {padding: 20px;}
}
meta viewportmedia queries +
<meta name="viewport"
content="width=device-width">
applied on screens
with width < 800px
article, aside {width: 100%;}
@media screen and (min-width: 480px) {
article {float: left; width: 68%;}
aside {float: right; width: 30%;}
}
@media screen and (min-width: 800px) {
article {padding: 20px;}
}
meta viewportmedia queries +
<meta name="viewport"
content="width=device-width">
applied on screens
with width < 480px
article, aside {width: 100%;}
@media screen and (min-width: 480px) {
article {float: left; width: 68%;}
aside {float: right; width: 30%;}
}
@media screen and (min-width: 800px) {
article {padding: 20px;}
}
meta viewportmedia queries +
<meta name="viewport"
content="width=device-width">
by setting 1:1 zoom,
media queries are
triggered as intended!
article, aside {width: 100%;}
@media screen and (min-width: 480px) {
article {float: left; width: 68%;}
aside {float: right; width: 30%;}
}
@media screen and (min-width: 800px) {
article {padding: 20px;}
}
meta viewportmedia queries +
After it was introduced in Safari, support for
viewport meta also landed in Opera,
Android browser, Firefox, Chrome, etc.
meta viewport
nice, but it’s not a real standard…
Safari had a long-time, infamous
scaling bug when changing orientation.
it’snota
realstandard…
Browser makers have to support both
comma & semicolon delimiters as everyone
mixes them up.
;
it’snota
realstandard…
Certain viewport edge cases are handled
differently by each browser.
it’snota
realstandard…
Certain properties are not supported
everywhere:
e.g. user-scalable=yes|no
it’snota
realstandard…
Android browser (& later Opera) added a
target-densitydpi property, which
was later discontinued.
it’snota
realstandard…
Internet Explorer interpretes
width=device-width as
width=320 for compatibility reasons.
it’snota
realstandard…
Safari on iPad applies a 1.333× zoom in
landscape mode even although
width=device-width is set.
it’snota
realstandard…
width=device-width, initial-scale=1
forces a 1× zoom. Say what?
it’snota
realstandard…Safari on iPad applies a 1.333× zoom in
landscape mode even although
width=device-width is set.
And when we thought things were
stable, Safari introduced a new,
minimal-ui property.
it’snota
realstandard…
You get the idea…
it’snota
realstandard…
So, we thought (in 2011):
Why not make a CSS spec for this?
Yes,
 CSS,
 because
 it’s
 layout!
So, we thought (in 2011):
Why not make a CSS spec for this?
CSS Device Adaptation / @viewport
Yes,
 CSS,
 because
 it’s
 layout!
So, we thought (in 2011):
Why not make a CSS spec for this?
http://dev.w3.org/csswg/css-device-adapt/
meta name=viewport content=width=device-width
@viewport {
width: auto;
}
Corresponds to
meta name=viewport
content=width=device-width, initial-scale=2
@viewport {
width: auto;
zoom: 2.0;
}
Corresponds to
meta name=viewport
content=width=device-width, user-scalable=no
@viewport {
width: auto;
user-zoom: fixed;
}
Corresponds to
meta name=viewport
content=width=device-width, user-scalable=yes
@viewport {
width: auto;
user-zoom: zoom;
}
Corresponds to
for widths up to 400px:
meta name=viewport content=width=400
for widths larger than 400px:
meta name=viewport content=width=device-width
Corresponds to
@viewport {
width: 400px auto;
}
meta name=viewport content=width=device-width
and page orientation is locked to landscape.
@viewport {
width: auto;
orientation: landscape;
}
Corresponds to
To try it out, turn on “experimental
web platform features” in
opera:flags or chrome:flags.
resolution media queries
https://en.wikipedia.org/wiki/List_of_displays_by_pixel_density
What’s in a (CSS) pixel?
1 device px
What’s in a (CSS) pixel?
Macbook Aire.g.
1 device px 2,25 device px
What’s in a (CSS) pixel?
Macbook Aire.g. HTC Desire
1 device px 2,25 device px 4 device px
What’s in a (CSS) pixel?
Macbook Aire.g. HTC Desire iPhone 4
1 device px 2,25 device px 4 device px 9 device px
What’s in a (CSS) pixel?
Macbook Aire.g. HTC Desire iPhone 4 HTC One
1 device px 2,25 device px 4 device px 9 device px
What’s in a (CSS) pixel?
this makes graphics look blurry…
(unless you serve oversized ones that are scaled down)
1 device px 2,25 device px 4 device px 9 device px
this makes graphics look blurry…
(responsive image spec)
hence:
1 device px 2,25 device px 4 device px 9 device px
this makes graphics look blurry…
resolution media queries
hence:
(responsive image spec)
1 device px 2,25 device px 4 device px 9 device px
1 dppx 1,5 dppx 2 dppx 3 dppx
What’s in a (CSS) pixel?
(can) use dots per ‘px’ unitsresolution media queries
body {background: url(bg.png) 0 0 repeat;}
@media (screen and min-resolution: 2dppx) {
body {background-size: 50% !important;}
}
@media (screen and min-resolution: 3dppx) {
body {background-size: 33.3% !important;}
}
resolution media queries
body {background: url(bg.png) 0 0 repeat;}
@media (screen and min-resolution: 2dppx) {
body {background-size: 50% !important;}
}
@media (screen and min-resolution: 3dppx) {
body {background-size: 33.3% !important;}
}
resolution media queries
Pattern from http://subtlepatterns.com/tree-bark/ by Getdiscount. CC-BY-SA 2.0.
body {background: url(bg.png) 0 0 repeat;}
@media (screen and min-resolution: 2dppx) {
body {background-size: 50% !important;}
}
@media (screen and min-resolution: 3dppx) {
body {background-size: 33.3% !important;}
}
resolution media queries
body {background: url(bg.png) 0 0 repeat;}
@media (screen and min-resolution: 2dppx) {
body {background-size: 50% !important;}
}
@media (screen and min-resolution: 3dppx) {
body {background-size: 33.3% !important;}
}
resolution media queries
resolution media queries
Very useful to optimize background
graphics and other resources for hi-dpi
screens.
If this looks familiar…
It’s very similar to device-pixel-ratio,
but resolution is standardized, and
comes without quirky vendor prefixes.
!
However, for now, use both…
http://www.w3.org/TR/css3-values/#resolutionhttp://www.w3.org/TR/css3-mediaqueries/#resolution
object-fit  object-position CSS image values
Photo from https://secure.flickr.com/photos/61508583@N02/10873650644/ by Butz.2013. CC-BY 2.0.
eh…
img {
object-fit: fill;
}
img {
object-fit: contain;
}
img {
object-fit: cover;
overflow: hidden;
}
img {
object-fit: cover;
overflow: hidden;
object-position: 20% 50%;
}
img {
object-fit: cover;
overflow: hidden;
object-position: 60% 50%;
}
Very useful to make small adjustments to images.
Note: there is some overlap here with responsive
image use cases. Best practices need to emerge.
http://dev.w3.org/csswg/css-images-3/#the-object-fit
viewport-percentage lengths
100 × 100

Contenu connexe

Tendances

A frame beginner lesson
A frame beginner lessonA frame beginner lesson
A frame beginner lessonDaosheng Mu
 
Integrate CI/CD Pipelines with Jira Software Cloud
Integrate CI/CD Pipelines with Jira Software CloudIntegrate CI/CD Pipelines with Jira Software Cloud
Integrate CI/CD Pipelines with Jira Software CloudAtlassian
 
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScriptjQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScriptGuy Royse
 
Empowering the "mobile web"
Empowering the "mobile web"Empowering the "mobile web"
Empowering the "mobile web"Chris Mills
 
Web versus Native: round 1!
Web versus Native: round 1!Web versus Native: round 1!
Web versus Native: round 1!Chris Mills
 
APIs, now and in the future
APIs, now and in the futureAPIs, now and in the future
APIs, now and in the futureChris Mills
 
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점Jeado Ko
 
Bootstrap과 UI-Bootstrap
Bootstrap과 UI-BootstrapBootstrap과 UI-Bootstrap
Bootstrap과 UI-BootstrapWebFrameworks
 
Yearning jQuery
Yearning jQueryYearning jQuery
Yearning jQueryRemy Sharp
 
Responsive Web Design e a Ubiquidade da Web
Responsive Web Design e a Ubiquidade da WebResponsive Web Design e a Ubiquidade da Web
Responsive Web Design e a Ubiquidade da WebEduardo Shiota Yasuda
 
The DOM is a Mess @ Yahoo
The DOM is a Mess @ YahooThe DOM is a Mess @ Yahoo
The DOM is a Mess @ Yahoojeresig
 
SenchaCon 2016: Want to Use Ext JS Components with Angular 2? Here’s How to I...
SenchaCon 2016: Want to Use Ext JS Components with Angular 2? Here’s How to I...SenchaCon 2016: Want to Use Ext JS Components with Angular 2? Here’s How to I...
SenchaCon 2016: Want to Use Ext JS Components with Angular 2? Here’s How to I...Sencha
 
Symfony tips and tricks
Symfony tips and tricksSymfony tips and tricks
Symfony tips and tricksJavier Eguiluz
 
Introduction to WebGL and WebVR
Introduction to WebGL and WebVRIntroduction to WebGL and WebVR
Introduction to WebGL and WebVRDaosheng Mu
 
How to ship customer value faster with step functions
How to ship customer value faster with step functionsHow to ship customer value faster with step functions
How to ship customer value faster with step functionsYan Cui
 
Web Frontend development: tools and good practices to (re)organize the chaos
Web Frontend development: tools and good practices to (re)organize the chaosWeb Frontend development: tools and good practices to (re)organize the chaos
Web Frontend development: tools and good practices to (re)organize the chaosMatteo Papadopoulos
 
jQuery Anti-Patterns for Performance & Compression
jQuery Anti-Patterns for Performance & CompressionjQuery Anti-Patterns for Performance & Compression
jQuery Anti-Patterns for Performance & CompressionPaul Irish
 
jQuery from the very beginning
jQuery from the very beginningjQuery from the very beginning
jQuery from the very beginningAnis Ahmad
 
An in-depth look at jQuery
An in-depth look at jQueryAn in-depth look at jQuery
An in-depth look at jQueryPaul Bakaus
 
Massimo Artizzu - The tricks of Houdini: a magic wand for the future of CSS -...
Massimo Artizzu - The tricks of Houdini: a magic wand for the future of CSS -...Massimo Artizzu - The tricks of Houdini: a magic wand for the future of CSS -...
Massimo Artizzu - The tricks of Houdini: a magic wand for the future of CSS -...Codemotion
 

Tendances (20)

A frame beginner lesson
A frame beginner lessonA frame beginner lesson
A frame beginner lesson
 
Integrate CI/CD Pipelines with Jira Software Cloud
Integrate CI/CD Pipelines with Jira Software CloudIntegrate CI/CD Pipelines with Jira Software Cloud
Integrate CI/CD Pipelines with Jira Software Cloud
 
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScriptjQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
 
Empowering the "mobile web"
Empowering the "mobile web"Empowering the "mobile web"
Empowering the "mobile web"
 
Web versus Native: round 1!
Web versus Native: round 1!Web versus Native: round 1!
Web versus Native: round 1!
 
APIs, now and in the future
APIs, now and in the futureAPIs, now and in the future
APIs, now and in the future
 
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점
 
Bootstrap과 UI-Bootstrap
Bootstrap과 UI-BootstrapBootstrap과 UI-Bootstrap
Bootstrap과 UI-Bootstrap
 
Yearning jQuery
Yearning jQueryYearning jQuery
Yearning jQuery
 
Responsive Web Design e a Ubiquidade da Web
Responsive Web Design e a Ubiquidade da WebResponsive Web Design e a Ubiquidade da Web
Responsive Web Design e a Ubiquidade da Web
 
The DOM is a Mess @ Yahoo
The DOM is a Mess @ YahooThe DOM is a Mess @ Yahoo
The DOM is a Mess @ Yahoo
 
SenchaCon 2016: Want to Use Ext JS Components with Angular 2? Here’s How to I...
SenchaCon 2016: Want to Use Ext JS Components with Angular 2? Here’s How to I...SenchaCon 2016: Want to Use Ext JS Components with Angular 2? Here’s How to I...
SenchaCon 2016: Want to Use Ext JS Components with Angular 2? Here’s How to I...
 
Symfony tips and tricks
Symfony tips and tricksSymfony tips and tricks
Symfony tips and tricks
 
Introduction to WebGL and WebVR
Introduction to WebGL and WebVRIntroduction to WebGL and WebVR
Introduction to WebGL and WebVR
 
How to ship customer value faster with step functions
How to ship customer value faster with step functionsHow to ship customer value faster with step functions
How to ship customer value faster with step functions
 
Web Frontend development: tools and good practices to (re)organize the chaos
Web Frontend development: tools and good practices to (re)organize the chaosWeb Frontend development: tools and good practices to (re)organize the chaos
Web Frontend development: tools and good practices to (re)organize the chaos
 
jQuery Anti-Patterns for Performance & Compression
jQuery Anti-Patterns for Performance & CompressionjQuery Anti-Patterns for Performance & Compression
jQuery Anti-Patterns for Performance & Compression
 
jQuery from the very beginning
jQuery from the very beginningjQuery from the very beginning
jQuery from the very beginning
 
An in-depth look at jQuery
An in-depth look at jQueryAn in-depth look at jQuery
An in-depth look at jQuery
 
Massimo Artizzu - The tricks of Houdini: a magic wand for the future of CSS -...
Massimo Artizzu - The tricks of Houdini: a magic wand for the future of CSS -...Massimo Artizzu - The tricks of Houdini: a magic wand for the future of CSS -...
Massimo Artizzu - The tricks of Houdini: a magic wand for the future of CSS -...
 

Similaire à Intro to @viewport & other new Responsive Web Design CSS features

The specs behind the sex, mobile-friendly layout beyond the desktop
The specs behind the sex, mobile-friendly layout beyond the desktopThe specs behind the sex, mobile-friendly layout beyond the desktop
The specs behind the sex, mobile-friendly layout beyond the desktopbetabeers
 
Responsive Websites
Responsive WebsitesResponsive Websites
Responsive WebsitesJoe Seifi
 
CSS3 Media Queries: Mobile Elixir or CSS Snake Oil
CSS3 Media Queries: Mobile Elixir or CSS Snake OilCSS3 Media Queries: Mobile Elixir or CSS Snake Oil
CSS3 Media Queries: Mobile Elixir or CSS Snake Oiljameswillweb
 
Responsive Web Design: Clever Tips and Techniques
Responsive Web Design: Clever Tips and TechniquesResponsive Web Design: Clever Tips and Techniques
Responsive Web Design: Clever Tips and TechniquesVitaly Friedman
 
Meta layout: a closer look at media queries
Meta layout: a closer look at media queriesMeta layout: a closer look at media queries
Meta layout: a closer look at media queriesStephen Hay
 
Responsive web design
Responsive web designResponsive web design
Responsive web designBen MacNeill
 
Responsive design: techniques and tricks to prepare your websites for the mul...
Responsive design: techniques and tricks to prepare your websites for the mul...Responsive design: techniques and tricks to prepare your websites for the mul...
Responsive design: techniques and tricks to prepare your websites for the mul...Andreas Bovens
 
Adaptive layouts - standards>next Manchester 23.03.2011
Adaptive layouts - standards>next Manchester 23.03.2011Adaptive layouts - standards>next Manchester 23.03.2011
Adaptive layouts - standards>next Manchester 23.03.2011Patrick Lauke
 
Pinkoi Mobile Web
Pinkoi Mobile WebPinkoi Mobile Web
Pinkoi Mobile Webmikeleeme
 
Responsive Web Design tips and tricks.
Responsive Web Design tips and tricks.Responsive Web Design tips and tricks.
Responsive Web Design tips and tricks.GaziAhsan
 
Devon 2011-f-1 반응형 웹 디자인
Devon 2011-f-1  반응형 웹 디자인Devon 2011-f-1  반응형 웹 디자인
Devon 2011-f-1 반응형 웹 디자인Daum DNA
 
Designing for mobile
Designing for mobileDesigning for mobile
Designing for mobileDee Sadler
 
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...Esri Nederland
 
Great Responsive-ability Web Design
Great Responsive-ability Web DesignGreat Responsive-ability Web Design
Great Responsive-ability Web DesignMike Wilcox
 
Responsive Web Design
Responsive Web DesignResponsive Web Design
Responsive Web DesignJason Harwig
 
Responsive Web Design & APEX Theme 25 (OGh APEX World 2014)
Responsive Web Design & APEX Theme 25 (OGh APEX World 2014)Responsive Web Design & APEX Theme 25 (OGh APEX World 2014)
Responsive Web Design & APEX Theme 25 (OGh APEX World 2014)Christian Rokitta
 
Responsive webdesign WordCampNL 2012
Responsive webdesign WordCampNL 2012Responsive webdesign WordCampNL 2012
Responsive webdesign WordCampNL 2012Tom Hermans
 

Similaire à Intro to @viewport & other new Responsive Web Design CSS features (20)

The specs behind the sex, mobile-friendly layout beyond the desktop
The specs behind the sex, mobile-friendly layout beyond the desktopThe specs behind the sex, mobile-friendly layout beyond the desktop
The specs behind the sex, mobile-friendly layout beyond the desktop
 
Responsive Websites
Responsive WebsitesResponsive Websites
Responsive Websites
 
CSS3 Media Queries: Mobile Elixir or CSS Snake Oil
CSS3 Media Queries: Mobile Elixir or CSS Snake OilCSS3 Media Queries: Mobile Elixir or CSS Snake Oil
CSS3 Media Queries: Mobile Elixir or CSS Snake Oil
 
Responsive Web Design: Clever Tips and Techniques
Responsive Web Design: Clever Tips and TechniquesResponsive Web Design: Clever Tips and Techniques
Responsive Web Design: Clever Tips and Techniques
 
Responsive Web Design
Responsive Web DesignResponsive Web Design
Responsive Web Design
 
Meta layout: a closer look at media queries
Meta layout: a closer look at media queriesMeta layout: a closer look at media queries
Meta layout: a closer look at media queries
 
Responsive web design
Responsive web designResponsive web design
Responsive web design
 
Responsive design: techniques and tricks to prepare your websites for the mul...
Responsive design: techniques and tricks to prepare your websites for the mul...Responsive design: techniques and tricks to prepare your websites for the mul...
Responsive design: techniques and tricks to prepare your websites for the mul...
 
Adaptive layouts - standards>next Manchester 23.03.2011
Adaptive layouts - standards>next Manchester 23.03.2011Adaptive layouts - standards>next Manchester 23.03.2011
Adaptive layouts - standards>next Manchester 23.03.2011
 
Pinkoi Mobile Web
Pinkoi Mobile WebPinkoi Mobile Web
Pinkoi Mobile Web
 
Responsive Web Design tips and tricks.
Responsive Web Design tips and tricks.Responsive Web Design tips and tricks.
Responsive Web Design tips and tricks.
 
Rwd slidedeck
Rwd slidedeckRwd slidedeck
Rwd slidedeck
 
Devon 2011-f-1 반응형 웹 디자인
Devon 2011-f-1  반응형 웹 디자인Devon 2011-f-1  반응형 웹 디자인
Devon 2011-f-1 반응형 웹 디자인
 
Designing for mobile
Designing for mobileDesigning for mobile
Designing for mobile
 
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
 
Great Responsive-ability Web Design
Great Responsive-ability Web DesignGreat Responsive-ability Web Design
Great Responsive-ability Web Design
 
Responsive Web Design
Responsive Web DesignResponsive Web Design
Responsive Web Design
 
Responsive Web Design & APEX Theme 25 (OGh APEX World 2014)
Responsive Web Design & APEX Theme 25 (OGh APEX World 2014)Responsive Web Design & APEX Theme 25 (OGh APEX World 2014)
Responsive Web Design & APEX Theme 25 (OGh APEX World 2014)
 
Responsive Web Design
Responsive Web DesignResponsive Web Design
Responsive Web Design
 
Responsive webdesign WordCampNL 2012
Responsive webdesign WordCampNL 2012Responsive webdesign WordCampNL 2012
Responsive webdesign WordCampNL 2012
 

Plus de Andreas Bovens

Progressive Web Apps: Opera's perspective
Progressive Web Apps: Opera's perspectiveProgressive Web Apps: Opera's perspective
Progressive Web Apps: Opera's perspectiveAndreas Bovens
 
Fast & Furious: Speed in the Opera browser
Fast & Furious: Speed in the Opera browserFast & Furious: Speed in the Opera browser
Fast & Furious: Speed in the Opera browserAndreas Bovens
 
SVG in Opera’s desktop, mobile & TV browsers — edition 2011
SVG in Opera’s desktop, mobile & TV browsers  — edition 2011SVG in Opera’s desktop, mobile & TV browsers  — edition 2011
SVG in Opera’s desktop, mobile & TV browsers — edition 2011Andreas Bovens
 
Building rich apps with HTML5 and friends
Building rich apps with HTML5 and friendsBuilding rich apps with HTML5 and friends
Building rich apps with HTML5 and friendsAndreas Bovens
 
SVG in the Opera browser
SVG in the Opera browserSVG in the Opera browser
SVG in the Opera browserAndreas Bovens
 
Mobile web development techniques (and Opera's developer tools)
Mobile web development techniques (and Opera's developer tools)Mobile web development techniques (and Opera's developer tools)
Mobile web development techniques (and Opera's developer tools)Andreas Bovens
 
Opera and the Open Web platform
Opera and the Open Web platformOpera and the Open Web platform
Opera and the Open Web platformAndreas Bovens
 
Opera Widgets for Desktop and Opera Dragonfly
Opera Widgets for Desktop and Opera DragonflyOpera Widgets for Desktop and Opera Dragonfly
Opera Widgets for Desktop and Opera DragonflyAndreas Bovens
 

Plus de Andreas Bovens (8)

Progressive Web Apps: Opera's perspective
Progressive Web Apps: Opera's perspectiveProgressive Web Apps: Opera's perspective
Progressive Web Apps: Opera's perspective
 
Fast & Furious: Speed in the Opera browser
Fast & Furious: Speed in the Opera browserFast & Furious: Speed in the Opera browser
Fast & Furious: Speed in the Opera browser
 
SVG in Opera’s desktop, mobile & TV browsers — edition 2011
SVG in Opera’s desktop, mobile & TV browsers  — edition 2011SVG in Opera’s desktop, mobile & TV browsers  — edition 2011
SVG in Opera’s desktop, mobile & TV browsers — edition 2011
 
Building rich apps with HTML5 and friends
Building rich apps with HTML5 and friendsBuilding rich apps with HTML5 and friends
Building rich apps with HTML5 and friends
 
SVG in the Opera browser
SVG in the Opera browserSVG in the Opera browser
SVG in the Opera browser
 
Mobile web development techniques (and Opera's developer tools)
Mobile web development techniques (and Opera's developer tools)Mobile web development techniques (and Opera's developer tools)
Mobile web development techniques (and Opera's developer tools)
 
Opera and the Open Web platform
Opera and the Open Web platformOpera and the Open Web platform
Opera and the Open Web platform
 
Opera Widgets for Desktop and Opera Dragonfly
Opera Widgets for Desktop and Opera DragonflyOpera Widgets for Desktop and Opera Dragonfly
Opera Widgets for Desktop and Opera Dragonfly
 

Intro to @viewport & other new Responsive Web Design CSS features