ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
CSS Preprocessor:
Why and How
M. Mizanur Rahman
A love letter from CSS
Frustrations with CSS
? It looks messy
? Repetitive
? Tendency of copy pasting over and over
? Big chunk of codes
? Vendor specific prefixes
? Not DRY Enough
What if CSS gets a new look
? It becomes re-usable
? It becomes scalable
? It becomes smart
? It understand a programmers mind
What is a Preprocessor?
? Have you heard the word ¡°Preprocessor¡± for first time?
? CSS preprocessors take code written in the preprocessed
language and then convert that code into the same old css
we¡¯ve been writing for years
? Preprocessors are not CSS, so CSS weaknesses do not belong
to them
? At the end, the output will be pure CSS files. So it does not
matter what Preprocessor you use in your project
Some Popular Preprocessors
? SASS
? LESS
? Stylus
Which one to Choose
? 80% of the SASS, LESS and Stylus are same
? 20% are different based on their advanced features and usage
? The similar features are
? Variables
? Color Transformation
? Mixings
? Nesting
? Loops and conditions
? Import
Let¡¯s Focus on SASS
? SASS - Syntactically Awesome StyleSheets
? Sass is an extension of CSS that adds power and elegance to the basic
language. It allows you to use variables, nested rules, mixins, inline
imports, and more, all with a fully CSS-compatible syntax.
? Features
? Fully CSS3-compatible
? Language extensions such as variables, nesting, and mixins
? Many useful functions for manipulating colors and other values
? Advanced features like control directives for libraries
? Well-formatted, customizable output
? Firebug integration
SASS or SCSS??
? There are two syntaxes available for Sass.
? First and latest one known as SCSS (Sassy CSS) and is an extension of
the syntax of CSS3. This means that every valid CSS3 stylesheet is a
valid SCSS file with the same meaning.
? Files have .scss extension
? It uses brackets and semi-colons just like CSS
? Easy to pickup by the developers
? SASS is the old style syntax.
? Focus on indented syntax
? Have .sass file extension
? Not so well picked by developers for different syntax from CSS
SASS & SCSS samples
$font-stack: Helvetica, sans-serif
$primary-color: #333
body
font: 100% $font-stack
color: $primary-color
H1
color: $primary-color
$font-stack: Helvetica, sans-serif;
$primary-color: #333;
body {
font: 100% $font-stack;
color: $primary-color;
}
H1 {
color: $primary-color;
}
How to Install SASS
? Requires Ruby to be installed on developer machine (Not
server)
gem install sass
sass -v
You can also use the following applications
? Compass
? Koala
? Scout
SASS Features: Variables
? Starts with $ sign
? allows you to assign a value to an easy-to-
remember placeholder name
? Allows:
? numbers (e.g. 1.2, 13, 10px)
? strings of text, with and without quotes
(e.g. "foo", 'bar', baz)
? colors (e.g. blue, #04a3f9, rgba(255, 0, 0, 0.5))
? booleans (e.g. true, false)
? nulls (e.g. null)
? lists of values, separated by spaces or commas
(e.g. 1.5em 1em 0 2em, Helvetica, Arial, sans-serif)
? maps from one value to another (e.g. (key1: value1,
key2: value2))
$width: 5em;
#main { width: $width; }
.label {font-size: $width;}
Converts to
#main {width: 5em; }
.label {font-size: 5em; }
Nesting
/* -- scss -- */
$background: #f0f0f0;
#navbar {
width: 100%;
height: 30px;
padding: 10px;
background: $background;
ul {
list-style: none;
}
li {
float: left;
a { text-decoration: none; }
&:hover { text-decoration: underline; } }
}
/* -- resulting css -- */
#navbar {width: 100%; height:
30px;padding:10px; background:
#f0f0f0}
#navbar ul {list-style: none;}
#navbar li {float: left;}
#navbar li a {text-decoration: none;}
#navbar li a:hover {text-decoration:
underline;}
Interpolation
? You can also use SASS variables in
selectors and property names using
#{} interpolation syntax
$name: foo;
$attr: border;
p.#{$name} {
#{$attr}-color: blue;
}
Outputs
p.foo { border-color: blue; }
Operations
? Number Operations
? Color Operations
? String Operations
? Boolean Operations
? List Operations
? Parentheses
$navbar-width: 950px;
$items: 5;
#navbar li {
width: $navbar-width/$items - 10px;}
p { color: #010203 + #040506; }
p { cursor: e + -resize; }
p { width: 1em + (2em * 3); }
--------------------- Output ------
-----------------
#navbar li {width: 180px}
p { color: #050709; }
p { cursor: e-resize; }
p { width: 7em; }
Mixins
? Mixins allow you to chunk up CSS
declarations (block of rules) to be reusable
with one reference
? Mixins are included in the document with
the @include directive. It also takes optional
arguments.
@mixin rounded-corners {
$radius: 5px;
border-radius: $radius;
-webkit-border-radius: $radius;
-moz-border-radius: $radius; }
#header { @include rounded-corners; }
#footer { @include rounded-corners; }
---------------- Output ------------------------
#header {
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
}
#footer {
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
}
Mixins (With Argument)
@mixin my-border($color, $width) {
border: {
color: $color;
width: $width;
style: dashed; }
}
p { @include my-border(red, 1px); }
p {
border-color: red;
border-width: 1px;
border-style: dashed;
}
Converting SASS files to CSS files
sass input.scss output.css
Partials & Imports
? Divide a big SASS file to
smaller SASS files
? Start with a underscore
_example.scss
? Can be reused in different
projects (eg: _table.scss,
_form.scss etc)
? When converted to CSS,
partials files are not
generated to any css files.
? @import ¡°form"; will
import _form.scss
Extend/Inheritance
? One of the most important feature of SASS
? @extend lets you share a set of CSS properties from one
selector to another
? It helps to prevent repetition in our SASS files.
.message {
border: 1px solid #ccc;
padding: 10px;
color: #444; }
.success {
@extend .message;
border-color: green;}
.error {
@extend .message;
border-color: red; }
.warning {
@extend .message;
border-color: orange; }
-------------- Output -------------------------
.message, .success, .error, .warning {
border: 1px solid #cccccc;
padding: 10px;
color: #444; }
.success { border-color: green; }
.error { border-color: red; }
.warning { border-color: orange; }
Looking for More?
? Go through SASS based frameworks
? Compass
? Bourbon
? Susy
? OOCSS (Object Oriented CSS)
? There are some great paid apps for SASS
? CodeKit
? Hammer
? Mixture
? LiveReload
? Prepros
About Me ?
M. Mizanur Rahman
Development Manager, TrustPilot Bangladesh
GraphicPeople
Moderator PHPXperts
Email: mizanur.rahman@gmail.com
Blog: http://booleandreams.wordpress.com

More Related Content

What's hot (20)

Introduction to SASS
Introduction to SASSIntroduction to SASS
Introduction to SASS
Jon Dean
?
Advanced sass/compass
Advanced sass/compassAdvanced sass/compass
Advanced sass/compass
Nick Cooley
?
Sass
SassSass
Sass
Tayseer_Emam
?
Preprocessor presentation
Preprocessor presentationPreprocessor presentation
Preprocessor presentation
Mario Noble
?
Compass/Sass
Compass/SassCompass/Sass
Compass/Sass
guest2409d3
?
CSS3
CSS3CSS3
CSS3
Chathuranga Jayanath
?
Authoring Stylesheets with Compass & Sass
Authoring Stylesheets with Compass & SassAuthoring Stylesheets with Compass & Sass
Authoring Stylesheets with Compass & Sass
chriseppstein
?
[Worskhop Summits] CSS3 Workshop
[Worskhop Summits] CSS3 Workshop[Worskhop Summits] CSS3 Workshop
[Worskhop Summits] CSS3 Workshop
Christopher Schmitt
?
CSS3: Ripe and Ready to Respond
CSS3: Ripe and Ready to RespondCSS3: Ripe and Ready to Respond
CSS3: Ripe and Ready to Respond
Denise Jacobs
?
CSS Extenders
CSS ExtendersCSS Extenders
CSS Extenders
Idan Gazit
?
SASS Lecture
SASS Lecture SASS Lecture
SASS Lecture
Adnan Arshad
?
SASS is more than LESS
SASS is more than LESSSASS is more than LESS
SASS is more than LESS
Itai Koren
?
CSS
CSSCSS
CSS
Jussi Pohjolainen
?
Sass and Compass - Getting Started
Sass and Compass - Getting StartedSass and Compass - Getting Started
Sass and Compass - Getting Started
edgincvg
?
Css 3
Css 3Css 3
Css 3
poollar
?
Css 3
Css 3Css 3
Css 3
poollar
?
October 2014 - USG Rock Eagle - Sass 101
October 2014 - USG Rock Eagle - Sass 101October 2014 - USG Rock Eagle - Sass 101
October 2014 - USG Rock Eagle - Sass 101
Eric Sembrat
?
CSS é_°l¼ÓËÙÖ¸ÄÏ£­Sass & Compass
CSS é_°l¼ÓËÙÖ¸ÄÏ£­Sass & CompassCSS é_°l¼ÓËÙÖ¸ÄÏ£­Sass & Compass
CSS é_°l¼ÓËÙÖ¸ÄÏ£­Sass & Compass
Lucien Lee
?
CSS3: Simply Responsive
CSS3: Simply ResponsiveCSS3: Simply Responsive
CSS3: Simply Responsive
Denise Jacobs
?
CSS Walktrough Internship Course
CSS Walktrough Internship CourseCSS Walktrough Internship Course
CSS Walktrough Internship Course
Zoltan Iszlai
?
Introduction to SASS
Introduction to SASSIntroduction to SASS
Introduction to SASS
Jon Dean
?
Advanced sass/compass
Advanced sass/compassAdvanced sass/compass
Advanced sass/compass
Nick Cooley
?
Preprocessor presentation
Preprocessor presentationPreprocessor presentation
Preprocessor presentation
Mario Noble
?
Authoring Stylesheets with Compass & Sass
Authoring Stylesheets with Compass & SassAuthoring Stylesheets with Compass & Sass
Authoring Stylesheets with Compass & Sass
chriseppstein
?
CSS3: Ripe and Ready to Respond
CSS3: Ripe and Ready to RespondCSS3: Ripe and Ready to Respond
CSS3: Ripe and Ready to Respond
Denise Jacobs
?
SASS is more than LESS
SASS is more than LESSSASS is more than LESS
SASS is more than LESS
Itai Koren
?
Sass and Compass - Getting Started
Sass and Compass - Getting StartedSass and Compass - Getting Started
Sass and Compass - Getting Started
edgincvg
?
October 2014 - USG Rock Eagle - Sass 101
October 2014 - USG Rock Eagle - Sass 101October 2014 - USG Rock Eagle - Sass 101
October 2014 - USG Rock Eagle - Sass 101
Eric Sembrat
?
CSS é_°l¼ÓËÙÖ¸ÄÏ£­Sass & Compass
CSS é_°l¼ÓËÙÖ¸ÄÏ£­Sass & CompassCSS é_°l¼ÓËÙÖ¸ÄÏ£­Sass & Compass
CSS é_°l¼ÓËÙÖ¸ÄÏ£­Sass & Compass
Lucien Lee
?
CSS3: Simply Responsive
CSS3: Simply ResponsiveCSS3: Simply Responsive
CSS3: Simply Responsive
Denise Jacobs
?
CSS Walktrough Internship Course
CSS Walktrough Internship CourseCSS Walktrough Internship Course
CSS Walktrough Internship Course
Zoltan Iszlai
?

Similar to Css preprocessor-140606115334-phpapp01 (20)

Sass_Cubet seminar
Sass_Cubet seminarSass_Cubet seminar
Sass_Cubet seminar
Cubet Techno Labs
?
Doing More With Less
Doing More With LessDoing More With Less
Doing More With Less
David Engel
?
CSS Preprocessors: LESS is more or look SASS-y trying
CSS Preprocessors: LESS is more or look SASS-y tryingCSS Preprocessors: LESS is more or look SASS-y trying
CSS Preprocessors: LESS is more or look SASS-y trying
James Cryer
?
Bringing sexy back to CSS: SASS/SCSS, LESS and Compass
Bringing sexy back to CSS: SASS/SCSS, LESS and CompassBringing sexy back to CSS: SASS/SCSS, LESS and Compass
Bringing sexy back to CSS: SASS/SCSS, LESS and Compass
Claudina Sarahe
?
SASS, Compass, Gulp, Greensock
SASS, Compass, Gulp, GreensockSASS, Compass, Gulp, Greensock
SASS, Compass, Gulp, Greensock
Marco Pinheiro
?
Simple introduction Sass
Simple introduction SassSimple introduction Sass
Simple introduction Sass
Zeeshan Ahmed
?
Syntactically awesome stylesheets (Sass)
Syntactically awesome stylesheets (Sass)Syntactically awesome stylesheets (Sass)
Syntactically awesome stylesheets (Sass)
Tahmina Khatoon
?
Why less?
Why less?Why less?
Why less?
Bunlong Van
?
Deep dive into sass
Deep dive into sassDeep dive into sass
Deep dive into sass
Knoldus Inc.
?
PostCss
PostCssPostCss
PostCss
LearningTech
?
Advanced sass
Advanced sassAdvanced sass
Advanced sass
Kianosh Pourian
?
Sass compass
Sass compassSass compass
Sass compass
Nick Cooley
?
Less css
Less cssLess css
Less css
Bill Chea
?
UNIT 3.ppt
UNIT 3.pptUNIT 3.ppt
UNIT 3.ppt
kavi806657
?
LESS : The dynamic stylesheet language
LESS : The dynamic stylesheet languageLESS : The dynamic stylesheet language
LESS : The dynamic stylesheet language
Katsunori Tanaka
?
Sass & Compass (Barcamp Stuttgart 2012)
Sass & Compass (Barcamp Stuttgart 2012)Sass & Compass (Barcamp Stuttgart 2012)
Sass & Compass (Barcamp Stuttgart 2012)
emrox
?
Understanding sass
Understanding sassUnderstanding sass
Understanding sass
Mario Hernandez
?
Big Design Conference: CSS3
Big Design Conference: CSS3 Big Design Conference: CSS3
Big Design Conference: CSS3
Wynn Netherland
?
Raleigh Web Design Meetup Group - Sass Presentation
Raleigh Web Design Meetup Group - Sass PresentationRaleigh Web Design Meetup Group - Sass Presentation
Raleigh Web Design Meetup Group - Sass Presentation
Daniel Yuschick
?
2 introduction css
2 introduction css2 introduction css
2 introduction css
Jalpesh Vasa
?
Doing More With Less
Doing More With LessDoing More With Less
Doing More With Less
David Engel
?
CSS Preprocessors: LESS is more or look SASS-y trying
CSS Preprocessors: LESS is more or look SASS-y tryingCSS Preprocessors: LESS is more or look SASS-y trying
CSS Preprocessors: LESS is more or look SASS-y trying
James Cryer
?
Bringing sexy back to CSS: SASS/SCSS, LESS and Compass
Bringing sexy back to CSS: SASS/SCSS, LESS and CompassBringing sexy back to CSS: SASS/SCSS, LESS and Compass
Bringing sexy back to CSS: SASS/SCSS, LESS and Compass
Claudina Sarahe
?
SASS, Compass, Gulp, Greensock
SASS, Compass, Gulp, GreensockSASS, Compass, Gulp, Greensock
SASS, Compass, Gulp, Greensock
Marco Pinheiro
?
Simple introduction Sass
Simple introduction SassSimple introduction Sass
Simple introduction Sass
Zeeshan Ahmed
?
Syntactically awesome stylesheets (Sass)
Syntactically awesome stylesheets (Sass)Syntactically awesome stylesheets (Sass)
Syntactically awesome stylesheets (Sass)
Tahmina Khatoon
?
LESS : The dynamic stylesheet language
LESS : The dynamic stylesheet languageLESS : The dynamic stylesheet language
LESS : The dynamic stylesheet language
Katsunori Tanaka
?
Sass & Compass (Barcamp Stuttgart 2012)
Sass & Compass (Barcamp Stuttgart 2012)Sass & Compass (Barcamp Stuttgart 2012)
Sass & Compass (Barcamp Stuttgart 2012)
emrox
?
Big Design Conference: CSS3
Big Design Conference: CSS3 Big Design Conference: CSS3
Big Design Conference: CSS3
Wynn Netherland
?
Raleigh Web Design Meetup Group - Sass Presentation
Raleigh Web Design Meetup Group - Sass PresentationRaleigh Web Design Meetup Group - Sass Presentation
Raleigh Web Design Meetup Group - Sass Presentation
Daniel Yuschick
?

Recently uploaded (20)

Templates for Powerpoint Few of the Best for Free.pptx
Templates for Powerpoint Few of the Best for Free.pptxTemplates for Powerpoint Few of the Best for Free.pptx
Templates for Powerpoint Few of the Best for Free.pptx
HariswaroopGavva
?
Beginner's Guide to Pilates Equipment.pdf
Beginner's Guide to Pilates Equipment.pdfBeginner's Guide to Pilates Equipment.pdf
Beginner's Guide to Pilates Equipment.pdf
methodalliancepilate
?
Wedding Planners Social Media Strategy by ºÝºÝߣsgo.pptx
Wedding Planners Social Media Strategy by ºÝºÝߣsgo.pptxWedding Planners Social Media Strategy by ºÝºÝߣsgo.pptx
Wedding Planners Social Media Strategy by ºÝºÝߣsgo.pptx
TesyaMamonto
?
SMART LIGHT _20250120_133126_0000000.pdf
SMART LIGHT _20250120_133126_0000000.pdfSMART LIGHT _20250120_133126_0000000.pdf
SMART LIGHT _20250120_133126_0000000.pdf
AthulyaKS5
?
water_cycle.ppt vishana ppt 55?555566666
water_cycle.ppt vishana ppt 55?555566666water_cycle.ppt vishana ppt 55?555566666
water_cycle.ppt vishana ppt 55?555566666
patelvishana99
?
Mechanical Properties of Materials: Selecting the Right Materials for Innovat...
Mechanical Properties of Materials: Selecting the Right Materials for Innovat...Mechanical Properties of Materials: Selecting the Right Materials for Innovat...
Mechanical Properties of Materials: Selecting the Right Materials for Innovat...
Industrial Design Dept, - Helwan University
?
Scaling Design Systems for Large Teams.pdf
Scaling Design Systems for Large Teams.pdfScaling Design Systems for Large Teams.pdf
Scaling Design Systems for Large Teams.pdf
msdelwarbd
?
FW26-27 Women's Fashion Trend Book Peclers Paris
FW26-27 Women's Fashion Trend Book Peclers ParisFW26-27 Women's Fashion Trend Book Peclers Paris
FW26-27 Women's Fashion Trend Book Peclers Paris
Peclers Paris
?
Adobe Photoshop 26.3 Crack with Activation key 2025 (AI Generated)
Adobe Photoshop 26.3 Crack with Activation key 2025 (AI Generated)Adobe Photoshop 26.3 Crack with Activation key 2025 (AI Generated)
Adobe Photoshop 26.3 Crack with Activation key 2025 (AI Generated)
resesa82772
?
Sneha Dhanawade_Graphic Designer_Portfolio.pdf
Sneha Dhanawade_Graphic Designer_Portfolio.pdfSneha Dhanawade_Graphic Designer_Portfolio.pdf
Sneha Dhanawade_Graphic Designer_Portfolio.pdf
snehadhanawade5
?
HARAYA CO EVENTS MANAGEMENT by FloBach 2
HARAYA CO EVENTS MANAGEMENT by FloBach 2HARAYA CO EVENTS MANAGEMENT by FloBach 2
HARAYA CO EVENTS MANAGEMENT by FloBach 2
Haraya Co by Florylyn
?
renewable-energy-17090bbhhhgggg9063718.pptx
renewable-energy-17090bbhhhgggg9063718.pptxrenewable-energy-17090bbhhhgggg9063718.pptx
renewable-energy-17090bbhhhgggg9063718.pptx
ShubhamKumar600143
?
lecture7 Enhancing Cloud Copmuting Services.ppt
lecture7 Enhancing Cloud Copmuting Services.pptlecture7 Enhancing Cloud Copmuting Services.ppt
lecture7 Enhancing Cloud Copmuting Services.ppt
kong100
?
Free PowerPoint Template- Free PPTX Template
Free PowerPoint Template- Free PPTX TemplateFree PowerPoint Template- Free PPTX Template
Free PowerPoint Template- Free PPTX Template
Free PPTX Template
?
Women's IAccelerate Hackthon Financial Empowerment
Women's IAccelerate Hackthon Financial EmpowermentWomen's IAccelerate Hackthon Financial Empowerment
Women's IAccelerate Hackthon Financial Empowerment
indupriyapatcha
?
University of Melbourne degree, replica University of Melbourne diploma
University of Melbourne degree, replica University of Melbourne diplomaUniversity of Melbourne degree, replica University of Melbourne diploma
University of Melbourne degree, replica University of Melbourne diploma
Lisa Emerson
?
IDM Crack 6.42 Build 27 Patch With Activation Key
IDM Crack 6.42 Build 27 Patch With Activation KeyIDM Crack 6.42 Build 27 Patch With Activation Key
IDM Crack 6.42 Build 27 Patch With Activation Key
jamaal karmaanii
?
inbound637385621476551117jakahskji0.pptx
inbound637385621476551117jakahskji0.pptxinbound637385621476551117jakahskji0.pptx
inbound637385621476551117jakahskji0.pptx
JewelDupale
?
periodic properties NDA.pptx to become better
periodic properties NDA.pptx to become betterperiodic properties NDA.pptx to become better
periodic properties NDA.pptx to become better
steveparker9990sp
?
Coconut_Fibre_on_Permeable_Concrete_Presentation.pptx
Coconut_Fibre_on_Permeable_Concrete_Presentation.pptxCoconut_Fibre_on_Permeable_Concrete_Presentation.pptx
Coconut_Fibre_on_Permeable_Concrete_Presentation.pptx
SabinChaudhary2
?
Templates for Powerpoint Few of the Best for Free.pptx
Templates for Powerpoint Few of the Best for Free.pptxTemplates for Powerpoint Few of the Best for Free.pptx
Templates for Powerpoint Few of the Best for Free.pptx
HariswaroopGavva
?
Beginner's Guide to Pilates Equipment.pdf
Beginner's Guide to Pilates Equipment.pdfBeginner's Guide to Pilates Equipment.pdf
Beginner's Guide to Pilates Equipment.pdf
methodalliancepilate
?
Wedding Planners Social Media Strategy by ºÝºÝߣsgo.pptx
Wedding Planners Social Media Strategy by ºÝºÝߣsgo.pptxWedding Planners Social Media Strategy by ºÝºÝߣsgo.pptx
Wedding Planners Social Media Strategy by ºÝºÝߣsgo.pptx
TesyaMamonto
?
SMART LIGHT _20250120_133126_0000000.pdf
SMART LIGHT _20250120_133126_0000000.pdfSMART LIGHT _20250120_133126_0000000.pdf
SMART LIGHT _20250120_133126_0000000.pdf
AthulyaKS5
?
water_cycle.ppt vishana ppt 55?555566666
water_cycle.ppt vishana ppt 55?555566666water_cycle.ppt vishana ppt 55?555566666
water_cycle.ppt vishana ppt 55?555566666
patelvishana99
?
Scaling Design Systems for Large Teams.pdf
Scaling Design Systems for Large Teams.pdfScaling Design Systems for Large Teams.pdf
Scaling Design Systems for Large Teams.pdf
msdelwarbd
?
FW26-27 Women's Fashion Trend Book Peclers Paris
FW26-27 Women's Fashion Trend Book Peclers ParisFW26-27 Women's Fashion Trend Book Peclers Paris
FW26-27 Women's Fashion Trend Book Peclers Paris
Peclers Paris
?
Adobe Photoshop 26.3 Crack with Activation key 2025 (AI Generated)
Adobe Photoshop 26.3 Crack with Activation key 2025 (AI Generated)Adobe Photoshop 26.3 Crack with Activation key 2025 (AI Generated)
Adobe Photoshop 26.3 Crack with Activation key 2025 (AI Generated)
resesa82772
?
Sneha Dhanawade_Graphic Designer_Portfolio.pdf
Sneha Dhanawade_Graphic Designer_Portfolio.pdfSneha Dhanawade_Graphic Designer_Portfolio.pdf
Sneha Dhanawade_Graphic Designer_Portfolio.pdf
snehadhanawade5
?
HARAYA CO EVENTS MANAGEMENT by FloBach 2
HARAYA CO EVENTS MANAGEMENT by FloBach 2HARAYA CO EVENTS MANAGEMENT by FloBach 2
HARAYA CO EVENTS MANAGEMENT by FloBach 2
Haraya Co by Florylyn
?
renewable-energy-17090bbhhhgggg9063718.pptx
renewable-energy-17090bbhhhgggg9063718.pptxrenewable-energy-17090bbhhhgggg9063718.pptx
renewable-energy-17090bbhhhgggg9063718.pptx
ShubhamKumar600143
?
lecture7 Enhancing Cloud Copmuting Services.ppt
lecture7 Enhancing Cloud Copmuting Services.pptlecture7 Enhancing Cloud Copmuting Services.ppt
lecture7 Enhancing Cloud Copmuting Services.ppt
kong100
?
Free PowerPoint Template- Free PPTX Template
Free PowerPoint Template- Free PPTX TemplateFree PowerPoint Template- Free PPTX Template
Free PowerPoint Template- Free PPTX Template
Free PPTX Template
?
Women's IAccelerate Hackthon Financial Empowerment
Women's IAccelerate Hackthon Financial EmpowermentWomen's IAccelerate Hackthon Financial Empowerment
Women's IAccelerate Hackthon Financial Empowerment
indupriyapatcha
?
University of Melbourne degree, replica University of Melbourne diploma
University of Melbourne degree, replica University of Melbourne diplomaUniversity of Melbourne degree, replica University of Melbourne diploma
University of Melbourne degree, replica University of Melbourne diploma
Lisa Emerson
?
IDM Crack 6.42 Build 27 Patch With Activation Key
IDM Crack 6.42 Build 27 Patch With Activation KeyIDM Crack 6.42 Build 27 Patch With Activation Key
IDM Crack 6.42 Build 27 Patch With Activation Key
jamaal karmaanii
?
inbound637385621476551117jakahskji0.pptx
inbound637385621476551117jakahskji0.pptxinbound637385621476551117jakahskji0.pptx
inbound637385621476551117jakahskji0.pptx
JewelDupale
?
periodic properties NDA.pptx to become better
periodic properties NDA.pptx to become betterperiodic properties NDA.pptx to become better
periodic properties NDA.pptx to become better
steveparker9990sp
?
Coconut_Fibre_on_Permeable_Concrete_Presentation.pptx
Coconut_Fibre_on_Permeable_Concrete_Presentation.pptxCoconut_Fibre_on_Permeable_Concrete_Presentation.pptx
Coconut_Fibre_on_Permeable_Concrete_Presentation.pptx
SabinChaudhary2
?

Css preprocessor-140606115334-phpapp01

  • 1. CSS Preprocessor: Why and How M. Mizanur Rahman
  • 2. A love letter from CSS
  • 3. Frustrations with CSS ? It looks messy ? Repetitive ? Tendency of copy pasting over and over ? Big chunk of codes ? Vendor specific prefixes ? Not DRY Enough
  • 4. What if CSS gets a new look ? It becomes re-usable ? It becomes scalable ? It becomes smart ? It understand a programmers mind
  • 5. What is a Preprocessor? ? Have you heard the word ¡°Preprocessor¡± for first time? ? CSS preprocessors take code written in the preprocessed language and then convert that code into the same old css we¡¯ve been writing for years ? Preprocessors are not CSS, so CSS weaknesses do not belong to them ? At the end, the output will be pure CSS files. So it does not matter what Preprocessor you use in your project
  • 6. Some Popular Preprocessors ? SASS ? LESS ? Stylus
  • 7. Which one to Choose ? 80% of the SASS, LESS and Stylus are same ? 20% are different based on their advanced features and usage ? The similar features are ? Variables ? Color Transformation ? Mixings ? Nesting ? Loops and conditions ? Import
  • 8. Let¡¯s Focus on SASS ? SASS - Syntactically Awesome StyleSheets ? Sass is an extension of CSS that adds power and elegance to the basic language. It allows you to use variables, nested rules, mixins, inline imports, and more, all with a fully CSS-compatible syntax. ? Features ? Fully CSS3-compatible ? Language extensions such as variables, nesting, and mixins ? Many useful functions for manipulating colors and other values ? Advanced features like control directives for libraries ? Well-formatted, customizable output ? Firebug integration
  • 9. SASS or SCSS?? ? There are two syntaxes available for Sass. ? First and latest one known as SCSS (Sassy CSS) and is an extension of the syntax of CSS3. This means that every valid CSS3 stylesheet is a valid SCSS file with the same meaning. ? Files have .scss extension ? It uses brackets and semi-colons just like CSS ? Easy to pickup by the developers ? SASS is the old style syntax. ? Focus on indented syntax ? Have .sass file extension ? Not so well picked by developers for different syntax from CSS
  • 10. SASS & SCSS samples $font-stack: Helvetica, sans-serif $primary-color: #333 body font: 100% $font-stack color: $primary-color H1 color: $primary-color $font-stack: Helvetica, sans-serif; $primary-color: #333; body { font: 100% $font-stack; color: $primary-color; } H1 { color: $primary-color; }
  • 11. How to Install SASS ? Requires Ruby to be installed on developer machine (Not server) gem install sass sass -v You can also use the following applications ? Compass ? Koala ? Scout
  • 12. SASS Features: Variables ? Starts with $ sign ? allows you to assign a value to an easy-to- remember placeholder name ? Allows: ? numbers (e.g. 1.2, 13, 10px) ? strings of text, with and without quotes (e.g. "foo", 'bar', baz) ? colors (e.g. blue, #04a3f9, rgba(255, 0, 0, 0.5)) ? booleans (e.g. true, false) ? nulls (e.g. null) ? lists of values, separated by spaces or commas (e.g. 1.5em 1em 0 2em, Helvetica, Arial, sans-serif) ? maps from one value to another (e.g. (key1: value1, key2: value2)) $width: 5em; #main { width: $width; } .label {font-size: $width;} Converts to #main {width: 5em; } .label {font-size: 5em; }
  • 13. Nesting /* -- scss -- */ $background: #f0f0f0; #navbar { width: 100%; height: 30px; padding: 10px; background: $background; ul { list-style: none; } li { float: left; a { text-decoration: none; } &:hover { text-decoration: underline; } } } /* -- resulting css -- */ #navbar {width: 100%; height: 30px;padding:10px; background: #f0f0f0} #navbar ul {list-style: none;} #navbar li {float: left;} #navbar li a {text-decoration: none;} #navbar li a:hover {text-decoration: underline;}
  • 14. Interpolation ? You can also use SASS variables in selectors and property names using #{} interpolation syntax $name: foo; $attr: border; p.#{$name} { #{$attr}-color: blue; } Outputs p.foo { border-color: blue; }
  • 15. Operations ? Number Operations ? Color Operations ? String Operations ? Boolean Operations ? List Operations ? Parentheses $navbar-width: 950px; $items: 5; #navbar li { width: $navbar-width/$items - 10px;} p { color: #010203 + #040506; } p { cursor: e + -resize; } p { width: 1em + (2em * 3); } --------------------- Output ------ ----------------- #navbar li {width: 180px} p { color: #050709; } p { cursor: e-resize; } p { width: 7em; }
  • 16. Mixins ? Mixins allow you to chunk up CSS declarations (block of rules) to be reusable with one reference ? Mixins are included in the document with the @include directive. It also takes optional arguments. @mixin rounded-corners { $radius: 5px; border-radius: $radius; -webkit-border-radius: $radius; -moz-border-radius: $radius; } #header { @include rounded-corners; } #footer { @include rounded-corners; } ---------------- Output ------------------------ #header { border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px; } #footer { border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px; }
  • 17. Mixins (With Argument) @mixin my-border($color, $width) { border: { color: $color; width: $width; style: dashed; } } p { @include my-border(red, 1px); } p { border-color: red; border-width: 1px; border-style: dashed; }
  • 18. Converting SASS files to CSS files sass input.scss output.css
  • 19. Partials & Imports ? Divide a big SASS file to smaller SASS files ? Start with a underscore _example.scss ? Can be reused in different projects (eg: _table.scss, _form.scss etc) ? When converted to CSS, partials files are not generated to any css files. ? @import ¡°form"; will import _form.scss
  • 20. Extend/Inheritance ? One of the most important feature of SASS ? @extend lets you share a set of CSS properties from one selector to another ? It helps to prevent repetition in our SASS files. .message { border: 1px solid #ccc; padding: 10px; color: #444; } .success { @extend .message; border-color: green;} .error { @extend .message; border-color: red; } .warning { @extend .message; border-color: orange; } -------------- Output ------------------------- .message, .success, .error, .warning { border: 1px solid #cccccc; padding: 10px; color: #444; } .success { border-color: green; } .error { border-color: red; } .warning { border-color: orange; }
  • 21. Looking for More? ? Go through SASS based frameworks ? Compass ? Bourbon ? Susy ? OOCSS (Object Oriented CSS) ? There are some great paid apps for SASS ? CodeKit ? Hammer ? Mixture ? LiveReload ? Prepros
  • 22. About Me ? M. Mizanur Rahman Development Manager, TrustPilot Bangladesh GraphicPeople Moderator PHPXperts Email: mizanur.rahman@gmail.com Blog: http://booleandreams.wordpress.com