SlideShare a Scribd company logo
HOWTOWRITECLEAN&SCALABLECODE
CSSARCHITECTURE
.mat.czajka@gmail.com /czajkovsky
MateuszCzajka-seniordev@netguru.co
IT’SCSSWITHSUPERPOWERS
USEPREPROCESSORS
0.
ANDBECONSISTENTABOUTIT
DEFINEASTYLEGUIDE
1.
DEFINEASTYLEGUIDESCSSLINT
.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 be
preceded by one space, Line 38, Column 8
DEFINEASTYLEGUIDEHOUND
+ =SCSSLINT
THATYOUNEEDTOSUPPORT
DETERMINEBROWSERS
2.
DETERMINEBROWSERSAUTOPREFIXER
// in code
a {
display: flex;
}
// output
a {
display: -webkit-box;
display: -webkit-flex;
display: -moz-box;
display: -ms-flexbox;
display: flex
}
INTOSMALLPIECES
DIVIDEYOURCODE
3.
ASMANYASITMAKESSENSE
USEVARIABLES
4.
USEVARIABLESBASICS
// 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;
USEVARIABLESZINDEXES
// view/component
.settings-modal {
// ...
z-index: $z-index-settings-modal;
}
.avatar-popover {
// ...
z-index: $z-index-avatar-popover;
}
USEVARIABLESZINDEXES
// _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;
ITREALLYHELPSTOKEEPYOURCODEDRY
USEMIXINS&EXTENDS
5.
USEMIXINS&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;
}
USEMIXINS&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;
}
THINKABOUTRETINAUSERS
USEVECTORS
6.
BUTUSEITTHESMARTWAY
USEAFRAMEWORK
7.
USEAFRAMEWORKSTRUCTURE
framework
├── _components.scss
├── _overrides.scss
├── _variables.scss
└── overrides
└── _framework-overrides-go-here.scss
USEAFRAMEWORKCOMPONENTS
// 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";
// ...
USEFRAMEWORKVARIABLES
// 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...
USEAFRAMEWORKOVERRIDES
// 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";
// ...
STRUCTUREANDORDER
THERESULT
THERESULTSTRUCTURE
├── 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
THERESULTSTRUCTURE
@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
Q&A
THANKYOU
.mat.czajka@gmail.com /czajkovsky
MateuszCzajka-seniordev@netguru.co

More Related Content

Viewers also liked (16)

PDF
Paradygmaty Programowania: Czy Istnieje Najlepszy?
Netguru
 
PDF
Why no one is looking for rockstar programmers (updated version)
Wiktor Schmidt
 
PDF
Everyday Rails
Netguru
 
PDF
Hidden Gems in Swift
Netguru
 
PDF
Czy Project Manger Musi Być Osobą Techniczną?
Netguru
 
PDF
Agile Retrospectives
Netguru
 
PDF
Z 50 do 100 w ciągu roku Jak rekrutować w IT?
Netguru
 
PDF
KISS Augmented Reality
Netguru
 
PDF
Defining DSL (Domain Specific Language) using Ruby
Netguru
 
PDF
Communication With Clients Throughout The Project
Netguru
 
PDF
Rozwijanie firmy web developerskiej - Kuba Filipowski, Wiktor Schmidt, Netguru
Biznes 2.0
 
PDF
From Birds To Bugs: Testowanie Z Pasją
Netguru
 
PPT
Blogi w firmie
Netguru
 
PDF
Ruby Rails Overview
Netguru
 
PDF
How To Build Great Relationships With Your Clients
Netguru
 
PDF
Payments integration: Stripe & Taxamo
Netguru
 
Paradygmaty Programowania: Czy Istnieje Najlepszy?
Netguru
 
Why no one is looking for rockstar programmers (updated version)
Wiktor Schmidt
 
Everyday Rails
Netguru
 
Hidden Gems in Swift
Netguru
 
Czy Project Manger Musi Być Osobą Techniczną?
Netguru
 
Agile Retrospectives
Netguru
 
Z 50 do 100 w ciągu roku Jak rekrutować w IT?
Netguru
 
KISS Augmented Reality
Netguru
 
Defining DSL (Domain Specific Language) using Ruby
Netguru
 
Communication With Clients Throughout The Project
Netguru
 
Rozwijanie firmy web developerskiej - Kuba Filipowski, Wiktor Schmidt, Netguru
Biznes 2.0
 
From Birds To Bugs: Testowanie Z Pasją
Netguru
 
Blogi w firmie
Netguru
 
Ruby Rails Overview
Netguru
 
How To Build Great Relationships With Your Clients
Netguru
 
Payments integration: Stripe & Taxamo
Netguru
 

More from Netguru (15)

PDF
Estimation myths debunked
Netguru
 
PDF
Programming Paradigms Which One Is The Best?
Netguru
 
PDF
Ruby On Rails Intro
Netguru
 
PDF
Perfect Project Read Me (in a few steps)
Netguru
 
PDF
The Git Basics
Netguru
 
PDF
From nil to guru: intro to Ruby on Rails
Netguru
 
PDF
Working With Teams Across The Borders
Netguru
 
PDF
Front-End Dev Tools
Netguru
 
PDF
OOScss Architecture For Rails Apps
Netguru
 
KEY
Coffeescript presentation DublinJS
Netguru
 
PDF
Developing a webdevelopment company
Netguru
 
PDF
Barcamps in Europe
Netguru
 
PDF
Wiktor Schmidt, RuPy 2008, Caching in Rails
Netguru
 
PDF
Barcamp #5 - API
Netguru
 
PDF
Barcamp #5 - Mikrocelebryci
Netguru
 
Estimation myths debunked
Netguru
 
Programming Paradigms Which One Is The Best?
Netguru
 
Ruby On Rails Intro
Netguru
 
Perfect Project Read Me (in a few steps)
Netguru
 
The Git Basics
Netguru
 
From nil to guru: intro to Ruby on Rails
Netguru
 
Working With Teams Across The Borders
Netguru
 
Front-End Dev Tools
Netguru
 
OOScss Architecture For Rails Apps
Netguru
 
Coffeescript presentation DublinJS
Netguru
 
Developing a webdevelopment company
Netguru
 
Barcamps in Europe
Netguru
 
Wiktor Schmidt, RuPy 2008, Caching in Rails
Netguru
 
Barcamp #5 - API
Netguru
 
Barcamp #5 - Mikrocelebryci
Netguru
 
Ad

Recently uploaded (20)

PDF
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
PDF
99 Bottles of Trust on the Wall — Operational Principles for Trust in Cyber C...
treyka
 
PDF
Modern Decentralized Application Architectures.pdf
Kalema Edgar
 
PDF
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
PDF
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
PDF
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
PPTX
Role_of_Artificial_Intelligence_in_Livestock_Extension_Services.pptx
DrRajdeepMadavi
 
PDF
ICONIQ State of AI Report 2025 - The Builder's Playbook
Razin Mustafiz
 
PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
PDF
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PDF
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
PPTX
Digital Circuits, important subject in CS
contactparinay1
 
PDF
🚀 Let’s Build Our First Slack Workflow! 🔧.pdf
SanjeetMishra29
 
PDF
Home Cleaning App Development Services.pdf
V3cube
 
PDF
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
PDF
“ONNX and Python to C++: State-of-the-art Graph Compilation,” a Presentation ...
Edge AI and Vision Alliance
 
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
99 Bottles of Trust on the Wall — Operational Principles for Trust in Cyber C...
treyka
 
Modern Decentralized Application Architectures.pdf
Kalema Edgar
 
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
Role_of_Artificial_Intelligence_in_Livestock_Extension_Services.pptx
DrRajdeepMadavi
 
ICONIQ State of AI Report 2025 - The Builder's Playbook
Razin Mustafiz
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
Digital Circuits, important subject in CS
contactparinay1
 
🚀 Let’s Build Our First Slack Workflow! 🔧.pdf
SanjeetMishra29
 
Home Cleaning App Development Services.pdf
V3cube
 
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
“ONNX and Python to C++: State-of-the-art Graph Compilation,” a Presentation ...
Edge AI and Vision Alliance
 
Ad

CSS architecture: How To Write Clean & Scalable Code