SlideShare a Scribd company logo
1 of 135
Download to read offline
PATTERN
LIBRARIES
CSSPATTERN
LIBRARIES
Who
is this guy?
Began in the web in 1995

Full CSS sites in 2002
Skills: UX, front-end dev, training

Recently: CSS pattern libraries
I have helped develop HTML/
CSS pattern libraries for very
large sites (media and university
sites) and complex applications
(banking applications).
In some cases, there are literally
hundreds of CSS, SCSS or
LESS ļ¬les to review and
optimise as part of the process.
pages
Moving away from
A few years ago, many front end
developers approached
websites and web applications
as a series of ā€œpagesā€.
Pages were often designed and
built as complete entities. This
meant that page components
were often closely tied to their
relevant pages.
More recently, the focus has
shifted from full page layouts to
re-usable components.
A re-usable component could
be a layout grid structure, a
button, an input, a drop-down, a
menu, a heading, a table, or
even a pullquote.
pattern libraries
HTML/CSS
HTML/CSS pattern libraries are
used to resolve commonly used
interface components. These
components are created as
HTML and CSS code and
documented, so that they can
be easily re-used as needed.
The terms ā€œstyle guideā€ and
ā€œpattern libraryā€ are often used
interchangeably.
A style guide is a set of
standards for implementing the
overall design, and can include
corporate branding, color
schemes, layout and more.
Style guides are used to ensure
uniformity of the design or
ā€œbrandā€ across all aspects of
the website or application.
On the other hand, HTML/CSS
pattern libraries generally
document code components
for all aspects of the website or
application.
On larger web projects, style
guides and HTML/CSS pattern
libraries are generally separate
entities.
For smaller web projects, style
guides and pattern libraries are
often combined into one
overall entity.
cons?
Pros and
Why use a pattern library at all?

!
Easier to build sites

Easier to maintain sites

Easier to hand over

Better workļ¬‚ow

Shared vocabulary

Promotes consistency
What are the downsides?

!
Time-consuming to write

Often done post-project

Serve current need only
Pre-existing
pattern libraries
There are a wide range of 

pre-existing pattern libraries
available today.
Some of these pattern libraries
have a simple purpose - such as
responsive grid systems.
Grid-based CSS libraries
1140 CSS Grid
Mueller Grid System
Responsive Grid System

Responsive Grid System

Less Framework

960 Grid System

Susy
320 and up
http://cssgrid.net/

http://www.muellergridsystem.com/

http://www.responsivegridsystem.com/

http://responsive.gs/

http://lessframework.com/

http://960.gs/

http://susy.oddbird.net/

https://github.com/malarkey/320andup
Others are considered full
ā€œframeworksā€ that oļ¬€er a wide
range of components.
These can include:

!
Reset styles

Grid systems

Typography styles

Browser ļ¬xes

Common user-interface
component styles
Complex CSS libraries
Bootstrap

Foundation

Skeleton

YAML

Inuit

Kraken

GumbyFramework

http://twitter.github.com/bootstrap/

http://foundation.zurb.com/

http://www.getskeleton.com/

http://www.yaml.de/

https://github.com/csswizardry/inuit.css/

https://github.com/cferdinandi/kraken

http://gumbyframework.com/
There are some great beneļ¬ts to
using an existing framework:

!
ready-to-use solution

can pick & choose components

easy implementation

quick prototyping
great for teams
There may also be some
downsides:

!
may not suit your project

no need for a complex library

someone elseā€™s conventions
generic look
Bootstrap
Bootstrap vs. mid-range website
Bootstrap vs. University data site
Bootstrap vs. Banking application
Should you use a pre-existing
framework? It depends on the
needs of the site and your
team. There is no one answer.
Assuming you want to create
your own CSS pattern library,
how do you go about it?
abstraction
Understanding
Abstraction is essential to any
CSS pattern library.
The process involves:

!
looking for components that may
be repeated within the layout

deļ¬ning their characteristics
creating HTML/CSS patterns
for them
1.
!
2.
3.
An example:
coloured boxes
These boxes look like they have
similar characteristics. If they
were resolved into a pattern,
this would make our HTML and
CSS more eļ¬ƒcient.
What are the key things to keep
in mind when creating any
pattern?
Avoid using IDs
All patterns needs to be class-
based so they can appear as
many times as needed within an
HTML document.
/* avoid */!
#signup-box { }!
Avoid naming
based on content
We should avoid naming
patterns based on the content,
as we want to reuse these
patterns often within the layout.
/* avoid */!
.signup { }!
.member { }!
.member-news { }!
.wiki { }!
.support { }!
.database { }!
!
/* preferred */!
.box { }
Avoid location-
based styles
All patterns should work
regardless of where theyā€™re
placed within the layout.
/* avoid */!
.sidebar .box { }!
.main .box { }!
!
/* preferred */!
.box { }
Avoid widths
Ideally, patterns should avoid
deļ¬ning widths. Patterns should
be allowed to spread to the
width of any parent container.
/* avoid */!
.box-wide { width: 500px; }!
.box-medium { width: 240px; }!
.box-small { width: 120px; }!
!
/* preferred */!
.box { /* no width defined */ }
Keep patterns as
simple as possible
Patterns should be deļ¬ned as
simply as possible. Otherwise
they can become restrictive.
.box!
{!
! border-bottom: 5px solid #C8C8C8;!
! background-color: #e6e6e6;!
! /* may not be suitable */!
! margin-bottom: 1em;!
}
Donā€™t undo
Patterns should not be written
to undo other rules. For
example, the <h3> element:
We could be tempted to style
the <h3> element with a
coloured background - as it
looks like this is the ā€œdefaultā€
appearance for all <h3>
elements.
/* default style */!
h3!
{!
! padding: 1em;!
! color: white;!
! background-color: red;!
}
But what happens if we needed
to use an <h3> element later,
and it doesnā€™t have a
background-color? We might
have to write a rule to undo our
previous one.
/* default style */!
h3!
{!
! padding: 1em;!
! color: white;!
! background-color: red;!
}!
!
/* undoing default style */!
.no-background !
{!
! padding: 0;!
! color: #000;!
! background-color: none;!
}!
It is best to avoid over-styling
elements or patterns so that
they do not have to be undone
later.
/* default style */!
h3!
{!
}!
!
/* only when background needed */!
.class-name!
{!
! padding: 1em;!
! color: white;!
! background-color: red;!
}!
Avoid dependency
on HTML structure
Patterns should not rely on the
HTML structure. What happens
if the structure changes in some
instances - like a diļ¬€erent
heading level being used?
<div class="box">!
! <h3></h3>!
<div>!
!
<div class="box">!
! <h4></h4>!
<div>!
!
!
/* avoid if possible */!
.box h3, .box h4!
{!
! padding: 10px; !
! background-color: orange; !
}!
!
It is always better to create a
class-based pattern for any
speciļ¬c styling needs.
<div class="box">!
! <h3 class="box-heading"></h3>!
<div>!
!
<div class="box">!
! <h4 class="box-heading"></h4>!
<div>!
!
!
/* preferred */!
.box-heading!
{!
! padding: 10px; !
! background-color: orange; !
}!
Modules,
modifiers & descendants
How can we let developers
know that our new class called
ā€œbox-headingā€ relates to the
ā€œboxā€ class?
<div class="box">!
! <h3 class="box-heading"></h3>!
<div>!
We could use a naming
convention that was originally
deļ¬ned as part of BEM:

!
http://bem.info/
And then extended by Nicolas
Gallagher:

!
http://nicolasgallagher.com/about-html-semantics-
front-end-architecture/
And then modiļ¬ed slightly
again by Harry Roberts:

!
http://csswizardry.com/2013/01/mindbemding-
getting-your-head-round-bem-syntax/
This naming convention is based
on the idea that page layouts
can be broken down into a
series of re-usable ā€œmodulesā€.
If a module needs to be modiļ¬ed
or extended, a ā€œmodule
modiļ¬erā€ would be used.
If a module has child elements
that need to be styled, a
ā€œmodule descendantā€ could be
used.
These diļ¬€erent types of class
names need to be relatable and
recognisable.
/* Module */!
.module-name {}!
!
/* Module modifier*/!
.module-name--modifier-name {}!
!
/* Module descendant*/!
.module-name__descendant-name {}!
!
/* Module descendant modifier*/!
.module-name__descendant--modifier {}!
<!-- Module -->!
<div class="box"></div>!
!
<!-- Module modifier -->!
<div class="box box--alt"></div>!
!
<!-- Module descendant -->!
<div class="box">!
! <h3 class="box__heading"></h3>!
</div>!
!
<!-- Module descendant modifier -->!
<div class="box">!
! <h3 class="box__content
box__content--alt"></h3>!
</div>!
Module
descendants
With this naming convention, we
can now add two ā€œmodule
descendantsā€ to our HTML
markup:
<!-- Module -->!
<div class="box">!
!
! <!-- Module descendant -->!
! <h3 class="box__heading"></h3>!
!
! <!-- Module descendant -->!
! <div class="box__content"></div>!
</div>!
.box!
{!
! margin-bottom: 1em;!
! border-bottom: 5px solid #C8C8C8;!
! background-color: #e6e6e6;!
}!
!
.box__heading!
{!
! margin: 0;!
! padding: 10px 15px;!
! text-transform: uppercase;!
}!
!
.box__content { margin: 15px; }!
Module modifiers
But what about the boxes that
are very similar, but have some
unique characteristics - like the
decorative cog image?
If we needed to modify or extend
the original module, we would
create a modiļ¬er class name.
<!-- Module modifier -->!
<div class="box box--alt">!
! <h3 class="box__heading"></h3>!
! <div class="box__content"></div>!
</div>!
However, in this case, we need
to modify the ā€œbox__contentā€
class. We need to create a
ā€œmodule descendant
modiļ¬erā€.
<!-- Module modifier -->!
<div class="box">!
! <h3 class="box__heading"></h3>!
! <div class="box__content box__content
ā€”cog"></div>!
</div>!
.box__content--cog!
{!
! padding-right: 100px;!
! background-image: url(cog.png);!
! background-repeat: no-repeat;!
! background-position: 100% 0;!
}!
Helper
classes
In one of the boxes, there is a
piece of text that is aligned to
the right. How do we solve this?
We could make it another
module descendant - and
apply this to the link.
.box__link {}!
!
!
!
<div class="box">!
! <h3 class="box__heading"></h3>!
! <div class="box__content">!
! ! <p class="box__link"></p>!
! </div>!
</div>!
!
Or we could use a diļ¬€erent type
of class, called a ā€œhelperā€ or
ā€œutilityā€ class.
Nicolas Gallagherā€™s SUIT CSS
includes a set of classes called
ā€œutilitiesā€.

!
https://github.com/suitcss/suit
/* Utility classes */!
.u-utilityName {}!
!
!
<!-- example markup --> !
<article class="Tweet">!
! <a class="u-floatRight"></a>!
! <div class="u-sizeFill">!
! ! <a class="u-linkComplex"></a>!
! </div>!
</article>!
Bootstrap also uses these types
of classes, but calls them
ā€œhelperā€ classes.

!
http://getbootstrap.com/css/#helper-classes
/* Utility classes */!
.text-muted { color: #777; } !
.text-primary { color: #428bca; }!
.text-success { color: #3c763d; }!
!
!
<!-- example markup --> !
<p class="text-muted">...</p>!
<p class="text-primary">...</p>!
<p class="text-success">...</p>
These types of classes are
designed to be added to
elements where needed,
without having to resort to
styling elements individually.
/* Helper classes */!
.h-text-right { text-align: right; }!
!
!
!
!
<!-- example markup --> !
<p class="h-text-right">!
! <a href="#">More</a>!
</p>!
For front-end developers who
grew up in the ā€œkeep your
markup cleanā€ era, these
classes could be considered
the work of Satan.
Iā€™ve found them to be invaluable
- when you need to add a single
function to an element without
having to create a speciļ¬c class.
Theme classes
In 2011, Jonathan Snook
introduced SMACSS. One of the
key principles is to categorise
CSS rules into ļ¬ve diļ¬€erent
categories.

!
https://smacss.com/
Base - HTML elements

Layout - grids

Module - reusable components

State - states of modules etc

Theme - theming modules etc
These categories are a great way
to break up huge chunks of
CSS rules into manageable
sections.
We could use one of these
categories - theme styles - to
deļ¬ne the background-colors
on our headings.
<h3 class="box__heading bgcolor-red"></h3>!
<h3 class="box__heading bgcolor-blue"></h3>!
<h3 class="box__heading bgcolor-orange"></h3>!
<h4 class="box__heading bgcolor-grey"></h4>!
.bgcolor-red, .bgcolor-blue, .bgcolor-
orange, .bgcolor-grey { color: #fff; }!
!
.bgcolor-red !
{ background-color: #B21F24; }!
!
.bgcolor-blue !
{ background-color: #1D5980; }!
!
.bgcolor-orange !
{ background-color: #C56F00; }!
!
.bgcolor-grey !
{ background-color: #444445; }
Tips
Pattern library
Here are some tips on the
overall approach to CSS pattern
libraries.
Smallest to largest
In mid 2013, Brad Frost
introduced Atomic Design - a
methodology for creating design
systems with ļ¬ve distinct levels
in atomic design.

!
http://bradfrostweb.com/blog/post/atomic-web-
design/
Atoms - HTML elements

Molecules - groups of atoms

Organisms - groups of molecules

Templates - groups of organisms

Pages - instances of templates
Atomic design deļ¬nes the
process as starting from
smallest components and
building to largest.
Ideally, large components should
not need to be deļ¬ned in a
pattern library as they should
be build up, like lego, from
smaller components.
Class names
Establish a class naming
convention as early as possible
in the process. Then document
this convention and enforce it!
Intuitive class
names
Make sure any class naming
convention is easy for others to
follow. I have worked on
projects where teams are
constantly changing, so quick
take-up is critical.
Keep it simple
Iā€™ve worked on projects where
the LESS architecture needs to
be mapped out in spreadsheets
in order for teams to understand.
In almost all cases, this was
unnecessary. Keep it as simple
as possible.
Final
thoughts?
Bottom line:
HTML/CSS pattern libraries are
an important tool for anyone
doing CSS today no matter how
large or small your website. Get
out there and get busy!
Russ Weakley

Max Design

!
Site: maxdesign.com.au

Twitter: twitter.com/russmaxdesign

Slideshare: slideshare.net/maxdesign

Linkedin: linkedin.com/in/russweakley

More Related Content

What's hot

AWS ķ“ė¼ģš°ė“œ źø°ė°˜ ķ™•ģž„ģ„± ė†’ģ€ ģ²œė§Œ ģ‚¬ģš©ģž ģ›¹ ģ„œė¹„ģŠ¤ ė§Œė“¤źø° - ģœ¤ģ„ģ°¬
AWS ķ“ė¼ģš°ė“œ źø°ė°˜ ķ™•ģž„ģ„± ė†’ģ€ ģ²œė§Œ ģ‚¬ģš©ģž ģ›¹ ģ„œė¹„ģŠ¤ ė§Œė“¤źø° - ģœ¤ģ„ģ°¬AWS ķ“ė¼ģš°ė“œ źø°ė°˜ ķ™•ģž„ģ„± ė†’ģ€ ģ²œė§Œ ģ‚¬ģš©ģž ģ›¹ ģ„œė¹„ģŠ¤ ė§Œė“¤źø° - ģœ¤ģ„ģ°¬
AWS ķ“ė¼ģš°ė“œ źø°ė°˜ ķ™•ģž„ģ„± ė†’ģ€ ģ²œė§Œ ģ‚¬ģš©ģž ģ›¹ ģ„œė¹„ģŠ¤ ė§Œė“¤źø° - ģœ¤ģ„ģ°¬Amazon Web Services Korea
Ā 
AEM & Single Page Applications (SPAs) 101
AEM & Single Page Applications (SPAs) 101AEM & Single Page Applications (SPAs) 101
AEM & Single Page Applications (SPAs) 101Adobe
Ā 
Angular Introduction By Surekha Gadkari
Angular Introduction By Surekha GadkariAngular Introduction By Surekha Gadkari
Angular Introduction By Surekha GadkariSurekha Gadkari
Ā 
Configuration Management in the Cloud - AWS Online Tech Talks
Configuration Management in the Cloud - AWS Online Tech TalksConfiguration Management in the Cloud - AWS Online Tech Talks
Configuration Management in the Cloud - AWS Online Tech TalksAmazon Web Services
Ā 
[Games on AWS 2019] AWS ģž…ė¬øģžė„¼ ģœ„ķ•œ ģ“ˆė‹Øźø° ė ˆė²Øģ—… ķŠøėž™ | AWS ė ˆė²Øģ—… ķ•˜źø°! : ė„¤ķŠøģ›Œķ¬ - ź¶Œģ‹ ģ¤‘ AWS ģ†”ė£Øģ…˜...
[Games on AWS 2019] AWS ģž…ė¬øģžė„¼ ģœ„ķ•œ ģ“ˆė‹Øźø° ė ˆė²Øģ—… ķŠøėž™ | AWS ė ˆė²Øģ—… ķ•˜źø°! : ė„¤ķŠøģ›Œķ¬ - ź¶Œģ‹ ģ¤‘ AWS ģ†”ė£Øģ…˜...[Games on AWS 2019] AWS ģž…ė¬øģžė„¼ ģœ„ķ•œ ģ“ˆė‹Øźø° ė ˆė²Øģ—… ķŠøėž™ | AWS ė ˆė²Øģ—… ķ•˜źø°! : ė„¤ķŠøģ›Œķ¬ - ź¶Œģ‹ ģ¤‘ AWS ģ†”ė£Øģ…˜...
[Games on AWS 2019] AWS ģž…ė¬øģžė„¼ ģœ„ķ•œ ģ“ˆė‹Øźø° ė ˆė²Øģ—… ķŠøėž™ | AWS ė ˆė²Øģ—… ķ•˜źø°! : ė„¤ķŠøģ›Œķ¬ - ź¶Œģ‹ ģ¤‘ AWS ģ†”ė£Øģ…˜...Amazon Web Services Korea
Ā 
ģžˆėŠ” ź·øėŒ€ė”œ ģ €ģž„ķ•˜ź³ , ė°”ė”œ ė¶„ģ„ ź°€ėŠ„ķ•œ, ģƒˆė”œģš“ ź“€ģ ģ˜ ė°ģ“ķ„° ģ• ė„ė¦¬ķ‹± ķ”Œėž«ķ¼ - ģ •ģ„øģ›… ģ• ė„ė¦¬ķ‹± ģŠ¤ķŽ˜ģ…œė¦¬ģŠ¤ķŠø, AWS
ģžˆėŠ” ź·øėŒ€ė”œ ģ €ģž„ķ•˜ź³ , ė°”ė”œ ė¶„ģ„ ź°€ėŠ„ķ•œ, ģƒˆė”œģš“ ź“€ģ ģ˜ ė°ģ“ķ„° ģ• ė„ė¦¬ķ‹± ķ”Œėž«ķ¼ - ģ •ģ„øģ›… ģ• ė„ė¦¬ķ‹± ģŠ¤ķŽ˜ģ…œė¦¬ģŠ¤ķŠø, AWSģžˆėŠ” ź·øėŒ€ė”œ ģ €ģž„ķ•˜ź³ , ė°”ė”œ ė¶„ģ„ ź°€ėŠ„ķ•œ, ģƒˆė”œģš“ ź“€ģ ģ˜ ė°ģ“ķ„° ģ• ė„ė¦¬ķ‹± ķ”Œėž«ķ¼ - ģ •ģ„øģ›… ģ• ė„ė¦¬ķ‹± ģŠ¤ķŽ˜ģ…œė¦¬ģŠ¤ķŠø, AWS
ģžˆėŠ” ź·øėŒ€ė”œ ģ €ģž„ķ•˜ź³ , ė°”ė”œ ė¶„ģ„ ź°€ėŠ„ķ•œ, ģƒˆė”œģš“ ź“€ģ ģ˜ ė°ģ“ķ„° ģ• ė„ė¦¬ķ‹± ķ”Œėž«ķ¼ - ģ •ģ„øģ›… ģ• ė„ė¦¬ķ‹± ģŠ¤ķŽ˜ģ…œė¦¬ģŠ¤ķŠø, AWSAmazon Web Services Korea
Ā 
camunda for developer-friendly BPM
camunda for developer-friendly BPMcamunda for developer-friendly BPM
camunda for developer-friendly BPMcamunda services GmbH
Ā 
Firebase Auth Tutorial
Firebase Auth TutorialFirebase Auth Tutorial
Firebase Auth TutorialBukhori Aqid
Ā 
Infrastructure is code with the AWS CDK - MAD312 - New York AWS Summit
Infrastructure is code with the AWS CDK - MAD312 - New York AWS SummitInfrastructure is code with the AWS CDK - MAD312 - New York AWS Summit
Infrastructure is code with the AWS CDK - MAD312 - New York AWS SummitAmazon Web Services
Ā 
Amazon Rekognitionģ„ ķ†µķ•œ ģ“ėÆøģ§€ ģøģ‹ ģ„œė¹„ģŠ¤ źµ¬ģ¶•ķ•˜źø°
Amazon Rekognitionģ„ ķ†µķ•œ ģ“ėÆøģ§€ ģøģ‹ ģ„œė¹„ģŠ¤ źµ¬ģ¶•ķ•˜źø°Amazon Rekognitionģ„ ķ†µķ•œ ģ“ėÆøģ§€ ģøģ‹ ģ„œė¹„ģŠ¤ źµ¬ģ¶•ķ•˜źø°
Amazon Rekognitionģ„ ķ†µķ•œ ģ“ėÆøģ§€ ģøģ‹ ģ„œė¹„ģŠ¤ źµ¬ģ¶•ķ•˜źø°Amazon Web Services Korea
Ā 
Boost your AWS Infrastructure with CDK
Boost your AWS Infrastructure with CDKBoost your AWS Infrastructure with CDK
Boost your AWS Infrastructure with CDKphilippgarbe
Ā 
Programming Infrastructure with AWS CDK
Programming Infrastructure with AWS CDKProgramming Infrastructure with AWS CDK
Programming Infrastructure with AWS CDKDonnie Prakoso
Ā 
Kubernetes/ EKS - ź¹€ź“‘ģ˜ (AWS ģ†”ė£Øģ…˜ģ¦ˆ ģ•„ķ‚¤ķ…ķŠø)
Kubernetes/ EKS - ź¹€ź“‘ģ˜ (AWS ģ†”ė£Øģ…˜ģ¦ˆ ģ•„ķ‚¤ķ…ķŠø)Kubernetes/ EKS - ź¹€ź“‘ģ˜ (AWS ģ†”ė£Øģ…˜ģ¦ˆ ģ•„ķ‚¤ķ…ķŠø)
Kubernetes/ EKS - ź¹€ź“‘ģ˜ (AWS ģ†”ė£Øģ…˜ģ¦ˆ ģ•„ķ‚¤ķ…ķŠø)Amazon Web Services Korea
Ā 
AWS CDK: Your Infrastructure is Code!
AWS CDK: Your Infrastructure is Code!AWS CDK: Your Infrastructure is Code!
AWS CDK: Your Infrastructure is Code!Wojciech Gawroński
Ā 
Microservices on AWS: Architectural Patterns and Best Practices | AWS Summit ...
Microservices on AWS: Architectural Patterns and Best Practices | AWS Summit ...Microservices on AWS: Architectural Patterns and Best Practices | AWS Summit ...
Microservices on AWS: Architectural Patterns and Best Practices | AWS Summit ...Amazon Web Services
Ā 
introduction to Vue.js 3
introduction to Vue.js 3 introduction to Vue.js 3
introduction to Vue.js 3 ArezooKmn
Ā 
Running Microservices on Amazon ECS - AWS April 2016 Webinar Series
Running Microservices on Amazon ECS - AWS April 2016 Webinar SeriesRunning Microservices on Amazon ECS - AWS April 2016 Webinar Series
Running Microservices on Amazon ECS - AWS April 2016 Webinar SeriesAmazon Web Services
Ā 
Kubernetes day 2 Operations
Kubernetes day 2 OperationsKubernetes day 2 Operations
Kubernetes day 2 OperationsPaul Czarkowski
Ā 

What's hot (20)

AWS ķ“ė¼ģš°ė“œ źø°ė°˜ ķ™•ģž„ģ„± ė†’ģ€ ģ²œė§Œ ģ‚¬ģš©ģž ģ›¹ ģ„œė¹„ģŠ¤ ė§Œė“¤źø° - ģœ¤ģ„ģ°¬
AWS ķ“ė¼ģš°ė“œ źø°ė°˜ ķ™•ģž„ģ„± ė†’ģ€ ģ²œė§Œ ģ‚¬ģš©ģž ģ›¹ ģ„œė¹„ģŠ¤ ė§Œė“¤źø° - ģœ¤ģ„ģ°¬AWS ķ“ė¼ģš°ė“œ źø°ė°˜ ķ™•ģž„ģ„± ė†’ģ€ ģ²œė§Œ ģ‚¬ģš©ģž ģ›¹ ģ„œė¹„ģŠ¤ ė§Œė“¤źø° - ģœ¤ģ„ģ°¬
AWS ķ“ė¼ģš°ė“œ źø°ė°˜ ķ™•ģž„ģ„± ė†’ģ€ ģ²œė§Œ ģ‚¬ģš©ģž ģ›¹ ģ„œė¹„ģŠ¤ ė§Œė“¤źø° - ģœ¤ģ„ģ°¬
Ā 
AEM & Single Page Applications (SPAs) 101
AEM & Single Page Applications (SPAs) 101AEM & Single Page Applications (SPAs) 101
AEM & Single Page Applications (SPAs) 101
Ā 
Angular Introduction By Surekha Gadkari
Angular Introduction By Surekha GadkariAngular Introduction By Surekha Gadkari
Angular Introduction By Surekha Gadkari
Ā 
Configuration Management in the Cloud - AWS Online Tech Talks
Configuration Management in the Cloud - AWS Online Tech TalksConfiguration Management in the Cloud - AWS Online Tech Talks
Configuration Management in the Cloud - AWS Online Tech Talks
Ā 
[Games on AWS 2019] AWS ģž…ė¬øģžė„¼ ģœ„ķ•œ ģ“ˆė‹Øźø° ė ˆė²Øģ—… ķŠøėž™ | AWS ė ˆė²Øģ—… ķ•˜źø°! : ė„¤ķŠøģ›Œķ¬ - ź¶Œģ‹ ģ¤‘ AWS ģ†”ė£Øģ…˜...
[Games on AWS 2019] AWS ģž…ė¬øģžė„¼ ģœ„ķ•œ ģ“ˆė‹Øźø° ė ˆė²Øģ—… ķŠøėž™ | AWS ė ˆė²Øģ—… ķ•˜źø°! : ė„¤ķŠøģ›Œķ¬ - ź¶Œģ‹ ģ¤‘ AWS ģ†”ė£Øģ…˜...[Games on AWS 2019] AWS ģž…ė¬øģžė„¼ ģœ„ķ•œ ģ“ˆė‹Øźø° ė ˆė²Øģ—… ķŠøėž™ | AWS ė ˆė²Øģ—… ķ•˜źø°! : ė„¤ķŠøģ›Œķ¬ - ź¶Œģ‹ ģ¤‘ AWS ģ†”ė£Øģ…˜...
[Games on AWS 2019] AWS ģž…ė¬øģžė„¼ ģœ„ķ•œ ģ“ˆė‹Øźø° ė ˆė²Øģ—… ķŠøėž™ | AWS ė ˆė²Øģ—… ķ•˜źø°! : ė„¤ķŠøģ›Œķ¬ - ź¶Œģ‹ ģ¤‘ AWS ģ†”ė£Øģ…˜...
Ā 
Tomcat
TomcatTomcat
Tomcat
Ā 
Angular js
Angular jsAngular js
Angular js
Ā 
ģžˆėŠ” ź·øėŒ€ė”œ ģ €ģž„ķ•˜ź³ , ė°”ė”œ ė¶„ģ„ ź°€ėŠ„ķ•œ, ģƒˆė”œģš“ ź“€ģ ģ˜ ė°ģ“ķ„° ģ• ė„ė¦¬ķ‹± ķ”Œėž«ķ¼ - ģ •ģ„øģ›… ģ• ė„ė¦¬ķ‹± ģŠ¤ķŽ˜ģ…œė¦¬ģŠ¤ķŠø, AWS
ģžˆėŠ” ź·øėŒ€ė”œ ģ €ģž„ķ•˜ź³ , ė°”ė”œ ė¶„ģ„ ź°€ėŠ„ķ•œ, ģƒˆė”œģš“ ź“€ģ ģ˜ ė°ģ“ķ„° ģ• ė„ė¦¬ķ‹± ķ”Œėž«ķ¼ - ģ •ģ„øģ›… ģ• ė„ė¦¬ķ‹± ģŠ¤ķŽ˜ģ…œė¦¬ģŠ¤ķŠø, AWSģžˆėŠ” ź·øėŒ€ė”œ ģ €ģž„ķ•˜ź³ , ė°”ė”œ ė¶„ģ„ ź°€ėŠ„ķ•œ, ģƒˆė”œģš“ ź“€ģ ģ˜ ė°ģ“ķ„° ģ• ė„ė¦¬ķ‹± ķ”Œėž«ķ¼ - ģ •ģ„øģ›… ģ• ė„ė¦¬ķ‹± ģŠ¤ķŽ˜ģ…œė¦¬ģŠ¤ķŠø, AWS
ģžˆėŠ” ź·øėŒ€ė”œ ģ €ģž„ķ•˜ź³ , ė°”ė”œ ė¶„ģ„ ź°€ėŠ„ķ•œ, ģƒˆė”œģš“ ź“€ģ ģ˜ ė°ģ“ķ„° ģ• ė„ė¦¬ķ‹± ķ”Œėž«ķ¼ - ģ •ģ„øģ›… ģ• ė„ė¦¬ķ‹± ģŠ¤ķŽ˜ģ…œė¦¬ģŠ¤ķŠø, AWS
Ā 
camunda for developer-friendly BPM
camunda for developer-friendly BPMcamunda for developer-friendly BPM
camunda for developer-friendly BPM
Ā 
Firebase Auth Tutorial
Firebase Auth TutorialFirebase Auth Tutorial
Firebase Auth Tutorial
Ā 
Infrastructure is code with the AWS CDK - MAD312 - New York AWS Summit
Infrastructure is code with the AWS CDK - MAD312 - New York AWS SummitInfrastructure is code with the AWS CDK - MAD312 - New York AWS Summit
Infrastructure is code with the AWS CDK - MAD312 - New York AWS Summit
Ā 
Amazon Rekognitionģ„ ķ†µķ•œ ģ“ėÆøģ§€ ģøģ‹ ģ„œė¹„ģŠ¤ źµ¬ģ¶•ķ•˜źø°
Amazon Rekognitionģ„ ķ†µķ•œ ģ“ėÆøģ§€ ģøģ‹ ģ„œė¹„ģŠ¤ źµ¬ģ¶•ķ•˜źø°Amazon Rekognitionģ„ ķ†µķ•œ ģ“ėÆøģ§€ ģøģ‹ ģ„œė¹„ģŠ¤ źµ¬ģ¶•ķ•˜źø°
Amazon Rekognitionģ„ ķ†µķ•œ ģ“ėÆøģ§€ ģøģ‹ ģ„œė¹„ģŠ¤ źµ¬ģ¶•ķ•˜źø°
Ā 
Boost your AWS Infrastructure with CDK
Boost your AWS Infrastructure with CDKBoost your AWS Infrastructure with CDK
Boost your AWS Infrastructure with CDK
Ā 
Programming Infrastructure with AWS CDK
Programming Infrastructure with AWS CDKProgramming Infrastructure with AWS CDK
Programming Infrastructure with AWS CDK
Ā 
Kubernetes/ EKS - ź¹€ź“‘ģ˜ (AWS ģ†”ė£Øģ…˜ģ¦ˆ ģ•„ķ‚¤ķ…ķŠø)
Kubernetes/ EKS - ź¹€ź“‘ģ˜ (AWS ģ†”ė£Øģ…˜ģ¦ˆ ģ•„ķ‚¤ķ…ķŠø)Kubernetes/ EKS - ź¹€ź“‘ģ˜ (AWS ģ†”ė£Øģ…˜ģ¦ˆ ģ•„ķ‚¤ķ…ķŠø)
Kubernetes/ EKS - ź¹€ź“‘ģ˜ (AWS ģ†”ė£Øģ…˜ģ¦ˆ ģ•„ķ‚¤ķ…ķŠø)
Ā 
AWS CDK: Your Infrastructure is Code!
AWS CDK: Your Infrastructure is Code!AWS CDK: Your Infrastructure is Code!
AWS CDK: Your Infrastructure is Code!
Ā 
Microservices on AWS: Architectural Patterns and Best Practices | AWS Summit ...
Microservices on AWS: Architectural Patterns and Best Practices | AWS Summit ...Microservices on AWS: Architectural Patterns and Best Practices | AWS Summit ...
Microservices on AWS: Architectural Patterns and Best Practices | AWS Summit ...
Ā 
introduction to Vue.js 3
introduction to Vue.js 3 introduction to Vue.js 3
introduction to Vue.js 3
Ā 
Running Microservices on Amazon ECS - AWS April 2016 Webinar Series
Running Microservices on Amazon ECS - AWS April 2016 Webinar SeriesRunning Microservices on Amazon ECS - AWS April 2016 Webinar Series
Running Microservices on Amazon ECS - AWS April 2016 Webinar Series
Ā 
Kubernetes day 2 Operations
Kubernetes day 2 OperationsKubernetes day 2 Operations
Kubernetes day 2 Operations
Ā 

Similar to CSS pattern libraries

Structuring your CSS for maintainability: rules and guile lines to write CSS
Structuring your CSS for maintainability: rules and guile lines to write CSSStructuring your CSS for maintainability: rules and guile lines to write CSS
Structuring your CSS for maintainability: rules and guile lines to write CSSSanjoy Kr. Paul
Ā 
SCSS Implementation
SCSS ImplementationSCSS Implementation
SCSS ImplementationAmey Parab
Ā 
CSS Frameworks
CSS FrameworksCSS Frameworks
CSS FrameworksMike Crabb
Ā 
Sass:-Syntactically Awesome Stylesheet by Shafeeq
Sass:-Syntactically Awesome Stylesheet by ShafeeqSass:-Syntactically Awesome Stylesheet by Shafeeq
Sass:-Syntactically Awesome Stylesheet by ShafeeqDignitasDigital1
Ā 
Joes sass presentation
Joes sass presentationJoes sass presentation
Joes sass presentationJoeSeckelman
Ā 
CSS: a rapidly changing world
CSS: a rapidly changing worldCSS: a rapidly changing world
CSS: a rapidly changing worldRuss Weakley
Ā 
BDUG Responsive Web Theming - 7/23/12
BDUG Responsive Web Theming - 7/23/12BDUG Responsive Web Theming - 7/23/12
BDUG Responsive Web Theming - 7/23/12ucbdrupal
Ā 
CSS Best practice
CSS Best practiceCSS Best practice
CSS Best practiceRuss Weakley
Ā 
Cascading style sheets (CSS)
Cascading style sheets (CSS)Cascading style sheets (CSS)
Cascading style sheets (CSS)Harshita Yadav
Ā 
Css Best Practices
Css Best PracticesCss Best Practices
Css Best Practicesguest3ebcca
Ā 
Css Best Practices
Css Best PracticesCss Best Practices
Css Best Practicessachin9737
Ā 
The New UI - Staying Strong with Flexbox, SASS, and {{Mustache.js}}
The New UI - Staying Strong with Flexbox, SASS, and {{Mustache.js}}The New UI - Staying Strong with Flexbox, SASS, and {{Mustache.js}}
The New UI - Staying Strong with Flexbox, SASS, and {{Mustache.js}}Eric Carlisle
Ā 
The New CSS Layout - Dutch PHP Conference
The New CSS Layout - Dutch PHP ConferenceThe New CSS Layout - Dutch PHP Conference
The New CSS Layout - Dutch PHP ConferenceRachel Andrew
Ā 
Old Dog, New Tricks
Old Dog, New TricksOld Dog, New Tricks
Old Dog, New TricksSimon Collison
Ā 
Introduction to css
Introduction to cssIntroduction to css
Introduction to cssnikhilsh66131
Ā 
Advance Css 1194323118268797 5
Advance Css 1194323118268797 5Advance Css 1194323118268797 5
Advance Css 1194323118268797 5dharshyamal
Ā 

Similar to CSS pattern libraries (20)

Structuring your CSS for maintainability: rules and guile lines to write CSS
Structuring your CSS for maintainability: rules and guile lines to write CSSStructuring your CSS for maintainability: rules and guile lines to write CSS
Structuring your CSS for maintainability: rules and guile lines to write CSS
Ā 
SCSS Implementation
SCSS ImplementationSCSS Implementation
SCSS Implementation
Ā 
CSS Frameworks
CSS FrameworksCSS Frameworks
CSS Frameworks
Ā 
Sass:-Syntactically Awesome Stylesheet by Shafeeq
Sass:-Syntactically Awesome Stylesheet by ShafeeqSass:-Syntactically Awesome Stylesheet by Shafeeq
Sass:-Syntactically Awesome Stylesheet by Shafeeq
Ā 
Joes sass presentation
Joes sass presentationJoes sass presentation
Joes sass presentation
Ā 
CSS: a rapidly changing world
CSS: a rapidly changing worldCSS: a rapidly changing world
CSS: a rapidly changing world
Ā 
BDUG Responsive Web Theming - 7/23/12
BDUG Responsive Web Theming - 7/23/12BDUG Responsive Web Theming - 7/23/12
BDUG Responsive Web Theming - 7/23/12
Ā 
CSS3
CSS3CSS3
CSS3
Ā 
Pfnp slides
Pfnp slidesPfnp slides
Pfnp slides
Ā 
CSS Best practice
CSS Best practiceCSS Best practice
CSS Best practice
Ā 
Cascading style sheets (CSS)
Cascading style sheets (CSS)Cascading style sheets (CSS)
Cascading style sheets (CSS)
Ā 
SCSS Styleguide
SCSS StyleguideSCSS Styleguide
SCSS Styleguide
Ā 
Css Best Practices
Css Best PracticesCss Best Practices
Css Best Practices
Ā 
Css Best Practices
Css Best PracticesCss Best Practices
Css Best Practices
Ā 
LESS is More
LESS is MoreLESS is More
LESS is More
Ā 
The New UI - Staying Strong with Flexbox, SASS, and {{Mustache.js}}
The New UI - Staying Strong with Flexbox, SASS, and {{Mustache.js}}The New UI - Staying Strong with Flexbox, SASS, and {{Mustache.js}}
The New UI - Staying Strong with Flexbox, SASS, and {{Mustache.js}}
Ā 
The New CSS Layout - Dutch PHP Conference
The New CSS Layout - Dutch PHP ConferenceThe New CSS Layout - Dutch PHP Conference
The New CSS Layout - Dutch PHP Conference
Ā 
Old Dog, New Tricks
Old Dog, New TricksOld Dog, New Tricks
Old Dog, New Tricks
Ā 
Introduction to css
Introduction to cssIntroduction to css
Introduction to css
Ā 
Advance Css 1194323118268797 5
Advance Css 1194323118268797 5Advance Css 1194323118268797 5
Advance Css 1194323118268797 5
Ā 

More from Russ Weakley

Accessible chat windows
Accessible chat windowsAccessible chat windows
Accessible chat windowsRuss Weakley
Ā 
Accessible names & descriptions
Accessible names & descriptionsAccessible names & descriptions
Accessible names & descriptionsRuss Weakley
Ā 
A deep dive into accessible names
A deep dive into accessible namesA deep dive into accessible names
A deep dive into accessible namesRuss Weakley
Ā 
What are accessible names and why should you care?
What are accessible names and why should you care?What are accessible names and why should you care?
What are accessible names and why should you care?Russ Weakley
Ā 
How to build accessible UI components
How to build accessible UI componentsHow to build accessible UI components
How to build accessible UI componentsRuss Weakley
Ā 
What is WCAG 2 and why should we care?
What is WCAG 2 and why should we care?What is WCAG 2 and why should we care?
What is WCAG 2 and why should we care?Russ Weakley
Ā 
Accessible states in Design Systems
Accessible states in Design SystemsAccessible states in Design Systems
Accessible states in Design SystemsRuss Weakley
Ā 
Creating accessible modals and autocompletes
Creating accessible modals and autocompletesCreating accessible modals and autocompletes
Creating accessible modals and autocompletesRuss Weakley
Ā 
Building an accessible progressive loader
Building an accessible progressive loaderBuilding an accessible progressive loader
Building an accessible progressive loaderRuss Weakley
Ā 
Accessibility in Design systems - the pain and glory
Accessibility in Design systems - the pain and gloryAccessibility in Design systems - the pain and glory
Accessibility in Design systems - the pain and gloryRuss Weakley
Ā 
Accessible Inline errors messages
Accessible Inline errors messagesAccessible Inline errors messages
Accessible Inline errors messagesRuss Weakley
Ā 
Accessible Form Hints and Errors
Accessible Form Hints and ErrorsAccessible Form Hints and Errors
Accessible Form Hints and ErrorsRuss Weakley
Ā 
What is accessibility?
What is accessibility?What is accessibility?
What is accessibility?Russ Weakley
Ā 
Accessibility in Pattern Libraries
Accessibility in Pattern LibrariesAccessibility in Pattern Libraries
Accessibility in Pattern LibrariesRuss Weakley
Ā 
Accessibility in pattern libraries
Accessibility in pattern librariesAccessibility in pattern libraries
Accessibility in pattern librariesRuss Weakley
Ā 
Building an accessible auto-complete - #ID24
Building an accessible auto-complete - #ID24Building an accessible auto-complete - #ID24
Building an accessible auto-complete - #ID24Russ Weakley
Ā 
Building an accessible auto-complete
Building an accessible auto-completeBuilding an accessible auto-complete
Building an accessible auto-completeRuss Weakley
Ā 
Creating Acessible floating labels
Creating Acessible floating labelsCreating Acessible floating labels
Creating Acessible floating labelsRuss Weakley
Ā 
Creating an Accessible button dropdown
Creating an Accessible button dropdownCreating an Accessible button dropdown
Creating an Accessible button dropdownRuss Weakley
Ā 
Creating a Simple, Accessible On/Off Switch
Creating a Simple, Accessible On/Off SwitchCreating a Simple, Accessible On/Off Switch
Creating a Simple, Accessible On/Off SwitchRuss Weakley
Ā 

More from Russ Weakley (20)

Accessible chat windows
Accessible chat windowsAccessible chat windows
Accessible chat windows
Ā 
Accessible names & descriptions
Accessible names & descriptionsAccessible names & descriptions
Accessible names & descriptions
Ā 
A deep dive into accessible names
A deep dive into accessible namesA deep dive into accessible names
A deep dive into accessible names
Ā 
What are accessible names and why should you care?
What are accessible names and why should you care?What are accessible names and why should you care?
What are accessible names and why should you care?
Ā 
How to build accessible UI components
How to build accessible UI componentsHow to build accessible UI components
How to build accessible UI components
Ā 
What is WCAG 2 and why should we care?
What is WCAG 2 and why should we care?What is WCAG 2 and why should we care?
What is WCAG 2 and why should we care?
Ā 
Accessible states in Design Systems
Accessible states in Design SystemsAccessible states in Design Systems
Accessible states in Design Systems
Ā 
Creating accessible modals and autocompletes
Creating accessible modals and autocompletesCreating accessible modals and autocompletes
Creating accessible modals and autocompletes
Ā 
Building an accessible progressive loader
Building an accessible progressive loaderBuilding an accessible progressive loader
Building an accessible progressive loader
Ā 
Accessibility in Design systems - the pain and glory
Accessibility in Design systems - the pain and gloryAccessibility in Design systems - the pain and glory
Accessibility in Design systems - the pain and glory
Ā 
Accessible Inline errors messages
Accessible Inline errors messagesAccessible Inline errors messages
Accessible Inline errors messages
Ā 
Accessible Form Hints and Errors
Accessible Form Hints and ErrorsAccessible Form Hints and Errors
Accessible Form Hints and Errors
Ā 
What is accessibility?
What is accessibility?What is accessibility?
What is accessibility?
Ā 
Accessibility in Pattern Libraries
Accessibility in Pattern LibrariesAccessibility in Pattern Libraries
Accessibility in Pattern Libraries
Ā 
Accessibility in pattern libraries
Accessibility in pattern librariesAccessibility in pattern libraries
Accessibility in pattern libraries
Ā 
Building an accessible auto-complete - #ID24
Building an accessible auto-complete - #ID24Building an accessible auto-complete - #ID24
Building an accessible auto-complete - #ID24
Ā 
Building an accessible auto-complete
Building an accessible auto-completeBuilding an accessible auto-complete
Building an accessible auto-complete
Ā 
Creating Acessible floating labels
Creating Acessible floating labelsCreating Acessible floating labels
Creating Acessible floating labels
Ā 
Creating an Accessible button dropdown
Creating an Accessible button dropdownCreating an Accessible button dropdown
Creating an Accessible button dropdown
Ā 
Creating a Simple, Accessible On/Off Switch
Creating a Simple, Accessible On/Off SwitchCreating a Simple, Accessible On/Off Switch
Creating a Simple, Accessible On/Off Switch
Ā 

Recently uploaded

Internet of things -Arshdeep Bahga .pptx
Internet of things -Arshdeep Bahga .pptxInternet of things -Arshdeep Bahga .pptx
Internet of things -Arshdeep Bahga .pptxVelmuruganTECE
Ā 
šŸ”9953056974šŸ”!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
šŸ”9953056974šŸ”!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...šŸ”9953056974šŸ”!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
šŸ”9953056974šŸ”!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...9953056974 Low Rate Call Girls In Saket, Delhi NCR
Ā 
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionSachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionDr.Costas Sachpazis
Ā 
Main Memory Management in Operating System
Main Memory Management in Operating SystemMain Memory Management in Operating System
Main Memory Management in Operating SystemRashmi Bhat
Ā 
Introduction to Machine Learning Unit-3 for II MECH
Introduction to Machine Learning Unit-3 for II MECHIntroduction to Machine Learning Unit-3 for II MECH
Introduction to Machine Learning Unit-3 for II MECHC Sai Kiran
Ā 
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)Dr SOUNDIRARAJ N
Ā 
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsyncWhy does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsyncssuser2ae721
Ā 
Class 1 | NFPA 72 | Overview Fire Alarm System
Class 1 | NFPA 72 | Overview Fire Alarm SystemClass 1 | NFPA 72 | Overview Fire Alarm System
Class 1 | NFPA 72 | Overview Fire Alarm Systemirfanmechengr
Ā 
Risk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdfRisk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdfROCENODodongVILLACER
Ā 
The SRE Report 2024 - Great Findings for the teams
The SRE Report 2024 - Great Findings for the teamsThe SRE Report 2024 - Great Findings for the teams
The SRE Report 2024 - Great Findings for the teamsDILIPKUMARMONDAL6
Ā 
THE SENDAI FRAMEWORK FOR DISASTER RISK REDUCTION
THE SENDAI FRAMEWORK FOR DISASTER RISK REDUCTIONTHE SENDAI FRAMEWORK FOR DISASTER RISK REDUCTION
THE SENDAI FRAMEWORK FOR DISASTER RISK REDUCTIONjhunlian
Ā 
complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...asadnawaz62
Ā 
Arduino_CSE ece ppt for working and principal of arduino.ppt
Arduino_CSE ece ppt for working and principal of arduino.pptArduino_CSE ece ppt for working and principal of arduino.ppt
Arduino_CSE ece ppt for working and principal of arduino.pptSAURABHKUMAR892774
Ā 
Input Output Management in Operating System
Input Output Management in Operating SystemInput Output Management in Operating System
Input Output Management in Operating SystemRashmi Bhat
Ā 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024Mark Billinghurst
Ā 
NO1 Certified Black Magic Specialist Expert Amil baba in Uae Dubai Abu Dhabi ...
NO1 Certified Black Magic Specialist Expert Amil baba in Uae Dubai Abu Dhabi ...NO1 Certified Black Magic Specialist Expert Amil baba in Uae Dubai Abu Dhabi ...
NO1 Certified Black Magic Specialist Expert Amil baba in Uae Dubai Abu Dhabi ...Amil Baba Dawood bangali
Ā 
Energy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptxEnergy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptxsiddharthjain2303
Ā 

Recently uploaded (20)

Internet of things -Arshdeep Bahga .pptx
Internet of things -Arshdeep Bahga .pptxInternet of things -Arshdeep Bahga .pptx
Internet of things -Arshdeep Bahga .pptx
Ā 
young call girls in Green ParkšŸ” 9953056974 šŸ” escort Service
young call girls in Green ParkšŸ” 9953056974 šŸ” escort Serviceyoung call girls in Green ParkšŸ” 9953056974 šŸ” escort Service
young call girls in Green ParkšŸ” 9953056974 šŸ” escort Service
Ā 
šŸ”9953056974šŸ”!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
šŸ”9953056974šŸ”!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...šŸ”9953056974šŸ”!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
šŸ”9953056974šŸ”!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
Ā 
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionSachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Ā 
Main Memory Management in Operating System
Main Memory Management in Operating SystemMain Memory Management in Operating System
Main Memory Management in Operating System
Ā 
Introduction to Machine Learning Unit-3 for II MECH
Introduction to Machine Learning Unit-3 for II MECHIntroduction to Machine Learning Unit-3 for II MECH
Introduction to Machine Learning Unit-3 for II MECH
Ā 
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
Ā 
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsyncWhy does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
Ā 
Class 1 | NFPA 72 | Overview Fire Alarm System
Class 1 | NFPA 72 | Overview Fire Alarm SystemClass 1 | NFPA 72 | Overview Fire Alarm System
Class 1 | NFPA 72 | Overview Fire Alarm System
Ā 
Risk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdfRisk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdf
Ā 
The SRE Report 2024 - Great Findings for the teams
The SRE Report 2024 - Great Findings for the teamsThe SRE Report 2024 - Great Findings for the teams
The SRE Report 2024 - Great Findings for the teams
Ā 
young call girls in Rajiv ChowkšŸ” 9953056974 šŸ” Delhi escort Service
young call girls in Rajiv ChowkšŸ” 9953056974 šŸ” Delhi escort Serviceyoung call girls in Rajiv ChowkšŸ” 9953056974 šŸ” Delhi escort Service
young call girls in Rajiv ChowkšŸ” 9953056974 šŸ” Delhi escort Service
Ā 
THE SENDAI FRAMEWORK FOR DISASTER RISK REDUCTION
THE SENDAI FRAMEWORK FOR DISASTER RISK REDUCTIONTHE SENDAI FRAMEWORK FOR DISASTER RISK REDUCTION
THE SENDAI FRAMEWORK FOR DISASTER RISK REDUCTION
Ā 
complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...
Ā 
Arduino_CSE ece ppt for working and principal of arduino.ppt
Arduino_CSE ece ppt for working and principal of arduino.pptArduino_CSE ece ppt for working and principal of arduino.ppt
Arduino_CSE ece ppt for working and principal of arduino.ppt
Ā 
Design and analysis of solar grass cutter.pdf
Design and analysis of solar grass cutter.pdfDesign and analysis of solar grass cutter.pdf
Design and analysis of solar grass cutter.pdf
Ā 
Input Output Management in Operating System
Input Output Management in Operating SystemInput Output Management in Operating System
Input Output Management in Operating System
Ā 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024
Ā 
NO1 Certified Black Magic Specialist Expert Amil baba in Uae Dubai Abu Dhabi ...
NO1 Certified Black Magic Specialist Expert Amil baba in Uae Dubai Abu Dhabi ...NO1 Certified Black Magic Specialist Expert Amil baba in Uae Dubai Abu Dhabi ...
NO1 Certified Black Magic Specialist Expert Amil baba in Uae Dubai Abu Dhabi ...
Ā 
Energy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptxEnergy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptx
Ā 

CSS pattern libraries

  • 3. Began in the web in 1995 Full CSS sites in 2002 Skills: UX, front-end dev, training Recently: CSS pattern libraries
  • 4. I have helped develop HTML/ CSS pattern libraries for very large sites (media and university sites) and complex applications (banking applications).
  • 5. In some cases, there are literally hundreds of CSS, SCSS or LESS ļ¬les to review and optimise as part of the process.
  • 7. A few years ago, many front end developers approached websites and web applications as a series of ā€œpagesā€.
  • 8. Pages were often designed and built as complete entities. This meant that page components were often closely tied to their relevant pages.
  • 9. More recently, the focus has shifted from full page layouts to re-usable components.
  • 10. A re-usable component could be a layout grid structure, a button, an input, a drop-down, a menu, a heading, a table, or even a pullquote.
  • 12. HTML/CSS pattern libraries are used to resolve commonly used interface components. These components are created as HTML and CSS code and documented, so that they can be easily re-used as needed.
  • 13. The terms ā€œstyle guideā€ and ā€œpattern libraryā€ are often used interchangeably.
  • 14. A style guide is a set of standards for implementing the overall design, and can include corporate branding, color schemes, layout and more.
  • 15. Style guides are used to ensure uniformity of the design or ā€œbrandā€ across all aspects of the website or application.
  • 16. On the other hand, HTML/CSS pattern libraries generally document code components for all aspects of the website or application.
  • 17. On larger web projects, style guides and HTML/CSS pattern libraries are generally separate entities.
  • 18. For smaller web projects, style guides and pattern libraries are often combined into one overall entity.
  • 20. Why use a pattern library at all? ! Easier to build sites Easier to maintain sites Easier to hand over Better workļ¬‚ow Shared vocabulary Promotes consistency
  • 21. What are the downsides? ! Time-consuming to write Often done post-project Serve current need only
  • 23. There are a wide range of pre-existing pattern libraries available today.
  • 24. Some of these pattern libraries have a simple purpose - such as responsive grid systems.
  • 25. Grid-based CSS libraries 1140 CSS Grid Mueller Grid System Responsive Grid System Responsive Grid System Less Framework 960 Grid System Susy 320 and up http://cssgrid.net/ http://www.muellergridsystem.com/ http://www.responsivegridsystem.com/ http://responsive.gs/ http://lessframework.com/ http://960.gs/ http://susy.oddbird.net/ https://github.com/malarkey/320andup
  • 26. Others are considered full ā€œframeworksā€ that oļ¬€er a wide range of components.
  • 27. These can include: ! Reset styles Grid systems Typography styles Browser ļ¬xes Common user-interface component styles
  • 29. There are some great beneļ¬ts to using an existing framework: ! ready-to-use solution can pick & choose components easy implementation quick prototyping great for teams
  • 30. There may also be some downsides: ! may not suit your project no need for a complex library someone elseā€™s conventions generic look
  • 34. Bootstrap vs. Banking application
  • 35. Should you use a pre-existing framework? It depends on the needs of the site and your team. There is no one answer.
  • 36. Assuming you want to create your own CSS pattern library, how do you go about it?
  • 38. Abstraction is essential to any CSS pattern library.
  • 39. The process involves: ! looking for components that may be repeated within the layout deļ¬ning their characteristics creating HTML/CSS patterns for them 1. ! 2. 3.
  • 41.
  • 42.
  • 43. These boxes look like they have similar characteristics. If they were resolved into a pattern, this would make our HTML and CSS more eļ¬ƒcient.
  • 44. What are the key things to keep in mind when creating any pattern?
  • 46. All patterns needs to be class- based so they can appear as many times as needed within an HTML document.
  • 49. We should avoid naming patterns based on the content, as we want to reuse these patterns often within the layout.
  • 50. /* avoid */! .signup { }! .member { }! .member-news { }! .wiki { }! .support { }! .database { }! ! /* preferred */! .box { }
  • 52. All patterns should work regardless of where theyā€™re placed within the layout.
  • 53. /* avoid */! .sidebar .box { }! .main .box { }! ! /* preferred */! .box { }
  • 55. Ideally, patterns should avoid deļ¬ning widths. Patterns should be allowed to spread to the width of any parent container.
  • 56. /* avoid */! .box-wide { width: 500px; }! .box-medium { width: 240px; }! .box-small { width: 120px; }! ! /* preferred */! .box { /* no width defined */ }
  • 57. Keep patterns as simple as possible
  • 58. Patterns should be deļ¬ned as simply as possible. Otherwise they can become restrictive.
  • 59. .box! {! ! border-bottom: 5px solid #C8C8C8;! ! background-color: #e6e6e6;! ! /* may not be suitable */! ! margin-bottom: 1em;! }
  • 61. Patterns should not be written to undo other rules. For example, the <h3> element:
  • 62.
  • 63. We could be tempted to style the <h3> element with a coloured background - as it looks like this is the ā€œdefaultā€ appearance for all <h3> elements.
  • 64. /* default style */! h3! {! ! padding: 1em;! ! color: white;! ! background-color: red;! }
  • 65. But what happens if we needed to use an <h3> element later, and it doesnā€™t have a background-color? We might have to write a rule to undo our previous one.
  • 66. /* default style */! h3! {! ! padding: 1em;! ! color: white;! ! background-color: red;! }! ! /* undoing default style */! .no-background ! {! ! padding: 0;! ! color: #000;! ! background-color: none;! }!
  • 67. It is best to avoid over-styling elements or patterns so that they do not have to be undone later.
  • 68. /* default style */! h3! {! }! ! /* only when background needed */! .class-name! {! ! padding: 1em;! ! color: white;! ! background-color: red;! }!
  • 70. Patterns should not rely on the HTML structure. What happens if the structure changes in some instances - like a diļ¬€erent heading level being used?
  • 71. <div class="box">! ! <h3></h3>! <div>! ! <div class="box">! ! <h4></h4>! <div>! ! ! /* avoid if possible */! .box h3, .box h4! {! ! padding: 10px; ! ! background-color: orange; ! }! !
  • 72. It is always better to create a class-based pattern for any speciļ¬c styling needs.
  • 73. <div class="box">! ! <h3 class="box-heading"></h3>! <div>! ! <div class="box">! ! <h4 class="box-heading"></h4>! <div>! ! ! /* preferred */! .box-heading! {! ! padding: 10px; ! ! background-color: orange; ! }!
  • 75. How can we let developers know that our new class called ā€œbox-headingā€ relates to the ā€œboxā€ class?
  • 76. <div class="box">! ! <h3 class="box-heading"></h3>! <div>!
  • 77. We could use a naming convention that was originally deļ¬ned as part of BEM: ! http://bem.info/
  • 78. And then extended by Nicolas Gallagher: ! http://nicolasgallagher.com/about-html-semantics- front-end-architecture/
  • 79. And then modiļ¬ed slightly again by Harry Roberts: ! http://csswizardry.com/2013/01/mindbemding- getting-your-head-round-bem-syntax/
  • 80. This naming convention is based on the idea that page layouts can be broken down into a series of re-usable ā€œmodulesā€.
  • 81. If a module needs to be modiļ¬ed or extended, a ā€œmodule modiļ¬erā€ would be used.
  • 82. If a module has child elements that need to be styled, a ā€œmodule descendantā€ could be used.
  • 83. These diļ¬€erent types of class names need to be relatable and recognisable.
  • 84. /* Module */! .module-name {}! ! /* Module modifier*/! .module-name--modifier-name {}! ! /* Module descendant*/! .module-name__descendant-name {}! ! /* Module descendant modifier*/! .module-name__descendant--modifier {}!
  • 85. <!-- Module -->! <div class="box"></div>! ! <!-- Module modifier -->! <div class="box box--alt"></div>! ! <!-- Module descendant -->! <div class="box">! ! <h3 class="box__heading"></h3>! </div>! ! <!-- Module descendant modifier -->! <div class="box">! ! <h3 class="box__content box__content--alt"></h3>! </div>!
  • 87. With this naming convention, we can now add two ā€œmodule descendantsā€ to our HTML markup:
  • 88. <!-- Module -->! <div class="box">! ! ! <!-- Module descendant -->! ! <h3 class="box__heading"></h3>! ! ! <!-- Module descendant -->! ! <div class="box__content"></div>! </div>!
  • 89. .box! {! ! margin-bottom: 1em;! ! border-bottom: 5px solid #C8C8C8;! ! background-color: #e6e6e6;! }! ! .box__heading! {! ! margin: 0;! ! padding: 10px 15px;! ! text-transform: uppercase;! }! ! .box__content { margin: 15px; }!
  • 91. But what about the boxes that are very similar, but have some unique characteristics - like the decorative cog image?
  • 92.
  • 93. If we needed to modify or extend the original module, we would create a modiļ¬er class name.
  • 94. <!-- Module modifier -->! <div class="box box--alt">! ! <h3 class="box__heading"></h3>! ! <div class="box__content"></div>! </div>!
  • 95. However, in this case, we need to modify the ā€œbox__contentā€ class. We need to create a ā€œmodule descendant modiļ¬erā€.
  • 96. <!-- Module modifier -->! <div class="box">! ! <h3 class="box__heading"></h3>! ! <div class="box__content box__content ā€”cog"></div>! </div>!
  • 97. .box__content--cog! {! ! padding-right: 100px;! ! background-image: url(cog.png);! ! background-repeat: no-repeat;! ! background-position: 100% 0;! }!
  • 99. In one of the boxes, there is a piece of text that is aligned to the right. How do we solve this?
  • 100.
  • 101. We could make it another module descendant - and apply this to the link.
  • 102. .box__link {}! ! ! ! <div class="box">! ! <h3 class="box__heading"></h3>! ! <div class="box__content">! ! ! <p class="box__link"></p>! ! </div>! </div>! !
  • 103. Or we could use a diļ¬€erent type of class, called a ā€œhelperā€ or ā€œutilityā€ class.
  • 104. Nicolas Gallagherā€™s SUIT CSS includes a set of classes called ā€œutilitiesā€. ! https://github.com/suitcss/suit
  • 105. /* Utility classes */! .u-utilityName {}! ! ! <!-- example markup --> ! <article class="Tweet">! ! <a class="u-floatRight"></a>! ! <div class="u-sizeFill">! ! ! <a class="u-linkComplex"></a>! ! </div>! </article>!
  • 106. Bootstrap also uses these types of classes, but calls them ā€œhelperā€ classes. ! http://getbootstrap.com/css/#helper-classes
  • 107. /* Utility classes */! .text-muted { color: #777; } ! .text-primary { color: #428bca; }! .text-success { color: #3c763d; }! ! ! <!-- example markup --> ! <p class="text-muted">...</p>! <p class="text-primary">...</p>! <p class="text-success">...</p>
  • 108. These types of classes are designed to be added to elements where needed, without having to resort to styling elements individually.
  • 109. /* Helper classes */! .h-text-right { text-align: right; }! ! ! ! ! <!-- example markup --> ! <p class="h-text-right">! ! <a href="#">More</a>! </p>!
  • 110. For front-end developers who grew up in the ā€œkeep your markup cleanā€ era, these classes could be considered the work of Satan.
  • 111. Iā€™ve found them to be invaluable - when you need to add a single function to an element without having to create a speciļ¬c class.
  • 113. In 2011, Jonathan Snook introduced SMACSS. One of the key principles is to categorise CSS rules into ļ¬ve diļ¬€erent categories. ! https://smacss.com/
  • 114. Base - HTML elements Layout - grids Module - reusable components State - states of modules etc Theme - theming modules etc
  • 115. These categories are a great way to break up huge chunks of CSS rules into manageable sections.
  • 116. We could use one of these categories - theme styles - to deļ¬ne the background-colors on our headings.
  • 117.
  • 118. <h3 class="box__heading bgcolor-red"></h3>! <h3 class="box__heading bgcolor-blue"></h3>! <h3 class="box__heading bgcolor-orange"></h3>! <h4 class="box__heading bgcolor-grey"></h4>!
  • 119. .bgcolor-red, .bgcolor-blue, .bgcolor- orange, .bgcolor-grey { color: #fff; }! ! .bgcolor-red ! { background-color: #B21F24; }! ! .bgcolor-blue ! { background-color: #1D5980; }! ! .bgcolor-orange ! { background-color: #C56F00; }! ! .bgcolor-grey ! { background-color: #444445; }
  • 121. Here are some tips on the overall approach to CSS pattern libraries.
  • 123. In mid 2013, Brad Frost introduced Atomic Design - a methodology for creating design systems with ļ¬ve distinct levels in atomic design. ! http://bradfrostweb.com/blog/post/atomic-web- design/
  • 124. Atoms - HTML elements Molecules - groups of atoms Organisms - groups of molecules Templates - groups of organisms Pages - instances of templates
  • 125. Atomic design deļ¬nes the process as starting from smallest components and building to largest.
  • 126. Ideally, large components should not need to be deļ¬ned in a pattern library as they should be build up, like lego, from smaller components.
  • 128. Establish a class naming convention as early as possible in the process. Then document this convention and enforce it!
  • 130. Make sure any class naming convention is easy for others to follow. I have worked on projects where teams are constantly changing, so quick take-up is critical.
  • 132. Iā€™ve worked on projects where the LESS architecture needs to be mapped out in spreadsheets in order for teams to understand. In almost all cases, this was unnecessary. Keep it as simple as possible.
  • 134. Bottom line: HTML/CSS pattern libraries are an important tool for anyone doing CSS today no matter how large or small your website. Get out there and get busy!
  • 135. Russ Weakley Max Design ! Site: maxdesign.com.au Twitter: twitter.com/russmaxdesign Slideshare: slideshare.net/maxdesign Linkedin: linkedin.com/in/russweakley