100
BDConf Focus:On Responsive, June 2012 @tkadlec timkadlec.com Creating Responsive Experiences TIM KADLEC

Creating Responsive Experiences

Embed Size (px)

DESCRIPTION

Presented at BDConf :focus on Responsive in Minneapolis, MN on June 4, 2012

Citation preview

Page 1: Creating Responsive Experiences

BDConf Focus:On Responsive, June 2012

@tkadlec timkadlec.com

CreatingResponsive Experiences

TIM KADLEC

Page 2: Creating Responsive Experiences
Page 3: Creating Responsive Experiences

Jakob Nielsen

It's cheap but degrading to reuse content and design across diverging media forms like print vs. online or desktop vs. mobile.

http://bit.ly/KTERAA

Page 4: Creating Responsive Experiences
Page 5: Creating Responsive Experiences

Jakob Nielsen

It's not enough to simply modify the layout by moving stuff around on the screen and enlarging or diminishing particular design elements.

http://bit.ly/KTERAA

Page 6: Creating Responsive Experiences

OKI agree with that

Page 7: Creating Responsive Experiences

But that’s not all RWD is...

Page 8: Creating Responsive Experiences

Later that week...

Page 10: Creating Responsive Experiences
Page 11: Creating Responsive Experiences

Venture Beat

....a one-size-fits-all solution delivers a subpar user experience.

http://bit.ly/KTERAA

Page 12: Creating Responsive Experiences

Well, duh

Page 13: Creating Responsive Experiences

Again, that’s not all RWD is

Page 15: Creating Responsive Experiences

This is true

Page 16: Creating Responsive Experiences

Ethan Marcotte

If someone says there’s only one true way of working and designing online, look at them funny.

http://bit.ly/Kzfy2m

Page 17: Creating Responsive Experiences

So far, so good...

Page 18: Creating Responsive Experiences

“ Responsive design simply rearranges the content of your site to fit on a mobile screen.

http://bit.ly/LjaVxv

Page 19: Creating Responsive Experiences
Page 20: Creating Responsive Experiences

Seriously, that’s not all RWD is!

Page 21: Creating Responsive Experiences

Let’s take astep back

Page 22: Creating Responsive Experiences

Responsive architecture

Page 23: Creating Responsive Experiences
Page 24: Creating Responsive Experiences

This is awesome

Page 25: Creating Responsive Experiences

But it’s not enough

Page 26: Creating Responsive Experiences

More than layout

Page 27: Creating Responsive Experiences

Marshall McLuhan

We see the world through a rear-view mirror. We march backwards into the future.

Page 28: Creating Responsive Experiences

http://bit.ly/A6AhV1

Pre-iPhone

Post-iPhone

Page 29: Creating Responsive Experiences

http://flic.kr/p/7S5qAB

Page 30: Creating Responsive Experiences

http://flic.kr/p/3bqHYJ

Page 31: Creating Responsive Experiences

http://flic.kr/p/anHsXT

Page 32: Creating Responsive Experiences

http://flic.kr/p/a9GzWC

Page 33: Creating Responsive Experiences

http://flic.kr/p/3eVaZ1

Page 34: Creating Responsive Experiences

http://flic.kr/p/2ynHaS

Page 35: Creating Responsive Experiences
Page 36: Creating Responsive Experiences

Scott Jenson

These examples are just the initial, telltale signs of a huge new wave of cheap devices about to invade our lives—a zombie apocalypse of electronics, if you will.

http://bit.ly/giroPy

Page 37: Creating Responsive Experiences

http://flic.kr/p/y44Rv

Page 38: Creating Responsive Experiences

http://flic.kr/p/2ynHaS

Page 39: Creating Responsive Experiences

Responsiveexperiences

Page 40: Creating Responsive Experiences

Smarter defaults

Page 41: Creating Responsive Experiences

Jakob Nielsen

Typically, masking passwords doesn't even increase security, but it does cost you business due to login failures

http://bit.ly/9X3LAG

Page 42: Creating Responsive Experiences
Page 43: Creating Responsive Experiences

Hide

Page 44: Creating Responsive Experiences

http://flic.kr/p/6e7uqr

<input type=”text” />

Page 45: Creating Responsive Experiences

http://flic.kr/p/6e7uqr

<input type=”email” />

Page 46: Creating Responsive Experiences

http://flic.kr/p/6e7uqr

<input type=”url” />

Page 47: Creating Responsive Experiences

http://flic.kr/p/6e7uqr

<input type=”tel” />

Page 48: Creating Responsive Experiences

/ht @lukew

Page 49: Creating Responsive Experiences

Capabilities

Page 52: Creating Responsive Experiences

http://flic.kr/p/6e7uqr

Page 53: Creating Responsive Experiences

Battery statusContactsHTML Media CaptureMedia CaptureNetwork InformationSensorVibrationWeb IntentsCalendarMenuGeolocationNFC

Page 54: Creating Responsive Experiences

<html>

<head>

! <meta name="viewport" content="width=device-

width" />

</head>

<body>

! <video id="myVid" width="300" height="375"

autoplay></video>

! <input id="camera" type="button" disabled="true"

value="Take Photo"></input>

! <canvas id="still" width="300" height="375"></

canvas>

</body>

</html>

Page 55: Creating Responsive Experiences

<html>

<head>

! <meta name="viewport" content="width=device-

width" />

</head>

<body>

! <video id="myVid" width="300" height="375"

autoplay></video>

! <input id="camera" type="button" disabled="true"

value="Take Photo"></input>

! <canvas id="still" width="300" height="375"></

canvas>

</body>

</html>

Page 56: Creating Responsive Experiences

<script>

! navigator.getUserMedia({video: true}, function

(stream) {

! ! var video = document.getElementById("video");

! ! var canvas = document.getElementById("still");

! ! var button = document.getElementById("camera");

! ! video.src = stream;

! ! button.disabled = false;

! ! button.onclick = function() {

! ! ! canvas.getContext("2d").drawImage(video, 0, 0);

! };

}, function(err) { alert("Oh snap! There was an error "

+ err)});

</script>

Page 57: Creating Responsive Experiences

<script>

! navigator.getUserMedia({video: true}, function

(stream) {

! ! var video = document.getElementById("video");

! ! var canvas = document.getElementById("still");

! ! var button = document.getElementById("camera");

! ! video.src = stream;

! ! button.disabled = false;

! ! button.onclick = function() {

! ! ! canvas.getContext("2d").drawImage(video, 0, 0);

! };

}, function(err) { alert("Oh snap! There was an error "

+ err)});

</script>

Page 58: Creating Responsive Experiences

<script>

! navigator.getUserMedia({video: true}, function

(stream) {

! ! var video = document.getElementById("video");

! ! var canvas = document.getElementById("still");

! ! var button = document.getElementById("camera");

! ! video.src = stream;

! ! button.disabled = false;

! ! button.onclick = function() {

! ! ! canvas.getContext("2d").drawImage(video, 0, 0);

! };

}, function(err) { alert("Oh snap! There was an error "

+ err)});

</script>

Page 59: Creating Responsive Experiences

<script>

! navigator.getUserMedia({video: true}, function

(stream) {

! ! var video = document.getElementById("video");

! ! var canvas = document.getElementById("still");

! ! var button = document.getElementById("camera");

! ! video.src = stream;

! ! button.disabled = false;

! ! button.onclick = function() {

! ! ! canvas.getContext("2d").drawImage(video, 0, 0);

! };

}, function(err) { alert("Oh snap! There was an error "

+ err)});

</script>

Page 60: Creating Responsive Experiences
Page 61: Creating Responsive Experiences
Page 62: Creating Responsive Experiences

Contextual experiences

http://flic.kr/p/6e7uqr

Page 63: Creating Responsive Experiences

Context is the key to moving from a web that responds to devices, to a web that responds to people

Page 64: Creating Responsive Experiences

Do some research

http://flic.kr/p/6e7uqr

Page 65: Creating Responsive Experiences

Adam Greenfield

If nothing else, it would be wise for us all to remember that, while our information technology may be digital in nature, the human beings interacting with it will always be infuriatingly and delightfully analog.

Page 66: Creating Responsive Experiences

We need all the tools we can get

http://flic.kr/p/7MdW6A

Page 67: Creating Responsive Experiences

UA detectionis evil!

Page 68: Creating Responsive Experiences

Don’t blame the tools for the craftsman

http://flic.kr/p/7MdW6A

Page 69: Creating Responsive Experiences

There are badRWD sites

Page 70: Creating Responsive Experiences

There are badseparate sites

Page 72: Creating Responsive Experiences

http://flic.kr/p/6e7uqr

Page 73: Creating Responsive Experiences

http://flic.kr/p/6e7uqr

Page 74: Creating Responsive Experiences

Hug it out

http://flic.kr/p/7cVEwZ

Hug it out

Page 75: Creating Responsive Experiences

Mahatma Gandhi

It is a bad carpenter who quarrels with his tools.

http://bit.ly/Kzfy2m

Page 76: Creating Responsive Experiences

Bad UA detectionis evil!

Page 77: Creating Responsive Experiences

Don’t exclude.Enhance.http://flic.kr/p/6RtJPG

Page 78: Creating Responsive Experiences

if ($device->getCapability('has_cellular_radio') ===

'true') {

! if ($device->getCapability

('xhtml_make_phone_call_string') !== 'none') {

! ! $wireless = true;

! ! $method = $device->getCapability

('xhtml_make_phone_call_string');

! } else {

! ! $wireless = false;

! }

} else {

! $wireless = false;

}

Page 79: Creating Responsive Experiences

if ($device->getCapability('has_cellular_radio') ===

'true') {

! if ($device->getCapability

('xhtml_make_phone_call_string') !== 'none') {

! ! $wireless = true;

! ! $method = $device->getCapability

('xhtml_make_phone_call_string');

! } else {

! ! $wireless = false;

! }

} else {

! $wireless = false;

}

Page 80: Creating Responsive Experiences

if ($device->getCapability('has_cellular_radio') ===

'true') {

! if ($device->getCapability

('xhtml_make_phone_call_string') !== 'none') {

! ! $wireless = true;

! ! $method = $device->getCapability

('xhtml_make_phone_call_string');

! } else {

! ! $wireless = false;

! }

} else {

! $wireless = false;

}

Page 81: Creating Responsive Experiences

if ($device->getCapability('has_cellular_radio') ===

'true') {

!if ($device->getCapability

('xhtml_make_phone_call_string') !== 'none') {

! ! $wireless = true;

! ! $method = $device->getCapability

('xhtml_make_phone_call_string');

! } else {

! ! $wireless = false;

! }

} else {

! $wireless = false;

}

Page 82: Creating Responsive Experiences

<?php if ($wireless) { ?>

! <p><a href="<?php echo $method; ?>

+18005555555">1-800-555-5555</a></p>

<?php } else { ?>

! <p class="call">1-800-555-5555</p>

<?php } ?>

Page 83: Creating Responsive Experiences

<?php if ($wireless) { ?>

! <p><a href="<?php echo $method; ?>

+18005555555">1-800-555-5555</a></p>

<?php } else { ?>

! <p class="call">1-800-555-5555</p>

<?php } ?>

Page 84: Creating Responsive Experiences

<?php if ($wireless) { ?>

! <p><a href="<?php echo $method; ?>

+18005555555">1-800-555-5555</a></p>

<?php } else { ?>

! <p class="call">1-800-555-5555</p>

<?php } ?>

Page 85: Creating Responsive Experiences

<?php if ($wireless) { ?>

! <p><a href="<?php echo $method; ?>

+18005555555">1-800-555-5555</a></p>

<?php } else { ?>

! <p class="call">1-800-555-5555</p>

<?php } ?>

Page 86: Creating Responsive Experiences

Use both!

http://flic.kr/p/81vbku

Page 87: Creating Responsive Experiences

http://flic.kr/p/5ox3ax

Page 88: Creating Responsive Experiences

<body id="top" class="<?php echo $device-

>getCapability('pointing_method'); ?>">

hasTouch = 'ontouchstart' in window ||

'createTouch' in document;

Page 89: Creating Responsive Experiences

<body id="top" class="<?php echo $device-

>getCapability('pointing_method'); ?>">

hasTouch = 'ontouchstart' in window ||

'createTouch' in document;

Page 90: Creating Responsive Experiences

<body id="top" class="<?php echo $device-

>getCapability('pointing_method'); ?>">

hasTouch = 'ontouchstart' in window ||

'createTouch' in document;

Page 91: Creating Responsive Experiences

http://flic.kr/p/6e7uqr

Page 95: Creating Responsive Experiences

http://breakoutjs.com/

Page 96: Creating Responsive Experiences

http://jsdo.it/controller

Page 97: Creating Responsive Experiences

Scott Jenson

What’s holding smart devices back is our oh-so-human ability to misunderstand their potential.

http://bit.ly/HS0Jvs

Page 98: Creating Responsive Experiences

http://flic.kr/p/6e7uqr

Page 99: Creating Responsive Experiences

http://flic.kr/p/8wwtH4

Page 100: Creating Responsive Experiences

thank you!

BDConf Focus:On Responsive, June 2012

@tkadlec timkadlec.com

TIM KADLEC

responsiveenhancement.com