SlideShare ist ein Scribd-Unternehmen logo
1 von 61
Downloaden Sie, um offline zu lesen
Modular
CSSScott Vandehey — @spaceninja — Devsigner 2016
FridayFrontEnd.com
@fridayfrontend
CSS at Scale
is Difficult
–Nicolas Gallagher, @necolas
“Replace ‘can you build this?’ with
‘can you maintain this without
losing your minds?’”
goo.gl/ZHCkDu
goo.gl/NcVzZ3
Difficult to Understand
<div class=“box profile pro-user">
<img class="avatar image" />
<p class="bio">...</p>
</div>
Difficult to Reuse
• You want to re-use a style from
another page, but it’s written in a
way that only works on that page
• You don’t want to break the original,
so you duplicate the code
• Now you have two problems
Difficult to Maintain
• You change the markup and the
whole thing breaks
• You want to change a style on one
page and it breaks on another
• You try to override the other page,
but get caught in a specificity war
Two CSS properties walk into a bar.
A table in a bar across town collapses.
Thomas Fuchs
@thomasfuchs
goo.gl/wScTMY
Modularity
What does that even mean?
–Harry Roberts, @csswizardry
“Code which adheres to the separation
of concerns can be much more
confidently modified, edited, extended,
and maintained because we know how
far its responsibilities reach. We know
that modifying layout, for example, will
only ever modify layout—nothing else.”
goo.gl/saNjgt
credit: goo.gl/YAL28V
credit: goo.gl/YAL28V
Remind you of anything?
credit: Alan Chia, goo.gl/KwJ17v
credit: goo.gl/NOIjdw
Media Block
Smaller Subheading
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
do eiusmod tempor incididunt ut labore et dolore magna
Media Block Right
Smaller Subheading
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
do eiusmod tempor incididunt ut labore et dolore magna
“The Media Object Saves Hundreds of Lines of Code,” goo.gl/3bi2fS
credit: goo.gl/3bi2fS
OOCSS
Object Oriented CSS
goo.gl/aqZjc5
OOCSS
• Created by Nicole Sullivan in 2009
based on her work at Yahoo
• Key concept: Objects are reusable
patterns whose visual appearance is
not determined by context
–Nicole Sullivan, @stubbornella
“a CSS ‘object’ is a repeating visual
pattern, that can be abstracted into
an independent snippet of HTML,
CSS, and possibly JavaScript. That
object can then be reused
throughout a site.”
credit: John Morrison, goo.gl/AZBz7y
goo.gl/aqZjc5
OOCSS: Context
• An object should look the same no
matter where you put it
• Objects should not be styled based
on their context
goo.gl/aqZjc5
OOCSS: Skins
• Abstract the structure of an object
from the skin that is being applied
• Create reusable classes for common
visual styles like drop shadows
goo.gl/aqZjc5
OOCSS: Use Classes
• Use classes to name your objects
and their components so markup
can change without impacting style
• eg, .site-nav not header ul
goo.gl/aqZjc5
OOCSS: No IDs
• They mess up specificity because
they are too strong
• They are unique identifiers, which
means components built with them
are not reusable on the same page
BEM
Block, Element, Modifier
goo.gl/95LCw5
BEM
• Created in 2009 by Russian internet
company Yandex who faced similar
problems to Yahoo using CSS at scale
• Key concept: Blocks (objects) are
made of smaller elements and can
be modified (skinned)
–Varya Stepanova, @varya_en
“BEM is a way to modularize
development of web pages. By
breaking your web interface into
components… you can have your
interface divided into independent
parts, each one with its own
development cycle.”
goo.gl/95LCw5
BEM: Blocks
• Logically & functionally independent
components
• Nestable: Blocks can be nested inside other
blocks
• Repeatable: An interface can contain
multiple instances of the same block
goo.gl/95LCw5
BEM: Elements
• A constituent part of a block that
can't be used outside of it
• For example, a menu item is not used
outside the context of a menu block
goo.gl/95LCw5
BEM: Modifiers
• Defines the appearance and
behavior of a block or an element
• For instance, the appearance of the
menu block may change depending
on a modifier that is used on it
.minifig
.minifig
.minifig__head
.minifig__headgear
.minifig__backpack
.minifig__torso
.minifig__legs
.minifig--red
.minifig__head
.minifig__headgear
.minifig__backpack
.minifig__torso
.minifig__legs
.minifig--yellow-new
.minifig__head
.minifig__headgear
.minifig__backpack
.minifig__torso
.minifig__legs
.minifig--batman
.minifig__head
.minifig__headgear
.minifig__backpack
.minifig__torso
.minifig__legs
goo.gl/95LCw5
BEM: Naming
• Names are written in lower case
• Words within names are separated by hyphens (-)
• Elements are delimited by double underscores (__)
• Modifiers are delimited by double hyphens (--)
.block-name__elem-name--mod-name
goo.gl/95LCw5
BEM: Example
<a class="btn btn--big btn--orange" href="#">
<span class="btn__price">$9.99</span>
<span class="btn__text">Subscribe</span>
</a>
goo.gl/95LCw5
BEM: No Nested CSS
• Nested selectors increase
specificity, making code reuse more
difficult.
• Really only appropriate for styling
elements based on the state of a
block or its modifier.
SMACSS
Scalable & Modular Architecture for CSS
(pronounced “smacks”)
goo.gl/nO1m99
SMACSS
• Created by Jonathan Snook in 2011.
He had experience writing CSS at
scale, including Yahoo Mail
• Key concept: Different categories of
objects need to be handled differently
–Jonathan Snook, @snookca
“At the very core of SMACSS is
categorization. By categorizing
CSS rules, we begin to see patterns
and can define better practices
around each of these patterns.”
credit: elidr, goo.gl/Te8zQI
goo.gl/nO1m99
SMACSS: Categories
1. Base rules are default styles for things like links,
paragraphs, and headlines
2. Layout rules divide the page into sections, hold one
or more modules together
3. Modules are the reusable, modular parts of a
design. Callouts, sidebar sections, product lists, etc.
4. State rules describe how modules or layouts look in
a particular state. Hidden, expanded, active, etc.
goo.gl/nO1m99
SMACSS: Naming
• Use prefixes to differentiate
between different types of rules:
• l- for layout rules
• m- for module rules
• is- for state rules
OOCSS
& BEM
& SMACSS
= Modular
Modular CSS
• These methodologies are

more alike than different
• Their evolution represents our industry’s
growing experience with CSS at scale
• We don’t have to limit ourselves. Look at
what they share and keep the best parts
Modular Elements
• Module: a reusable pattern

(aka Object, Block)
• Child Element: discrete piece of the
module that can’t stand alone
• Module Modifier: alters the visual
appearance of a module
goo.gl/nO1m99
Modular Categories
1. Base rules are default styles for HTML elements
2. Layout rules control how modules are laid out, but
not visual appearance: .l-centered
3. Modules are visual styles for reusable, self-
contained UI components: .m-profile
4. State rules are added by JavaScript: .is-hidden
5. Helper rules are small in scope and unconnected to
modules: .h-uppercase
Modular Rules
• Don’t use IDs
• Don’t nest CSS deeper than one level
• Add classes to child elements so
you’re not tied to specific markup
• Prefix class names so you can tell at
a glance what a class does
FAQ
So many classes!
• Having lots of classes might look ugly,

but it doesn’t hurt performance
• Carefully scoped classes help others

combine your lego blocks in new ways
• Don’t be afraid of long class names.

They’re self-documenting!
Grandchild classes?
.minifig
.minifig__arm
.minifig__arm__hand
.minifig__hand
Module conflicts?
• Modules shouldn’t overlap much
• You should be able to load modules
in any order
• Consider an !important helper class
Flexbox modules?
• It’s tricky to make layout modules
using flexbox
• If you’re not careful, you’ll find
yourself making modifiers for every
single flex option
• ¯_( )_/¯
Preprocessors?
• Modular CSS is more of a philosophy
than a framework
• As a result, it works with any
preprocessor (or not) that you need
Bootstrap?
• Bootstrap is a pattern library, not a
methodology
• That said, it’s built in a modular way:
• .btn .btn-primary .btn-sm
Recap
Modular CSS is dope
goo.gl/NcVzZ3
Remember This?
<div class=“box profile pro-user">
<img class="avatar image" />
<p class="bio">...</p>
</div>
goo.gl/NcVzZ3
Self-Documenting
<div class=“box profile profile--is-pro-user">
<img class="avatar profile__image" />
<p class="profile__bio">...</p>
</div>
Modular Benefits
• Simplifies code and facilitates
refactoring
• Self-documenting code
• Reusable code that doesn’t influence
outside its own scope
• Naturally leads to a pattern library
Modular Benefits
• Predictable
• Maintainable
• Performant
Two CSS properties walk into a bar.
A table in a bar across town collapses.
Everything is fine, thanks to modular
code and proper namespacing.
goo.gl/wScTMY
Thomas Fuchs
@thomasfuchs
Thanks!
Scott Vandehey — @spaceninja — Devsigner 2016

Weitere ähnliche Inhalte

Was ist angesagt?

Clean architecture
Clean architectureClean architecture
Clean architecture
andbed
 
Asp.net architecture
Asp.net architectureAsp.net architecture
Asp.net architecture
Iblesoft
 

Was ist angesagt? (20)

Web forms in ASP.net
Web forms in ASP.netWeb forms in ASP.net
Web forms in ASP.net
 
Vue.js Getting Started
Vue.js Getting StartedVue.js Getting Started
Vue.js Getting Started
 
Kubernetes
KubernetesKubernetes
Kubernetes
 
NestJS
NestJSNestJS
NestJS
 
Asp.net state management
Asp.net state managementAsp.net state management
Asp.net state management
 
Nestjs MasterClass Slides
Nestjs MasterClass SlidesNestjs MasterClass Slides
Nestjs MasterClass Slides
 
SQLAlchemy Primer
SQLAlchemy PrimerSQLAlchemy Primer
SQLAlchemy Primer
 
Лекция 4. Принципы SOLID
Лекция 4. Принципы SOLID Лекция 4. Принципы SOLID
Лекция 4. Принципы SOLID
 
Clean architecture
Clean architectureClean architecture
Clean architecture
 
Angular 8
Angular 8 Angular 8
Angular 8
 
Asp.net MVC training session
Asp.net MVC training sessionAsp.net MVC training session
Asp.net MVC training session
 
Angular Introduction By Surekha Gadkari
Angular Introduction By Surekha GadkariAngular Introduction By Surekha Gadkari
Angular Introduction By Surekha Gadkari
 
Introduction to Docker Compose
Introduction to Docker ComposeIntroduction to Docker Compose
Introduction to Docker Compose
 
Angular Directives
Angular DirectivesAngular Directives
Angular Directives
 
Asp.net architecture
Asp.net architectureAsp.net architecture
Asp.net architecture
 
Dependency injection
Dependency injectionDependency injection
Dependency injection
 
Projects In Laravel : Learn Laravel Building 10 Projects
Projects In Laravel : Learn Laravel Building 10 ProjectsProjects In Laravel : Learn Laravel Building 10 Projects
Projects In Laravel : Learn Laravel Building 10 Projects
 
ASP.NET Web form
ASP.NET Web formASP.NET Web form
ASP.NET Web form
 
Builder design pattern
Builder design patternBuilder design pattern
Builder design pattern
 
Design Pattern - Observer Pattern
Design Pattern - Observer PatternDesign Pattern - Observer Pattern
Design Pattern - Observer Pattern
 

Andere mochten auch

Andere mochten auch (11)

ITCSS: Architettura scalabile a triangolo invertito
ITCSS: Architettura scalabile a triangolo invertitoITCSS: Architettura scalabile a triangolo invertito
ITCSS: Architettura scalabile a triangolo invertito
 
Your CSS is Awesome
Your CSS is AwesomeYour CSS is Awesome
Your CSS is Awesome
 
CSS Selectors
CSS SelectorsCSS Selectors
CSS Selectors
 
Color schemes
Color schemesColor schemes
Color schemes
 
BEM it!
BEM it!BEM it!
BEM it!
 
Responsive Design Workflow (Breaking Development Conference 2012 Orlando)
Responsive Design Workflow (Breaking Development Conference 2012 Orlando)Responsive Design Workflow (Breaking Development Conference 2012 Orlando)
Responsive Design Workflow (Breaking Development Conference 2012 Orlando)
 
Object Oriented CSS
Object Oriented CSSObject Oriented CSS
Object Oriented CSS
 
The benefits of BEM CSS
The benefits of BEM CSSThe benefits of BEM CSS
The benefits of BEM CSS
 
Web Components and Modular CSS
Web Components and Modular CSSWeb Components and Modular CSS
Web Components and Modular CSS
 
Learn BEM: CSS Naming Convention
Learn BEM: CSS Naming ConventionLearn BEM: CSS Naming Convention
Learn BEM: CSS Naming Convention
 
Atomic design
Atomic designAtomic design
Atomic design
 

Ähnlich wie What is Modular CSS?

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
 
Sitting in the Driver's Seat
Sitting in the Driver's SeatSitting in the Driver's Seat
Sitting in the Driver's Seat
Jack Moffett
 

Ähnlich wie What is Modular CSS? (20)

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
 
DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...
DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...
DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...
 
Dangerous CSS
Dangerous CSSDangerous CSS
Dangerous CSS
 
Rock Solid CSS Architecture
Rock Solid CSS ArchitectureRock Solid CSS Architecture
Rock Solid CSS Architecture
 
Smacss and bem
Smacss and bemSmacss and bem
Smacss and bem
 
Css week10 2019 2020 for g10 by eng.osama ghandour
Css week10 2019 2020 for g10 by eng.osama ghandourCss week10 2019 2020 for g10 by eng.osama ghandour
Css week10 2019 2020 for g10 by eng.osama ghandour
 
WordCamp NYC - DRY CSS
WordCamp NYC - DRY CSSWordCamp NYC - DRY CSS
WordCamp NYC - DRY CSS
 
Architecting with Style
Architecting with StyleArchitecting with Style
Architecting with Style
 
An introduction to Object Oriented CSS
An introduction to Object Oriented CSSAn introduction to Object Oriented CSS
An introduction to Object Oriented CSS
 
Object oriented css graeme blackwood
Object oriented css graeme blackwoodObject oriented css graeme blackwood
Object oriented css graeme blackwood
 
Scoped CSS: To scope or not to scope
Scoped CSS: To scope or not to scopeScoped CSS: To scope or not to scope
Scoped CSS: To scope or not to scope
 
The Future is Modular, Jonathan Snook
The Future is Modular, Jonathan SnookThe Future is Modular, Jonathan Snook
The Future is Modular, Jonathan Snook
 
Object oriented css. Graeme Blackwood
Object oriented css. Graeme BlackwoodObject oriented css. Graeme Blackwood
Object oriented css. Graeme Blackwood
 
Functional Css
Functional CssFunctional Css
Functional Css
 
Front end workflow Presentation at Coffee@DBG by Praveen Vijayan
Front end workflow Presentation at Coffee@DBG by Praveen VijayanFront end workflow Presentation at Coffee@DBG by Praveen Vijayan
Front end workflow Presentation at Coffee@DBG by Praveen Vijayan
 
Intro to OOCSS Workshop
Intro to OOCSS WorkshopIntro to OOCSS Workshop
Intro to OOCSS Workshop
 
Unic - frontend development-in-complex-projects
Unic - frontend development-in-complex-projectsUnic - frontend development-in-complex-projects
Unic - frontend development-in-complex-projects
 
Tech Headline - CSS Naming Conventions: Improve your code with OOCSS, SMACSS,...
Tech Headline - CSS Naming Conventions: Improve your code with OOCSS, SMACSS,...Tech Headline - CSS Naming Conventions: Improve your code with OOCSS, SMACSS,...
Tech Headline - CSS Naming Conventions: Improve your code with OOCSS, SMACSS,...
 
Sitting in the Driver's Seat
Sitting in the Driver's SeatSitting in the Driver's Seat
Sitting in the Driver's Seat
 

Mehr von Scott Vandehey

Mehr von Scott Vandehey (6)

Let's Talk About Scrum
Let's Talk About ScrumLet's Talk About Scrum
Let's Talk About Scrum
 
July 2015 Tempest Browser Stats
July 2015 Tempest Browser StatsJuly 2015 Tempest Browser Stats
July 2015 Tempest Browser Stats
 
Flexbox Will Shock You!
Flexbox Will Shock You!Flexbox Will Shock You!
Flexbox Will Shock You!
 
How to Use Sass to Make Your Site More Maintainable
How to Use Sass to Make Your Site More MaintainableHow to Use Sass to Make Your Site More Maintainable
How to Use Sass to Make Your Site More Maintainable
 
My Favorite Sass Mixins
My Favorite Sass MixinsMy Favorite Sass Mixins
My Favorite Sass Mixins
 
Tips for Front-End Teams without Tears, Heartache, or Fistfights
Tips for Front-End Teams without Tears, Heartache, or FistfightsTips for Front-End Teams without Tears, Heartache, or Fistfights
Tips for Front-End Teams without Tears, Heartache, or Fistfights
 

Kürzlich hochgeladen

Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
soniya singh
 
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
Call Girls In Delhi Whatsup 9873940964 Enjoy Unlimited Pleasure
 
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Kürzlich hochgeladen (20)

VVVIP Call Girls In Connaught Place ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Connaught Place ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...VVVIP Call Girls In Connaught Place ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Connaught Place ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
 
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
 
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
 
Al Barsha Night Partner +0567686026 Call Girls Dubai
Al Barsha Night Partner +0567686026 Call Girls  DubaiAl Barsha Night Partner +0567686026 Call Girls  Dubai
Al Barsha Night Partner +0567686026 Call Girls Dubai
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
 
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
 
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
 
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
 
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
 
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
 
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl ServiceRussian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
 
Call Now ☎ 8264348440 !! Call Girls in Rani Bagh Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Rani Bagh Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Rani Bagh Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Rani Bagh Escort Service Delhi N.C.R.
 
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort ServiceBusty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
 
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
 
Russian Call Girls in %(+971524965298 )# Call Girls in Dubai
Russian Call Girls in %(+971524965298  )#  Call Girls in DubaiRussian Call Girls in %(+971524965298  )#  Call Girls in Dubai
Russian Call Girls in %(+971524965298 )# Call Girls in Dubai
 
Trump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts SweatshirtTrump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts Sweatshirt
 
Russian Call Girls Pune (Adult Only) 8005736733 Escort Service 24x7 Cash Pay...
Russian Call Girls Pune  (Adult Only) 8005736733 Escort Service 24x7 Cash Pay...Russian Call Girls Pune  (Adult Only) 8005736733 Escort Service 24x7 Cash Pay...
Russian Call Girls Pune (Adult Only) 8005736733 Escort Service 24x7 Cash Pay...
 
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
 
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
 

What is Modular CSS?