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

CSS - OOCSS, SMACSS and more
CSS - OOCSS, SMACSS and moreCSS - OOCSS, SMACSS and more
CSS - OOCSS, SMACSS and more
Russ Weakley
 
Modular HTML & CSS
Modular HTML & CSSModular HTML & CSS
Modular HTML & CSS
Shay Howe
 
CSS3 - is everything we used to do wrong?
CSS3 - is everything we used to do wrong? CSS3 - is everything we used to do wrong?
CSS3 - is everything we used to do wrong?
Russ Weakley
 
Unit 3 (it workshop).pptx
Unit 3 (it workshop).pptxUnit 3 (it workshop).pptx
Unit 3 (it workshop).pptx
Dr.Lokesh Gagnani
 
Advanced CSS Troubleshooting
Advanced CSS TroubleshootingAdvanced CSS Troubleshooting
Advanced CSS Troubleshooting
Denise Jacobs
 
2022 HTML5: The future is now
2022 HTML5: The future is now2022 HTML5: The future is now
2022 HTML5: The future is now
Gonzalo Cordero
 
CSS pattern libraries
CSS pattern librariesCSS pattern libraries
CSS pattern libraries
Russ Weakley
 
Be German About Your Frontend
Be German About Your FrontendBe German About Your Frontend
Be German About Your FrontendArush Sehgal
 
Intro to CSS3
Intro to CSS3Intro to CSS3
Intro to CSS3
Denise Jacobs
 
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4Erin M. Kidwell
 
Css week11 2019 2020 for g10 by eng.osama ghandour
Css week11 2019 2020 for g10 by eng.osama ghandourCss week11 2019 2020 for g10 by eng.osama ghandour
Css week11 2019 2020 for g10 by eng.osama ghandour
Osama Ghandour Geris
 
How to dominate a free theme WCTO 2014
How to dominate a free theme WCTO 2014How to dominate a free theme WCTO 2014
How to dominate a free theme WCTO 2014
James Strang
 
jQuery and Ruby Web Frameworks
jQuery and Ruby Web FrameworksjQuery and Ruby Web Frameworks
jQuery and Ruby Web Frameworks
Yehuda Katz
 
CSS Reset
CSS ResetCSS Reset
CSS Reset
Russ Weakley
 
Introduction to CSS3
Introduction to CSS3Introduction to CSS3
Introduction to CSS3
Doris Chen
 
Please dont touch-3.6-jsday
Please dont touch-3.6-jsdayPlease dont touch-3.6-jsday
Please dont touch-3.6-jsday
Francesco Fullone
 
What you need to know bout html5
What you need to know bout html5What you need to know bout html5
What you need to know bout html5
Kevin DeRudder
 

What's hot (20)

CSS - OOCSS, SMACSS and more
CSS - OOCSS, SMACSS and moreCSS - OOCSS, SMACSS and more
CSS - OOCSS, SMACSS and more
 
Modular HTML & CSS
Modular HTML & CSSModular HTML & CSS
Modular HTML & CSS
 
CSS3 - is everything we used to do wrong?
CSS3 - is everything we used to do wrong? CSS3 - is everything we used to do wrong?
CSS3 - is everything we used to do wrong?
 
Unit 3 (it workshop).pptx
Unit 3 (it workshop).pptxUnit 3 (it workshop).pptx
Unit 3 (it workshop).pptx
 
Advanced CSS Troubleshooting
Advanced CSS TroubleshootingAdvanced CSS Troubleshooting
Advanced CSS Troubleshooting
 
2022 HTML5: The future is now
2022 HTML5: The future is now2022 HTML5: The future is now
2022 HTML5: The future is now
 
CSS pattern libraries
CSS pattern librariesCSS pattern libraries
CSS pattern libraries
 
Be German About Your Frontend
Be German About Your FrontendBe German About Your Frontend
Be German About Your Frontend
 
ActiveDOM
ActiveDOMActiveDOM
ActiveDOM
 
Intro to CSS3
Intro to CSS3Intro to CSS3
Intro to CSS3
 
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
 
Css week11 2019 2020 for g10 by eng.osama ghandour
Css week11 2019 2020 for g10 by eng.osama ghandourCss week11 2019 2020 for g10 by eng.osama ghandour
Css week11 2019 2020 for g10 by eng.osama ghandour
 
How to dominate a free theme WCTO 2014
How to dominate a free theme WCTO 2014How to dominate a free theme WCTO 2014
How to dominate a free theme WCTO 2014
 
jQuery and Ruby Web Frameworks
jQuery and Ruby Web FrameworksjQuery and Ruby Web Frameworks
jQuery and Ruby Web Frameworks
 
CSS Reset
CSS ResetCSS Reset
CSS Reset
 
Introduction to CSS3
Introduction to CSS3Introduction to CSS3
Introduction to CSS3
 
Css 3
Css 3Css 3
Css 3
 
Please dont touch-3.6-jsday
Please dont touch-3.6-jsdayPlease dont touch-3.6-jsday
Please dont touch-3.6-jsday
 
Css 3
Css 3Css 3
Css 3
 
What you need to know bout html5
What you need to know bout html5What you need to know bout html5
What you need to know bout html5
 

Viewers also liked

Comrades
ComradesComrades
Comrades
Jesús Cepeda
 
2003 Spring Newsletter
2003 Spring Newsletter2003 Spring Newsletter
2003 Spring NewsletterDirect Relief
 
St. Mark School Parent Presentation
St. Mark School Parent PresentationSt. Mark School Parent Presentation
St. Mark School Parent Presentation
UB Alberti Center for Bullying Abuse Prevention
 
Powerpoint 1 anglais glogster
Powerpoint 1 anglais glogsterPowerpoint 1 anglais glogster
Powerpoint 1 anglais glogsterVagabondeDesmers
 
Why i want to work in a call center (and why i ultimately don't)
Why i want to work in a call center (and why i ultimately don't)Why i want to work in a call center (and why i ultimately don't)
Why i want to work in a call center (and why i ultimately don't)
Steve Talks
 
Arth2051 sp2015 syllabus
Arth2051 sp2015 syllabusArth2051 sp2015 syllabus
Arth2051 sp2015 syllabusProfWillAdams
 
Measuring the Impact of Injury to Enhance Recovery, Pam Garton, Managing Dire...
Measuring the Impact of Injury to Enhance Recovery, Pam Garton, Managing Dire...Measuring the Impact of Injury to Enhance Recovery, Pam Garton, Managing Dire...
Measuring the Impact of Injury to Enhance Recovery, Pam Garton, Managing Dire...ArthritisNT
 
2005 Summer Newsletter
2005 Summer Newsletter2005 Summer Newsletter
2005 Summer NewsletterDirect Relief
 
2007 Spring Newsletter
2007 Spring Newsletter2007 Spring Newsletter
2007 Spring NewsletterDirect Relief
 
Campus Perspectives on OpenRegistry
Campus Perspectives on OpenRegistryCampus Perspectives on OpenRegistry
Campus Perspectives on OpenRegistry
Jeremy Rosenberg
 
Hum2310 sm2015 syllabus
Hum2310 sm2015 syllabusHum2310 sm2015 syllabus
Hum2310 sm2015 syllabusProfWillAdams
 
Gatti grandi avventure
Gatti grandi avventureGatti grandi avventure
Gatti grandi avventureZoroastro01
 
CleverBear презентация
CleverBear презентацияCleverBear презентация
CleverBear презентацияTrofimov Mikhail
 
Java Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily JiangJava Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily JiangJAX London
 
Pembenahan perpajakan
Pembenahan perpajakanPembenahan perpajakan
Pembenahan perpajakan
Beemz Chocochips
 

Viewers also liked (20)

Comrades
ComradesComrades
Comrades
 
Recount text2
Recount text2Recount text2
Recount text2
 
2003 Spring Newsletter
2003 Spring Newsletter2003 Spring Newsletter
2003 Spring Newsletter
 
2005 annual report
2005 annual report2005 annual report
2005 annual report
 
2008 annual report
2008 annual report2008 annual report
2008 annual report
 
St. Mark School Parent Presentation
St. Mark School Parent PresentationSt. Mark School Parent Presentation
St. Mark School Parent Presentation
 
Tsahim 3
Tsahim 3Tsahim 3
Tsahim 3
 
Powerpoint 1 anglais glogster
Powerpoint 1 anglais glogsterPowerpoint 1 anglais glogster
Powerpoint 1 anglais glogster
 
Why i want to work in a call center (and why i ultimately don't)
Why i want to work in a call center (and why i ultimately don't)Why i want to work in a call center (and why i ultimately don't)
Why i want to work in a call center (and why i ultimately don't)
 
Arth2051 sp2015 syllabus
Arth2051 sp2015 syllabusArth2051 sp2015 syllabus
Arth2051 sp2015 syllabus
 
Measuring the Impact of Injury to Enhance Recovery, Pam Garton, Managing Dire...
Measuring the Impact of Injury to Enhance Recovery, Pam Garton, Managing Dire...Measuring the Impact of Injury to Enhance Recovery, Pam Garton, Managing Dire...
Measuring the Impact of Injury to Enhance Recovery, Pam Garton, Managing Dire...
 
2005 Summer Newsletter
2005 Summer Newsletter2005 Summer Newsletter
2005 Summer Newsletter
 
2007 Spring Newsletter
2007 Spring Newsletter2007 Spring Newsletter
2007 Spring Newsletter
 
Campus Perspectives on OpenRegistry
Campus Perspectives on OpenRegistryCampus Perspectives on OpenRegistry
Campus Perspectives on OpenRegistry
 
Hum2310 sm2015 syllabus
Hum2310 sm2015 syllabusHum2310 sm2015 syllabus
Hum2310 sm2015 syllabus
 
Gatti grandi avventure
Gatti grandi avventureGatti grandi avventure
Gatti grandi avventure
 
CleverBear презентация
CleverBear презентацияCleverBear презентация
CleverBear презентация
 
Java Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily JiangJava Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily Jiang
 
Pembenahan perpajakan
Pembenahan perpajakanPembenahan perpajakan
Pembenahan perpajakan
 
Bidnii hvns
Bidnii hvnsBidnii hvns
Bidnii hvns
 

Similar to Cssbestpracticesjstyleguidejandtips 150830184202-lva1-app6892

Web design-workflow
Web design-workflowWeb design-workflow
Web design-workflowPeter Kaizer
 
performance.ppt
performance.pptperformance.ppt
performance.ppt
fakeaccount225095
 
web dev
web devweb dev
Highly Maintainable, Efficient, and Optimized CSS
Highly Maintainable, Efficient, and Optimized CSSHighly Maintainable, Efficient, and Optimized CSS
Highly Maintainable, Efficient, and Optimized CSSZoe Gillenwater
 
Slow kinda sucks
Slow kinda sucksSlow kinda sucks
Slow kinda sucks
Tim Wright
 
Popping the Hood: How to Create Custom SharePoint Branding by Randy Drisgill ...
Popping the Hood: How to Create Custom SharePoint Branding by Randy Drisgill ...Popping the Hood: How to Create Custom SharePoint Branding by Randy Drisgill ...
Popping the Hood: How to Create Custom SharePoint Branding by Randy Drisgill ...
SPTechCon
 
Cascading Style Sheets - CSS
Cascading Style Sheets - CSSCascading Style Sheets - CSS
Cascading Style Sheets - CSS
Sun Technlogies
 
Let's dig into the Omega Theme!
Let's dig into the Omega Theme!Let's dig into the Omega Theme!
Let's dig into the Omega Theme!
Mediacurrent
 
Responsive Web Design (April 18th, Los Angeles)
Responsive Web Design (April 18th, Los Angeles)Responsive Web Design (April 18th, Los Angeles)
Responsive Web Design (April 18th, Los Angeles)
Thinkful
 
W3Conf slides - The top web features from caniuse.com you can use today
W3Conf slides - The top web features from caniuse.com you can use todayW3Conf slides - The top web features from caniuse.com you can use today
W3Conf slides - The top web features from caniuse.com you can use todayadeveria
 
Responsive content
Responsive contentResponsive content
Responsive content
honzie
 
Introduction to Bootstrap: Design for Developers
Introduction to Bootstrap: Design for DevelopersIntroduction to Bootstrap: Design for Developers
Introduction to Bootstrap: Design for Developers
Melvin John
 
The Future is Modular, Jonathan Snook
The Future is Modular, Jonathan SnookThe Future is Modular, Jonathan Snook
The Future is Modular, Jonathan Snook
Future Insights
 
Unit-3-CSS-BWT.pptx
Unit-3-CSS-BWT.pptxUnit-3-CSS-BWT.pptx
Unit-3-CSS-BWT.pptx
Tanu524249
 
Building Faster Websites
Building Faster WebsitesBuilding Faster Websites
Building Faster Websites
Craig Walker
 
Front-End Frameworks: a quick overview
Front-End Frameworks: a quick overviewFront-End Frameworks: a quick overview
Front-End Frameworks: a quick overview
Diacode
 
HTML5 for ASP.NET Developers
HTML5 for ASP.NET DevelopersHTML5 for ASP.NET Developers
HTML5 for ASP.NET Developers
Justin Lee
 
Building high performing web pages
Building high performing web pagesBuilding high performing web pages
Building high performing web pages
Nilesh Bafna
 

Similar to Cssbestpracticesjstyleguidejandtips 150830184202-lva1-app6892 (20)

Web design-workflow
Web design-workflowWeb design-workflow
Web design-workflow
 
Web
WebWeb
Web
 
performance.ppt
performance.pptperformance.ppt
performance.ppt
 
web dev
web devweb dev
web dev
 
Highly Maintainable, Efficient, and Optimized CSS
Highly Maintainable, Efficient, and Optimized CSSHighly Maintainable, Efficient, and Optimized CSS
Highly Maintainable, Efficient, and Optimized CSS
 
Slow kinda sucks
Slow kinda sucksSlow kinda sucks
Slow kinda sucks
 
Popping the Hood: How to Create Custom SharePoint Branding by Randy Drisgill ...
Popping the Hood: How to Create Custom SharePoint Branding by Randy Drisgill ...Popping the Hood: How to Create Custom SharePoint Branding by Randy Drisgill ...
Popping the Hood: How to Create Custom SharePoint Branding by Randy Drisgill ...
 
Cascading Style Sheets - CSS
Cascading Style Sheets - CSSCascading Style Sheets - CSS
Cascading Style Sheets - CSS
 
Let's dig into the Omega Theme!
Let's dig into the Omega Theme!Let's dig into the Omega Theme!
Let's dig into the Omega Theme!
 
Responsive Web Design (April 18th, Los Angeles)
Responsive Web Design (April 18th, Los Angeles)Responsive Web Design (April 18th, Los Angeles)
Responsive Web Design (April 18th, Los Angeles)
 
W3Conf slides - The top web features from caniuse.com you can use today
W3Conf slides - The top web features from caniuse.com you can use todayW3Conf slides - The top web features from caniuse.com you can use today
W3Conf slides - The top web features from caniuse.com you can use today
 
Responsive content
Responsive contentResponsive content
Responsive content
 
Introducing Cascading Style Sheets
Introducing Cascading Style SheetsIntroducing Cascading Style Sheets
Introducing Cascading Style Sheets
 
Introduction to Bootstrap: Design for Developers
Introduction to Bootstrap: Design for DevelopersIntroduction to Bootstrap: Design for Developers
Introduction to Bootstrap: Design for Developers
 
The Future is Modular, Jonathan Snook
The Future is Modular, Jonathan SnookThe Future is Modular, Jonathan Snook
The Future is Modular, Jonathan Snook
 
Unit-3-CSS-BWT.pptx
Unit-3-CSS-BWT.pptxUnit-3-CSS-BWT.pptx
Unit-3-CSS-BWT.pptx
 
Building Faster Websites
Building Faster WebsitesBuilding Faster Websites
Building Faster Websites
 
Front-End Frameworks: a quick overview
Front-End Frameworks: a quick overviewFront-End Frameworks: a quick overview
Front-End Frameworks: a quick overview
 
HTML5 for ASP.NET Developers
HTML5 for ASP.NET DevelopersHTML5 for ASP.NET Developers
HTML5 for ASP.NET Developers
 
Building high performing web pages
Building high performing web pagesBuilding high performing web pages
Building high performing web pages
 

Recently uploaded

When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 

Recently uploaded (20)

When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 

Cssbestpracticesjstyleguidejandtips 150830184202-lva1-app6892

  • 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