Sass
Today I am sharing this reference sheet that contains all the references to usage of Sass, also BEM & 7-1 architecture.
This also contains a boilerplate setup to get started on any Sass project with all the setup for it done already ! (Refer to the end of this sheet)
Markdown is available at my Github
Table of Contents
Variables for reusable values : Usage
$pink: #ff1493;
Nesting to nest Selectors inside of one another for less code : Usage
//scss .parent{ .child{} } // becomes in css .parent .child{}
Operators for mathematical operations in CSS : Usage
font-size: (16px / 24px) // Uses parentheses, does division
Partials and Imports (@rules) to write code in different files and merge them : Usage
@import "sample";
Mixins to write reusable piece of code : Usage
@mixin overlay() { bottom: 0; left: 0; position: absolute; right: 0; top: 0; } .modal-background{ @include overlay(); background: black; opacity: 0.9; }
Mixins & Placeholders : comparison
Functions are similar to mixins but produce a value : Usage
@function remy($pxsize) { @return ($pxsize/16)+rem; } h1 { font-size: remy(32);}
- Extends to inherit same declaration in different selectors : Usage
// scss .small-uppercase{ color: lightslategrey; font-size: 10px; } .modal-background{ @extend .small-uppercase; } // generated css .small-uppercase, .modal-background{ color: lightslategrey; font-size: 10px; }
@mixin test($condition) { $color: if($condition, blue, red); color:$color }
BEM
BEM — Block Element Modifier is a methodology that helps you to create reusable components and code sharing in front-end development
Example :
<form class="form form--theme-xmas"> <input class="form__submit form__submit--disabled" type="submit" /> </form>
.form { } //block .form--theme-xmas { } //block--modifier .form__submit { } //block__element .form__submit--disabled { } //block__element--modifier
BEM by Example : Reference
ABEM - A better approach to use BEM , Explanation
/* classic + atomic prefix */ .o-subscribe-form__field-item {} /* camelCase + atomic prefix */ .o-subscribeForm__fieldItem {}
7-1 Folder Architecture
- Folder Structure in Practice : Reference
- The 7–1 pattern is a common Sass architecture, and is recommended by the Sass Guidelines Project. Here’s the basic structure:
sass/ | |– abstracts/ # HELPER FILES | |– _variables.scss # Sass Variables | |– _mixins.scss # Sass Mixins | |– vendors/ # THIRD-PARTY FILES | |– _bootstrap.scss # Bootstrap | |– base/ # BOILERPLATE FILES | |– _reset.scss # Reset/normalize | |– _typography.scss # Typography rules | |– layout/ # STRUCTURE FILES | |– _navigation.scss # Navigation | |– _grid.scss # Grid system | |– _header.scss # Header | |– _footer.scss # Footer | |– _sidebar.scss # Sidebar | |– _forms.scss # Forms | |– components/ # SPECIFIC COMPONENTS FILES | |– _buttons.scss # Buttons | |– _carousel.scss # Carousel | |– _cover.scss # Cover | |– _dropdown.scss # Dropdown | |– pages/ # PAGE SPECIFIC FILES | |– _home.scss # Home specific styles | |– _contact.scss # Contact specific styles | |– themes/ # MULTIPLE THEME FILES | |– _theme.scss # Default theme | |– _admin.scss # Admin theme | – main.scss # Main Sass input file
NPM Setup Boilerplate
- I have made a complete NPM setup for sass development , that you can use as a boilerplate for your project, by just simply cloning it.
- It contains :
- Font-Awesome and Animate CSS is built in !
- 7-1 Folder Architecture
- Global Reset
- Gitignore Included
- Media Query Manager
- JavaScript Babel Compilation
- Development scripts : compile, serve and watch
- Production scripts : compile, prefix and compress.
- You can Find this Boilerplate in my Github Repo
Hope This Helps , Thank You !😊
Top comments (0)