using safari to deliver and debug a responsive web design · web inspector + responsive design...

Post on 15-Feb-2019

222 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

© 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.

Jono Wells Safari and WebKit Engineer

Media #WWDC15Media

Session 505

Using Safari to Deliver and Debug a Responsive Web Design

WebKit Safari

Web Inspector

Web Inspector+

Responsive Design Mode

Web Inspector

Great Performance

60fps

16.67ms

Do Without Thinking

var name = "Trevor";

var age = 28;

var obj = {};

var name = "Trevor";

var age = 28;

var obj = {};

String

Integer

Object

function add(value1, value2) {

var result = value1 + value2;

return result;

}

var v1 = 2.3, v2 = "2.7";

add(v1, v2); // => "2.32.7"

function add(value1, value2) {

var result = value1 + value2;

return result;

}

var v1 = 2.3, v2 = "2.7";

add(v1, v2); // => "2.32.7"

function add( value1, value2) {

var result = value1 + value2;

return result;

}

var v1 = 2.3, v2 = "2.7";

add(v1, v2); // => "2.32.7"

Double StringString

String

function add( value1, value2) {

var result = value1 + value2;

return result;

}

var v1 = 2.3, v2 = "2.7";

add(v1, v2); // => "2.32.7"

Double StringString

String

function Person() { … }

function DeveloperPerson() {

Person.call(this);

}

DeveloperPerson.prototype = Object.create(Person.prototype);

DeveloperPerson.prototype.constructor = DeveloperPerson;

var employee = new DeveloperPerson();

function Person() { … }

function DeveloperPerson() {

Person.call(this);

}

DeveloperPerson.prototype = Object.create(Person.prototype);

DeveloperPerson.prototype.constructor = DeveloperPerson;

var employee = new DeveloperPerson();

var employee = new DeveloperPerson();DeveloperPerson

function Person() { … }

function DeveloperPerson() {

Person.call(this);

}

DeveloperPerson.prototype = Object.create(Person.prototype);

DeveloperPerson.prototype.constructor = DeveloperPerson;

var employee = new DeveloperPerson();DeveloperPerson

function Person() { … }

function DeveloperPerson() {

Person.call(this);

}

DeveloperPerson.prototype = Object.create(Person.prototype);

DeveloperPerson.prototype.constructor = DeveloperPerson;

class Person { … }

class DeveloperPerson extends Person { … }

class ManagerPerson extends Person { … }

var employee = new DeveloperPerson();DeveloperPerson

class Person { … }

class DeveloperPerson extends Person { … }

class ManagerPerson extends Person { … }

var employee = new DeveloperPerson();DeveloperPerson

Person

ManagerPersonDeveloperPerson

Object

function register(person) …

Person

ManagerPersonDeveloperPerson

Object

function register(person) …

Object

register(new DeveloperPerson());

DeveloperPerson ManagerPerson

Person

function register( attendee) …DeveloperPerson

Object

register(new DeveloperPerson());

DeveloperPerson ManagerPerson

Person

function register( attendee) …DeveloperPerson

Object

ManagerPersonDeveloperPerson

Person

register(new ManagerPerson());

function register( attendee) …ManagerPerson

Object

ManagerPersonDeveloperPerson

Person

register(new ManagerPerson());

function register( attendee) …ManagerPerson

Object

register(new DeveloperPerson());

register(new ManagerPerson());

Person

DeveloperPerson ManagerPerson

function register( attendee) …Person

Object

register(new DeveloperPerson());

register(new ManagerPerson());

Person

DeveloperPerson ManagerPerson

function register( attendee) …Person

Object

register(new DeveloperPerson());

register(new ManagerPerson());

register(new Extraterrestrial());

Person

DeveloperPerson ManagerPerson

function register( attendee) …Object

Object

register(new DeveloperPerson());

register(new ManagerPerson());

register(new Extraterrestrial());

Person

DeveloperPerson ManagerPerson

function register( attendee) …Object

String

Integer Number Double

Function

Array

Boolean

Object

Null Undefined

StringIntegerNumberDoubleFunctionArrayBooleanObjectNullUndefined(many)

NullDouble

NullDouble

NullDouble?

Better Console

$0 Is Still the Currently Selected DOM Element

Great for Native API Exploration!

Number

Boolean

String

Object

Null

RegExp

Symbol

Element

Function

Custom Getter

DemoWeb Inspector

Andy Estes Safari and WebKit Engineer

Make Your Site Faster

Turn on paint flashing onRun Rendering Frames TimelineTry in iOS

Make Your Site Faster

Make Your Code Better

Use the type profiler on your JavaScriptExplore your JS objects in the consoleExplore the DOM APIs (window, HTMLElement, etc.)

Make Your Code Better

Web Inspector

Web Inspector+

Responsive Design Mode

Responsive Design Mode

Responsive Design

Responsive Design

Responsive Design

Responsive Design

Responsive Design

Responsive Design

Responsive Design

Responsive Design

Responsive Design

Responsive Design

Responsive Design

@supports@mediasrcset

DemoResponsive Design Mode

Andy Estes Safari and WebKit Engineer

Responsive Design Mode

Focus is on layout and resolutionScalable page previewScreen size presetsiOS Multitasking screen size presetsCustom sizesWorks alongside Web InspectorNew in Safari 9

Responsive Design Mode

Web Inspector+

Responsive Design Mode

When You Leave Here

When You Leave Here

Get the developer release of OS X El Capitan

When You Leave Here

Get the developer release of OS X El CapitanTurn on the develop menu

When You Leave Here

Get the developer release of OS X El CapitanTurn on the develop menuCustomize Web Inspector tabs

When You Leave Here

Get the developer release of OS X El CapitanTurn on the develop menuCustomize Web Inspector tabsUse paint flashing and Rendering Frames Timeline

When You Leave Here

Get the developer release of OS X El CapitanTurn on the develop menuCustomize Web Inspector tabsUse paint flashing and Rendering Frames TimelineTurn on the Type Information Profiler

When You Leave Here

Get the developer release of OS X El CapitanTurn on the develop menuCustomize Web Inspector tabsUse paint flashing and Rendering Frames TimelineTurn on the Type Information ProfilerPlay in the console

When You Leave Here

Get the developer release of OS X El CapitanTurn on the develop menuCustomize Web Inspector tabsUse paint flashing and Rendering Frames TimelineTurn on the Type Information ProfilerPlay in the consoleTry Responsive Design Mode

Make Your Content Shine

More Information

Technical SupportResources for Safari Developershttp://developer.apple.com/safari/

Safari Developer Libraryhttp://developer.apple.com/library/safari/

General InquiriesJon Davis, Web Technologies Evangelistweb-evangelist@apple.com

Related Labs

Safari and WebKit Lab Graphics, Games, and Media Lab A Wednesday 10:00AM

Safari and WebKit Lab Graphics, Games, and Media Lab A Friday 12:00PM

top related