SlideShare a Scribd company logo
1 of 127
Download to read offline
Decoupling the Front-end with
Modular CSS
Julie Cameron
@jewlofthelotus
#OSCON 2015
bit.ly/decoupling-css
DERP.
@jewlofthelotus | #OSCON
@jewlofthelotus | #OSCON
articulate.com@jewlofthelotus | #OSCON
girldevelopit.com@jewlofthelotus | #OSCON
OOCSS
@jewlofthelotus | #OSCON
Got CSS?
@jewlofthelotus | #OSCON
@jewlofthelotus | #OSCON
#cascade {
div.is {
span.delicate {
position: absolute !important;
}
}
}
@jewlofthelotus | #OSCON
@jewlofthelotus | #OSCON
“It’s almost a challenge to find a development
team that’s working on a codebase that’s more
than a couple of years old where the CSS isn’t
the most frightening and hated part of that
system.”
Andy Hume - CSS for Grownups
@jewlofthelotus | #OSCON
TOP DOWN CSS
=
REPETITION & BLOAT
@jewlofthelotus | #OSCON
SELECTOR MISUSE
=
SPECIFICITY HELL
@jewlofthelotus | #OSCON
BLOAT
+
BAD SELECTORS
=
BAD PERFORMANCE
@jewlofthelotus | #OSCON
!IMPORTANT
=
THE DEVIL
@jewlofthelotus | #OSCON
NONE OF THIS IS
SCALABLE OR
MAINTAINABLE.
A hot mess is what it is…
@jewlofthelotus | #OSCON
TOP
DOWN
OVERLY
SPECIFIC
CSS
HTML@jewlofthelotus | #OSCON
WE’VE BEEN
COUPLING OUR
HTML & CSS
@jewlofthelotus | #OSCON
WE’VE BEEN
COUPLING OUR
HTML & CSS
And sometimes our CSS & JavaScript.
@jewlofthelotus | #OSCON
WE’VE BEEN
COUPLING OUR
HTML & CSS
And sometimes our CSS & JavaScript. …and Feature Specs, too.
@jewlofthelotus | #OSCON
Coupled CSS Selectors
@jewlofthelotus | #OSCON
STOP USING
CSS SELECTORS
FOR NON-CSS
Data Attributes. FTW.
@jewlofthelotus | #OSCON
Functionality Selectors
@jewlofthelotus | #OSCON
START USING
MODULAR CSS
@jewlofthelotus | #OSCON
WHY?
@jewlofthelotus | #OSCON
MODULAR
@jewlofthelotus | #OSCON
PREDICTABLE
@jewlofthelotus | #OSCON
MAINTAINABLE
@jewlofthelotus | #OSCON
SCALABLE
@jewlofthelotus | #OSCON
DRY
@jewlofthelotus | #OSCON
ORGANIZED
@jewlofthelotus | #OSCON
Modular Solutions
• OOCSS
• BEM
• SMACSS
• Atomic Design
• CSS for Grownups
• CCSS
• DRY CSS
• and many more…
@jewlofthelotus | #OSCON
Object Oriented Cascading Stylesheets
OOCSS
https://github.com/stubbornella/oocss/wiki
@jewlofthelotus | #OSCON
A scalable, maintainable,
semantic, and predictable
approach to writing CSS.
@jewlofthelotus | #OSCON
OOCSS was created by Nicole Sullivan
while working for Facebook.
She created a reusable CSS module
called the “media object” to save
hundreds of lines of code.
stubbornella.org
@jewlofthelotus | #OSCON
The Media Object
“a content block containing a fixed-size
media element (e.g. image or video) along
with other variable-size content (e.g. text)”
https://github.com/stubbornella/oocss/wiki
AKA a Facebook status.
@jewlofthelotus | #OSCON
A Media Object
Media to the left and some
variable length content to
the right.
img.png
@jewlofthelotus | #OSCON
The Foundation of Modular CSS
OBJECTS
@jewlofthelotus | #OSCON
Objects are the
abstraction of repetition.
@jewlofthelotus | #OSCON
Object Makeup
1. HTML - one or more nodes of the DOM
https://github.com/stubbornella/oocss/wiki/FAQ
@jewlofthelotus | #OSCON
Object Makeup
1. HTML - one or more nodes of the DOM
https://github.com/stubbornella/oocss/wiki/FAQ
2. CSS that styles those nodes
@jewlofthelotus | #OSCON
Object Makeup
1. HTML - one or more nodes of the DOM
https://github.com/stubbornella/oocss/wiki/FAQ
2. CSS that styles those nodes
3. JavaScript functionality tied to those nodes
@jewlofthelotus | #OSCON
Modules with Variations
.btn
@jewlofthelotus | #OSCON
Modules with Variations
.btn
.btn—primary .btn-small
CSS
.btn:hover
@jewlofthelotus | #OSCON
Modules with Variations
.btn
.btn.is—disabled .btn.is-active
CSS
JS
.btn—primary .btn-small
CSS
.btn:hover
@jewlofthelotus | #OSCON
Module Components
Object aka module / component / block .btn, .media
@jewlofthelotus | #OSCON
Module Components
Object aka module / component / block .btn, .media
Child Objects .media__img, .media__body
Relationships
@jewlofthelotus | #OSCON
Module Components
Object aka module / component / block .btn, .media
Modifiers .media—-inline, .media__img—-right
CSS Design Variations
Child Objects .media__img, .media__body
Relationships
@jewlofthelotus | #OSCON
Module Components
Object aka module / component / block .btn, .media
Modifiers .media—-inline, .media__img—-right
CSS Design Variations
States .media—-collapsed, .media.is-active
CSS / JS Design Adjustments
Child Objects .media__img, .media__body
Relationships
@jewlofthelotus | #OSCON
BEST
PRACTICES
@jewlofthelotus | #OSCON
SINGLE
RESPONSIBILITY
Do one thing well and one thing only.
@jewlofthelotus | #OSCON
.CLASSES
.CLASSES
.CLASSES
Take that, specificity!
@jewlofthelotus | #OSCON
NAMING
CONVENTIONS
Just breathe. Everything is going to be okay.
@jewlofthelotus | #OSCON
PICK A SYSTEM
BE CONSISTENT
@jewlofthelotus | #OSCON
Naming Formats
.modulename
.moduleName
.module-name
.module_name
.bem——style
.bem_ _style
@jewlofthelotus | #OSCON
Naming Patterns
How do you identify children? States? Modifiers?
.objectChild
.object-child
.object_child
.object_ _child
.myObject—childObj
.object.is—active
.objectModifier
.object-modifier
.object_modifier
.object——modifier
.myObj-modClass
.object.active
@jewlofthelotus | #OSCON
BEM
.block__element——modifier
http://bem.info
@jewlofthelotus | #OSCON
.block .media
@jewlofthelotus | #OSCON
.block .media
.block__element .media_ _img
@jewlofthelotus | #OSCON
.block .media
.block__element .media_ _img
.block——modifier .media——inline
@jewlofthelotus | #OSCON
.block .media
.block__element .media_ _img
.block——modifier .media——inline
.block__element——modifier .media_ _img——right
@jewlofthelotus | #OSCON
SEMANTIC
VS
PRESENTATIONAL
NAMING
Uh oh…
@jewlofthelotus | #OSCON
Presentational Naming
Describes how the object looks.
.grid_ _col——9
.btn——small
.border——all
.color——red
.float——left
.border——thick
@jewlofthelotus | #OSCON
Semantic Naming
Describes what the object is.
.bookmark
.article
.callToAction
.error
.article_ _title
.article——flagged
@jewlofthelotus | #OSCON
Fewer Semantic Classes
DRY HTML
VS
DRY CSSMany Presentational Classes
@jewlofthelotus | #OSCON
NO ONE KNOWS
WHAT THEY’RE
DOING.
@jewlofthelotus | #OSCON
2 Principles
of OOCSS
@jewlofthelotus | #OSCON
Separation of
STRUCTURE
from
SKIN
1ST PRINCIPLE
@jewlofthelotus | #OSCON
Structure Vs. Skin
@jewlofthelotus | #OSCON
Structure Vs. Skin
Define repeating “invisible” patterns
as reusable structures.
What makes a button look like a button?
@jewlofthelotus | #OSCON
Structure Vs. Skin
Define repeating “invisible” patterns
as reusable structures.
What makes a button look like a button?
Define repeating visual patterns
as reusable skins.
What makes these buttons look different?
@jewlofthelotus | #OSCON
Structure
Repeating “invisible” patterns.
What makes a button look like a button?
@jewlofthelotus | #OSCON
Structure
Repeating “invisible” patterns.
What makes a button look like a button?
@jewlofthelotus | #OSCON
Skin
Repeating visible patterns.
What makes these buttons look different?
@jewlofthelotus | #OSCON
Skin
Repeating visible patterns.
What makes these buttons look different?
@jewlofthelotus | #OSCON
Structure + Skin
@jewlofthelotus | #OSCON
Structure + Skin
.btn .btn—primary
.btn—small
.btn—block
.btn—inverse
@jewlofthelotus | #OSCON
Separation of
CONTAINER
from
CONTENT
2ND PRINCIPLE
@jewlofthelotus | #OSCON
Container Vs. Content
Objects should look the same
no matter where you put them.
@jewlofthelotus | #OSCON
Location Dependent Styles
@jewlofthelotus | #OSCON
Location Dependent Styles
@jewlofthelotus | #OSCON
Location Dependent Styles
@jewlofthelotus | #OSCON
Better?
@jewlofthelotus | #OSCON
Separation Of
Container & Content
What is the container?
@jewlofthelotus | #OSCON
Separation Of
Container & Content
What is the container?
@jewlofthelotus | #OSCON
Separation Of
Container & Content
What is the content?
@jewlofthelotus | #OSCON
Separation Of
Container & Content
Abstract reusable styles into a new object.
@jewlofthelotus | #OSCON
With OOCSS, we’re encouraged to give
more forethought to what is common
among different elements, then separate
those common features into modules, or
objects, that can be reused anywhere.
Louis Lazaris — Smashing Magazine
@jewlofthelotus | #OSCON
OOCSS
Structure vs. Skin
Container vs. Content
@jewlofthelotus | #OSCON
CLASSITIS
@jewlofthelotus | #OSCON
HTML <3 CSS
@jewlofthelotus | #OSCON
HTML <3 CSSCSS
STYLE
@jewlofthelotus | #OSCON
The Semantics Debate
• Do classes actually have “semantic” value?
@jewlofthelotus | #OSCON
The Semantics Debate
• Do classes actually have “semantic” value?
• To whom are classes semantic to?
@jewlofthelotus | #OSCON
The Semantics Debate
• Do classes actually have “semantic” value?
• To whom are classes semantic to?
• Should we stick with one way or the other?
@jewlofthelotus | #OSCON
Presentational
Arguments
• Classes have NO meaning to the browser.
@jewlofthelotus | #OSCON
Presentational
Arguments
• Classes have NO meaning to the browser.
• Classes ARE semantic to developers.
@jewlofthelotus | #OSCON
Presentational
Arguments
• Classes have NO meaning to the browser.
• Classes ARE semantic to developers.
• Content describes itself, classes don’t need to.
@jewlofthelotus | #OSCON
Semantic
DRY HTML
VS
DRY CSSPresentational
@jewlofthelotus | #OSCON
SMACSSScalable & Modular Architecture with CSS
http://smacss.com
Jonathan Snook
@jewlofthelotus | #OSCON
CATEGORIZATION
@jewlofthelotus | #OSCON
• Base
• Layout
• Module
• State
• Theme
SMACSS Categories
@jewlofthelotus | #OSCON
CSS Resets
+
Default Styles
What things should generally look like.
SMACSS Base Objects
@jewlofthelotus | #OSCON
Containers
+
Grids
Hold the modules together.
SMACSS Layout Objects
#IDs for single use “major” components
.classes for reusable “minor” components
@jewlofthelotus | #OSCON
Reusable Parts
+ 

Subclasses
(Modifiers)
The good stuff.
SMACSS Modules
@jewlofthelotus | #OSCON
Tacked on to layout
& module objects
Indicate a JavaScript dependency.
SMACSS State Objects
!important is allowed and even recommended!
@jewlofthelotus | #OSCON
Tacked on to layout
& module objects
Indicate a JavaScript dependency.
SMACSS State Objects
!important is allowed and even recommended!
Module-specific
State objects
Include module name & reside with it.
pseudo & @media query states included.
@jewlofthelotus | #OSCON
Themes can
apply to all other
object types
In the case that your site has multiple
holistic themes.
SMACSS Themes
@jewlofthelotus | #OSCON
ATOMIC
DESIGN
http://bradfrost.com/blog/post/atomic-web-design
Brad Frost
@jewlofthelotus | #OSCON
ASSEMBLING
@jewlofthelotus | #OSCON
Atomic Design
atoms molecules organisms templates pages
@jewlofthelotus | #OSCON
Atomic Design
atoms molecules organisms templates pages
+@jewlofthelotus | #OSCON
The basic building
blocks of matter.
Single element. Global styles.
Atoms
@jewlofthelotus | #OSCON
Groups of atoms
bonded together.
Simple combinations built for reuse.
Molecules
@jewlofthelotus | #OSCON
Groups of molecules
joined together.
Complex, distinct sections of an interface.
Organisms
@jewlofthelotus | #OSCON
http://patternlab.io
A collection of tools to help you create
atomic design systems.
Pattern Lab
WHAT
NOW?
@jewlofthelotus | #OSCON
ORGANIZE
OPTIMIZE
REPEAT@jewlofthelotus | #OSCON
ITERATING ON
ABSTRACTION
@jewlofthelotus | #OSCON
FINDING THE RIGHT
GRANULARITY
@jewlofthelotus | #OSCON
ESTABLISH
CONVENTIONS
@jewlofthelotus | #OSCON
DOCUMENT
EVERYTHING
@jewlofthelotus | #OSCON
ARCHITECT A
STYLEGUIDE
@jewlofthelotus | #OSCON
UTILIZE A CSS
PREPROCESSOR
@jewlofthelotus | #OSCON
STOP USING
CSS SELECTORS
FOR NON-CSS
@jewlofthelotus | #OSCON
http://github.com/davidtheclark/scalable-css-reading-list
http://bit.ly/dc-scrl
LEARN
MORE
@jewlofthelotus | #OSCON
Questions?
Decoupling the Front-end with
Modular CSS
Julie Cameron
@jewlofthelotus
#OSCON 2015
bit.ly/decoupling-css

More Related Content

What's hot

Component Driven Design and Development
Component Driven Design and DevelopmentComponent Driven Design and Development
Component Driven Design and Development
Cristina Chumillas
 
CSS Lessons Learned the Hard Way (Generate Conf)
CSS Lessons Learned the Hard Way (Generate Conf)CSS Lessons Learned the Hard Way (Generate Conf)
CSS Lessons Learned the Hard Way (Generate Conf)
Zoe Gillenwater
 
Basics of Front End Web Dev PowerPoint
Basics of Front End Web Dev PowerPointBasics of Front End Web Dev PowerPoint
Basics of Front End Web Dev PowerPoint
Sahil Gandhi
 
[Access U 2010] HTML5 & Accessibility
[Access U 2010] HTML5 & Accessibility[Access U 2010] HTML5 & Accessibility
[Access U 2010] HTML5 & Accessibility
Christopher Schmitt
 
網頁程式設計
網頁程式設計網頁程式設計
網頁程式設計
傳錡 蕭
 

What's hot (20)

Component Driven Design and Development
Component Driven Design and DevelopmentComponent Driven Design and Development
Component Driven Design and Development
 
CSS Lessons Learned the Hard Way (Generate Conf)
CSS Lessons Learned the Hard Way (Generate Conf)CSS Lessons Learned the Hard Way (Generate Conf)
CSS Lessons Learned the Hard Way (Generate Conf)
 
[PSU Web 2011] HTML5 Design
[PSU Web 2011] HTML5 Design[PSU Web 2011] HTML5 Design
[PSU Web 2011] HTML5 Design
 
ACSS: Rethinking CSS Best Practices
ACSS: Rethinking CSS Best PracticesACSS: Rethinking CSS Best Practices
ACSS: Rethinking CSS Best Practices
 
Basics of Front End Web Dev PowerPoint
Basics of Front End Web Dev PowerPointBasics of Front End Web Dev PowerPoint
Basics of Front End Web Dev PowerPoint
 
[O'Reilly] HTML5 Design
[O'Reilly] HTML5 Design[O'Reilly] HTML5 Design
[O'Reilly] HTML5 Design
 
Creating Living Style Guides to Improve Performance
Creating Living Style Guides to Improve PerformanceCreating Living Style Guides to Improve Performance
Creating Living Style Guides to Improve Performance
 
CSS - OOCSS, SMACSS and more
CSS - OOCSS, SMACSS and moreCSS - OOCSS, SMACSS and more
CSS - OOCSS, SMACSS and more
 
Css3
Css3Css3
Css3
 
Modern Front-End Development
Modern Front-End DevelopmentModern Front-End Development
Modern Front-End Development
 
HTML5 & CSS3 Flag
HTML5 & CSS3 FlagHTML5 & CSS3 Flag
HTML5 & CSS3 Flag
 
[Access U 2010] HTML5 & Accessibility
[Access U 2010] HTML5 & Accessibility[Access U 2010] HTML5 & Accessibility
[Access U 2010] HTML5 & Accessibility
 
Front End Tooling and Performance - Codeaholics HK 2015
Front End Tooling and Performance - Codeaholics HK 2015Front End Tooling and Performance - Codeaholics HK 2015
Front End Tooling and Performance - Codeaholics HK 2015
 
BEM it!
BEM it!BEM it!
BEM it!
 
The benefits of BEM CSS
The benefits of BEM CSSThe benefits of BEM CSS
The benefits of BEM CSS
 
Bootstrap [part 2]
Bootstrap [part 2]Bootstrap [part 2]
Bootstrap [part 2]
 
Rapid and Responsive - UX to Prototype with Bootstrap
Rapid and Responsive - UX to Prototype with BootstrapRapid and Responsive - UX to Prototype with Bootstrap
Rapid and Responsive - UX to Prototype with Bootstrap
 
Prototyping w/HTML5 and CSS3
Prototyping w/HTML5 and CSS3Prototyping w/HTML5 and CSS3
Prototyping w/HTML5 and CSS3
 
Slow kinda sucks
Slow kinda sucksSlow kinda sucks
Slow kinda sucks
 
網頁程式設計
網頁程式設計網頁程式設計
網頁程式設計
 

Viewers also liked

Viewers also liked (6)

Steamで同人ゲームをリリースする ~パブリッシャーになって検証してみた~
Steamで同人ゲームをリリースする ~パブリッシャーになって検証してみた~Steamで同人ゲームをリリースする ~パブリッシャーになって検証してみた~
Steamで同人ゲームをリリースする ~パブリッシャーになって検証してみた~
 
SassConf: Managing Complex Projects with Design Components
SassConf: Managing Complex Projects with Design ComponentsSassConf: Managing Complex Projects with Design Components
SassConf: Managing Complex Projects with Design Components
 
THETAでモバイルVRコンテンツ開発
THETAでモバイルVRコンテンツ開発THETAでモバイルVRコンテンツ開発
THETAでモバイルVRコンテンツ開発
 
クラウド会計ソフトFreee 初期設定ガイド
クラウド会計ソフトFreee 初期設定ガイドクラウド会計ソフトFreee 初期設定ガイド
クラウド会計ソフトFreee 初期設定ガイド
 
Object-Oriented CSS 從 OOCSS, SMACSS, BEM 到 AMCSS
Object-Oriented CSS 從 OOCSS, SMACSS, BEM 到 AMCSSObject-Oriented CSS 從 OOCSS, SMACSS, BEM 到 AMCSS
Object-Oriented CSS 從 OOCSS, SMACSS, BEM 到 AMCSS
 
H2O x mrubyで人はどれだけ幸せになれるのか
H2O x mrubyで人はどれだけ幸せになれるのかH2O x mrubyで人はどれだけ幸せになれるのか
H2O x mrubyで人はどれだけ幸せになれるのか
 

Similar to Decoupling the Front-end with Modular CSS

OOCSS for JavaScript Pirates jQcon Boston
OOCSS for JavaScript Pirates jQcon BostonOOCSS for JavaScript Pirates jQcon Boston
OOCSS for JavaScript Pirates jQcon Boston
John Hann
 
Object oriented css graeme blackwood
Object oriented css graeme blackwoodObject oriented css graeme blackwood
Object oriented css graeme blackwood
drupalconf
 
Object oriented css. Graeme Blackwood
Object oriented css. Graeme BlackwoodObject oriented css. Graeme Blackwood
Object oriented css. Graeme Blackwood
PVasili
 
How to develop a CSS Framework
How to develop a CSS FrameworkHow to develop a CSS Framework
How to develop a CSS Framework
Olivier Besson
 

Similar to Decoupling the Front-end with Modular CSS (20)

What is Modular CSS?
What is Modular CSS?What is Modular CSS?
What is Modular CSS?
 
Object Oriented CSS for rapid, scalable and maintainable development
Object Oriented CSS for rapid, scalable and maintainable developmentObject Oriented CSS for rapid, scalable and maintainable development
Object Oriented CSS for rapid, scalable and maintainable development
 
We Need to Talk About CSS
We Need to Talk About CSSWe Need to Talk About CSS
We Need to Talk About CSS
 
OOCSS for Javascript pirates at jQueryPgh meetup
OOCSS for Javascript pirates at jQueryPgh meetupOOCSS for Javascript pirates at jQueryPgh meetup
OOCSS for Javascript pirates at jQueryPgh meetup
 
Rock Solid CSS Architecture
Rock Solid CSS ArchitectureRock Solid CSS Architecture
Rock Solid CSS Architecture
 
OOCSS for JavaScript Pirates jQcon Boston
OOCSS for JavaScript Pirates jQcon BostonOOCSS for JavaScript Pirates jQcon Boston
OOCSS for JavaScript Pirates jQcon Boston
 
Style Guide Driven Development: All Hail the Robot Overlords!
Style Guide Driven Development: All Hail the Robot Overlords!Style Guide Driven Development: All Hail the Robot Overlords!
Style Guide Driven Development: All Hail the Robot Overlords!
 
OOCSS
OOCSSOOCSS
OOCSS
 
Object oriented css graeme blackwood
Object oriented css graeme blackwoodObject oriented css graeme blackwood
Object oriented css graeme blackwood
 
Object oriented css. Graeme Blackwood
Object oriented css. Graeme BlackwoodObject oriented css. Graeme Blackwood
Object oriented css. Graeme Blackwood
 
Css framework
Css frameworkCss framework
Css framework
 
Css framework
Css frameworkCss framework
Css framework
 
How to develop a CSS Framework
How to develop a CSS FrameworkHow to develop a CSS Framework
How to develop a CSS Framework
 
Design and CSS
Design and CSSDesign and CSS
Design and CSS
 
CSMess to OOCSS: Refactoring CSS with Object Oriented Design
CSMess to OOCSS: Refactoring CSS with Object Oriented DesignCSMess to OOCSS: Refactoring CSS with Object Oriented Design
CSMess to OOCSS: Refactoring CSS with Object Oriented Design
 
The Cascade is Dead
The Cascade is DeadThe Cascade is Dead
The Cascade is Dead
 
Introducing jee7 – jsf 2
Introducing jee7 – jsf 2Introducing jee7 – jsf 2
Introducing jee7 – jsf 2
 
Build with Express
Build with ExpressBuild with Express
Build with Express
 
CSS Best Practices
CSS Best PracticesCSS Best Practices
CSS Best Practices
 
Atomic design
Atomic designAtomic design
Atomic design
 

Recently uploaded

pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdfpdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
JOHNBEBONYAP1
 
一比一原版奥兹学院毕业证如何办理
一比一原版奥兹学院毕业证如何办理一比一原版奥兹学院毕业证如何办理
一比一原版奥兹学院毕业证如何办理
F
 
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
ayvbos
 
call girls in Anand Vihar (delhi) call me [🔝9953056974🔝] escort service 24X7
call girls in Anand Vihar (delhi) call me [🔝9953056974🔝] escort service 24X7call girls in Anand Vihar (delhi) call me [🔝9953056974🔝] escort service 24X7
call girls in Anand Vihar (delhi) call me [🔝9953056974🔝] escort service 24X7
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girlsRussian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Monica Sydney
 
Abu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu DhabiAbu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Monica Sydney
 
Indian Escort in Abu DHabi 0508644382 Abu Dhabi Escorts
Indian Escort in Abu DHabi 0508644382 Abu Dhabi EscortsIndian Escort in Abu DHabi 0508644382 Abu Dhabi Escorts
Indian Escort in Abu DHabi 0508644382 Abu Dhabi Escorts
Monica Sydney
 

Recently uploaded (20)

pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdfpdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
 
Local Call Girls in Seoni 9332606886 HOT & SEXY Models beautiful and charmin...
Local Call Girls in Seoni  9332606886 HOT & SEXY Models beautiful and charmin...Local Call Girls in Seoni  9332606886 HOT & SEXY Models beautiful and charmin...
Local Call Girls in Seoni 9332606886 HOT & SEXY Models beautiful and charmin...
 
一比一原版奥兹学院毕业证如何办理
一比一原版奥兹学院毕业证如何办理一比一原版奥兹学院毕业证如何办理
一比一原版奥兹学院毕业证如何办理
 
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
 
20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf
 
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
 
call girls in Anand Vihar (delhi) call me [🔝9953056974🔝] escort service 24X7
call girls in Anand Vihar (delhi) call me [🔝9953056974🔝] escort service 24X7call girls in Anand Vihar (delhi) call me [🔝9953056974🔝] escort service 24X7
call girls in Anand Vihar (delhi) call me [🔝9953056974🔝] escort service 24X7
 
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girlsRussian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
 
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrStory Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
 
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
 
Best SEO Services Company in Dallas | Best SEO Agency Dallas
Best SEO Services Company in Dallas | Best SEO Agency DallasBest SEO Services Company in Dallas | Best SEO Agency Dallas
Best SEO Services Company in Dallas | Best SEO Agency Dallas
 
Abu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu DhabiAbu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
 
Ballia Escorts Service Girl ^ 9332606886, WhatsApp Anytime Ballia
Ballia Escorts Service Girl ^ 9332606886, WhatsApp Anytime BalliaBallia Escorts Service Girl ^ 9332606886, WhatsApp Anytime Ballia
Ballia Escorts Service Girl ^ 9332606886, WhatsApp Anytime Ballia
 
Real Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirtReal Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirt
 
Vip Firozabad Phone 8250092165 Escorts Service At 6k To 30k Along With Ac Room
Vip Firozabad Phone 8250092165 Escorts Service At 6k To 30k Along With Ac RoomVip Firozabad Phone 8250092165 Escorts Service At 6k To 30k Along With Ac Room
Vip Firozabad Phone 8250092165 Escorts Service At 6k To 30k Along With Ac Room
 
Tadepalligudem Escorts Service Girl ^ 9332606886, WhatsApp Anytime Tadepallig...
Tadepalligudem Escorts Service Girl ^ 9332606886, WhatsApp Anytime Tadepallig...Tadepalligudem Escorts Service Girl ^ 9332606886, WhatsApp Anytime Tadepallig...
Tadepalligudem Escorts Service Girl ^ 9332606886, WhatsApp Anytime Tadepallig...
 
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
 
Indian Escort in Abu DHabi 0508644382 Abu Dhabi Escorts
Indian Escort in Abu DHabi 0508644382 Abu Dhabi EscortsIndian Escort in Abu DHabi 0508644382 Abu Dhabi Escorts
Indian Escort in Abu DHabi 0508644382 Abu Dhabi Escorts
 
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
 
Call girls Service in Ajman 0505086370 Ajman call girls
Call girls Service in Ajman 0505086370 Ajman call girlsCall girls Service in Ajman 0505086370 Ajman call girls
Call girls Service in Ajman 0505086370 Ajman call girls
 

Decoupling the Front-end with Modular CSS