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 ์์ด์ฝ ์ค์ ์ ์ฌ์ฉํ์ง ์๋๋ก ์ค์ ํ ๋ค์ ํ์ํ ์์ด์ฝ๋ง ๊ธฐ์ ํด์ ๋ฃ์ด์ฃผ๋ ๊ฒ๋ ํ์ผ ์ฌ์ด์ฆ๋ฅผ ์ค์ผ ์ ์๋ ํ ๋ฐฉ๋ฒ์ด๋ค.