video05 - KoreaSenchaUserGroup/Lab1 GitHub Wiki

VIDEO 05. [Concepts] Theming Sencha Touch

Intro

  • ์„ผ์ฐจ์˜ ๊ธฐ๋ณธ ํ…Œ๋งˆ๋„ ํ›Œ๋ฅญํ•˜์ง€๋งŒ, ๋งŒ์•ฝ ์Šคํ‚จ์„ ๋ฐ”๊พธ๊ณ  ์‹ถ๋‹ค๋ฉด ์›ํ•˜๋Š”๋Œ€๋กœ ๋ฐ”๊ฟ€ ์ˆ˜๋„ ์žˆ๋‹ค.
  • SASS ์ฝ”๋“œ ๋ช‡์ค„์„ ์ˆ˜์ •ํ•ด CSS3 ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์ƒˆ๋กœ์šด ์•„์ด์ฝ˜์„ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ์ƒˆ๋กœ์šด ํ…Œ๋งˆ๋ฅผ ์ ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

Project setup

  • ๋ฐ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ดํŽด๋ณด๋„๋ก ํ•˜์ž. github (https://github.com/senchalearn/Touch-Theming) ์—์„œ ์†Œ์Šค ์ฝ”๋“œ๋„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐ๋ชจ ํŽ˜์ด์ง€๋ฅผ ์‚ดํŽด๋ณด๋ฉด, ์„ผ์ฐจ์˜ ๊ธฐ๋ณธ ํ…Œ๋งˆ๊ฐ€ ์ ์šฉ๋˜์–ด์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋ช‡๊ฐœ์˜ ์•„์ด์ฝ˜๋“ค์€ ์ด๋ฏธ์ง€๊ฐ€ ์—†๋Š”๋ฐ, ์ž ์‹œ ํ›„์— ์ˆ˜์ •ํ•ด ๋„ฃ๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค„ ๊ฒƒ์ด๋‹ค.
  • ์„ผ์ฐจํ„ฐ์น˜์˜ ์Šคํ‚จ์€ ๋‹จ์ˆœํžˆ CSS๋กœ ๋˜์–ด ์žˆ๋Š”๋ฐ, CSS ์ „์ฒ˜๋ฆฌ๊ธฐ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” SASS๋ฅผ ์ด์šฉํ•ด ๋งŒ๋“ค์—ˆ๋‹ค.
  • SASS๋Š” CSS์— ๋ช‡๊ฐ€์ง€ ๊ธฐ๋Šฅ(Variables, Nestig, Mixins, Selector Inheritance)์„ ์ถ”๊ฐ€ํ•œ ๊ฒƒ์ด๋‹ค.
  • ๋˜ ์„ธ์ฐจํ„ฐ์น˜๋Š” SASS๋ฅผ ์ด์šฉํ•ด CSS๋ฅผ ์ œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” compass ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.
  • ์„ผ์ฐจํ„ฐ์น˜ ํ…Œ๋งˆ๋ฅผ ์ปดํŒŒ์ผ ํ•˜๋ ค๋ฉด theme.scss ํŒŒ์ผ๊ณผ config.rb ํŒŒ์ผ์ด ํ•„์š”ํ•˜๋‹ค. ** theme.scss ๋Š” ์Šคํƒ€์ผ์„ ์ •์˜ํ•˜๋Š” scss ํŒŒ์ผ์ด๋‹ค. ** config.rb ํŒŒ์ผ์€ compass ๊ฐ€ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•˜๋Š” ์„ค์ •ํŒŒ์ผ์ด๋‹ค.
  • ์ƒˆ๋กœ์šด ์Šคํƒ€์ผ์„ ๋งŒ๋“ค์–ด์„œ ํ…Œ๋งˆ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์ž.
  • ํ”„๋กœ์ ํŠธ์— touch ๋ผ๋Š” ํด๋”์™€ styles ๋ผ๋Š” ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  styles ํด๋”์— config.rb ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋„ฃ์ž.
  • ์ค€๋น„๋œ ์ฝ”๋“œ๋ฅผ config.rb ํŒŒ์ผ์— ๋ณต์‚ฌํ•ด ๋„ฃ์ž.
  • touch ํด๋”์—๋Š” sencha-touch์˜ resources ํด๋”์™€ src ํด๋”, sencha-touch.js, sencha-touch-debug.js ํŒŒ์ผ์„ ๋ณต์‚ฌํ•ด ๋„ฃ์ž.
  • touch/resources/themes/templates/project ํด๋” ์•ˆ์— ๋ณด๋ฉด sencha-touch.scss ํŒŒ์ผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ํŒŒ์ผ์˜ ๋‚ด์šฉ์ด ๊ธฐ๋ณธ์ด ๋˜์–ด์•ผ ํ•œ๋‹ค.
  • styles ํด๋”์— ์ƒˆ๋กœ์šด ํ…Œ๋งˆํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์ด ๋‚ด์šฉ์„ ๋ณต์‚ฌํ•ด ๋„ฃ์ž. (๋™์˜์ƒ์˜ ๊ฒฝ์šฐ default-theme.scss)

Compiling the theme

  • ์ด์ œ command line์„ ํ†ตํ•ด styles ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๊ฐ–์„œ compass compile ์„ ์‹คํ–‰ํ•ด ๋ณด์ž.
  • ๋งŒ์•ฝ compass๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด, compass : command not found ๋ผ๋Š” ์‘๋‹ต์ด ์˜ฌ ๊ฒƒ์ด๋‹ค. ** ๋งฅ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด http://compass-style.org/install/ ํŽ˜์ด์ง€๋ฅผ ์ฐธ๊ณ ํ•ด ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ** gem update --system, gem install compass ๋ช…๋ น์„ ํ†ตํ•ด ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ถŒํ•œ์ด ํ•„์š”ํ•˜๋ฉด sudo๋กœ install ํ•˜๋ฉด ๋œ๋‹ค.
  • ๊ทธ๋Ÿฌ๋ฉด ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ์— xxx-theme.css ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. (๋™์˜์ƒ์˜ ๊ฒฝ์šฐ default-theme.css)
  • compass watch ๋ช…๋ น์„ ๋‚ด๋ ค ๋†“์œผ๋ฉด, compass๊ฐ€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ scss ํŒŒ์ผ์˜ ๋ณ€๊ฒฝ์„ ๊ฐ์‹œํ•œ๋‹ค. ์ด๋•Œ ๋ณ€๊ฒฝ์ด ๊ฐ์ง€๋˜๋ฉด, ํ•ด๋‹น ๋‚ด์šฉ์ด css์— ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ˜์˜๋œ๋‹ค. (๋งค์šฐ ํŽธ๋ฆฌํ•ด ๋ณด์ธ๋‹ค.)

Writing vanilla CSS

  • ์ด์ œ ๊ตฌ์ฒด์ ์œผ๋กœ ํ…Œ๋งˆ๋ฅผ ๋ณ€๊ฒฝํ•ด ๋ณด์ž.
  • ๋จผ์ € scss ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. ์ด ํŒŒ์ผ์€ ์ผ๋ฐ˜ css ํŒŒ์ผ์ฒ˜๋Ÿผ ์ˆ˜์ •ํ•˜๋ฉด ๋œ๋‹ค.
  • ํŠธ์œ„ํ„ฐ ํƒ€์ž„๋ผ์ธ ํŽ˜์ด์ง€์— ์ผ๋ฐ˜ css๋ฅผ ์ ์šฉํ•ด๋ณด์ž. (๋ฏธ๋ฆฌ twitter ํƒ€์ž„๋ผ์ธ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์–ด ๋†“์€ ๊ฒƒ์ธ๋ฐ, ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ์—†์–ด์„œ ๋™์˜์ƒ์—์„œ๋Š” ์ด ๋‚ด์šฉ์ด ๊ณต๋ฐฑ์œผ๋กœ ๋‚˜์˜ค๊ณ  ์žˆ๋‹ค. ์—ฌ๊ธฐ์— twitter ์—์„œ ์ œ๊ณตํ•˜๋Š” css๋ฅผ ๋ช‡์ค„ ์ถ”๊ฐ€ํ•œ ๋‹ค์Œ scss๋ฅผ ์ปดํŒŒ์ผํ•ด์„œ ๋Œ๋ ค๋ณด๋Š” ๊ฒƒ์ด๋‹ค.)
  • twitter ์—์„œ ์‚ฌ์šฉํ•˜๋Š” css๋Š” ๋ณด๋‹ค ๊ฐ€์‹œ์„ฑ์„ ์ข‹๊ฒŒ ํ•˜๋ ค๋ฉด scss์˜ nesting ๋ฌธ๋ฒ•์„ ์ด์šฉํ•ด ํƒœ๊ทธ๋ฅผ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

Adding Icons

  • ์„ผ์ฐจ์—์„œ๋Š” 300์—ฌ๊ฐœ์˜ ์•„์ด์ฝ˜์„ ์ œ๊ณตํ•œ๋‹ค.
  • touch/resouces/themes/images/default/pictos ๋ฐ‘์— ์ด 300์—ฌ๊ฐœ์˜ png ํŒŒ์ผ๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์–ด๋–ค ํ…Œ๋งˆ๋ฅผ ๋งŒ๋“ค๋“ , ์ด ์•„์ด์ฝ˜๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์˜ˆ์ œ์—์„œ๋Š” 20์—ฌ๊ฐœ์˜ ์•„์ด์ฝ˜์ด ์žˆ๋Š” ํˆด๋ฐ”๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. (github ์˜ˆ์ œ) ์ด ์•„์ด์ฝ˜๋“ค์€ ์„ผ์ฐจ์— ๊ธฐ๋ณธ์œผ๋กœ ๋‚ด์žฅ๋œ ์•„์ด์ฝ˜๋“ค์ด๋‹ค. (๋‚˜์ค‘์— ๋‚˜์˜ค๊ฒ ์ง€๋งŒ, ์ตœ์ข… ๋ฐฐํฌ์‹œ์—๋Š” ๊ธฐ๋ณธ ์•„์ด์ฝ˜๋“ค์„ ์ œ๊ฑฐํ•˜๊ณ  ํ•„์š”ํ•œ ์•„์ด์ฝ˜์„ ๊ธฐ์ˆ ํ•ด ์ฃผ๋Š” ๊ฒƒ์ด css ํŒŒ์ผ ์‚ฌ์ด์ฆˆ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ๋งค์šฐ ์œ ์šฉํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค)
  • pictos ์— ์žˆ๋Š” ๋‹ค๋ฅธ ์•„์ด์ฝ˜์„ ์ด์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, @include pictos-iconmask('twitter2'); ์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ scss์— ์ถ”๊ฐ€ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.
  • compass๋Š” ํ•ด๋‹น ์•„์ด์ฝ˜์„ css์— ์ถ”๊ฐ€ํ•˜๊ณ , ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ base64๋กœ ์ธ์ฝ”๋”ฉํ•˜์—ฌ css์— ํ…์ŠคํŠธ๊ฐ’์œผ๋กœ ๋„ฃ์–ด์ค€๋‹ค. (์ด๋ ‡๊ฒŒ ํ•˜๋ฉด, ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๋ณ„๋„๋กœ ์ถ”๊ฐ€ํ•  ํ•„์š”๊ฐ€ ์—†์–ด ๊ฐ„ํŽธํ•˜๋‹ค.)

Changing SASS variables

  • ์„ผ์ฐจํ„ฐ์น˜๋Š” SASS ๋ณ€์ˆ˜๋ฅผ ์•„์ฃผ ์ž˜ ํ™œ์šฉํ•˜๊ณ  ์žˆ๋‹ค.
  • ๊ธฐ๋ณธ ํ…Œ๋งˆ์—์„œ base-color๋ฅผ darkblue๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ , active-color๋Š” lightblue ์ƒ‰์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ์ด ๊ฐ’์„ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด theme scss ํŒŒ์ผ์— $base-color ๊ฐ’๊ณผ $active-color ๊ฐ’์„ ๊ฐ๊ฐ ์›ํ•˜๋Š” ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ด ์ฃผ๋ฉด ๋œ๋‹ค.
  • $base-gradient : 'matte' ๊ฐ€ ๊ธฐ๋ณธ์ธ๋ฐ, 'glossy'๋‚˜ ๋‹ค๋ฅธ ๊ฐ’์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค.

Browsing the documentation

  • http://docs.sencha.com/touch/2-0/#!/api/Global_CSS ์‚ฌ์ดํŠธ๋ฅผ ํ†ตํ•ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜๋“ค๊ณผ mixin ๊ฐ’๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • loadmask ๋ฅผ ๊ฒ€์ƒ‰ํ•œ ๋‹ค์Œ ๋ฌธ์„œ์—์„œ CSS Variables ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด, ์–ด๋–ค CSS ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ด ๋ณ€์ˆ˜ ๊ฐ’์„ ๋ฐ”๊ฟ”์ฃผ๋ฉด ํ•ด๋‹น ๊ฐ’์ด ์ ์šฉ๋œ๋‹ค. Ext.LoadMask ํด๋ž˜์Šค์˜ ๊ฒฝ์šฐ $loading-spinner-color ๊ฐ’์„ ์ง€์ •ํ•ด ์ฃผ๋ฉด, ์Šคํ”ผ๋„ˆ์˜ ์ปฌ๋Ÿฌ๊ฐ’์ด ๋ฐ˜์˜๋œ๋‹ค.

Compressing the CSS

  • ๊ฐœ๋ฐœํ•˜๋Š” ๋™์•ˆ์—๋Š” compass๋ฅผ ํ†ตํ•ด ๋งŒ๋“ค์–ด์ง„ css๊ฐ€ ๊ฐ€๋…์„ฑ์ด ์žˆ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ํ•˜์ง€๋งŒ, ๋ฐฐํฌ์‹œ์—๋Š” ์ด css๋ฅผ ์ตœ๋Œ€ํ•œ ์งง๊ฒŒ ์••์ถ•ํ•ด์„œ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  • compass ๋ฅผ ํ†ตํ•ด ์••์ถ•ํ•˜๋ ค๋ฉด config.rb ํŒŒ์ผ์—์„œ output-style ๊ฐ’์„ compressed ๋กœ ์„ค์ •ํ•˜๊ณ , environment ๊ฐ’์„ production์œผ๋กœ ์„ค์ •ํ•œ ๋‹ค์Œ compile ํ•˜๋ฉด ๋œ๋‹ค.
  • ๋˜ํ•œ, ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋นผ๊ณ  ๋ฐฐํฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, scss์˜ @include ๋ฅผ ์ œ๊ฑฐ(ํ˜น์€ ์ฃผ์„์ฒ˜๋ฆฌ)ํ•œ ๋‹ค์Œ compile ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. css ํŒŒ์ผ์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋” ์ค„์–ด๋“ ๋‹ค.
  • default ์•„์ด์ฝ˜ ์„ค์ •์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ์„ค์ •ํ•œ ๋‹ค์Œ ํ•„์š”ํ•œ ์•„์ด์ฝ˜๋งŒ ๊ธฐ์ˆ ํ•ด์„œ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ๋„ ํŒŒ์ผ ์‚ฌ์ด์ฆˆ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.