Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Speed up your web development
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Spin
January 10, 2012
Programming
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Speed up your web development
Spin
January 10, 2012
More Decks by Spin
See All by Spin
Django Class-based Views for Beginners
spin
2
260
Two scoops of Django - Security Best Practices
spin
0
140
The django book - Chap10 : Advanced Models
spin
1
160
Other Decks in Programming
See All in Programming
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
150
JIS keyboard support in Omarchy
lef237
0
120
phperだってパンチカードでコーディングしたい
o0h
PRO
0
340
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
5.2k
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
220
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
500
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
610
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
790
APNsからLive Activityを開始する話
yumnumm
0
170
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
290
Domain-Driven Transformation
hschwentner
2
2.3k
Featured
See All Featured
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
580
Mobile First: as difficult as doing things right
swwweet
225
10k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
940
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
How to build a perfect <img>
jonoalderson
1
6.1k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
870
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Designing Powerful Visuals for Engaging Learning
tmiket
1
610
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
370
Code Review Best Practice
trishagee
74
20k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
The Limits of Empathy - UXLibs8
cassininazir
2
720
Transcript
Speed up your Web Development Ushering in 2012 Speaker :
Spin Lai Date : 2012/1/10 ϋ˜˚ಂɚ
Time breakdown of modern web development ϋ˜˚ಂɚ
40% Trying to get the bastard to work in Internet
fu*king Explorer ϋ˜˚ಂɚ
15% Swearing ϋ˜˚ಂɚ
20% Trying to get the layout to work using only
CSS before giving up and using table ϋ˜˚ಂɚ
10% Making the site W3C comliant ϋ˜˚ಂɚ
10% Wishing a slow, painful death on Bill Gat*s ϋ˜˚ಂɚ
5% Actually coding/design ϋ˜˚ಂɚ
Can somebody help us, Please ? ϋ˜˚ಂɚ
Can somebody help us, Of course! ϋ˜˚ಂɚ
ZenCoding SASS/Compass Dojo ϋ˜˚ಂɚ
ZenCoding ϋ˜˚ಂɚ
ZenCoding ϋ˜˚ಂɚ
What is ZenCoding ? ϋ˜˚ಂɚ
What is ZenCoding ? Get HTML done faster ! ϋ˜˚ಂɚ
But I have code snippet plugins for my IDE. ϋ˜˚ಂɚ
Cross-platform Cross-editor CSS-like syntax ZenCoding is ... ϋ˜˚ಂɚ
It works with ... ϋ˜˚ಂɚ
<textarea> ϋ˜˚ಂɚ
And how ? ϋ˜˚ಂɚ
HTML [ ] [ ] Zen Code <div id="content"> </div>
ϋ˜˚ಂɚ
HTML [ ] [ ] Zen Code <div id="content"> </div>
div#content ϋ˜˚ಂɚ
HTML [ ] [ ] Zen Code <div id="content"> </div>
div#content ϋ˜˚ಂɚ
HTML [ ] [ ] Zen Code <ul id="navigation"> <li></li>
<li></li> <li></li> </ul> ϋ˜˚ಂɚ
HTML [ ] [ ] Zen Code <ul id="navigation"> <li></li>
<li></li> <li></li> </ul> ul#navigation>li*3 ϋ˜˚ಂɚ
HTML [ ] [ ] Zen Code <ul id="navigation"> <li></li>
<li></li> <li></li> </ul> ul#navigation>li*3 ϋ˜˚ಂɚ
HTML [ ] [ ] Zen Code <select id="jazz" name=""
class="album"> <option value=""></option> <option value=""></option> </select> ϋ˜˚ಂɚ
HTML [ ] [ ] Zen Code select#jazz.album>option*2 <select id="jazz"
name="" class="album"> <option value=""></option> <option value=""></option> </select> ϋ˜˚ಂɚ
HTML [ ] [ ] Zen Code select#jazz.album>option*2 <select id="jazz"
name="" class="album"> <option value=""></option> <option value=""></option> </select> ϋ˜˚ಂɚ
HTML [ ] [ ] Zen Code <div id="thediv"> <p
class="first"></p> <p class="second"></p> </div> ϋ˜˚ಂɚ
HTML [ ] [ ] Zen Code <div id="thediv"> <p
class="first"></p> <p class="second"></p> </div> div#thediv>p.first+p.second ϋ˜˚ಂɚ
HTML [ ] [ ] Zen Code <div id="thediv"> <p
class="first"></p> <p class="second"></p> </div> div#thediv>p.first+p.second ϋ˜˚ಂɚ
DEMO ϋ˜˚ಂɚ
SASS/Compass ϋ˜˚ಂɚ
CSS/SASS/Compass ϋ˜˚ಂɚ
尛 ϋ˜˚ಂɚ
ϋ˜˚ಂɚ
CSS / SASS / Compass ϋ˜˚ಂɚ
CSS / SASS / Compass ϋ˜˚ಂɚ
Everything is much easier ϋ˜˚ಂɚ
Everything is much easier in the beginning... ϋ˜˚ಂɚ
body { margin: 0; padding: 0; background-color: #D1E7FF; font-family: Verdana,
Arial, Helvetica, sans-serif; } div#main { margin: 0 2em 0 2em; padding: 0; background: #FFF; } div#footer { margin: 0 3em; padding: 0.5em 0; background: #FFF; height: 64px; background-image: url('images/inex_06.jpg'); } ϋ˜˚ಂɚ
ϋ˜˚ಂɚ
When the project grows up... ϋ˜˚ಂɚ
table#tb_product_grid {width: 100%;} table#tb_product_grid td {margin: 0;padding: 0; text-align: center;}
table#tb_product_grid img{width: 350px;} table#tb_LT_realtime th.y_desc {border-right: 1px solid #999; border-bottom: 1px solid #999; background: #5A042C; color: #FFF; width: 22%;} table#tb_LT_realtime th.x_var {background: #E7E5E5; width: 13%;} table#tb_LT_realtime th.y_var {border: 1px solid #DDD; padding: 0.25em 1.5em 0.25em 0; text-align: right;} .formbutton04{ cursor:pointer; border:outset 1px #ccc; background:#999; color:#000; font-family:Verdana,sans-serif; font-weight:bold; padding: 1px 2px; background:url(images/formbg04.gif) repeat-x left top; } .btn3_mouseout { BORDER-RIGHT: #2C59AA 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #2C59AA 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 12px; FILTER: progid:DXImageTransform.Microsoft.Gradient (GradientType=0, StartColorStr=#ffffff, EndColorStr=#C3DAF5); BORDER-LEFT: #2C59AA 1px solid; CURSOR: hand; COLOR: black; PADDING-TOP: 2px; BORDER-BOTTOM: #2C59AA 1px solid } .btn3_mouseover { BORDER-RIGHT: #2C59AA 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #2C59AA 1px solid; PADDING-LEFT: 2px; FONT-SIZE: 12px; FILTER: progid:DXImageTransform.Microsoft.Gradient (GradientType=0, StartColorStr=#ffffff, EndColorStr=#D7E7FA); BORDER-LEFT: #2C59AA 1px solid; CURSOR: hand; COLOR: black; PADDING-TOP: 2px; BORDER-BOTTOM: #2C59AA 1px solid } iv#display_img{ text-align: center; margin: 0 0 0 2.5em; width: 1000px; } div#img_name{ width: 1000px; height:20px; font-size: large; text-align: center; } div#img_list_name{ padding:2px; font-size: large; height: 20px; text-align: center; width: 1000px; } div#down_gif{ margin: 0.5em 0 0 2.5em; width:1000px; /* height:20px; */ text-align:right; cursor: pointer; } .ui-tabs { padding: .2em; zoom: 1; } .ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; } .ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; } .ui-tabs .ui-tabs-nav li a { float: left; text- decoration: none; padding: .5em 1em; } .ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; } .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui- tabs .ui-tabs-nav li.ui-state-disabled a, .ui- tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs- collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ .ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; } .ui-tabs .ui-tabs-hide { display: none ! important; } div.sitemap_layer_1{ border: 1px solid #B5D9EA; margin: 0.5em 0 0 28px; background: #D9F1FC; padding: 0.25em 1em 0.25em 1em; display: inline-block; *display: inline; / * This is for IE6 */ zoom: 1; / * This is for inline-block in IE */ *display: inline !important; / * This is for IE7 */ } ϋ˜˚ಂɚ
ϋ˜˚ಂɚ
ϋ˜˚ಂɚ
ϋ˜˚ಂɚ
CSS / SASS / Compass ϋ˜˚ಂɚ
SASS is ... ϋ˜˚ಂɚ
NOT SuperASS SASS is ... ϋ˜˚ಂɚ
NOT SuperASS Syntatically Awsome StyleSheet SASS is ... ϋ˜˚ಂɚ
NOT SuperASS Syntatically Awsome StyleSheet SASS v3 is known as
SCSS SASS is ... ϋ˜˚ಂɚ
Okay, but what can she do? ϋ˜˚ಂɚ
Nesting Variable Mixins Inheritance and so on... ϋ˜˚ಂɚ
Nesting Variable Mixins Inheritance and so on... ϋ˜˚ಂɚ
[ CSS ] [ SCSS ] #header { margin-bottom: 50px;
} #header h1 { font-size: 24px; color: red; } #header h1 a { display: block; } #header ul.nav li { float: left; } ϋ˜˚ಂɚ
[ CSS ] [ SCSS ] #header { margin-bottom: 50px;
} #header h1 { font-size: 24px; color: red; } #header h1 a { display: block; } #header ul.nav li { float: left; } #header { margin-bottom: 50px; h1 { font-size: 24px; color: red; a { display: block; } } ul.nav { li { float:left; } } } ϋ˜˚ಂɚ
[ CSS ] [ SCSS ] #header { margin-bottom: 50px;
} #header h1 { font-size: 24px; color: red; } #header h1 a { display: block; } #header ul.nav li { float: left; } #header { margin-bottom: 50px; h1 { font-size: 24px; color: red; a { display: block; } } ul.nav { li { float:left; } } } ϋ˜˚ಂɚ
[ CSS ] [ SCSS ] #header { margin-bottom: 50px;
} #header h1 { font-size: 24px; color: red; } #header h1 a { display: block; } #header ul.nav li { float: left; } #header { margin-bottom: 50px; h1 { font-size: 24px; color: red; a { display: block; } } ul.nav { li { float:left; } } } ϋ˜˚ಂɚ
[ CSS ] #header { margin-bottom: 50px; } #header h1
{ font-size: 24px; color: red; } #header h1 a { display: block; } #header ul.nav li { float: left; } #header { margin-bottom: 50px; h1 { font-size: 24px; color: red; a { display: block; } } ul.nav { li { float:left; } } } [ SCSS ] ϋ˜˚ಂɚ
Nesting Variable Mixins Inheritance and so on... ϋ˜˚ಂɚ
[ CSS ] [ SCSS ] a, h1, h2, h3,
h4, h5 { color: #ff9900; } #header { background: #ff9900; } .section { padding: 10px; margin-bottom: 20px; } ϋ˜˚ಂɚ
[ CSS ] [ SCSS ] a, h1, h2, h3,
h4, h5 { color: #ff9900; } #header { background: #ff9900; } .section { padding: 10px; margin-bottom: 20px; } $LINK_COLOR: #FF9900; $MARGIN: 20px; a, h1, h2, h3, h4, h5 { color: $LINK_COLOR; } #header { background: $LINK_COLOR; } .section { padding: $MARGIN / 2; margin-bottom: $MARGIN; } ϋ˜˚ಂɚ
[ CSS ] [ SCSS ] a, h1, h2, h3,
h4, h5 { color: #ff9900; } #header { background: #ff9900; } .section { padding: 10px; margin-bottom: 20px; } $LINK_COLOR: #FF9900; $MARGIN: 20px; a, h1, h2, h3, h4, h5 { color: $LINK_COLOR; } #header { background: $LINK_COLOR; } .section { padding: $MARGIN / 2; margin-bottom: $MARGIN; } ϋ˜˚ಂɚ
[ CSS ] [ SCSS ] a, h1, h2, h3,
h4, h5 { color: #ff9900; } #header { background: #ff9900; } .section { padding: 10px; margin-bottom: 20px; } $LINK_COLOR: #FF9900; $MARGIN: 20px; a, h1, h2, h3, h4, h5 { color: $LINK_COLOR; } #header { background: $LINK_COLOR; } .section { padding: $MARGIN / 2; margin-bottom: $MARGIN; } ϋ˜˚ಂɚ
[ CSS ] [ SCSS ] a, h1, h2, h3,
h4, h5 { color: #ff9900; } #header { background: #ff9900; } .section { padding: 10px; margin-bottom: 20px; } $LINK_COLOR: #FF9900; $MARGIN: 20px; a, h1, h2, h3, h4, h5 { color: $LINK_COLOR; } #header { background: $LINK_COLOR; } .section { padding: $MARGIN / 2; margin-bottom: $MARGIN; } ϋ˜˚ಂɚ
Nesting Variable Mixins Inheritance and so on... ϋ˜˚ಂɚ
[ CSS ] [ SCSS ] #navbar li { border-top-radius:
10px; -moz-border-radius-top: 10px; -webkit-border-top-radius: 10px; } #footer { border-top-radius: 10px; -moz-border-radius-top: 10px; -webkit-border-top-radius: 10px; } ϋ˜˚ಂɚ
[ CSS ] [ SCSS ] @mixin rounded-top { $RADIUS:
10px; border-top-radius: $RADIUS; -moz-border-radius-top: $RADIUS; -webkit-border-top-radius: $RADIUS; } #navbar li { @include rounded- top; } #footer { @include rounded-top; } #navbar li { border-top-radius: 10px; -moz-border-radius-top: 10px; -webkit-border-top-radius: 10px; } #footer { border-top-radius: 10px; -moz-border-radius-top: 10px; -webkit-border-top-radius: 10px; } ϋ˜˚ಂɚ
[ CSS ] [ SCSS ] @mixin rounded-top { $RADIUS:
10px; border-top-radius: $RADIUS; -moz-border-radius-top: $RADIUS; -webkit-border-top-radius: $RADIUS; } #navbar li { @include rounded- top; } #footer { @include rounded-top; } #navbar li { border-top-radius: 10px; -moz-border-radius-top: 10px; -webkit-border-top-radius: 10px; } #footer { border-top-radius: 10px; -moz-border-radius-top: 10px; -webkit-border-top-radius: 10px; } ϋ˜˚ಂɚ
Nesting Variable Mixins Inheritance and so on... ϋ˜˚ಂɚ
[ CSS ] [ SCSS ] .warn { background: yellow;
} .bad_warn { background: yellow; font-weight: bold; color: red; } ϋ˜˚ಂɚ
[ CSS ] [ SCSS ] .warn { background: yellow;
} .bad_warn { @extend .warn; font-weight: bold; color: red; } .warn { background: yellow; } .bad_warn { background: yellow; font-weight: bold; color: red; } ϋ˜˚ಂɚ
[ CSS ] [ SCSS ] .warn { background: yellow;
} .bad_warn { @extend .warn; font-weight: bold; color: red; } .warn { background: yellow; } .bad_warn { background: yellow; font-weight: bold; color: red; } ϋ˜˚ಂɚ
Nesting Variable Mixins Inheritance and so on... ϋ˜˚ಂɚ
CSS / Sass / Compass ϋ˜˚ಂɚ
Powered by SASS Meta framework Code snippets Best practices Compass
is ... ϋ˜˚ಂɚ
Tell me more ! ϋ˜˚ಂɚ
Helpers Extension Project Context and lots more... ϋ˜˚ಂɚ
Helpers Extension Project Context and lots more... ϋ˜˚ಂɚ
@import "compass" .linear { @include background(linear- gradient( top left, #333,
#0C0)); } ϋ˜˚ಂɚ
@import "compass" .box { @include border-radius(8px); @include box-shadow( rgba(#CCC, 0.5)
3px 3px 5px ); } ϋ˜˚ಂɚ
Helpers Extension Project Context and lots more... ϋ˜˚ಂɚ
Helpers Extension Project Context and lots more... ϋ˜˚ಂɚ
Helpers Extension Project Context and lots more... ϋ˜˚ಂɚ
DEMO ϋ˜˚ಂɚ
Dojo ϋ˜˚ಂɚ
Dojo ϋ˜˚ಂɚ
One day ... ϋ˜˚ಂɚ
Doraemon ϋ˜˚ಂɚ
It’s easy! see... ϋ˜˚ಂɚ
It’s easy! see... ϋ˜˚ಂɚ
But I use IE9, and... ϋ˜˚ಂɚ
But I use IE9, and... ϋ˜˚ಂɚ
ϋ˜˚ಂɚ
ϋ˜˚ಂɚ
I use IE6, WTF... ϋ˜˚ಂɚ
I use IE6, WTF... ϋ˜˚ಂɚ
ϋ˜˚ಂɚ
God ! Help us !! ϋ˜˚ಂɚ
Dojo ? What’s that? ϋ˜˚ಂɚ
Powerful Javascript toolkit Open source BSD licensed Dojo is ...
ϋ˜˚ಂɚ
Powerful ? Show me ϋ˜˚ಂɚ
Layout Form Dialogs Tooltips Trees and lots more... ϋ˜˚ಂɚ
Layout Form Dialogs Tooltips Trees and lots more... ϋ˜˚ಂɚ
Layout Form Dialogs Tooltips Trees and lots more... ϋ˜˚ಂɚ
Layout Form Dialogs Tooltips Trees and lots more... ϋ˜˚ಂɚ
Layout Form Dialogs Tooltips Trees and lots more... ϋ˜˚ಂɚ
Layout Form Dialogs Tooltips Trees and lots more... ϋ˜˚ಂɚ
Layout Form Dialogs Tooltips Trees and lots more... ϋ˜˚ಂɚ
DEMO ϋ˜˚ಂɚ
Last , but not least... ϋ˜˚ಂɚ
IE6 must die! ϋ˜˚ಂɚ
Reference ϋ˜˚ಂɚ
ZenCoding http://code.google.com/p/zen-coding/ SASS http://sass-lang.com Compass http://compass-style.org Dojo http://dojotoolkit.org ϋ˜˚ಂɚ