Creating Content with iad JS
|
|
- Camron Black
- 5 years ago
- Views:
Transcription
1 Creating Content with iad JS Part 2 The iad JS Framework Antoine Quint iad JS Software Engineer ios Apps and Frameworks 2
2 Agenda Motivations and Features of iad JS Core JavaScript Enhancements Working with Views and Controls Using View Controllers 3
3 Prerequisites Understanding of web technologies HTML CSS JavaScript DOM APIs Familiarity with UIKit 4
4 Introducing iad JS Motivations and features 5
5 6
6 iad Goals Emotion Interactivity Technology Media playback Expressive graphics Motion Touch 7
7 Rich Media 8
8 Rich Media Technologies Key features in WebKit on iphone 9
9 Rich Media Technologies Key features in WebKit on iphone <audio> 10
10 Rich Media Technologies Key features in WebKit on iphone <video> <audio> 11
11 Rich Media Technologies Key features in WebKit on iphone <video> 12
12 Rich Media Technologies Key features in WebKit on iphone CSS Transforms 2D and 3D 13
13 Rich Media Technologies Key features in WebKit on iphone CSS Transitions CSS Transforms 2D & 3D 14
14 Rich Media Technologies Key features in WebKit on iphone CSS Animations CSS Transitions 15
15 Rich Media Technologies Key features in WebKit on iphone CSS Animations Transitions 16
16 Rich Media Technologies Key features in WebKit on iphone Touch Events 17
17 Rich Media Technologies Key features in WebKit on iphone Touch Events 18
18 Rich Media Technologies Key features in WebKit on iphone 19
19 Rich Media 20
20 Rich Media 21
21 Rich Media 22
22 Mini Apps 23
23 24
24 Rich Media Mini Apps 25
25 26
26 iad JS Goals Streamline creation of rich ads Ensure high performance iad JS Features UIKit design and rich features Declarative programming model Modular and incremental building 27
27 How? 28
28 100% Web Standards No native code was hurt in the making of iad JS 29
29 Agenda Motivations and Features of iad JS Core JavaScript Enhancements Working with Views and Controls Using View Controllers 30
30 Core JavaScript Enhancements ADClass and ADObject 31
31 JavaScript Limitations Inheritance No explicit support for traditional inheritance in JavaScript No concept of a super class and no super keyword Property Synthesis Synthesized properties are prevalent in UIKit design No built-in support in JavaScript syntax Property Change Notifications 32
32 33
33 Core JavaScript Enhancements ADClass Utility Inheritance The superclass property ADObject Base Class Subclassing The callsuper() method Synthesis The synthetizedproperties array Notifications Observe property changes Automated With Synthesis 34
34 ADClass Inheritance // specify the superclass MyClass.superclass = ADObject; function MyClass () { // ensure parent constructor is called this.callsuper(); } // an instance method declaration MyClass.prototype.someMethod = function () { // method code }; // let ADClass process this class ADClass(MyClass); 35
35 ADClass Inheritance // specify the superclass MyClass.superclass = ADObject; function MyClass () { // ensure parent constructor is called this.callsuper(); } // an instance method declaration MyClass.prototype.someMethod = function () { // method code }; // let ADClass process this class ADClass(MyClass); 36
36 ADClass Inheritance // specify the superclass MyClass.superclass = ADObject; function MyClass () { // ensure parent constructor is called this.callsuper(); } // an instance method declaration MyClass.prototype.someMethod = function () { // method code }; // let ADClass process this class ADClass(MyClass); 37
37 ADClass Inheritance // specify the superclass MyClass.superclass = ADObject; function MyClass () { // ensure parent constructor is called this.callsuper(); } // an instance method declaration MyClass.prototype.someMethod = function () { // method code }; // let ADClass process this class ADClass(MyClass); 38
38 Property Synthesis Process MyClass.synthesizedProperties = ['foo']; MyClass.prototype.getFoo() exists? MyClass.prototype.setFoo() exists? Binds getting of foo to getfoo() Default getter, returns _foo Binds setting of foo to setfoo() Default setter, assigns to _foo 39
39 Property Synthesis Custom setter // specify properties to synthesize MyClass.synthesizedProperties = ['foo']; function MyClass () { // declare private ivar with convention _ prefix this._foo = 0; } // method automatically called when.foo is set MyClass.prototype.setFoo = function (foo) { // custom setter code this._foo = foo; }; ADClass(MyClass); 40
40 Property Synthesis Custom setter // specify properties to synthesize MyClass.synthesizedProperties = ['foo']; function MyClass () { // declare private ivar with convention _ prefix this._foo = 0; } // method automatically called when.foo is set MyClass.prototype.setFoo = function (foo) { // custom setter code this._foo = foo; }; ADClass(MyClass); 41
41 Property Synthesis Custom setter // specify properties to synthesize MyClass.synthesizedProperties = ['foo']; function MyClass () { // declare private ivar with convention _ prefix this._foo = 0; } // method automatically called when.foo is set MyClass.prototype.setFoo = function (foo) { // custom setter code this._foo = foo; }; ADClass(MyClass); 42
42 Property Synthesis Custom setter // specify properties to synthesize MyClass.synthesizedProperties = ['foo']; function MyClass () { // declare private ivar with convention _ prefix this._foo = 0; } // method automatically called when.foo is set MyClass.prototype.setFoo = function (foo) { // custom setter code this._foo = foo; }; ADClass(MyClass); 43
43 Property Synthesis Custom getter // specify properties to synthesize MyClass.synthesizedProperties = ['foo']; function MyClass () { // constructor code } // method automatically called when.foo is gotten MyClass.prototype.getFoo = function () { var foo; // custom code to compute foo return foo; }; ADClass(MyClass); 44
44 Property Observing Default protocol var controller = { myobject : new MyClass() }; controller.init = function () { // make our controller observe myobject.foo this.myobject.addpropertyobserver('foo', this); }; // controller must implement the ADPropertyChange protocol which defines the // handlepropertychange method as callback upon property change controller.handlepropertychange = function (observedobject, propertyname) { // handle foo property change }; 45
45 Property Observing Default protocol var controller = { myobject : new MyClass() }; controller.init = function () { // make our controller observe myobject.foo this.myobject.addpropertyobserver('foo', this); }; // controller must implement the ADPropertyChange protocol which defines the // handlepropertychange method as callback upon property change controller.handlepropertychange = function (observedobject, propertyname) { // handle foo property change }; 46
46 Property Observing Default protocol var controller = { myobject : new MyClass() }; controller.init = function () { // make our controller observe myobject.foo this.myobject.addpropertyobserver('foo', this); }; // controller must implement the ADPropertyChange protocol which defines the // handlepropertychange method as callback upon property change controller.handlepropertychange = function (observedobject, propertyname) { // handle foo property change }; 47
47 Property Observing Custom callback var controller = { myobject : new MyClass() }; controller.init = function () { // make our controller observe myobject.foo this.myobject.addpropertyobserver('foo', this, 'foodidchange'); }; // controller must implement the foodidchange method which we defined as the // custom callback in addpropertyobserver controller.foodidchange = function () { // handle.foo property change }; 48
48 Property Observing Custom callback var controller = { myobject : new MyClass() }; controller.init = function () { // make our controller observe myobject.foo this.myobject.addpropertyobserver('foo', this, 'foodidchange'); }; // controller must implement the foodidchange method which we defined as the // custom callback in addpropertyobserver controller.foodidchange = function () { // handle.foo property change }; 49
49 Summary Core JavaScript enhancements Traditional inheritance with superclass and callsuper() Built-in synthesis with synthesizedproperties Automated property change notifications through synthesis 50
50 Agenda Motivations and Features of iad JS Core JavaScript Enhancements Working with Views and Controls Using View Controllers 51
51 Working with Views and Controls ADView and ADControl 52
52 Views ADView Based on UIKit s UIView ADView is the base class for anything that renders on screen Wraps a DOM element and its subtree via the layer property Manual DOM manipulation possible with the hostinglayer property Transaction-based transition system HTML body accessible as ADRootView.sharedRoot 53
53 View Instantiation Using JavaScript APIs // create our ADScrollView instance var scrollview = new ADScrollView(); // set up the viewable size scrollview.position = new ADPoint(20, 20); scrollview.size = new ADSize(window.innerWidth - 40, window.innerheight - 40); // let's only scroll vertically and without indicators scrollview.verticalscrollenabled = false; scrollview.showshorizontalscrollindicator = false; // add to the root view to display the scroll view ADRootView.sharedRoot.addSubview(scrollView); 54
54 View Instantiation Using JavaScript APIs // create our ADScrollView instance var scrollview = new ADScrollView(); // set up the viewable size scrollview.position = new ADPoint(20, 20); scrollview.size = new ADSize(window.innerWidth - 40, window.innerheight - 40); // let's only scroll vertically and without indicators scrollview.verticalscrollenabled = false; scrollview.showshorizontalscrollindicator = false; // add to the root view to display the scroll view ADRootView.sharedRoot.addSubview(scrollView); 55
55 View Instantiation Using JavaScript APIs // create our ADScrollView instance var scrollview = new ADScrollView(); // set up the viewable size scrollview.position = new ADPoint(20, 20); scrollview.size = new ADSize(window.innerWidth - 40, window.innerheight - 40); // let's only scroll vertically and without indicators scrollview.verticalscrollenabled = false; scrollview.showshorizontalscrollindicator = false; // add to the root view to display the scroll view ADRootView.sharedRoot.addSubview(scrollView); 56
56 View Instantiation Using JavaScript APIs // create our ADScrollView instance var scrollview = new ADScrollView(); // set up the viewable size scrollview.position = new ADPoint(20, 20); scrollview.size = new ADSize(window.innerWidth - 40, window.innerheight - 40); // let's only scroll vertically and without indicators scrollview.verticalscrollenabled = false; scrollview.showshorizontalscrollindicator = false; // add to the root view to display the scroll view ADRootView.sharedRoot.addSubview(scrollView); 57
57 View Instantiation Generated markup <!-- this is the view s layer property --> <div class="ad-scroll-view ad-view" style="-webkit-transform: translate(20px, 20px); width: 280px; height: 440px;"> <!-- this is the view s hostinglayer property --> <div class="hosting-layer"> <!-- scrollable content --> </div> <!-- other private views specific to ADScrollView --> <div class="ad-scroll-indicator ad-view horizontal indicator-default"> </div> <div class="ad-scroll-indicator ad-view vertical indicator-default"> </div> </div> 58
58 Why so much code? 59
59 I d rather use markup! 60
60 The Case for a Declarative Approach Ease of authoring Easier to style content with a known markup structure Separation of logic and content is just good sense Performance Fewer manipulations of DOM tree Less time spent rendering 61
61 View Instantiation Using declarative layer <!-- the root view, usually body --> <body class="ad-root-view"> <!-- the scrollview --> <div class="ad-scroll-view" ad-vertical-scroll-enabled="false" ad-shows-horizontal-scroll-indicator="false" style="left: 20px; top: 20px; right: 20px; bottom: 20px;"> <!-- the hosting layer --> <div class="hosting-layer"> <!-- scrollable content --> </div> </div> </body> 62
62 View Instantiation Using declarative layer <!-- the root view, usually body --> <body class="ad-root-view"> <!-- the scrollview --> <div class="ad-scroll-view" ad-vertical-scroll-enabled="false" ad-shows-horizontal-scroll-indicator="false" style="left: 20px; top: 20px; right: 20px; bottom: 20px;"> <!-- the hosting layer --> <div class="hosting-layer"> <!-- scrollable content --> </div> </div> </body> 63
63 View Instantiation Using declarative layer <!-- the root view, usually body --> <body class="ad-root-view"> <!-- the scrollview --> <div class="ad-scroll-view" ad-vertical-scroll-enabled="false" ad-shows-horizontal-scroll-indicator="false" style="left: 20px; top: 20px; right: 20px; bottom: 20px;"> <!-- the hosting layer --> <div class="hosting-layer"> <!-- scrollable content --> </div> </div> </body> 64
64 View Instantiation Using declarative layer <!-- the root view, usually body --> <body class="ad-root-view"> <!-- the scrollview --> <div class="ad-scroll-view" ad-vertical-scroll-enabled="false" ad-shows-horizontal-scroll-indicator="false" style="left: 20px; top: 20px; right: 20px; bottom: 20px;"> <!-- the hosting layer --> <div class="hosting-layer"> <!-- scrollable content --> </div> </div> </body> 65
65 View Instantiation Using declarative layer <!-- the root view, usually body --> <body class="ad-root-view"> <!-- the scrollview --> <div class="ad-scroll-view" ad-vertical-scroll-enabled="false" ad-shows-horizontal-scroll-indicator="false" style="left: 20px; top: 20px; right: 20px; bottom: 20px;"> <!-- the hosting layer --> <div class="hosting-layer"> <!-- scrollable content --> </div> </div> </body> 66
66 Views 67
67 Controls 68
68 Controls ADControl Subclass of ADView Provide advanced and automatic touch tracking Extends built-in touch events with more granularity 69
69 Extended Touch Events Mouse events Mouse events are relative to a target element mouseover mouseout mousemove mousedown mouseup click 70
70 Extended Touch Events Base touch events Built-in touch events provide raw touches touchstart touchmove touchend Tracking touches relative to a given element is hard 71
71 Extended Touch Events iad JS control events Controls analyze raw touches and trigger additional touch events controltouchdragenter controltouchdragexit controltouchupinside and more 72
72 Related Session Adding Touch and Gesture Detection to Web Pages on iphone OS Nob Hill Wednesday 2:00PM 73
73 Actions Using DOM events UIKit s action-target mechanism is one-to-one Model in web development is one-to-many with DOM events A controlvaluechange is dispatched when a control value changes 74
74 DOM Event Handling slider.addeventlistener('controlvaluechange', handler, false); User drags the slider and a controlvaluechange event fires on slider handler is a function? handler is an object? callback is handler() context object is window callback = handler.handleevent() context = handler Best Practice 75
75 Control States Selected Enabled Highlighted Synchronized with touch tracking State is reflected in CSS 76
76 Building a Custom Control Markup <div class="ad-control my-custom-control"></div> Style /* default state for control */.ad-control.my-custom-control { background-color: white; color: red; } /* highlighted state for control */.ad-page-control.my-custom-control.highlighted { background-color: red; color: white; } 77
77 Code Sample 78
78 79
79 Markup <body class="ad-root-view"> <div class="ad-scroll-view" ad-vertical-scroll-enabled="false" ad-shows-horizontal-scroll-indicator="false" ad-paging-enabled="true"> <div class="hosting-layer"> <img src="stig1.png"> <img src="stig2.png"> <img src="stig3.png"> <img src="stig4.png"> </div> </div> <div class="ad-page-control" ad-number-of-pages="4" ad-oncontrolvaluechange="controller.pagecontrolvaluechanged(event)"></div> </body> 80
80 Markup <body class="ad-root-view"> <div class="ad-scroll-view" ad-vertical-scroll-enabled="false" ad-shows-horizontal-scroll-indicator="false" ad-paging-enabled="true"> <div class="hosting-layer"> <img src="stig1.png"> <img src="stig2.png"> <img src="stig3.png"> <img src="stig4.png"> </div> </div> <div class="ad-page-control" ad-number-of-pages="4" ad-oncontrolvaluechange="controller.pagecontrolvaluechanged(event)"></div> </body> 81
81 Markup <body class="ad-root-view"> <div class="ad-scroll-view" ad-vertical-scroll-enabled="false" ad-shows-horizontal-scroll-indicator="false" ad-paging-enabled="true"> <div class="hosting-layer"> <img src="stig1.png"> <img src="stig2.png"> <img src="stig3.png"> <img src="stig4.png"> </div> </div> <div class="ad-page-control" ad-number-of-pages="4" ad-oncontrolvaluechange="controller.pagecontrolvaluechanged(event)"></div> </body> 82
82 Markup <body class="ad-root-view"> <div class="ad-scroll-view" ad-vertical-scroll-enabled="false" ad-shows-horizontal-scroll-indicator="false" ad-paging-enabled="true"> <div class="hosting-layer"> <img src="stig1.png"> <img src="stig2.png"> <img src="stig3.png"> <img src="stig4.png"> </div> </div> <div class="ad-page-control" ad-number-of-pages="4" ad-oncontrolvaluechange="controller.pagecontrolvaluechanged(event)"></div> </body> 83
83 Markup <body class="ad-root-view"> <div class="ad-scroll-view" ad-vertical-scroll-enabled="false" ad-shows-horizontal-scroll-indicator="false" ad-paging-enabled="true"> <div class="hosting-layer"> <img src="stig1.png"> <img src="stig2.png"> <img src="stig3.png"> <img src="stig4.png"> </div> </div> <div class="ad-page-control" ad-number-of-pages="4" ad-oncontrolvaluechange="controller.pagecontrolvaluechanged(event)"></div> </body> 84
84 Markup <body class="ad-root-view"> <div class="ad-scroll-view" ad-vertical-scroll-enabled="false" ad-shows-horizontal-scroll-indicator="false" ad-paging-enabled="true"> <div class="hosting-layer"> <img src="stig1.png"> <img src="stig2.png"> <img src="stig3.png"> <img src="stig4.png"> </div> </div> <div class="ad-page-control" ad-number-of-pages="4" ad-oncontrolvaluechange="controller.pagecontrolvaluechanged(event)"></div> </body> 85
85 Markup <body class="ad-root-view"> <div class="ad-scroll-view" ad-vertical-scroll-enabled="false" ad-shows-horizontal-scroll-indicator="false" ad-paging-enabled="true"> <div class="hosting-layer"> <img src="stig1.png"> <img src="stig2.png"> <img src="stig3.png"> <img src="stig4.png"> </div> </div> <div class="ad-page-control" ad-number-of-pages="4" ad-oncontrolvaluechange="controller.pagecontrolvaluechanged(event)"></div> </body> 86
86 Layout /* size the scroll view */.ad-scroll-view { width: 320px; height: 421px; } /* position and size the page control */.ad-page-control { top: 422px; width: 320px; height: 38px; } 87
87 Layout /* size the scroll view */.ad-scroll-view { width: 320px; height: 421px; } /* position and size the page control */.ad-page-control { top: 422px; width: 320px; height: 38px; } 88
88 Scrollable Content Layout /* explicitly size the hosting layer */.hosting-layer { width: 1280px; padding-left: 16px; } /* amount of x spacing between images */.hosting-layer > img { margin-right: 28px; } /* no margin for last image */.hosting-layer > img:last-of-type { margin-right: 0; } 89
89 Scrollable Content Layout /* explicitly size the hosting layer */.hosting-layer { width: 1280px; padding-left: 16px; } /* amount of x spacing between images */.hosting-layer > img { margin-right: 28px; } /* no margin for last image */.hosting-layer > img:last-of-type { margin-right: 0; } 90
90 Scrollable Content Layout /* explicitly size the hosting layer */.hosting-layer { width: 1280px; padding-left: 16px; } /* amount of x spacing between images */.hosting-layer > img { margin-right: 28px; } /* no margin for last image */.hosting-layer > img:last-of-type { margin-right: 0; } 91
91 Controller var controller = {}; controller.init = function () { // get a reference to our page control this.pagecontrol = ADRootView.sharedRoot.pageControls[0]; // get a reference to our scroll view this.scrollview = ADRootView.sharedRoot.scrollViews[0]; // wire up the scroll view delegate to be our controller this.scrollview.delegate = this; }; function init () { // init our controller controller.init(); } // call init() as soon as the page is fully loaded window.addeventlistener('domcontentloaded', init, false); 92
92 Controller var controller = {}; controller.init = function () { // get a reference to our page control this.pagecontrol = ADRootView.sharedRoot.pageControls[0]; // get a reference to our scroll view this.scrollview = ADRootView.sharedRoot.scrollViews[0]; // wire up the scroll view delegate to be our controller this.scrollview.delegate = this; }; function init () { // init our controller controller.init(); } // call init() as soon as the page is fully loaded window.addeventlistener('domcontentloaded', init, false); 93
93 Controller var controller = {}; controller.init = function () { // get a reference to our page control this.pagecontrol = ADRootView.sharedRoot.pageControls[0]; // get a reference to our scroll view this.scrollview = ADRootView.sharedRoot.scrollViews[0]; // wire up the scroll view delegate to be our controller this.scrollview.delegate = this; }; function init () { // init our controller controller.init(); } // call init() as soon as the page is fully loaded window.addeventlistener('domcontentloaded', init, false); 94
94 Controller var controller = {}; controller.init = function () { // get a reference to our page control this.pagecontrol = ADRootView.sharedRoot.pageControls[0]; // get a reference to our scroll view this.scrollview = ADRootView.sharedRoot.scrollViews[0]; // wire up the scroll view delegate to be our controller this.scrollview.delegate = this; }; function init () { // init our controller controller.init(); } // call init() as soon as the page is fully loaded window.addeventlistener('domcontentloaded', init, false); 95
95 Controller var controller = {}; controller.init = function () { // get a reference to our page control this.pagecontrol = ADRootView.sharedRoot.pageControls[0]; // get a reference to our scroll view this.scrollview = ADRootView.sharedRoot.scrollViews[0]; // wire up the scroll view delegate to be our controller this.scrollview.delegate = this; }; function init () { // init our controller controller.init(); } // call init() as soon as the page is fully loaded window.addeventlistener('domcontentloaded', init, false); 96
96 Scroll View Delegation // scroll view has snapped to the nearest page without deceleration controller.scrollviewdidendscrollinganimation = function (thescrollview) { this.syncpagecontroltoscrollview(); }; // scroll view has scrolled to a new location following a deceleration animation controller.scrollviewdidenddecelerating = function (thescrollview) { this.syncpagecontroltoscrollview(); }; // syncs the page control to show the currently visible page in the scroll view controller.syncpagecontroltoscrollview = function () { this.pagecontrol.currentpage = Math.round( this.scrollview.contentoffset.x / this.scrollview.size.width); }; 97
97 Scroll View Delegation // scroll view has snapped to the nearest page without deceleration controller.scrollviewdidendscrollinganimation = function (thescrollview) { this.syncpagecontroltoscrollview(); }; // scroll view has scrolled to a new location following a deceleration animation controller.scrollviewdidenddecelerating = function (thescrollview) { this.syncpagecontroltoscrollview(); }; // syncs the page control to show the currently visible page in the scroll view controller.syncpagecontroltoscrollview = function () { this.pagecontrol.currentpage = Math.round( this.scrollview.contentoffset.x / this.scrollview.size.width); }; 98
98 Scroll View Delegation // scroll view has snapped to the nearest page without deceleration controller.scrollviewdidendscrollinganimation = function (thescrollview) { this.syncpagecontroltoscrollview(); }; // scroll view has scrolled to a new location following a deceleration animation controller.scrollviewdidenddecelerating = function (thescrollview) { this.syncpagecontroltoscrollview(); }; // syncs the page control to show the currently visible page in the scroll view controller.syncpagecontroltoscrollview = function () { this.pagecontrol.currentpage = Math.round( this.scrollview.contentoffset.x / this.scrollview.size.width); }; 99
99 Scroll View Delegation // scroll view has snapped to the nearest page without deceleration controller.scrollviewdidendscrollinganimation = function (thescrollview) { this.syncpagecontroltoscrollview(); }; // scroll view has scrolled to a new location following a deceleration animation controller.scrollviewdidenddecelerating = function (thescrollview) { this.syncpagecontroltoscrollview(); }; // syncs the page control to show the currently visible page in the scroll view controller.syncpagecontroltoscrollview = function () { this.pagecontrol.currentpage = Math.round( this.scrollview.contentoffset.x / this.scrollview.size.width); }; 100
100 Scroll View Delegation // scroll view has snapped to the nearest page without deceleration controller.scrollviewdidendscrollinganimation = function (thescrollview) { this.syncpagecontroltoscrollview(); }; // scroll view has scrolled to a new location following a deceleration animation controller.scrollviewdidenddecelerating = function (thescrollview) { this.syncpagecontroltoscrollview(); }; // syncs the page control to show the currently visible page in the scroll view controller.syncpagecontroltoscrollview = function () { this.pagecontrol.currentpage = Math.round( this.scrollview.contentoffset.x / this.scrollview.size.width); }; 101
101 Scroll View Delegation // scroll view has snapped to the nearest page without deceleration controller.scrollviewdidendscrollinganimation = function (thescrollview) { this.syncpagecontroltoscrollview(); }; // scroll view has scrolled to a new location following a deceleration animation controller.scrollviewdidenddecelerating = function (thescrollview) { this.syncpagecontroltoscrollview(); }; // syncs the page control to show the currently visible page in the scroll view controller.syncpagecontroltoscrollview = function () { this.pagecontrol.currentpage = Math.round( this.scrollview.contentoffset.x / this.scrollview.size.width); }; 102
102 Page Control Event Handling <div class="ad-page-control" ad-number-of-pages="4" ad-oncontrolvaluechange="controller.pagecontrolvaluechanged(event)"></div> controller.pagecontrolvaluechanged = function (event) { // get new scroll view content offset from page control s current page var x = this.pagecontrol.currentpage * this.scrollview.size.width; // update the scroll view s content offset with an animation this.scrollview.setcontentoffsetanimated(new ADPoint(x, 0), true); }; 103
103 Page Control Event Handling <div class="ad-page-control" ad-number-of-pages="4" ad-oncontrolvaluechange="controller.pagecontrolvaluechanged(event)"></div> controller.pagecontrolvaluechanged = function (event) { // get new scroll view content offset from page control s current page var x = this.pagecontrol.currentpage * this.scrollview.size.width; // update the scroll view s content offset with an animation this.scrollview.setcontentoffsetanimated(new ADPoint(x, 0), true); }; 104
104 Page Control Event Handling <div class="ad-page-control" ad-number-of-pages="4" ad-oncontrolvaluechange="controller.pagecontrolvaluechanged(event)"></div> controller.pagecontrolvaluechanged = function (event) { // get new scroll view content offset from page control s current page var x = this.pagecontrol.currentpage * this.scrollview.size.width; // update the scroll view s content offset with an animation this.scrollview.setcontentoffsetanimated(new ADPoint(x, 0), true); }; 105
105 106
106 Summary Views and controls Two techniques Programmatic using the JS APIs Declarative using strictly HTML & CSS There s more 107
107 Scroll Views Toolbars Search Bars Page Controls Flow Views Sliders Switches Progress Views Picker Views Navigation Bars Tab Bars Buttons Rating Controls Carousel Views Table Views Segmented Controls 108
108 Agenda Motivations and Features of iad JS Core JavaScript Enhancements Working with Views and Controls Using View Controllers 109
109 Working with View Controllers ADViewController 110
110 Modular Architecture Screen One Photos Top Screen Menu Screen Two Maps 111
111 Modular Architecture Performance considerations Loading too much initial content strains the network Too many elements in the tree bogs down rendering performance 112
112 Incremental Download 113
113 Incremental Display 114
114 View Controllers Modular architecture Abstract loading of a number of resources Add and remove views as needed 115
115 Anatomy of a View Controller Bundle screen resources View Controller Programming logic Content View View content CSS Styles View layout Images 116
116 ADViewController Configuration MenuController.superclass = ADViewController; function MenuController () { this.callsuper({ id : 'menu', requiredfileuris: { contentview : 'views/menu.html', stylesheets : ['css/menu.css'], images: ['images/stig1.png', 'images/stig2.png', 'images/stig3.png'] } }); }; 117
117 ADViewController Configuration MenuController.superclass = ADViewController; function MenuController () { this.callsuper({ id : 'menu', requiredfileuris: { contentview : 'views/menu.html', stylesheets : ['css/menu.css'], images: ['images/stig1.png', 'images/stig2.png', 'images/stig3.png'] } }); }; 118
118 ADViewController Configuration MenuController.superclass = ADViewController; function MenuController () { this.callsuper({ id : 'menu', requiredfileuris: { contentview : 'views/menu.html', stylesheets : ['css/menu.css'], images: ['images/stig1.png', 'images/stig2.png', 'images/stig3.png'] } }); }; 119
119 ADViewController Configuration MenuController.superclass = ADViewController; function MenuController () { this.callsuper({ id : 'menu', requiredfileuris: { contentview : 'views/menu.html', stylesheets : ['css/menu.css'], images: ['images/stig1.png', 'images/stig2.png', 'images/stig3.png'] } }); }; 120
120 ADViewController Configuration MenuController.superclass = ADViewController; function MenuController () { this.callsuper({ id : 'menu', requiredfileuris: { contentview : 'views/menu.html', stylesheets : ['css/menu.css'], images: ['images/stig1.png', 'images/stig2.png', 'images/stig3.png'] } }); }; 121
121 images/stig1.jpg images/stig3.jpg views/menu.html css/menu.css images/stig2.jpg viewcontrollerprogressloadingrequiredfiles viewcontrollerwillloadrequiredfiles viewcontrollerdidloadrequiredfiles contentviewdidload viewdidload Loading Delegate 122
122 ADViewController Configuration MenuController.superclass = ADViewController; function MenuController () { this.callsuper({ id : 'menu', requiredfileuris: { contentview : 'views/menu.html', stylesheets : ['css/menu.css'], images: ['images/stig1.png', 'images/stig2.png', 'images/stig3.png'] } }); }; 123
123 View Controller Unique Identifier The id property Uniquely identifies a view controller among all others ADViewController.instances.menu; Eases CSS matching contentview uses identifier as-is for its id attribute view uses identifier with -container suffix for its id attribute 124
124 Declarative Features 125
125 More Convenience 126
126 View Controllers Common Programming Tasks Obtaining references to objects in the content view Responding to user interaction triggered in content view Transitioning between screens 127
127 Outlets Automatically reference any view or element in content view <div ad-outlet="title"></div> Store references in outlets property this.outlets.title 128
128 Actions Automatically register a callback in the context of the view s controller <div ad-action="playaudio"></div> MyController.prototype.playAudio() 129
129 Transitions Automatically trigger transition to new view controller by its id <div ad-transitions-to="maps"></div> Abstracts loading and removing views in one synchronized transaction 130
130 Summary View controllers Automatic loading of screen resources bundle Incremental screen display with automated transitions Standardized common coding tasks More declarative features Less code, fewer common errors 131
131 Summary Motivations and Features of iad JS Core JavaScript Enhancements Working with Views and Controls Using View Controllers 132
132 Summary Motivations and Features of iad JS Core JavaScript Enhancements Working with Views and Controls Using View Controllers 133
133 Summary Motivations and Features of iad JS Core JavaScript Enhancements Working with Views and Controls Using View Controllers 134
134 Summary Motivations and Features of iad JS Core JavaScript Enhancements Working with Views and Controls Using View Controllers 135
135 Summary Motivations and Features of iad JS Core JavaScript Enhancements Working with Views and Controls Using View Controllers 136
136 Summary Motivations and Features of iad JS Core JavaScript Enhancements Working with Views and Controls Using View Controllers 137
137 Rich Media Mini Apps 138
138 100% Web Standards 139
139 140
140 141
141 More Information Vicki Murley Safari Technologies Evangelist Download iaddeveloper Package Documentation iad JS Reference Library Apple Developer Forums 142
142 Related Sessions iad Creating Content with iad JS, Part I Integrating Ads with iad (Repeat) Marina Thursday 9:00AM Pacific Heights Friday 9:00AM 143
143 Related Sessions Web technologies Delivering Audio and Video Using Web Standards, Part I Delivering Audio and Video Using Web Standards, Part 2 Nob Hill Friday 10:15AM Nob Hill Friday 11:30AM CSS Effects, Part I: UI Elements and Navigation CSS Effects, Part 2: Galleries and 3D Effects Adding Touch and Gesture Detection to Web Pages on iphone OS Marina Tuesday 3:15PM Marina Tuesday 4:30PM Nob Hill Wednesday 2:00PM 144
144 Labs Safari on iphone OS Lab Internet & Web Lab B Thursday 2:00PM 145
145 Q&A 146
146 147
147 148
Creating Extensions for Safari
Creating Extensions for Safari Part One Timothy Hatcher Safari and WebKit Engineer 2 3 HTML5 CSS3 JavaScript Native Code 4 Cross Platform Secure Crashes 5 What You ll Learn When to make a Safari Extension
More informationImproving the Accessibility and Usability of Complex Web Applications
Media #WWDC14 Improving the Accessibility and Usability of Complex Web Applications Session 516 Jesse Bunch Productivity Engineering 2014 Apple Inc. All rights reserved. Redistribution or public display
More informationSam Weinig Safari and WebKit Engineer. Chris Marrin Safari and WebKit Engineer
Sam Weinig Safari and WebKit Engineer Chris Marrin Safari and WebKit Engineer 2 3 4 5 Simple presentation of complex data 6 Graphs can be interactive California County: San Francisco Population: 845,559
More informationTouch Forward. Bill Fisher. #touchfwd. Developing Awesome Cross-Browser Touch
Touch Forward Developing Awesome Cross-Browser Touch Interactions Bill Fisher @fisherwebdev #touchfwd Super F*cking Important yeah, it s important. http://commons.wikimedia.org/wiki/file:071228_human_hands.jpg
More informationUI Course HTML: (Html, CSS, JavaScript, JQuery, Bootstrap, AngularJS) Introduction. The World Wide Web (WWW) and history of HTML
UI Course (Html, CSS, JavaScript, JQuery, Bootstrap, AngularJS) HTML: Introduction The World Wide Web (WWW) and history of HTML Hypertext and Hypertext Markup Language Why HTML Prerequisites Objective
More informationBuilding Watch Apps #WWDC15. Featured. Session 108. Neil Desai watchos Engineer
Featured #WWDC15 Building Watch Apps Session 108 Neil Desai watchos Engineer 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. Agenda
More informationCS193X: Web Programming Fundamentals
CS193X: Web Programming Fundamentals Spring 2017 Victoria Kirst (vrk@stanford.edu) Today's schedule Today: - Keyboard events - Mobile events - Simple CSS animations - Victoria's office hours once again
More informationREADSPEAKER ENTERPRISE HIGHLIGHTING 2.5
READSPEAKER ENTERPRISE HIGHLIGHTING 2.5 Advanced Skinning Guide Introduction The graphical user interface of ReadSpeaker Enterprise Highlighting is built with standard web technologies, Hypertext Markup
More informationHell is other browsers - Sartre. The touch events. Peter-Paul Koch (ppk) WebExpo, 24 September 2010
Hell is other browsers - Sartre The touch events Peter-Paul Koch (ppk) http://quirksmode.org http://twitter.com/ppk WebExpo, 24 September 2010 The desktop web Boring! - Only five browsers with only one
More informationMastering UIKit on tvos
App Frameworks #WWDC16 Mastering UIKit on tvos Session 210 Justin Voss UIKit Engineer 2016 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from
More informationitunes Extras/iTunes LP Development: TuneKit Programming Guide v1.0
itunes Extras/iTunes LP Development page 1 itunes Extras/iTunes LP Development: apple 11-18-2009 itunes Extras/iTunes LP Development page 2 Contents TuneKit Reference 3 TKController 3 View 3 Outlets 3
More informationCourse Details. Skills Gained. Who Can Benefit. Prerequisites. View Online URL:
Specialized - Mastering jquery Code: Lengt h: URL: TT4665 4 days View Online Mastering jquery provides an introduction to and experience working with the JavaScript programming language in the environment
More informationIntroducing the Modern WebKit API
Frameworks #WWDC14 Introducing the Modern WebKit API Session 206 Anders Carlsson Safari and WebKit Engineer 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without written
More informationWrite a Touch-friendly HTML5 App. Hongbo Min, Intel Junmin Zhu, Intel Yongsheng Zhu, Intel
Write a Touch-friendly HTML5 App Hongbo Min, Intel Junmin Zhu, Intel Yongsheng Zhu, Intel Agenda Background Touch vs. Mouse Part I: UI Layout Part II: Event Handling Touch in HTML5 Framework Q/A 2 Background
More informationCourse 20480: Programming in HTML5 with JavaScript and CSS3
Course 20480: Programming in HTML5 with JavaScript and CSS3 Overview About this course This course provides an introduction to HTML5, CSS3, and JavaScript. This course helps students gain basic HTML5/CSS3/JavaScript
More informationCOURSE 20480B: PROGRAMMING IN HTML5 WITH JAVASCRIPT AND CSS3
ABOUT THIS COURSE This course provides an introduction to HTML5, CSS3, and JavaScript. This course helps students gain basic HTML5/CSS3/JavaScript programming skills. This course is an entry point into
More informationQuick Interaction Techniques for watchos
App Frameworks #WWDC16 Quick Interaction Techniques for watchos Session 211 Tom Witkin watchos Engineer Miguel Sanchez watchos Engineer 2016 Apple Inc. All rights reserved. Redistribution or public display
More information729G26 Interaction Programming. Lecture 4
729G26 Interaction Programming Lecture 4 Lecture overview jquery - write less, do more Capturing events using jquery Manipulating the DOM, attributes and content with jquery Animation with jquery Describing
More informationThis course is designed for web developers that want to learn HTML5, CSS3, JavaScript and jquery.
HTML5/CSS3/JavaScript Programming Course Summary Description This class is designed for students that have experience with basic HTML concepts that wish to learn about HTML Version 5, Cascading Style Sheets
More informationProgramming in HTML5 with JavaScript and CSS3
Programming in HTML5 with JavaScript and CSS3 20480B; 5 days, Instructor-led Course Description This course provides an introduction to HTML5, CSS3, and JavaScript. This course helps students gain basic
More informationv0.9.3 Tim Neil Director, Application Platform & Tools Product
v0.9.3 Tim Neil Director, Application Platform & Tools Product Management @brcewane Framework Goals Incubation project to experiment with HTML5 UI Contribute learning's to jquerymobile, Sencha, Dojo Provides
More information5/19/2015. Objectives. JavaScript, Sixth Edition. Using Touch Events and Pointer Events. Creating a Drag-and Drop Application with Mouse Events
Objectives JavaScript, Sixth Edition Chapter 10 Programming for Touchscreens and Mobile Devices When you complete this chapter, you will be able to: Integrate mouse, touch, and pointer events into a web
More informationCOURSE OUTLINE MOC 20480: PROGRAMMING IN HTML5 WITH JAVASCRIPT AND CSS3
COURSE OUTLINE MOC 20480: PROGRAMMING IN HTML5 WITH JAVASCRIPT AND CSS3 MODULE 1: OVERVIEW OF HTML AND CSS This module provides an overview of HTML and CSS, and describes how to use Visual Studio 2012
More informationWhat s New in Xcode App Signing
Developer Tools #WWDC16 What s New in Xcode App Signing Developing and distributing Session 401 Joshua Pennington Tools Engineering Manager Itai Rom Tools Engineer 2016 Apple Inc. All rights reserved.
More informationIntroduction. Part I: jquery API 1. Chapter 1: Introduction to jquery 3
Introduction xix Part I: jquery API 1 Chapter 1: Introduction to jquery 3 What Does jquery Do for Me? 4 Who Develops jquery? 5 Obtaining jquery 5 Installing jquery 5 Programming Conventions 8 XHTML and
More informationProgramming in HTML5 with JavaScript and CSS3
20480 - Programming in HTML5 with JavaScript and CSS3 Duration: 5 days Course Price: $2,975 Software Assurance Eligible Course Description Course Overview This training course provides an introduction
More informationAdvanced Development with the ArcGIS API for JavaScript. Jeremy Bartley, Kelly Hutchins, Derek Swingley
Advanced Development with the ArcGIS API for JavaScript Jeremy Bartley, Kelly Hutchins, Derek Swingley Agenda FeatureLayer esri.request and Identity Manager OO JS Building your first Dijit Popups Working
More informationWhat's New in UIKit Dynamics and Visual Effects Session 229
App Frameworks #WWDC15 What's New in UIKit Dynamics and Visual Effects Session 229 Michael Turner UIKit Engineer David Duncan UIKit Engineer 2015 Apple Inc. All rights reserved. Redistribution or public
More informationWhat s New in XAML Q Release
facebook.com/telerik @telerik Today s session will be recorded and available 24/7 on http://tv.telerik.com What s New in XAML Q3 2013 Release Roadmap for Today Introduction and Housekeeping New Controls
More informationHere is the design that I created in response to the user feedback.
Mobile Creative Application Development Assignment 2 Report Design When designing my application, I used my original proposal as a rough guide as to how to arrange each element. The original idea was to
More informationWhat s New in tvos #WWDC16. App Frameworks. Session 206. Hans Kim tvos Engineer
App Frameworks #WWDC16 What s New in tvos Session 206 Hans Kim tvos Engineer 2016 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. Welcome
More informationBuilding Your own Widget with ArcGIS API for JavaScript
Building Your own Widget with ArcGIS API for JavaScript Matt Driscoll @driskull JC Franco @arfncode Agenda About Widgets Prerequisites Widget framework Theming DO IT! Tips & tricks About Widgets What?
More informationTable of contents. Sliding Panels DMXzone.com
Table of contents Table of contents... 1 About Sliding Panels... 2 Features in Detail... 3 Before you begin... 12 The Basics: Creating Simple Sliding Panels... 13 Advanced: Dynamic Sliding Panels... 20
More informationITP 342 Mobile App Dev. Interface Fun
ITP 342 Mobile App Dev Interface Fun Human Interface Guidelines ios Human Interface Guidelines https://developer.apple.com/ library/ios/documentation/ userexperience/conceptual/ MobileHIG/index.html 2
More informationMastering Xcode for iphone OS Development Part 2. Marc Verstaen Sr. Manager, iphone Tools
Mastering Xcode for iphone OS Development Part 2 Marc Verstaen Sr. Manager, iphone Tools 2 Tale of Two Sessions Part 1: Orientation: Tour of complete development cycle Part 2: Mastery: Details of several
More informationFundamentals of Web Technologies. Agenda: CSS Layout (Box Model) CSS Layout: Box Model. All HTML elements can be considered as a box or a container
ITU 07204: Fundamentals of Web Technologies Lecture 6: CSS Layouts (Intro) Dr. Lupiana, D FCIM, Institute of Finance Management Semester 2 Agenda: CSS Layout (Box Model) 2 CSS Layout: Box Model All HTML
More informationWeb App Vs Web Site. Some tricks of the trade. Laurent Technical Director, BlackBerry Web Platform
Web App Vs Web Site Some tricks of the trade Laurent Hasson @ldhasson, lhasson@rim.com Technical Director, BlackBerry Web Platform 2012-05-09 Web Apps Vs. Web Sites 1 INTRODUCTION 2012-05-09 Web Apps Vs.
More informationJSN EasySlider Configuration Manual
JSN EasySlider Configuration Manual Introduction Product Overview JSN EasySlider JSN EasySlider is the cutting-edge way to present content on website: Informative - Impressive - Interactive. It helps you
More information20480C: Programming in HTML5 with JavaScript and CSS3. Course Code: 20480C; Duration: 5 days; Instructor-led. JavaScript code.
20480C: Programming in HTML5 with JavaScript and CSS3 Course Code: 20480C; Duration: 5 days; Instructor-led WHAT YOU WILL LEARN This course provides an introduction to HTML5, CSS3, and JavaScript. This
More informationJQUERYUI - SORTABLE. axis This option indicates an axis of movement "x" is horizontal, "y" is vertical. By default its value is false.
JQUERYUI - SORTABLE http://www.tutorialspoint.com/jqueryui/jqueryui_sortable.htm Copyright tutorialspoint.com jqueryui provides sortable method to reorder elements in list or grid using the mouse. This
More informationUsing HTML5 Offline Storage. Brady Eidson Safari and WebKit Engineer
Using HTML5 Offline Storage Brady Eidson Safari and WebKit Engineer 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 So what can I do without the cloud? 22 What You ll Learn Make apps accessible offline
More informationNew UIKit Support for International User Interfaces
App Frameworks #WWDC15 New UIKit Support for International User Interfaces Session 222 Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization Software Engineer Paul Borokhov
More informationITP 342 Mobile App Dev. Interface Components
ITP 342 Mobile App Dev Interface Components Human Interface Guidelines ios Human Interface Guidelines (HIG) https://developer.apple.com/ library/ios/documentation/us erexperience/conceptual/m obilehig/index.html
More informationDeveloping Web Applications for Smartphones with IBM WebSphere Portlet Factory 7.0
Developing Web Applications for Smartphones with IBM WebSphere Portlet Factory 7.0 WebSphere Portlet Factory Development Team 6 September 2010 Copyright International Business Machines Corporation 2010.
More informationUsing CSS for page layout
Using CSS for page layout Advantages: Greater typographic control Style is separate from structure Potentially smaller documents Easier site maintenance Increased page layout control Increased accessibility
More informationMobile Application Development
Android Native Application Development Mobile Application Development 1. Android Framework and Android Studio b. Android Software Layers c. Android Libraries d. Components of an Android Application e.
More informationCome and Get Excited about Azure Mobile Services and Xamarin.Forms
Come and Get Excited about Azure Mobile Services and A story about Azure Mobile Services, SQL Azure and Xamarin Presented By: Fabian G. Williams About the Speaker Fabian Williams, MCSD, MCDBa, MCSE SharePoint
More informationIndex. Boolean value, 282
Index A AJAX events global level ajaxcomplete, 317 ajaxerror, 316 ajaxsend, 316 ajaxstart, 316 ajaxstop, 317 ajaxsuccess, 316 order of triggering code implementation, 317 display list, 321 flowchart, 322
More informationReact + React Native. Based on material by Danilo Filgueira
React + React Native Based on material by Danilo Filgueira Prerequisites JS and ES6 HTML and CSS NPM/YARN and NODE React A Javascript library for creating reactive and composable UI components Whenever
More informationFull Stack Web Developer
Full Stack Web Developer Course Contents: Introduction to Web Development HTML5 and CSS3 Introduction to HTML5 Why HTML5 Benefits Of HTML5 over HTML HTML 5 for Making Dynamic Page HTML5 for making Graphics
More informationAn Overview of. Eric Bollens ebollens AT ucla.edu Mobile Web Framework Architect UCLA Office of Information Technology
An Overview of Eric Bollens ebollens AT ucla.edu Mobile Web Framework Architect UCLA Office of Information Technology August 23, 2011 1. Design Principles 2. Architectural Patterns 3. Building for Degradation
More informationCalendar Management A Demonstration Application of TopBraid Live
Brief: Calendar Management Calendar Management A Demonstration of TopBraid Live What you will learn in this Brief: Rapid Semantic Building Full life cycle support from model to app Ease of building User
More informationsubject to an additional IP rights grant found at polymer.github.io/patents.txt -->
More information
Fundamentals of Website Development
Fundamentals of Website Development CSC 2320, Fall 2015 The Department of Computer Science In this chapter History of HTML HTML 5-2- 1 The birth of HTML HTML Blows and standardization -3- -4-2 HTML 4.0
More informationCSS. Shan-Hung Wu CS, NTHU
CSS Shan-Hung Wu CS, NTHU CSS Zen Garden 2 Outline The Basics Selectors Layout Stacking Order 3 Outline The Basics Selectors Layout Stacking Order 4 Grammar selector { property: value; 5 Example /* for
More information20480B: Programming in HTML5 with JavaScript and CSS3
20480B: Programming in HTML5 with JavaScript and CSS3 Course Details Course Code: Duration: Notes: 20480B 5 days This course syllabus should be used to determine whether the course is appropriate for the
More informationGetting started with Convertigo Mobilizer
Getting started with Convertigo Mobilizer First Sencha-based project tutorial CEMS 6.0.0 TABLE OF CONTENTS Convertigo Mobilizer overview...1 Introducing Convertigo Mobilizer... 1-1 Convertigo Mobilizer
More informationCopyright 2014, Oracle and/or its affiliates. All rights reserved.
1 Introduction to the Oracle Mobile Development Platform Dana Singleterry Product Management Oracle Development Tools Global Installed Base: PCs vs Mobile Devices 3 Mobile Enterprise Challenges In Pursuit
More information20480B - Version: 1. Programming in HTML5 with JavaScript and CSS3
20480B - Version: 1 Programming in HTML5 with JavaScript and CSS3 Programming in HTML5 with JavaScript and CSS3 20480B - Version: 1 5 days Course Description: This course provides an introduction to HTML5,
More informationTelerik Test Studio. Web/Desktop Testing. Software Quality Assurance Telerik Software Academy
Telerik Test Studio Web/Desktop Testing Software Quality Assurance Telerik Software Academy http://academy.telerik.com The Lectors Iliyan Panchev Senior QA Engineer@ DevCloud Testing & Test Studio Quality
More informationEssentials of Developing Windows Store Apps Using HTML5 and JavaScript
Essentials of Developing Windows Store Apps Using HTML5 and JavaScript Course 20481A; 5 Days, Instructor-led Course Description In this course, students will learn essential programming skills and techniques
More informationLiving through Flash to ipad/html5 Conversion and Development
Living through Flash to ipad/html5 Conversion and Development Dave Goodman SoftAssist, Inc. 610.265.8484 ext 14 dgood@softassist.com www.softassist.com The Issue Your Courses How do we get from here to
More informationContents FORMAT 3. Specifications STATIC ADVERTISING 4. Interstitial HTML5 ADVERTISING 5-12
Advertising specs Contents FORMAT 3 Specifications STATIC ADVERTISING 4 Interstitial HTML5 ADVERTISING 5-12 Interstitial Responsive Technical info Testing Environment Quality assurance Best practice DESIGN
More informationJavaScript Programming
JavaScript Programming Course ISI-1337B - 5 Days - Instructor-led, Hands on Introduction Today, JavaScript is used in almost 90% of all websites, including the most heavilytrafficked sites like Google,
More informationAdvanced Cocoa Text Tips and Tricks. Aki Inoue Cocoa Engineer
Advanced Cocoa Text Tips and Tricks Aki Inoue Cocoa Engineer 2 Introduction Only on Mac OS Diving deeper Understanding the layout process Getting comfortable with extending and customizing base functionalities
More informationJQUERYUI - WIDGET FACTORY
JQUERYUI - WIDGET FACTORY http://www.tutorialspoint.com/jqueryui/jqueryui_widgetfactory.htm Copyright tutorialspoint.com Earlier, the only way to write custom controls in jquery was to extend the $.fn
More informationEnhancing your apps for the next dimension of touch
App Frameworks #WWDC16 A Peek at 3D Touch Enhancing your apps for the next dimension of touch Session 228 Tyler Fox UIKit Frameworks Engineer Peter Hajas UIKit Frameworks Engineer 2016 Apple Inc. All rights
More informationLesson 1: Hello ios! 1
Contents Introduction xxv Lesson 1: Hello ios! 1 ios Developer Essentials 1 A Suitable Mac 1 A Device for Testing 2 Device Differences 2 An ios Developer Account 4 The Official ios SDK 6 The Typical App
More informationVarargs Training & Software Development Centre Private Limited, Module: HTML5, CSS3 & JavaScript
PHP Curriculum Module: HTML5, CSS3 & JavaScript Introduction to the Web o Explain the evolution of HTML o Explain the page structure used by HTML o List the drawbacks in HTML 4 and XHTML o List the new
More informationSEEM4570 System Design and Implementation. Lecture 3 Cordova and jquery
SEEM4570 System Design and Implementation Lecture 3 Cordova and jquery Prepare a Cordova Project Assume you have installed all components successfully and initialized a project. E.g. follow Lecture Note
More informationWelcome to CS50 section! This is Week 10 :(
Welcome to CS50 section! This is Week 10 :( This is our last section! Final project dates Official proposals: due this Friday at noon Status report: due Monday, Nov 28 at noon Hackathon: Thursday, Dec
More informationThe City Bars App. with. Sencha Touch 2
The City Bars App with Sencha Touch 2 Sencha Touch A JavaScript framework for building rich mobile apps with web standards http://sencha.com/x/d5 http://sencha.com/x/ed Basically... Get a WebKit-based
More informationAware IM Version 8.2 Aware IM for Mobile Devices
Aware IM Version 8.2 Copyright 2002-2018 Awaresoft Pty Ltd CONTENTS Introduction... 3 General Approach... 3 Login... 4 Using Visual Perspectives... 4 Startup Perspective... 4 Application Menu... 5 Using
More information,
Weekdays:- 1½ hrs / 3 days Fastrack:- 1½hrs / Day [Classroom and Online] ISO 9001:2015 CERTIFIED ADMEC Multimedia Institute www.admecindia.co.in 9911782350, 9811818122 The jquery Master Course by ADMEC
More informationUser Experience: Windows & Views
View Controller Programming Guide for ios User Experience: Windows & Views 2011-01-07 Apple Inc. 2011 Apple Inc. All rights reserved. No part of this publication may be reproduced, stored in a retrieval
More informationCOMM 2555: Interactive Digital Communication / Spring 2018 Lab 9: Basic layout techniques with CSS
COMM 2555: Interactive Digital Communication / Spring 2018 Lab 9: Basic layout techniques with CSS Goals Practice working with the CSS box model, positioning and layout Step 1. Create your infrastructure
More informationclassjs Documentation
classjs Documentation Release 1.0 Angelo Dini March 21, 2015 Contents 1 Requirements 3 2 Plugins 5 2.1 Cl.Accordion............................................... 5 2.2 Cl.Autocomplete.............................................
More informationVisual Web Next Design Concepts. Winston Prakash Feb 12, 2008
Visual Web Next Design Concepts Winston Prakash Feb 12, 2008 Some Notations Used Page - A web page being designed such as HTML, JSP, JSF, PHP etc. Page definition Language (PDL) - Language that used to
More informationCreating a custom gadget using the Finesse JavaScript Library API
Creating a custom gadget using the Finesse JavaScript Library API Denise Kwan, Software Engineer @ DevNet Cisco Spark How Questions? Use Cisco Spark to communicate with the speaker after the session 1.
More informationSiteforce Pilot: Best Practices
Siteforce Pilot: Best Practices Getting Started with Siteforce Setup your users as Publishers and Contributors. Siteforce has two distinct types of users First, is your Web Publishers. These are the front
More informationJavaScript and XHTML. Prof. D. Krupesha, PESIT, Bangalore
JavaScript and XHTML Prof. D. Krupesha, PESIT, Bangalore Why is JavaScript Important? It is simple and lots of scripts available in public domain and easy to use. It is used for client-side scripting.
More informationIndex. alt, 38, 57 class, 86, 88, 101, 107 href, 24, 51, 57 id, 86 88, 98 overview, 37. src, 37, 57. backend, WordPress, 146, 148
Index Numbers & Symbols (angle brackets), in HTML, 47 : (colon), in CSS, 96 {} (curly brackets), in CSS, 75, 96. (dot), in CSS, 89, 102 # (hash mark), in CSS, 87 88, 99 % (percent) font size, in CSS,
More informationJoomla! extension JSN EasySlider User Manual
Joomla! extension JSN EasySlider User Manual (for JSN EasySlider 2.0.x) www.facebook.com/joomlashine www.twitter.com/joomlashine www.youtube.com/joomlashine This documentation is release under Creative
More informationAddress Book for iphone
Address Book for iphone The people s framework Alexandre Aybes iphone Software Engineer 2 3 Address Book for iphone The people s framework Alexandre Aybes iphone Software Engineer 4 What We Will Cover
More informationIN4MATX 133: User Interface Software
IN4MATX 133: User Interface Software Lecture 13: Components in Angular Professor Daniel A. Epstein TA Jamshir Goorabian TA Simion Padurean 1 Notes Important: please put your name/email/id in the readme.txt
More informationHCDE 530: Computational Techniques for HCDE Data Visualization in Web, Part 2
HCDE 530: Computational Techniques for HCDE Data Visualization in Web, Part 2 David McDonald, Sungsoo (Ray) Hong University of Washington Outline Before we start Download HCDE530_D3_part2.zip in the course
More informationAdvanced Dreamweaver CS6
Advanced Dreamweaver CS6 Overview This advanced Dreamweaver CS6 training class teaches you to become more efficient with Dreamweaver by taking advantage of Dreamweaver's more advanced features. After this
More informationlecture 10 UI/UX and Programmatic Design cs : spring 2018
lecture 10 UI/UX and Programmatic Design cs198-001 : spring 2018 1 Announcements custom app progress form due before lab (~1 minute) will be released after lecture only 2 labs left (both very important)
More informationView Controller Advancements for ios8
Frameworks #WWDC14 View Controller Advancements for ios8 Session 214 Bruce D. Nilo Manager, UIKit Fundamentals 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without
More informationChapter 3 Style Sheets: CSS
WEB TECHNOLOGIES A COMPUTER SCIENCE PERSPECTIVE JEFFREY C. JACKSON Chapter 3 Style Sheets: CSS 1 Motivation HTML markup can be used to represent Semantics: h1 means that an element is a top-level heading
More informationCreating Complications with ClockKit Session 209
App Frameworks #WWDC15 Creating Complications with ClockKit Session 209 Eliza Block watchos Engineer Paul Salzman watchos Engineer 2015 Apple Inc. All rights reserved. Redistribution or public display
More informationThe course also includes an overview of some of the most popular frameworks that you will most likely encounter in your real work environments.
Web Development WEB101: Web Development Fundamentals using HTML, CSS and JavaScript $2,495.00 5 Days Replay Class Recordings included with this course Upcoming Dates Course Description This 5-day instructor-led
More informationEssentials of Developing Windows Store Apps Using C#
Essentials of Developing Windows Store Apps Using C# Course 20484A; 5 Days, Instructor-led Course Description In this course, students will learn essential programming skills and techniques that are required
More informationJAVASCRIPT AND JQUERY: AN INTRODUCTION (WEB PROGRAMMING, X452.1)
Technology & Information Management Instructor: Michael Kremer, Ph.D. Class 8 Professional Program: Data Administration and Management JAVASCRIPT AND JQUERY: AN INTRODUCTION (WEB PROGRAMMING, X452.1) AGENDA
More informationIBM Forms V8.0 Custom Themes IBM Corporation
IBM Forms V8.0 Custom Themes Agenda 2 Overview Class Names How to Use Best Practice Styling Form Items Test Custom CSS Sample Overview 3 To create custom theme you must be familiar with the basic concept
More informationInternet & Web
Safari Visual Effects Guide Internet & Web 2008-11-19 Apple Inc. 2008 Apple Inc. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any
More informationWeb Programming and Design. MPT Senior Cycle Tutor: Tamara Week 2
Web Programming and Design MPT Senior Cycle Tutor: Tamara Week 2 Plan for the next 4 weeks: Introduction to HTML tags, creating our template file Introduction to CSS and style Introduction to JavaScript
More informationHTML5. HTML5 Introduction. Form Input Types. Semantic Elements. Form Attributes. Form Elements. Month Number Range Search Tel Url Time Week
WEB DESIGNING HTML HTML - Introduction HTML - Elements HTML - Tags HTML - Text HTML - Formatting HTML - Pre HTML - Attributes HTML - Font HTML - Text Links HTML - Comments HTML - Lists HTML - Images HTML
More informationWhat s New in CloudKit
System Frameworks #WWDC15 What s New in CloudKit Session 704 Olivier Bonnet icloud Client Eric Krugler icloud Server 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted
More informationInformation Design. Professor Danne Woo! infodesign.dannewoo.com! ARTS 269 Fall 2018 Friday 10:00PM 1:50PM I-Building 212
Information Design Professor Danne Woo! infodesign.dannewoo.com! ARTS 269 Fall 2018 Friday 10:00PM 1:50PM I-Building 212 Interactive Data Viz Week 8: Data, the Web and Datavisual! Week 9: JavaScript and
More information