Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
444 views
in Technique[技术] by (71.8m points)

css - What are differences between RGB vs RGBA other than 'opacity'

I have moved beyond using standard colors in CSS by declaring them orange, blue, aquamarine, etc..., and have been using rgb() like so for the same colors respectively, rgb(255,165,0), rgb(0,0,255) and rgb(127,255,212) (thanks to the ColorHighlighter package in ST3).

Upon altering a gradient for bootstrap .btn I came across rgba(). Quick research explains that a stands for alpha, and theres a whole bunch of integral math attributed to Catmull and Smith. It is also somewhat easy to find that the alpha channel is used for "alpha compositing", which can mostly be associated as "opacity".

  • Are there differences between the two other than opacity?
  • Why isn't it convention to use RGBA.(I'm assuming this since I am just now stumbling onto this)
  • Are there other limitations that should be know when using rgba() for the web?
  • Is there a shortcut to declare opacity beside a color shortcut? (ie color: salmon:.5;)
  • From a web developer standpoint, do I need to worry about the differences between ARGB, RGBA, BGRA byte order for different machines INFO?
  • Other important information?
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

RGB is a 3-channel format containing data for Red, Green, and Blue. RGBA is a 4-channel format containing data for Red, Green, Blue, and Alpha.

There is no use to the Alpha channel other than making the color transparent/opaque (or partially transparent; translucent).

In CSS, rgb() had wide browser support for several years before rgba() received the same level of support. This is one reason you will find more rgb() in CSS than rgba(). The other reason is that translucency isn't something you typically use everywhere.

You might find an RGB value packed into 16 bits, with 5 bits for Blue and Red, and 6 bits for Green (green gets more bits because the eye is more discerning to shades of green). You might also find an RGBA value packed into 16 bits, with 5 bits for each color and 1 bit for alpha. With one bit, you can only make the color fully transparent or not transparent at all.

Typically nowadays, you'll find RGB and RGBA packed into 32 bit values, with 8 bits for each color, and 8 bits for alpha (or left blank for RGB).

In CSS, the designers decided to use values 0-255 (the range for an 8 bit value) for the Red, Green, and Blue, but they use a value between 0.0 and 1.0 for the Alpha channel. The actual byte format for the color is irrelevant to web developers.

In my experience, neither rgb() nor rgba() are used very often in CSS. Hex colors are way more dominant, and predated them by several more years.

HSL is actually a much better format for working with colors and is supported in CSS (IE9+, Firefox, Chrome, Safari, and in Opera 10+.).

http://www.w3schools.com/cssref/css_colors_legal.asp


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...