building sencha themes

58
Wednesday, November 2, 11

Upload: sencha

Post on 28-Jan-2015

118 views

Category:

Technology


0 download

DESCRIPTION

Learn how to use the power of CSS3, Sass, Compass, and Sencha tools to create consistent and cross-platform themes for Ext JS 4 and Sencha Touch.David Kaneda leads the Sencha design team. He has over eight years of experience designing in a variety of fields, from architecture and fashion to education and software. Recently, David created Outpost, an iPhone app for Basecamp, and jQTouch, a Javascript framework for iPhone development. David also maintains WebKitBits, a site about the browser engine in Safari, Google Chrome, and the iPhone. David brings his wealth of design knowledge to Sencha, and is responsible for the look and feel of our websites and software.Rob Dougan is a Sencha core engineer with an eye for pixel-perfect designs. Born and raised in Northern Ireland, he has been building advanced Sencha applications for years and is a valued asset to the team. In his spare time he enjoys photography and cooking with his wife.

TRANSCRIPT

Page 1: Building Sencha Themes

Wednesday, November 2, 11

Page 2: Building Sencha Themes

David Kaneda and Rob DouganBUILDING SENCHA THEMES

@davidkaneda @rdougan

Wednesday, November 2, 11

Page 3: Building Sencha Themes

Eww.

Wednesday, November 2, 11

Page 4: Building Sencha Themes

Sass & Compass

Hello!

http://www.sass-lang.comhttp://www.compass-style.org/

Wednesday, November 2, 11

Page 5: Building Sencha Themes

The Basic Idea

.SCSS .CSSCompassRuby

Sass

Wednesday, November 2, 11

Page 6: Building Sencha Themes

Variables$blue: #3bbfce;$margin: 16px;

.example1 { border-color: $blue;}

.example2 { margin: $margin; color: $blue;}

Wednesday, November 2, 11

Page 7: Building Sencha Themes

Variables CSS.example1 { border-color: #3bbfce;}

.example2 { margin: 16px; color: #3bbfce;}

Wednesday, November 2, 11

Page 8: Building Sencha Themes

Math$one: 8px;$two: 16px;$three: 3px;

.example1 { border: 1px solid $one / 2;}

.example2 { margin: $two + $three;}

Wednesday, November 2, 11

Page 9: Building Sencha Themes

Math CSS.example1 { border: 1px solid 4px;}

.example2 { margin: 19px;}

Wednesday, November 2, 11

Page 10: Building Sencha Themes

Nesting.example1 { border-color: #000; .example2 { color: red; }}

Wednesday, November 2, 11

Page 11: Building Sencha Themes

Nesting CSS.example1 { border-color: #000;}

.example1 .example2 { color: red;}

Wednesday, November 2, 11

Page 12: Building Sencha Themes

Color.color { color: darken(yellow, 10); background: lighten(blue, 30); border-color: saturate(#aa0000, 10);}

Wednesday, November 2, 11

Page 13: Building Sencha Themes

Color CSS.color { color: #cccc00; background: #9999ff; border-color: #aa0000;}

Wednesday, November 2, 11

Page 14: Building Sencha Themes

Mixins@mixin add-stuff($color) { color: $color; background-color: #000; .child { padding: 5px; }}

.example { @include add-stuff(blue);}

Wednesday, November 2, 11

Page 15: Building Sencha Themes

Mixins CSS.example { color: blue; background-color: #000;}

.example .child { padding: 5px;}

Wednesday, November 2, 11

Page 16: Building Sencha Themes

Compass

Wednesday, November 2, 11

Page 17: Building Sencha Themes

Compass CSS3 Mixinsborder-radiusbox-shadowtext-shadow

opacitylinear-gradient

color-stopsand many more...

Wednesday, November 2, 11

Page 18: Building Sencha Themes

Compass Watch

Wednesday, November 2, 11

Page 19: Building Sencha Themes

And more…Parent referencing

FunctionsBase64 encoding

Spriting@extend

Wednesday, November 2, 11

Page 20: Building Sencha Themes

config.rb# Get the directory that this file exists indir = File.dirname(__FILE__)

# Load the sencha-touch framework automaticallyload File.join(dir, '..', 'js', 'sencha- touch-2.0', 'resources', 'themes')

# Compass configurationssass_path = dircss_path = File.join(dir, "..", "css")environment = :debugoutput_style = :expanded

Wednesday, November 2, 11

Page 21: Building Sencha Themes

Installationsudo gem install compass

Wednesday, November 2, 11

Page 22: Building Sencha Themes

Quick Preview

Wednesday, November 2, 11

Page 23: Building Sencha Themes

Sencha Touch

Wednesday, November 2, 11

Page 24: Building Sencha Themes

Wednesday, November 2, 11

Page 25: Building Sencha Themes

CSS3GradientsText ShadowsBox ShadowsMasksBorder RadiusSelectors:first/last/nth-child:before/after

Wednesday, November 2, 11

Page 26: Building Sencha Themes

Variables$base-color

Wednesday, November 2, 11

Page 27: Building Sencha Themes

Mixins@include background-gradient($bg-color, $type);bevel, glossy, matte, flat@include color-by-background($bg-color, $contrast: 100%);@include bevel-by-background($bg-color);@include mask-by-background($bg-color, $contrast, $style);

Wednesday, November 2, 11

Page 28: Building Sencha Themes

Icons300+ icons includedSCSS: @include pictos-iconmask(‘refresh’);JS: {xtype: ‘button’, iconCls: ‘refresh’, iconMask: true, ui: ‘drastic’ }

Wednesday, November 2, 11

Page 29: Building Sencha Themes

Mixins & JavaScript

Wednesday, November 2, 11

Page 30: Building Sencha Themes

The UI attribute“UI” can be added to componentsSeveral components have default UIs

Toolbar, Carousel, TabBarlight/dark

Buttonsdefault/drastic/confirm/back/forward & round/small

Wednesday, November 2, 11

Page 31: Building Sencha Themes

SCSS

JAVASCRIPT

Wednesday, November 2, 11

Page 32: Building Sencha Themes

SCSS

JAVASCRIPT

Wednesday, November 2, 11

Page 33: Building Sencha Themes

SCSS

JAVASCRIPT

Wednesday, November 2, 11

Page 34: Building Sencha Themes

Sencha Touch 2 docs

Wednesday, November 2, 11

Page 35: Building Sencha Themes

Recap: When to use whatuiWherever possible. A great start even if you’re creating custom styles.

clsIf element doesn’t have ui mixins, or you want to further differentiate two elements with the same UI.

componentClsIf you’re developing a custom extension, this can be a good way to scope all of your sub-components.

style Never. Ever. Just think of it as deprecated.

Wednesday, November 2, 11

Page 36: Building Sencha Themes

Optimization TipsRemove unused components

Remove ImagesRemove UIs

output_style: compressed

Wednesday, November 2, 11

Page 37: Building Sencha Themes

myapp.scss// Colors$base-color: #F25A34; // Share orange

// Optimizations$include-default-icons: false;

// Library@import 'sencha-touch/default/all';@include sencha-panel;@include sencha-buttons;@include sencha-toolbar;@include sencha-carousel;@include sencha-indexbar;@include sencha-list;@include sencha-layout;@include sencha-msgbox;@include sencha-loading-spinner;

@import 'include/typography';

body {

Wednesday, November 2, 11

Page 38: Building Sencha Themes

Demo

Wednesday, November 2, 11

Page 39: Building Sencha Themes

Ext JS

Wednesday, November 2, 11

Page 40: Building Sencha Themes

Variables

Wednesday, November 2, 11

Page 41: Building Sencha Themes

$base-color

Wednesday, November 2, 11

Page 42: Building Sencha Themes

$grid-header-padding

0 6px 30px 10px

Wednesday, November 2, 11

Page 43: Building Sencha Themes

Mixins

Wednesday, November 2, 11

Page 44: Building Sencha Themes

Demo

Wednesday, November 2, 11

Page 45: Building Sencha Themes

Wednesday, November 2, 11

Page 46: Building Sencha Themes

Slicerhttp://sencha.com/products/sdk-tools/

Wednesday, November 2, 11

Page 47: Building Sencha Themes

Demo

Wednesday, November 2, 11

Page 48: Building Sencha Themes

Optimization

Wednesday, November 2, 11

Page 49: Building Sencha Themes

Optimization$include-default: false;

@import 'compass';@import 'ext4/default/all';

@include extjs-button;@include extjs-panel;@include extjs-toolbar;

Wednesday, November 2, 11

Page 50: Building Sencha Themes

Without Any Components

22kb

Wednesday, November 2, 11

Page 51: Building Sencha Themes

RecapNew Theming System

VariablesMixinsSlicer

Optimization

Wednesday, November 2, 11

Page 52: Building Sencha Themes

Neptune

Wednesday, November 2, 11

Page 53: Building Sencha Themes

Wednesday, November 2, 11

Page 54: Building Sencha Themes

Wednesday, November 2, 11

Page 55: Building Sencha Themes

Kitchen Sink

Wednesday, November 2, 11

Page 56: Building Sencha Themes

Wednesday, November 2, 11

Page 57: Building Sencha Themes

Questions?

http://j.mp/sencha-themes

@davidkaneda@rdougan

Wednesday, November 2, 11

Page 58: Building Sencha Themes

Wednesday, November 2, 11