SlideShare a Scribd company logo
CSS Best Practices, Style
Guide, and Tips
#ITDEVCON
Chris Love
http://love2dev.com
@ChrisLove
Who Am I?
• ASP.NET MVP
• ASP Insider
• MS Edge User Agent
• Author
• Speaker
• Tweaker, Lover of Web, JavaScript, CSS & HTML5
• @ChrisLove
• Love2Dev.com
#ITDEVCON
High Performance Single Page Web Applications
• Responsive Design
• Touch
• Mobile First
• SPA
• Extensible, Scalable Architecture
• Web Build and Workflow
• Goes Really Fast!
• ~395 Pages
• 20 Chapters
• $9.99
#ITDEVCON
Slide Decks & Source Code
• Slide Deck – http://slidesha.re/19NZInK
• Source Code – http://GitHub.com/docluv
#ITDEVCON
CSS
• Language Defining Rendering Rules
#ITDEVCON
CSS
.main-content {
overflow: hidden;
left: 6.3166666%;
right: 0;
top: 50px;
bottom: 4.166666%;
position: absolute;
border-radius: 5px 5px 0 0;
background-color: #000000;
-moz-transition: all 700ms ease-out;
-o-transition: all 700ms ease-out;
-webkit-transition: all 700ms ease-out;
transition: all 700ms ease-out;
}
#ITDEVCON
Selector/Rule
Properties
Vendor Specific
CSS
•Rules
• Defined using selector syntax
•Properties
• The specifics
•Media Queries
• Define Rules Based on Browser & Device Characteristics
#ITDEVCON
CSS Property Units
•px – pixels
•% - percent
•em – relative to the element’s font-size
•rem – Relative to the root element’s font-size
•vh/vw – Viewport Height/Viewport Width
•Any 0 does not require a unit
#ITDEVCON
CSS Selector Syntax
• Element
• H1, DIV, P
• Class
• .btn, . spa-child-view
• ID
• #tryToAvoid
#ITDEVCON
Advanced CSS Selector Syntax
• Nested Selectors
• Allows You To Apply Rules to Children of Matched Elements
• .main-content p
• Be careful to avoid complexity
• Dynamic By Attributes
• script[class='spa-view']
#ITDEVCON
By Attribute/type
input[type="email"] {
color:blue;
}
#ITDEVCON
Starts With
[class^="my-class-"] {
color:red;
}
#ITDEVCON
Ends With
[class$=“-my-class"] {
color:red;
}
#ITDEVCON
Contains
[class*="class"] {
color:red;
}
#ITDEVCON
Customize Social Links
a[href*="twitter.com"] { color:#55acee; }
a[href*="facebook.com"] { color:#3b5998; }
a[href*="google.com"] { color:#db4437; }
#ITDEVCON
Remove webkit Input Border
input[type="text"]:focus { outline: none; }
#ITDEVCON
psuedo-classes
• Define CSS Rules for Element States
• Hover
• Active
• Define Rules for hidden elements
• :before, :after
• Define Rules for nth Element
• :nth-of-type(3n)
Content Property
• Defines ‘text’ value for matched element
• Useful with :before and :after pseudo element
Responsive Table Trick
• Tables Create a Unique Responsive Design Problem
• Change CSS To Change Rendering Rules
• Turn Table into a fake set of DIVs
• Leverage content property to define value labels
• https://css-tricks.com/responsive-data-tables/
#ITDEVCON
Responsive Table Trick
<table>
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Job Title</th>
</tr>
</thead>
<tbody>
<tr>
<td>James</td>
<td>Matman</td>
<td>Chief Sandwich Eater</td>
</tr>
<tr>
<td>The</td>
<td>Tick</td>
<td>Crimefighter Sorta</td>
</tr>
</tbody>
</table>
Responsive Table Trick
@media only screen and (max-width: 760px),
(min-device-width: 768px) and (max-device-width: 1024px) {
table, thead, tbody, th, td, tr {
display: block;
}
}
#ITDEVCON
Responsive Table Trick
td:nth-of-type(1):before { content: "First Name"; }
td:nth-of-type(2):before { content: "Last Name"; }
td:nth-of-type(3):before { content: "Job Title"; }
td:nth-of-type(4):before { content: "Favorite Color"; }
td:nth-of-type(5):before { content: "Wars of Trek?"; }
td:nth-of-type(6):before { content: "Porn Name"; }
td:nth-of-type(7):before { content: "Date of Birth"; }
td:nth-of-type(8):before { content: "Dream Vacation City"; }
td:nth-of-type(9):before { content: "GPA"; }
td:nth-of-type(10):before { content: "Arbitrary Data"; }
CSS Selector Specificity
• Complex Specificity
• .main-content > article #myArticleId p
• Leads to large CSS files
• Makes Code Unmanageable
• Lower the Score the Better
• Browsers Parse Selectors Right to Left
• * Avoid Universal Selector
Right-Left Rule
• .main-content > article #myArticleId p
• Translates to:
• #myArticleId p
• Think More Like the Browser When Defining Selectors
Calculate CSS Specificity
• Count the Inline Style
• count the number of ID selectors in the selector (= a)
• count the number of class selectors, attributes selectors, and pseudo-
classes in the selector (= b)
• count the number of type selectors and pseudo-elements in the
selector (= c)
• ignore the universal selector
Calculate CSS Specificity
http://specificity.keegan.st/
BEM Naming Convention
• Block
• Element
• Modifier
• Bootstrap and Primer Good Examples
BEM Naming Convention
• .btn {…}
• .btn-primary {…}
• .btn-primary:disabled {…}
• .btn-xs {…}
• Might also see __ between words
BEM Naming Convention
• <button type="button" class="btn btn-primary">Primary</button>
• <button type="button" class="btn btn-success">Success</button>
• <button type="button" class="btn btn-info">Info</button>
• <button type="button" class="btn btn-warning">Warning</button>
CSS Cascading
• Last, Most Specific Rule Wins
• Be mindful of your CSS Definition Order
• Overwrites Previously Defined Rules
• Simple rule make this easy to maintain and create
Responsive Design
“this unspoken agreement to pretend that we had a certain size. And that size
changed over the years. For a while, we all sort of tacitly agreed that 640 by 480
was the right size, and then later than changed to 800:600, and 1024; we seem
to have settled on this 960 pixel as being this like, default. It’s still unknown. We
still don’t know the size of the browser; it’s just like this consensual
hallucination that we’ve all agreed to participate in: “Let’s assume the browser
has a browser width of at least 960 pixels.”
Jeremy Keith
bit.ly/1bhH6rw
Responsive Web Design
#ITDEVCON
Responsive Web Design
• Introduced by Ethan Marcotte 2010 -
bit.ly/178an9e
• Web Design Approach To Create An Optimal
Viewing Experience Across All Browser ViewPorts
• Fluid Layouts
• Media Queries
• Minimal if any JavaScript Required
Fluid Layout
• Stretch as the Browser ViewPort Changes
• Browser’s Viewable Area Inside the Chrome
• Serve as the Foundation for the Web Application
Layout
• Great Way To Create Native Like Experience
Fluid Layout
• Leverage Absolute Positioning
• Enables Fixed Positioning Without position:fixed
• Leverage overflow scrolling
Media Queries
@media (min-width: 600px) {
/* Selectors & Rules */
}
@media (min-width: 820px) {
/* Selectors & Rules */
}
@media (min-width: 1080px) {
/* Selectors & Rules */
}
Avoid Embedded Styles
• Don't separate content from design
• Cause more maintenance headaches
• Make your pages larger
• Do not take advantage of Http Caching
• Lead to Duplicate Rules
CSS - Files
• Should
• Use External Files
• Hosted on a CDN
• Bundled & Minified *
• HTTP/2 Changes the Bundling Rule
CSS – Debug Files
• Should
• Use Many Files
• They Should Correlate to a Purpose
• View
• Component
• Layout
CSS –Files
css/
site.min.css
/dev
/libs
/ui
/views
CSS Best Practices
• Link to External Files in the HEAD
• Ensures CSS read before HTML
• Avoid Using @import
• Causes CSS to be Parsed After Document
CSS Reset
• Establishes a Common Base
• Each Browser has a default CSS stylesheet
• Many Resets Availble
• Normalize.css probably most popular
• Popular libraries have resets; ex bootstrap uses normalize
CSS Libraries
• Many Available
• Bootstrap is the current defacto standard
• Primer based on Boostrap
• Created by bootstrap author
• GitHub’s internal library
• https://github.com/primer/primer
CSS Libraries
• Be Careful to not be Completely Dependent on Library
• Understand How CSS Rules, Apply Best Practices
• Build Your Own Custom Version
• Grunt/Gulp
Critical CSS
• The CSS Required to Render The Above the Fold Content
• Embed Inline, in HEAD element
• Instant Render if HTML < 14kb
• Works great for a SPA
• criticalCSS Node Module
• https://www.npmjs.com/package/criticalcss
Critical CSS Grunt
grunt.initConfig({
criticalcss: {
custom: {
options: {
url: "http://localhost:4000",
width: 1200,
height: 900,
outputfile: "dist/critical.css",
filename: "/path/to/local/all.css", // Using path.resolve( path.join( ... ) ) is a good idea here
buffer: 800*1024,
ignoreConsole: false
}
}
},
});
UnCSS Grunt
uncss: {
dist: {
src: ['app/index.html'],
dest: 'app/css/tidy.css',
options: {
report: 'min'
}
}
}
https://www.npmjs.com/package/grunt-uncss
CSS Code Style
• Define Section Titles
/*------------------------------------*
$MAIN
*------------------------------------*/
CSS Rule Formatting
• Use one discrete selector per line in multi-selector rulesets.
• Include a single space before the opening brace of a
ruleset.
• Include one declaration per line in a declaration block.
• Use one level of indentation for each declaration.
• Include a single space after the colon of a declaration.
CSS Rule Formatting
• Use lowercase and shorthand hex values, e.g., `#aaa`.
• Use single or double quotes consistently. Preference is for
double quotes, e.g., `content: ""`.
• Quote attribute values in selectors, e.g.,
`input[type="checkbox"]`.
• _Where allowed_, avoid specifying units for zero-values,
e.g., `margin: 0`.
CSS Rule Formatting
• Include a space after each comma in comma-separated
property or function values.
• Include a semi-colon at the end of the last declaration in a
declaration block.
• Place the closing brace of a ruleset in the same column as
the first character of the ruleset.
• Separate each ruleset by a blank line.
Rule Formatting Example
.selector-1,
.selector-2,
.selector-3[type="text"] {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
display: block;
font-family: helvetica, arial, sans-serif;
color: #333;
background: #fff;
background: linear-gradient(#fff, rgba(0, 0, 0, 0.8));
}
Consistently Declare Property Order
• Makes it Easier to Read
• Makes it Easier for Teams to Share Code
Consistently Declare Property Order
.selector {
/* Positioning */
position: absolute;
z-index: 10;
top: 0;
right: 0;
bottom: 0;
left: 0;
 
/* Display & Box Model */
display: inline-block;
overflow: hidden;
box-sizing: border-box;
width: 100px;
height: 100px;
padding: 10px;
border: 10px solid #333;
margin: 10px;
 
/* Other */
background: #000;
color: #fff;
font-family: sans-serif;
font-size: 16px;
text-align: right;
}
Clock-Wise Rule
• Margin & Padding Work Clock-wise around the element
• margin: 5% 10% 15% 20%;
• margin-top : 5%;
• margin-right : 10%;
• margin-bottom : 15%;
• margin-left : 20%;
Element Layout Box
CSS Animations
• Do Not Use JavaScript Libraries for Animations
• CSS Animations are Native
• Run on the GPU
CSS Key-Frame Animations
• Allow You To Define Complex Animations
• Define Rules/Properties Along a Timeline
• Animate.css is a collection of turn-key animations
• http://daneden.me/animate
CSS Key-Frame Animations
• Can be Applied by adding and removing CSS classes on
an element
loginDlg.classList.add("fadeInDown");
showLogin.classList.add("fadeOut");
loginDlg.classList.remove("fadeOutUp");
CSS Key-Frame Animations
• Can be Applied by adding and removing CSS classes on
an element
loginDlg.classList.add("fadeInDown");
showLogin.classList.add("fadeOut");
loginDlg.classList.remove("fadeOutUp");
• http://bit.ly/1Lt1kTb
CSS Shapes
• CSS Can be Used to Create All Sorts of Shapes
• http://www.cssshapes.com/
Create a CSS Heart
• My Site’s Logo is a CSS Heart
• Here is how to create it:
• http://bit.ly/1NF3Sjf
Perfectly Align to Center
.my-class-parent {
position:relative;
}
.my-class {
position:absolute;
top:50%;
left:50%;
-webkit-transform:translate(-50%, -50%);
transform:translate(-50%, -50%);
}
High Performance Single Page Web
Applications
• Responsive Design
• Touch
• Mobile First
• SPA
• Extensible, Scalable Architecture
• Web Build and Workflow
• Goes Really Fast!
• ~395 Pages
• 20 Chapters
• $9.99

More Related Content

What's hot (20)

PDF
Modular HTML, CSS, & JS Workshop
Shay Howe
 
PDF
SMACSS Workshop
Tim Hettler
 
PPT
Cssbestpracticesjstyleguidejandtips 150830184202-lva1-app6892
Deepak Sharma
 
PDF
Organize Your Website With Advanced CSS Tricks
Andolasoft Inc
 
PPT
Css
Sumit Gupta
 
PDF
HTML News Packages Lesson
UC Berkeley Graduate School of Journalism
 
PPTX
Presentation about html5 css3
Gopi A
 
PDF
CSS3 Introduction
Jaeni Sahuri
 
PPTX
Introduction to HTML and CSS
Ferdous Mahmud Shaon
 
PPTX
How to dominate a free theme WCTO 2014
James Strang
 
PDF
Unit 3 (it workshop).pptx
Dr.Lokesh Gagnani
 
PDF
Introduction to CSS3
Doris Chen
 
PDF
Maintainable CSS
Stephen Hay
 
PPTX
Css.html
Anaghabalakrishnan
 
PDF
Fundamental CSS3
Achmad Solichin
 
PDF
Intro to CSS
Randy Oest II
 
PDF
Intro to CSS3
Denise Jacobs
 
PDF
Responsive Web Design (April 18th, Los Angeles)
Thinkful
 
PDF
Inline, Block and Positioning in CSS
UC Berkeley Graduate School of Journalism
 
Modular HTML, CSS, & JS Workshop
Shay Howe
 
SMACSS Workshop
Tim Hettler
 
Cssbestpracticesjstyleguidejandtips 150830184202-lva1-app6892
Deepak Sharma
 
Organize Your Website With Advanced CSS Tricks
Andolasoft Inc
 
Presentation about html5 css3
Gopi A
 
CSS3 Introduction
Jaeni Sahuri
 
Introduction to HTML and CSS
Ferdous Mahmud Shaon
 
How to dominate a free theme WCTO 2014
James Strang
 
Unit 3 (it workshop).pptx
Dr.Lokesh Gagnani
 
Introduction to CSS3
Doris Chen
 
Maintainable CSS
Stephen Hay
 
Fundamental CSS3
Achmad Solichin
 
Intro to CSS
Randy Oest II
 
Intro to CSS3
Denise Jacobs
 
Responsive Web Design (April 18th, Los Angeles)
Thinkful
 
Inline, Block and Positioning in CSS
UC Berkeley Graduate School of Journalism
 

Viewers also liked (10)

PPTX
Media queries and frameworks
Nicole Ryan
 
PPTX
AngularJS best practices
Filip Bruun Bech-Larsen
 
PDF
Beyond Media Queries: Anatomy of an Adaptive Web Design
Brad Frost
 
PDF
CSS3 Media Queries
Russ Weakley
 
PDF
The Art of AngularJS in 2015
Matt Raible
 
PDF
New Features in Angular 1.5
Kenichi Kanai
 
PPTX
Mobile Email Design, Strategies, Workflow and Best Practices
Litmus
 
PDF
AngularJS best-practices
Henry Tao
 
PDF
AngularJS Best Practices
Betclic Everest Group Tech Team
 
PPTX
AngularJS Best Practices
Narek Mamikonyan
 
Media queries and frameworks
Nicole Ryan
 
AngularJS best practices
Filip Bruun Bech-Larsen
 
Beyond Media Queries: Anatomy of an Adaptive Web Design
Brad Frost
 
CSS3 Media Queries
Russ Weakley
 
The Art of AngularJS in 2015
Matt Raible
 
New Features in Angular 1.5
Kenichi Kanai
 
Mobile Email Design, Strategies, Workflow and Best Practices
Litmus
 
AngularJS best-practices
Henry Tao
 
AngularJS Best Practices
Betclic Everest Group Tech Team
 
AngularJS Best Practices
Narek Mamikonyan
 
Ad

Similar to Css best practices style guide and tips (20)

PDF
Accelerated Stylesheets
Wynn Netherland
 
PDF
Evolution of CSS
Ecaterina Moraru (Valica)
 
PDF
Scalable CSS You and Your Back-End Coders Can Love - @CSSConf Asia 2014
Christian Lilley
 
PPTX
Hardcore CSS
PDX Web & Design
 
PDF
CSS: a rapidly changing world
Russ Weakley
 
PDF
More of less (take 2)
Guilherme Zühlke O'Connor
 
PDF
Big Design Conference: CSS3
Wynn Netherland
 
PDF
How to get a serious front end designer job
Karlis Upitis
 
PPTX
Css training
Leigh Aucoin
 
PDF
Fewd week2 slides
William Myers
 
PDF
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Erin M. Kidwell
 
PPT
gdg_workshop 4 on web development HTML & CSS
SaniyaKhan484230
 
PPT
Basic Knowldege about CSS Prepared for VV softech solution (2).ppt
testvarun21
 
PDF
CSS - OOCSS, SMACSS and more
Russ Weakley
 
ODP
HTML5, CSS, JavaScript Style guide and coding conventions
Knoldus Inc.
 
PPTX
FITC - 2012-04-23 - Responsive Web Design
Frédéric Harper
 
PDF
Full download Responsive Web Design with HTML5 and CSS3 Second Edition Ben Fr...
deveykypri6
 
KEY
The web standards gentleman: a matter of (evolving) standards)
Chris Mills
 
PPTX
web Technolotogies notes lke CSS443.pptx
ssuser46d915
 
PDF
Building Better Responsive Websites
Holger Bartel
 
Accelerated Stylesheets
Wynn Netherland
 
Evolution of CSS
Ecaterina Moraru (Valica)
 
Scalable CSS You and Your Back-End Coders Can Love - @CSSConf Asia 2014
Christian Lilley
 
Hardcore CSS
PDX Web & Design
 
CSS: a rapidly changing world
Russ Weakley
 
More of less (take 2)
Guilherme Zühlke O'Connor
 
Big Design Conference: CSS3
Wynn Netherland
 
How to get a serious front end designer job
Karlis Upitis
 
Css training
Leigh Aucoin
 
Fewd week2 slides
William Myers
 
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Erin M. Kidwell
 
gdg_workshop 4 on web development HTML & CSS
SaniyaKhan484230
 
Basic Knowldege about CSS Prepared for VV softech solution (2).ppt
testvarun21
 
CSS - OOCSS, SMACSS and more
Russ Weakley
 
HTML5, CSS, JavaScript Style guide and coding conventions
Knoldus Inc.
 
FITC - 2012-04-23 - Responsive Web Design
Frédéric Harper
 
Full download Responsive Web Design with HTML5 and CSS3 Second Edition Ben Fr...
deveykypri6
 
The web standards gentleman: a matter of (evolving) standards)
Chris Mills
 
web Technolotogies notes lke CSS443.pptx
ssuser46d915
 
Building Better Responsive Websites
Holger Bartel
 
Ad

More from Chris Love (20)

PPTX
Quick Fetch API Introduction
Chris Love
 
PPTX
Introduction to Progressive Web Applications
Chris Love
 
PPTX
Introduction to Progressive Web Applications
Chris Love
 
PPTX
Lazy load Website Assets
Chris Love
 
PPTX
Progressive Web Apps for Education
Chris Love
 
PPTX
The server is dead going serverless to create a highly scalable application y...
Chris Love
 
PPTX
A Day Building Fast, Responsive, Extensible Single Page Applications
Chris Love
 
PPTX
Real World Lessons in Progressive Web Application & Service Worker Caching
Chris Love
 
PPTX
Disrupting the application eco system with progressive web applications
Chris Love
 
PPTX
Service workers your applications never felt so good
Chris Love
 
PPTX
Develop a vanilla.js spa you and your customers will love
Chris Love
 
PPTX
JavaScript front end performance optimizations
Chris Love
 
PPTX
Advanced front end debugging with ms edge and ms tools
Chris Love
 
PPTX
Html5 Fit: Get Rid of Love Handles
Chris Love
 
PPTX
Using Responsive Web Design To Make Your Web Work Everywhere - Updated
Chris Love
 
PPTX
Implementing a Responsive Image Strategy
Chris Love
 
PPTX
Using Responsive Web Design To Make Your Web Work Everywhere
Chris Love
 
PPTX
10 things you can do to speed up your web app today 2016
Chris Love
 
PPTX
Using Responsive Web Design To Make Your Web Work Everywhere
Chris Love
 
PPTX
An Introduction to Microsoft Edge
Chris Love
 
Quick Fetch API Introduction
Chris Love
 
Introduction to Progressive Web Applications
Chris Love
 
Introduction to Progressive Web Applications
Chris Love
 
Lazy load Website Assets
Chris Love
 
Progressive Web Apps for Education
Chris Love
 
The server is dead going serverless to create a highly scalable application y...
Chris Love
 
A Day Building Fast, Responsive, Extensible Single Page Applications
Chris Love
 
Real World Lessons in Progressive Web Application & Service Worker Caching
Chris Love
 
Disrupting the application eco system with progressive web applications
Chris Love
 
Service workers your applications never felt so good
Chris Love
 
Develop a vanilla.js spa you and your customers will love
Chris Love
 
JavaScript front end performance optimizations
Chris Love
 
Advanced front end debugging with ms edge and ms tools
Chris Love
 
Html5 Fit: Get Rid of Love Handles
Chris Love
 
Using Responsive Web Design To Make Your Web Work Everywhere - Updated
Chris Love
 
Implementing a Responsive Image Strategy
Chris Love
 
Using Responsive Web Design To Make Your Web Work Everywhere
Chris Love
 
10 things you can do to speed up your web app today 2016
Chris Love
 
Using Responsive Web Design To Make Your Web Work Everywhere
Chris Love
 
An Introduction to Microsoft Edge
Chris Love
 

Recently uploaded (20)

PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PPTX
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
PDF
Staying Human in a Machine- Accelerated World
Catalin Jora
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
PDF
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
Staying Human in a Machine- Accelerated World
Catalin Jora
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 

Css best practices style guide and tips

  • 1. CSS Best Practices, Style Guide, and Tips #ITDEVCON Chris Love http://love2dev.com @ChrisLove
  • 2. Who Am I? • ASP.NET MVP • ASP Insider • MS Edge User Agent • Author • Speaker • Tweaker, Lover of Web, JavaScript, CSS & HTML5 • @ChrisLove • Love2Dev.com #ITDEVCON
  • 3. High Performance Single Page Web Applications • Responsive Design • Touch • Mobile First • SPA • Extensible, Scalable Architecture • Web Build and Workflow • Goes Really Fast! • ~395 Pages • 20 Chapters • $9.99 #ITDEVCON
  • 4. Slide Decks & Source Code • Slide Deck – http://slidesha.re/19NZInK • Source Code – http://GitHub.com/docluv #ITDEVCON
  • 5. CSS • Language Defining Rendering Rules #ITDEVCON
  • 6. CSS .main-content { overflow: hidden; left: 6.3166666%; right: 0; top: 50px; bottom: 4.166666%; position: absolute; border-radius: 5px 5px 0 0; background-color: #000000; -moz-transition: all 700ms ease-out; -o-transition: all 700ms ease-out; -webkit-transition: all 700ms ease-out; transition: all 700ms ease-out; } #ITDEVCON Selector/Rule Properties Vendor Specific
  • 7. CSS •Rules • Defined using selector syntax •Properties • The specifics •Media Queries • Define Rules Based on Browser & Device Characteristics #ITDEVCON
  • 8. CSS Property Units •px – pixels •% - percent •em – relative to the element’s font-size •rem – Relative to the root element’s font-size •vh/vw – Viewport Height/Viewport Width •Any 0 does not require a unit #ITDEVCON
  • 9. CSS Selector Syntax • Element • H1, DIV, P • Class • .btn, . spa-child-view • ID • #tryToAvoid #ITDEVCON
  • 10. Advanced CSS Selector Syntax • Nested Selectors • Allows You To Apply Rules to Children of Matched Elements • .main-content p • Be careful to avoid complexity • Dynamic By Attributes • script[class='spa-view'] #ITDEVCON
  • 15. Customize Social Links a[href*="twitter.com"] { color:#55acee; } a[href*="facebook.com"] { color:#3b5998; } a[href*="google.com"] { color:#db4437; } #ITDEVCON
  • 16. Remove webkit Input Border input[type="text"]:focus { outline: none; } #ITDEVCON
  • 17. psuedo-classes • Define CSS Rules for Element States • Hover • Active • Define Rules for hidden elements • :before, :after • Define Rules for nth Element • :nth-of-type(3n)
  • 18. Content Property • Defines ‘text’ value for matched element • Useful with :before and :after pseudo element
  • 19. Responsive Table Trick • Tables Create a Unique Responsive Design Problem • Change CSS To Change Rendering Rules • Turn Table into a fake set of DIVs • Leverage content property to define value labels • https://css-tricks.com/responsive-data-tables/
  • 21. Responsive Table Trick <table> <thead> <tr> <th>First Name</th> <th>Last Name</th> <th>Job Title</th> </tr> </thead> <tbody> <tr> <td>James</td> <td>Matman</td> <td>Chief Sandwich Eater</td> </tr> <tr> <td>The</td> <td>Tick</td> <td>Crimefighter Sorta</td> </tr> </tbody> </table>
  • 22. Responsive Table Trick @media only screen and (max-width: 760px), (min-device-width: 768px) and (max-device-width: 1024px) { table, thead, tbody, th, td, tr { display: block; } } #ITDEVCON
  • 23. Responsive Table Trick td:nth-of-type(1):before { content: "First Name"; } td:nth-of-type(2):before { content: "Last Name"; } td:nth-of-type(3):before { content: "Job Title"; } td:nth-of-type(4):before { content: "Favorite Color"; } td:nth-of-type(5):before { content: "Wars of Trek?"; } td:nth-of-type(6):before { content: "Porn Name"; } td:nth-of-type(7):before { content: "Date of Birth"; } td:nth-of-type(8):before { content: "Dream Vacation City"; } td:nth-of-type(9):before { content: "GPA"; } td:nth-of-type(10):before { content: "Arbitrary Data"; }
  • 24. CSS Selector Specificity • Complex Specificity • .main-content > article #myArticleId p • Leads to large CSS files • Makes Code Unmanageable • Lower the Score the Better • Browsers Parse Selectors Right to Left • * Avoid Universal Selector
  • 25. Right-Left Rule • .main-content > article #myArticleId p • Translates to: • #myArticleId p • Think More Like the Browser When Defining Selectors
  • 26. Calculate CSS Specificity • Count the Inline Style • count the number of ID selectors in the selector (= a) • count the number of class selectors, attributes selectors, and pseudo- classes in the selector (= b) • count the number of type selectors and pseudo-elements in the selector (= c) • ignore the universal selector
  • 28. BEM Naming Convention • Block • Element • Modifier • Bootstrap and Primer Good Examples
  • 29. BEM Naming Convention • .btn {…} • .btn-primary {…} • .btn-primary:disabled {…} • .btn-xs {…} • Might also see __ between words
  • 30. BEM Naming Convention • <button type="button" class="btn btn-primary">Primary</button> • <button type="button" class="btn btn-success">Success</button> • <button type="button" class="btn btn-info">Info</button> • <button type="button" class="btn btn-warning">Warning</button>
  • 31. CSS Cascading • Last, Most Specific Rule Wins • Be mindful of your CSS Definition Order • Overwrites Previously Defined Rules • Simple rule make this easy to maintain and create
  • 32. Responsive Design “this unspoken agreement to pretend that we had a certain size. And that size changed over the years. For a while, we all sort of tacitly agreed that 640 by 480 was the right size, and then later than changed to 800:600, and 1024; we seem to have settled on this 960 pixel as being this like, default. It’s still unknown. We still don’t know the size of the browser; it’s just like this consensual hallucination that we’ve all agreed to participate in: “Let’s assume the browser has a browser width of at least 960 pixels.” Jeremy Keith bit.ly/1bhH6rw
  • 34. Responsive Web Design • Introduced by Ethan Marcotte 2010 - bit.ly/178an9e • Web Design Approach To Create An Optimal Viewing Experience Across All Browser ViewPorts • Fluid Layouts • Media Queries • Minimal if any JavaScript Required
  • 35. Fluid Layout • Stretch as the Browser ViewPort Changes • Browser’s Viewable Area Inside the Chrome • Serve as the Foundation for the Web Application Layout • Great Way To Create Native Like Experience
  • 36. Fluid Layout • Leverage Absolute Positioning • Enables Fixed Positioning Without position:fixed • Leverage overflow scrolling
  • 37. Media Queries @media (min-width: 600px) { /* Selectors & Rules */ } @media (min-width: 820px) { /* Selectors & Rules */ } @media (min-width: 1080px) { /* Selectors & Rules */ }
  • 38. Avoid Embedded Styles • Don't separate content from design • Cause more maintenance headaches • Make your pages larger • Do not take advantage of Http Caching • Lead to Duplicate Rules
  • 39. CSS - Files • Should • Use External Files • Hosted on a CDN • Bundled & Minified * • HTTP/2 Changes the Bundling Rule
  • 40. CSS – Debug Files • Should • Use Many Files • They Should Correlate to a Purpose • View • Component • Layout
  • 42. CSS Best Practices • Link to External Files in the HEAD • Ensures CSS read before HTML • Avoid Using @import • Causes CSS to be Parsed After Document
  • 43. CSS Reset • Establishes a Common Base • Each Browser has a default CSS stylesheet • Many Resets Availble • Normalize.css probably most popular • Popular libraries have resets; ex bootstrap uses normalize
  • 44. CSS Libraries • Many Available • Bootstrap is the current defacto standard • Primer based on Boostrap • Created by bootstrap author • GitHub’s internal library • https://github.com/primer/primer
  • 45. CSS Libraries • Be Careful to not be Completely Dependent on Library • Understand How CSS Rules, Apply Best Practices • Build Your Own Custom Version • Grunt/Gulp
  • 46. Critical CSS • The CSS Required to Render The Above the Fold Content • Embed Inline, in HEAD element • Instant Render if HTML < 14kb • Works great for a SPA • criticalCSS Node Module • https://www.npmjs.com/package/criticalcss
  • 47. Critical CSS Grunt grunt.initConfig({ criticalcss: { custom: { options: { url: "http://localhost:4000", width: 1200, height: 900, outputfile: "dist/critical.css", filename: "/path/to/local/all.css", // Using path.resolve( path.join( ... ) ) is a good idea here buffer: 800*1024, ignoreConsole: false } } }, });
  • 48. UnCSS Grunt uncss: { dist: { src: ['app/index.html'], dest: 'app/css/tidy.css', options: { report: 'min' } } } https://www.npmjs.com/package/grunt-uncss
  • 49. CSS Code Style • Define Section Titles /*------------------------------------* $MAIN *------------------------------------*/
  • 50. CSS Rule Formatting • Use one discrete selector per line in multi-selector rulesets. • Include a single space before the opening brace of a ruleset. • Include one declaration per line in a declaration block. • Use one level of indentation for each declaration. • Include a single space after the colon of a declaration.
  • 51. CSS Rule Formatting • Use lowercase and shorthand hex values, e.g., `#aaa`. • Use single or double quotes consistently. Preference is for double quotes, e.g., `content: ""`. • Quote attribute values in selectors, e.g., `input[type="checkbox"]`. • _Where allowed_, avoid specifying units for zero-values, e.g., `margin: 0`.
  • 52. CSS Rule Formatting • Include a space after each comma in comma-separated property or function values. • Include a semi-colon at the end of the last declaration in a declaration block. • Place the closing brace of a ruleset in the same column as the first character of the ruleset. • Separate each ruleset by a blank line.
  • 53. Rule Formatting Example .selector-1, .selector-2, .selector-3[type="text"] { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; display: block; font-family: helvetica, arial, sans-serif; color: #333; background: #fff; background: linear-gradient(#fff, rgba(0, 0, 0, 0.8)); }
  • 54. Consistently Declare Property Order • Makes it Easier to Read • Makes it Easier for Teams to Share Code
  • 55. Consistently Declare Property Order .selector { /* Positioning */ position: absolute; z-index: 10; top: 0; right: 0; bottom: 0; left: 0;   /* Display & Box Model */ display: inline-block; overflow: hidden; box-sizing: border-box; width: 100px; height: 100px; padding: 10px; border: 10px solid #333; margin: 10px;   /* Other */ background: #000; color: #fff; font-family: sans-serif; font-size: 16px; text-align: right; }
  • 56. Clock-Wise Rule • Margin & Padding Work Clock-wise around the element • margin: 5% 10% 15% 20%; • margin-top : 5%; • margin-right : 10%; • margin-bottom : 15%; • margin-left : 20%;
  • 58. CSS Animations • Do Not Use JavaScript Libraries for Animations • CSS Animations are Native • Run on the GPU
  • 59. CSS Key-Frame Animations • Allow You To Define Complex Animations • Define Rules/Properties Along a Timeline • Animate.css is a collection of turn-key animations • http://daneden.me/animate
  • 60. CSS Key-Frame Animations • Can be Applied by adding and removing CSS classes on an element loginDlg.classList.add("fadeInDown"); showLogin.classList.add("fadeOut"); loginDlg.classList.remove("fadeOutUp");
  • 61. CSS Key-Frame Animations • Can be Applied by adding and removing CSS classes on an element loginDlg.classList.add("fadeInDown"); showLogin.classList.add("fadeOut"); loginDlg.classList.remove("fadeOutUp"); • http://bit.ly/1Lt1kTb
  • 62. CSS Shapes • CSS Can be Used to Create All Sorts of Shapes • http://www.cssshapes.com/
  • 63. Create a CSS Heart • My Site’s Logo is a CSS Heart • Here is how to create it: • http://bit.ly/1NF3Sjf
  • 64. Perfectly Align to Center .my-class-parent { position:relative; } .my-class { position:absolute; top:50%; left:50%; -webkit-transform:translate(-50%, -50%); transform:translate(-50%, -50%); }
  • 65. High Performance Single Page Web Applications • Responsive Design • Touch • Mobile First • SPA • Extensible, Scalable Architecture • Web Build and Workflow • Goes Really Fast! • ~395 Pages • 20 Chapters • $9.99