Top Banner
25

CSS architecture: How To Write Clean & Scalable Code

Jul 16, 2015

Download

Technology

netguru
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: CSS architecture: How To Write Clean & Scalable Code

HOW TO WRITE CLEAN & SCALABLE CODECSS ARCHITECTURE

[email protected] /czajkovsky

Mateusz Czajka - senior dev @ netguru.co

Page 2: CSS architecture: How To Write Clean & Scalable Code

IT’S CSS WITH SUPERPOWERSUSE PREPROCESSORS

0.

Page 3: CSS architecture: How To Write Clean & Scalable Code

AND BE CONSISTENT ABOUT ITDEFINE A STYLE GUIDE

1.

Page 4: CSS architecture: How To Write Clean & Scalable Code

DEFINE A STYLE GUIDESCSSLINT

.pill-box { &__icon{ display: block; border: 1px solid $primary-color; }}

.pill-box { &__icon{ display: block; border: 1px solid $primary-color; }}

2 of 5 errors: SpaceBeforeBrace: Opening curly ̀{̀ should bepreceded by one space, Line 38, Column 8

Page 5: CSS architecture: How To Write Clean & Scalable Code

DEFINE A STYLE GUIDEHOUND

+ =SCSSLINT

Page 6: CSS architecture: How To Write Clean & Scalable Code

THAT YOU NEED TO SUPPORTDETERMINE BROWSERS

2.

Page 7: CSS architecture: How To Write Clean & Scalable Code

DETERMINE BROWSERSAUTOPREFIXER

// in codea { display: flex;}

// outputa { display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -ms-flexbox; display: flex}

Page 8: CSS architecture: How To Write Clean & Scalable Code

INTO SMALL PIECESDIVIDE YOUR CODE

3.

Page 9: CSS architecture: How To Write Clean & Scalable Code

AS MANY AS IT MAKES SENSEUSE VARIABLES

4.

Page 10: CSS architecture: How To Write Clean & Scalable Code

USE VARIABLESBASICS

// colors$primary-color: #4391d7;

// font-sizes$fs-1: 12px;$fs-2: 14px;

// font-families$ff-open-sans: $ff-open-sans: 'Open Sans', sans-serif;

// font-weights$fw-bold: 700;

Page 11: CSS architecture: How To Write Clean & Scalable Code

USE VARIABLESZINDEXES

// view/component.settings-modal { // ... z-index: $z-index-settings-modal;}

.avatar-popover { // ... z-index: $z-index-avatar-popover;}

Page 12: CSS architecture: How To Write Clean & Scalable Code

USE VARIABLESZINDEXES

// _z-index-variables.scss$z-index-1: 1000;$z-index-2: 2000;// ...$z-index-9: 9000;

// ...$z-index-settings-modal: $z-index-settings-modal: $z-index-5;$z-index-avatar-popover: $z-index-6;

Page 13: CSS architecture: How To Write Clean & Scalable Code

IT REALLY HELPS TO KEEP YOUR CODE DRYUSE MIXINS & EXTENDS

5.

Page 14: CSS architecture: How To Write Clean & Scalable Code

USE MIXINS & EXTENDSMIXINS// Sass.box { @include absolute(top 5px left 10px); @include sizing(100% 50px);}

// CSS.box.box { position: absolute; top: 5px; left: 10px; width: 100%; height: 50px;}

Page 15: CSS architecture: How To Write Clean & Scalable Code

USE MIXINS & EXTENDSEXTENDS// Sass%error { background: $error-color;}

.error { @extend %error; border-width: 1px; &--important { @extend %error; border-width: 3px; }}

// CSS.error,.error--important { background: #f00;}

.error { border-width: 1px;} .error--important { border-width: 3px;}

Page 16: CSS architecture: How To Write Clean & Scalable Code

THINK ABOUT RETINA USERSUSE VECTORS

6.

Page 17: CSS architecture: How To Write Clean & Scalable Code

BUT USE IT THE SMART WAYUSE A FRAMEWORK

7.

Page 18: CSS architecture: How To Write Clean & Scalable Code

USE A FRAMEWORKSTRUCTURE

framework├── _components.scss├── _overrides.scss├── _variables.scss└── overrides └── _framework-overrides-go-here.scss

Page 19: CSS architecture: How To Write Clean & Scalable Code

USE A FRAMEWORKCOMPONENTS

// framework/_components.scss// Core CSS@import "bootstrap/scaffolding";@import "bootstrap/type";// @import "bootstrap/code";@import "bootstrap/grid";// @import "bootstrap/tables";// @import "bootstrap/tables";@import "bootstrap/forms";// @import "bootstrap/buttons";// ...

Page 20: CSS architecture: How To Write Clean & Scalable Code

USE FRAMEWORKVARIABLES

// variables from package/GEM$gray-base: #eee !default;$gray-darker: darken($gray-base, 10%) !default;// etc...

// framework/_variables.scss (overrides)// $gray-base: #eee !default;$gray-darker:$gray-darker: darken($gray-base, 20%);// etc...

Page 21: CSS architecture: How To Write Clean & Scalable Code

USE A FRAMEWORKOVERRIDES

// framework/_overrides.scss// Core CSS// @import "overrides/scaffolding";// @import "overrides/type";// @import "overrides/code";@import "overrides/grid";// @import "overrides/tables";// @import "overrides/tables";@import "overrides/forms";// @import "overrides/buttons";// ...

Page 22: CSS architecture: How To Write Clean & Scalable Code

STRUCTURE AND ORDERTHE RESULT

Page 23: CSS architecture: How To Write Clean & Scalable Code

THE RESULTSTRUCTURE├── application.scss├── components│ └── _your-custom-components-go-here.scss├── views│ └── _your-view-based-styles-go-here.scss├── framework│ ├── │ ├── _components.scss│ ├── _overrides.scss│ ├── _variables.scss│ └── overrides│ └── _framework-overrides-go-here.scss├── settings│ ├── _z-index-variables.scss│ ├── │ ├── _breakpoint-variables.scss│ └── _custom-variables.scss└── utilities ├── _functions.scss ├── _mixins.scss ├── _shared.scss └── _typography.scss

Page 24: CSS architecture: How To Write Clean & Scalable Code

THE RESULTSTRUCTURE@import 'settings/z-index-variables';@import 'settings/variables';

@import 'framework/variables';@import 'framework/components';

@import 'settings/breakpoint-variables';

@import 'utilities/functions';@import@import 'utilities/mixins';@import 'utilities/shared';@import 'utilities/typography';

@import 'framework/overrides';

@import 'components/first-component';// more components

@import 'views/home';// more views// more views

Page 25: CSS architecture: How To Write Clean & Scalable Code

Q&ATHANK YOU

[email protected] /czajkovsky

Mateusz Czajka - senior dev @ netguru.co