big frontends made simple

51
Big Frontends Made Simple With Sass & Compass

Upload: nico-hagenburger

Post on 15-May-2015

2.286 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Big Frontends Made Simple

Big Frontends Made Simple

With Sass & Compass

Page 2: Big Frontends Made Simple

{less} vs. Sass

Compass

Structuring Projects

Handling Browsers

Page 3: Big Frontends Made Simple

http://sass-lang.org

http://github.com/nex3/haml

Combined with Haml

Overview

http://lesscss.org

https://github.com/cloudhead/less

Inspired by Sass

Page 4: Big Frontends Made Simple

gem install haml

Installationgem install less

Page 5: Big Frontends Made Simple

gem install?

try

http://www.ruby-lang.org/en/downloads/

first

Page 6: Big Frontends Made Simple

sass style.sass style.css

css2sass style.css \style.sass

Runninglessc style.less

Page 8: Big Frontends Made Simple

.class div :color blue

or:.class div color: blue

Syntax.class div { color: blue;}

Page 9: Big Frontends Made Simple

Result.class div { color: blue;}

Page 10: Big Frontends Made Simple

.class :color blue div :color red

Cascading.class { color: blue; div { color: red; }}

Page 11: Big Frontends Made Simple

Result.class { color: blue;}

.class div { color: red;}

Page 12: Big Frontends Made Simple

!pink = #c322bd#pink :color = !pink :background red

Variables@pink: #c322bd;#pink { color: @pink; background: red;}

Page 13: Big Frontends Made Simple

Result#pink { color: #c322bd; background: red;}

Page 14: Big Frontends Made Simple

=red-text :color red

#important :font-weight bold +red-text

Mix-Ins (1).red-text { color: red;}

#important { font-weight: bold; .red-text;}

Page 15: Big Frontends Made Simple

Result#important { font-weight: bold; color: red;}

Page 16: Big Frontends Made Simple

Mix-Ins (2).red-text(@color: red) { color: @color;}

#important { font-weight: bold; .red-text(green);}

=red-text(!color = "red") :color = !color

#important :font-weight bold +red-text("green")

Page 17: Big Frontends Made Simple

Mix-Ins (3).red-text { color: red; a { color: blue; }}

#important { .red-text;}

=red-text :color red a :color blue

#important +red-text

Page 18: Big Frontends Made Simple

Mix-Ins (4).red-text(@color: red) { color: @color; a { color: blue; }}

#important { .red-text(green);}

=red-text(!color = "red") :color = !color a :color blue

#important +red-text("green")won’t work

with variables

Page 19: Big Frontends Made Simple

Mix-Ins (5).hover-link { text-decoration: none; :hover { text-d…: underline; }}

#important a { .hover-link;}

= hover-link :text-decoration none &:hover :text-d… underline

#important a +hover-link

Page 20: Big Frontends Made Simple

height: 22px / 2;

color: #fff * 3;

background-position: 10px 30px / 2;

:height = 22px / 2

:color = #fff * 3

:background-position = 10px 30px / 2

Math

won’t work as expected

Page 21: Big Frontends Made Simple

=color(!x = 0) @if !x < 0 :color red @else :color black

#colorful +color(-1)

If Blocks

?

Page 22: Big Frontends Made Simple

@for !i from 1 through 3 .number-#{!i} :background = "url(number-#{!i}.png)"

Loops

?

Page 23: Big Frontends Made Simple

:width = percentage(100px / 50px)

:color = hsl(120, 100%, 50%)

:height = floor(21px / 2)

Functions (1)

?

Page 24: Big Frontends Made Simple

!c1 = #a3b400!c2 = #2300ae

!c3 = mix(!c1, !c2)!c4 = mix(!c1, !c2, 30%)!c5 = darken(!c1, 10%)!c6 = desaturate(!c1, 5%)!c7 = complement(!c1)

Functions (2)

? Sass 3.0till then:

gem install compass-colors

Page 25: Big Frontends Made Simple

· Good for developers

· Mix-ins just work

· Good for people who hate {, } and ; — p. e. German keyboard users

· New features come out frequently

· Syntax changes frequently

· More complex syntax

· Annoying “=”

Overview· Easy to learn

· Better syntax for variables

· Classes used as a mix-in won’t be rendered (maybe confusing)

· Still complicated CSS syntax with {, } and ;

· Problems with variables in mix-ins

· No consistent use of cascading

+

+

Page 26: Big Frontends Made Simple

One more thing.

Page 27: Big Frontends Made Simple

{less} vs. Sass

Compass

Structuring Projects

Handling Browsers

Page 28: Big Frontends Made Simple

Compass

· Like Gems for Sass

· http://github.com/chriseppstein/compass/

· gem install compass

Page 29: Big Frontends Made Simple

Setup for Railsrails app -m http://compass-style.org/rails/installer

rake rails:template LOCATION=http://compass-style.org/rails/installer

===================================================

Welcome to the Compass Installer for Ruby on Rails!

===================================================

What CSS Framework do you want to use with Compass? (default: 'blueprint')

blueprint

Where would you like to keep your sass files within your project? (default: 'app/stylesheets')

Where would you like Compass to store your compiled css files? (default: 'public/stylesheets/compiled')

public/stylesheets

Page 30: Big Frontends Made Simple

Project

Page 31: Big Frontends Made Simple

Blueprint

Page 32: Big Frontends Made Simple

Using Blueprint!blueprint_grid_columns = 24!blueprint_container_size = 950px!blueprint_grid_margin = 10px

@import blueprint/modules/grid.sass

#teaser +column(4)

Page 33: Big Frontends Made Simple

How Does It Work?

Page 34: Big Frontends Made Simple

Open the Gem

Page 35: Big Frontends Made Simple

Extend It Yourself.

Page 36: Big Frontends Made Simple

Own Gems

Page 37: Big Frontends Made Simple

Overview

· Modular structure

· Mix different frameworks

· Uses only code needed (small CSS files)

· Easy to extend as Gem

· No silly formatting classes needed(e. g. “.two-colums”)

Page 38: Big Frontends Made Simple

{less} vs. Sass

Compass

Structuring Projects

Handling Browsers

Page 39: Big Frontends Made Simple

Foldersapp stylesheets basics

Grid, typography, colors, borders, common mix-ins partials

Elements used on the side plugins

External converted (css2sass) stylesheets (e. g. jQuery plugins)

Page 40: Big Frontends Made Simple

File Namesscreen.sassbasics/_grid.sassbasics/_typography.sassbasics/_borders.sass

partials/_header.sasspartials/_boxes.sass

plugins/_lightbox.sass

Files prefixed with underscore won’t be rendered as CSS, but will be available for including.

Page 41: Big Frontends Made Simple

Ex. moviepilot.de

Page 42: Big Frontends Made Simple

Naming Conventions

· sample-class, sample_class or sampleClass

· Dash case is preferred in CSS

· More important: be consistent

Page 43: Big Frontends Made Simple

{less} vs. Sass

Compass

Structuring Projects

Handling Browsers

Page 44: Big Frontends Made Simple

ie.css?

· You’ll just forget what you’ve done.

Page 45: Big Frontends Made Simple

Browser Hacks?ul.bad-styling li :padding 5px :*padding-left 7px

Page 46: Big Frontends Made Simple

Or Valid CSS?ul.bad-styling li :padding 5px .trident & :padding-left 7px

Page 47: Big Frontends Made Simple

Other Browsersul.bad-styling li :padding 5px .trident & :padding-left 7px .webkit & :color red .gecko & :display none

Page 48: Big Frontends Made Simple

Set Browser Class<!DOCTYPE html><html lang="en"> <head> <meta charset="utf-8"> <title>Nico Hagenburger</title> <link href="/stylesheets/screen.css?1264808640" media="screen" rel="stylesheet" type="text/css"> </head> <body class="webkit">

</body></html>

Page 49: Big Frontends Made Simple

Overview

· Every browser fix is close to the normal definition

· Works with Safari, Firefox and Opera

· Valid CSS

· Only one HTTP request

· No conditional comments needed

Page 50: Big Frontends Made Simple

Any questions?

Page 51: Big Frontends Made Simple

[email protected]

twitter

blog

first name

last name