SlideShare une entreprise Scribd logo
1  sur  25
Colors in CSS3
  A presentation by Lea Verou
Color formats in CSS2
•   Hex format – #RRGGBB
•   Shorthand hex format - #RGB
•   rgb() format – rgb(red, green, blue)
•   Named colors – white, black, beige etc
New color formats in CSS3
•   HSL – hsl(hue, saturation, lightness)
•   CMYK – cmyk(cyan, magenta, yellow, black)
•   HSLA – hsl(hue, saturation, lightness, alpha)
•   RGBA – rgba(red, green, blue, alpha)
HSL
• HSL stands for Hue, Saturation, Lightness.
• A format that is easier for humans to
  understand and manipulate.
• HSL makes it much easier to create color
  palettes: You just use a color picker for the
  basic colors of the palette and not for the
  lighter/darker variants.
CMYK
• CMYK stands for Cyan, Magenta, Yellow, blacK
• Easier for most people to understand and
  manipulate.
• Easier to produce good-looking colors
• Allows us to define precisely how our colors will
  get printed
• Graphic designers are already accustomed to it so
  it will be easier for them to switch to Web design
• Smaller color gamut than RGB
• Not supported yet by any browser 
RGBA and HSLA
• RGBA and HSLA allow for a fourth parameter –
  Alpha.
• Alpha defines the transparency of the color –
  where 1 is fully opaque and 0 is fully
  transparent.
• This brings a revolution in web design that
  many designers are still unaware of.
Isn’t opacity enough?
• No! Opacity is very useful but it’s not enough
• Opacity allows us to make the whole
  container semi-transparent, including it's
  contents
• RGBA/HSLA allow us to make only the
  border/background/text color/etc semi
  transparent which opens up great possibilities
  in web design
Isn’t opacity enough? Example
Browser support for
             RGBA/HSLA/HSL
•   Mozilla Firefox 3+
•   Opera 10+ (still in Alpha)
•   Apple Safari 3+
•   Google Chrome
RGBA backgrounds: workarounds
• RGBA backgrounds are the easiest ones for
  compatibility workarounds.
• They are based on the fact that if a browser
  doesn’t understand RGBA, it ignores the
  declaration that contains RGBA values
  completely.
• They are used like this:
  /* Workarounds here */
  background: rgba(255,0,80,0.5);
• Important! The declaration that contains the
  RGBA value should always come after the
  workarounds.
RGBA backgrounds: workarounds
• IE gradient filter
• 1x1 png images:
   – As external files
   – Embedded in the CSS via Data URIs
Workaround for IE: Gradient filter
• IE supports a proprietary “extended hex” format in the
  parameters of some of it’s filters.
• In that format the Alpha parameter is converted to the range
  00-FF and concatenated in front of a normal hex value, which
  results to #AARRGGBB
• We can use the gradient filter to simulate RGBA backgrounds
  for IE, which looks like this:
  filter:progid:DXImageTransform.Microsoft.grad
  ient(startColorstr=#CC000000, endColorstr=#CC
  000000);
  That's equivalent to: background:rgba(0,0,0,0.8);
Problems with the filter workaround

• Filters make the text aliased:
Problems with the filter workaround

Filters are lengthy and add lots of non-standard clutter in
our CSS:
-ms-filter:quot;progid:DXImageTransform.Microsoft.grad
ient(startColorstr=#CC000000, endColorstr=#CC000000)
quot;; /* For IE8 beta */
filter:progid:DXImageTransform.Microsoft.gradient(st
artColorstr=#CC000000, endColorstr=#CC000000);
zoom:1; /* To give the element “layout” */


O_o!!
Problems with the
filter workaround

Doesn't play along
well with other
workarounds, since it
doesn't modify the
background of the
element.
More problems with the filter
           workaround
• Filters are slow
• Filters are only for IE. What about Firefox 2-
  , Opera 9.6-?
• To use that method, RGBA values need to be
  converted to hex values. Too much of a hassle.
PNGs via Data URIs
• Data URIs allow us to embed a file inside our
  CSS
• They look like this:
  background: url(data:image/png;base64,
  iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAA
  fFcSJAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/w
  D/oL2nkwAAAA1JREFUCNdjYGBgOAMAANEAzdAP7
  DMAAAAASUVORK5CYII=);
Disadvantages of Data URIs
• IE7- doesn’t support Data URIs, so if we use
  them, the filter method and all it’s
  disadvantages should be used as well in order
  to support IE7-.
• Not easily changeable, you will need a
  converter of some sort to change the color
  even a little bit.
• Clutter in our CSS file. Lots of clutter!
• The image itself cannot be cached.
Advantages of Data URIs
• Less external http requests = faster website
• The png image loads instantly, since it’s
  embedded in the CSS file. Not a single glimpse
  of containers without backgrounds!
External png images
• You don’t need to create them yourself, let PHP do
  the hard work!
• You can find a script of mine that does exactly that
  here: http://leaverou.me/2009/02/bulletproof-
  cross-browser-rgba-backgrounds/
• It’s used like this:
  background: url(rgba.php?r=255&g=0&b=80&a=50);
  or
  background: url(rgba.php?name=white&a=50);
RGBA/HSLA in other CSS
           properties
• RGBA/HSLA is not only useful for
  backgrounds! Backgrounds are just the easiest
  to workaround and the most frequently
  needed to.
• For solid borders, you can use 2 containers
  with an appropriate padding and background.
• For text color, in most cases opacity (or the
  alpha filter for IE) is sufficient.
Detect RGBA via JavaScript
• Try to assign an RGBA value to a CSS property
  that accepts color values (e.g.
  color, background-color, border-color etc) on
  any element .
• If the browser is not RGBA capable, it will do
  nothing, and may also throw an error (IE)
• Otherwise the value will be applied
RGBA detection: code
function supportsRGBA() {
    var elem = document.getElementsByTagName('script')[0],
       prevColor = elem.style.color;
    try {
       elem.style.color = 'rgba(1,5,13,0.44)';
    } catch(e) {}
    var result = elem.style.color != prevColor;
    elem.style.color = prevColor;
    return result;
}
RGBA detection: improvements
• Performance: Cache the result
• Accuracy: What happens if the element
  already has that rgba color?
• Completeness: We can detect HSL, HSLA and
  CMYK in the exact same way.
Thank you!
You can find me at:
• http://leaverou.me
• http://twitter.com/LeaVerou
• leaverou@fresset.gr

Contenu connexe

Tendances

Document Object Model
Document Object ModelDocument Object Model
Document Object Model
chomas kandar
 
Advanced Javascript
Advanced JavascriptAdvanced Javascript
Advanced Javascript
Adieu
 
Javascript variables and datatypes
Javascript variables and datatypesJavascript variables and datatypes
Javascript variables and datatypes
Varun C M
 

Tendances (20)

Css ppt
Css pptCss ppt
Css ppt
 
JavaScript Programming
JavaScript ProgrammingJavaScript Programming
JavaScript Programming
 
Document Object Model
Document Object ModelDocument Object Model
Document Object Model
 
Css backgrounds
Css   backgroundsCss   backgrounds
Css backgrounds
 
Cascading Style Sheets - Part 01
Cascading Style Sheets - Part 01Cascading Style Sheets - Part 01
Cascading Style Sheets - Part 01
 
Introduction to Javascript
Introduction to JavascriptIntroduction to Javascript
Introduction to Javascript
 
CSS Basics
CSS BasicsCSS Basics
CSS Basics
 
Cascading style sheet
Cascading style sheetCascading style sheet
Cascading style sheet
 
Chapter 13: Colors and Backgrounds
Chapter 13: Colors and BackgroundsChapter 13: Colors and Backgrounds
Chapter 13: Colors and Backgrounds
 
JavaScript - Chapter 12 - Document Object Model
  JavaScript - Chapter 12 - Document Object Model  JavaScript - Chapter 12 - Document Object Model
JavaScript - Chapter 12 - Document Object Model
 
Javascript 101
Javascript 101Javascript 101
Javascript 101
 
HTML5 Canvas - Basics.pptx
HTML5 Canvas - Basics.pptxHTML5 Canvas - Basics.pptx
HTML5 Canvas - Basics.pptx
 
Advanced Javascript
Advanced JavascriptAdvanced Javascript
Advanced Javascript
 
Introduction to PHP
Introduction to PHPIntroduction to PHP
Introduction to PHP
 
Css3
Css3Css3
Css3
 
JavaScript - Chapter 8 - Objects
 JavaScript - Chapter 8 - Objects JavaScript - Chapter 8 - Objects
JavaScript - Chapter 8 - Objects
 
Javascript event handler
Javascript event handlerJavascript event handler
Javascript event handler
 
Javascript variables and datatypes
Javascript variables and datatypesJavascript variables and datatypes
Javascript variables and datatypes
 
JavaScript Basics
JavaScript BasicsJavaScript Basics
JavaScript Basics
 
jQuery for beginners
jQuery for beginnersjQuery for beginners
jQuery for beginners
 

En vedette

Social Networks Ev.Liotzis
Social Networks Ev.LiotzisSocial Networks Ev.Liotzis
Social Networks Ev.Liotzis
guest5e75c
 
Turning to the client side
Turning to the client sideTurning to the client side
Turning to the client side
Lea Verou
 
Rain Up Mc Presentation
Rain Up Mc PresentationRain Up Mc Presentation
Rain Up Mc Presentation
guest1c3c761
 

En vedette (14)

Social Networks Ev.Liotzis
Social Networks Ev.LiotzisSocial Networks Ev.Liotzis
Social Networks Ev.Liotzis
 
Turning to the client side
Turning to the client sideTurning to the client side
Turning to the client side
 
Google Application Engine
Google Application EngineGoogle Application Engine
Google Application Engine
 
Kapou Gr
Kapou GrKapou Gr
Kapou Gr
 
Azure
AzureAzure
Azure
 
Antonis Plessas Podcamp Music Use Licencing
Antonis Plessas Podcamp Music Use LicencingAntonis Plessas Podcamp Music Use Licencing
Antonis Plessas Podcamp Music Use Licencing
 
Drupal Introduction
Drupal IntroductionDrupal Introduction
Drupal Introduction
 
Programming Humans
Programming HumansProgramming Humans
Programming Humans
 
Rain Up Mc Presentation
Rain Up Mc PresentationRain Up Mc Presentation
Rain Up Mc Presentation
 
Metodologias de Design de Interação
Metodologias de Design de InteraçãoMetodologias de Design de Interação
Metodologias de Design de Interação
 
Mastering CSS3 gradients
Mastering CSS3 gradientsMastering CSS3 gradients
Mastering CSS3 gradients
 
Object Oriented CSS
Object Oriented CSSObject Oriented CSS
Object Oriented CSS
 
Drupal 6 Theming using the Zen Theme
Drupal 6 Theming using the Zen ThemeDrupal 6 Theming using the Zen Theme
Drupal 6 Theming using the Zen Theme
 
Intro to HTML 5 / CSS 3
Intro to HTML 5 / CSS 3Intro to HTML 5 / CSS 3
Intro to HTML 5 / CSS 3
 

Similaire à Colors In CSS3

Web Design Workshop
Web Design WorkshopWeb Design Workshop
Web Design Workshop
SuseZ
 

Similaire à Colors In CSS3 (20)

Photo echance. Problems. Solutions. Ideas
Photo echance. Problems. Solutions. Ideas Photo echance. Problems. Solutions. Ideas
Photo echance. Problems. Solutions. Ideas
 
Css3 color
Css3 colorCss3 color
Css3 color
 
Css3 color
Css3 colorCss3 color
Css3 color
 
css trasition explanation about our project
css trasition explanation about our projectcss trasition explanation about our project
css trasition explanation about our project
 
Web Design Workshop
Web Design WorkshopWeb Design Workshop
Web Design Workshop
 
Css gradients
Css gradientsCss gradients
Css gradients
 
Professional Css
Professional CssProfessional Css
Professional Css
 
app/assets/stylesheets - How to not make a mess
app/assets/stylesheets - How to not make a messapp/assets/stylesheets - How to not make a mess
app/assets/stylesheets - How to not make a mess
 
Artdm171 Week6 Images
Artdm171 Week6 ImagesArtdm171 Week6 Images
Artdm171 Week6 Images
 
CSSO – compress CSS (english version)
CSSO – compress CSS (english version)CSSO – compress CSS (english version)
CSSO – compress CSS (english version)
 
CSS3: Ripe and Ready
CSS3: Ripe and ReadyCSS3: Ripe and Ready
CSS3: Ripe and Ready
 
Lesson 02
Lesson 02Lesson 02
Lesson 02
 
PNGHack 1.0 Presentation
PNGHack 1.0 PresentationPNGHack 1.0 Presentation
PNGHack 1.0 Presentation
 
Y Pipes Mashup Camp
Y Pipes Mashup CampY Pipes Mashup Camp
Y Pipes Mashup Camp
 
Write LESS. DO more.
Write LESS. DO more.Write LESS. DO more.
Write LESS. DO more.
 
HTML5 and CSS3 for Teachers
HTML5 and CSS3 for TeachersHTML5 and CSS3 for Teachers
HTML5 and CSS3 for Teachers
 
pastel
pastelpastel
pastel
 
pastel
pastelpastel
pastel
 
CSS Less framework overview, Pros and Cons
CSS Less framework overview, Pros and ConsCSS Less framework overview, Pros and Cons
CSS Less framework overview, Pros and Cons
 
Tools for Modern Web Design
Tools for Modern Web DesignTools for Modern Web Design
Tools for Modern Web Design
 

Dernier

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Dernier (20)

Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 

Colors In CSS3

  • 1. Colors in CSS3 A presentation by Lea Verou
  • 2. Color formats in CSS2 • Hex format – #RRGGBB • Shorthand hex format - #RGB • rgb() format – rgb(red, green, blue) • Named colors – white, black, beige etc
  • 3. New color formats in CSS3 • HSL – hsl(hue, saturation, lightness) • CMYK – cmyk(cyan, magenta, yellow, black) • HSLA – hsl(hue, saturation, lightness, alpha) • RGBA – rgba(red, green, blue, alpha)
  • 4. HSL • HSL stands for Hue, Saturation, Lightness. • A format that is easier for humans to understand and manipulate. • HSL makes it much easier to create color palettes: You just use a color picker for the basic colors of the palette and not for the lighter/darker variants.
  • 5. CMYK • CMYK stands for Cyan, Magenta, Yellow, blacK • Easier for most people to understand and manipulate. • Easier to produce good-looking colors • Allows us to define precisely how our colors will get printed • Graphic designers are already accustomed to it so it will be easier for them to switch to Web design • Smaller color gamut than RGB • Not supported yet by any browser 
  • 6. RGBA and HSLA • RGBA and HSLA allow for a fourth parameter – Alpha. • Alpha defines the transparency of the color – where 1 is fully opaque and 0 is fully transparent. • This brings a revolution in web design that many designers are still unaware of.
  • 7. Isn’t opacity enough? • No! Opacity is very useful but it’s not enough • Opacity allows us to make the whole container semi-transparent, including it's contents • RGBA/HSLA allow us to make only the border/background/text color/etc semi transparent which opens up great possibilities in web design
  • 9. Browser support for RGBA/HSLA/HSL • Mozilla Firefox 3+ • Opera 10+ (still in Alpha) • Apple Safari 3+ • Google Chrome
  • 10. RGBA backgrounds: workarounds • RGBA backgrounds are the easiest ones for compatibility workarounds. • They are based on the fact that if a browser doesn’t understand RGBA, it ignores the declaration that contains RGBA values completely. • They are used like this: /* Workarounds here */ background: rgba(255,0,80,0.5); • Important! The declaration that contains the RGBA value should always come after the workarounds.
  • 11. RGBA backgrounds: workarounds • IE gradient filter • 1x1 png images: – As external files – Embedded in the CSS via Data URIs
  • 12. Workaround for IE: Gradient filter • IE supports a proprietary “extended hex” format in the parameters of some of it’s filters. • In that format the Alpha parameter is converted to the range 00-FF and concatenated in front of a normal hex value, which results to #AARRGGBB • We can use the gradient filter to simulate RGBA backgrounds for IE, which looks like this: filter:progid:DXImageTransform.Microsoft.grad ient(startColorstr=#CC000000, endColorstr=#CC 000000); That's equivalent to: background:rgba(0,0,0,0.8);
  • 13. Problems with the filter workaround • Filters make the text aliased:
  • 14. Problems with the filter workaround Filters are lengthy and add lots of non-standard clutter in our CSS: -ms-filter:quot;progid:DXImageTransform.Microsoft.grad ient(startColorstr=#CC000000, endColorstr=#CC000000) quot;; /* For IE8 beta */ filter:progid:DXImageTransform.Microsoft.gradient(st artColorstr=#CC000000, endColorstr=#CC000000); zoom:1; /* To give the element “layout” */ O_o!!
  • 15. Problems with the filter workaround Doesn't play along well with other workarounds, since it doesn't modify the background of the element.
  • 16. More problems with the filter workaround • Filters are slow • Filters are only for IE. What about Firefox 2- , Opera 9.6-? • To use that method, RGBA values need to be converted to hex values. Too much of a hassle.
  • 17. PNGs via Data URIs • Data URIs allow us to embed a file inside our CSS • They look like this: background: url(data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAA fFcSJAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/w D/oL2nkwAAAA1JREFUCNdjYGBgOAMAANEAzdAP7 DMAAAAASUVORK5CYII=);
  • 18. Disadvantages of Data URIs • IE7- doesn’t support Data URIs, so if we use them, the filter method and all it’s disadvantages should be used as well in order to support IE7-. • Not easily changeable, you will need a converter of some sort to change the color even a little bit. • Clutter in our CSS file. Lots of clutter! • The image itself cannot be cached.
  • 19. Advantages of Data URIs • Less external http requests = faster website • The png image loads instantly, since it’s embedded in the CSS file. Not a single glimpse of containers without backgrounds!
  • 20. External png images • You don’t need to create them yourself, let PHP do the hard work! • You can find a script of mine that does exactly that here: http://leaverou.me/2009/02/bulletproof- cross-browser-rgba-backgrounds/ • It’s used like this: background: url(rgba.php?r=255&g=0&b=80&a=50); or background: url(rgba.php?name=white&a=50);
  • 21. RGBA/HSLA in other CSS properties • RGBA/HSLA is not only useful for backgrounds! Backgrounds are just the easiest to workaround and the most frequently needed to. • For solid borders, you can use 2 containers with an appropriate padding and background. • For text color, in most cases opacity (or the alpha filter for IE) is sufficient.
  • 22. Detect RGBA via JavaScript • Try to assign an RGBA value to a CSS property that accepts color values (e.g. color, background-color, border-color etc) on any element . • If the browser is not RGBA capable, it will do nothing, and may also throw an error (IE) • Otherwise the value will be applied
  • 23. RGBA detection: code function supportsRGBA() { var elem = document.getElementsByTagName('script')[0], prevColor = elem.style.color; try { elem.style.color = 'rgba(1,5,13,0.44)'; } catch(e) {} var result = elem.style.color != prevColor; elem.style.color = prevColor; return result; }
  • 24. RGBA detection: improvements • Performance: Cache the result • Accuracy: What happens if the element already has that rgba color? • Completeness: We can detect HSL, HSLA and CMYK in the exact same way.
  • 25. Thank you! You can find me at: • http://leaverou.me • http://twitter.com/LeaVerou • leaverou@fresset.gr