Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CSS or PHP? color that is 80% of original but without "transparency"?

Tags:

css

php

colors

this might be a tough question.

I have a php function that returns a color value in rgba() with an argument $alpha.

function colorWheel($alpha) {

   "rgba(170, 135, 178, ".$alpha.")"
   …
}

So when calling …

.title { color: <?php echo colorWheel(.8); ?>; }

… I get rgba(170, 135, 178, .8);


The problem I have with this is that the color is "transparent" and shows "overlays".

enter image description here

However what I really like to have is just 80% of the color value! Without any transparent overlays.

The question is now how to solve this?

Any creative ideas how to do that? I don't need to use rgba() it's just the easiest thing that came to my mind. Is there a CSS way not to blend overlaying shapes that have an alpha value?

Or is there a php solution to calculate a the 80% version of rgb(170, 135, 178)? It is important that this calculation works dynamically with the function because there are more colors in the function - this is a follow-up question to "How to return a color-value based a date and random?"!

Thank you in advance.

like image 615
matt Avatar asked Jan 18 '13 12:01

matt


People also ask

What is transparent color code in CSS?

Transparency using RGBA An RGBA color value is specified with: rgba(red, green, blue, alpha). The alpha parameter is a number between 0.0 (fully transparent) and 1.0 (fully opaque). Tip: You will learn more about RGBA Colors in our CSS Colors Chapter.

Is there a color code for transparent?

You can actually apply a hex code color that is transparent. The hex code for transparent white (not that the color matters when it is fully transparent) is two zeros followed by white's hex code of FFFFFF or 00FFFFFF.

What is the difference between opacity and transparency in CSS?

Opacity is a measure of how opaque an item is and transparency is a measure of how transparent it appears. Both work nearly the same way but at 100% transparent, the element will be completely invisible, while with the opacity set to 100% it be fully visible.

What are the CSS color values?

The value in the CSS color property can be expressed as a hexadecimal value, rgb value, or as a named color. Color values can be expressed in hexadecimal values such as #FFFFFF, #000000, and #FF0000. Color values can be expressed using rgb such as rgb(255,255,255), rgb(0,0,0), and rgb(255,0,0).


1 Answers

The Question is what your definition of "80% of the color" actually is.

CSS has 2 color spaces available at the moment: RGB and HSL (which is actually supported pretty well).

You could do the following RGB calculation:

function colorWheel($alpha) {

    'rgba('.$r*$alpha.','.$g*$alpha.','.$b*$alpha.', 1)';
    …
}

Or you could take HSL and just reduce the luminance (and or Saturation) channel by 20%. The HSL colorspace is more intuitive when doing things like making colors darker/brighter.

function colorWheel($alpha) {

    "hsla($h,$s,".$l*$alpha.",1)";
    // or
    // ("hsla($h, "+$s*$alpha+", $l, 1)";)
    …
}

These all yield (slightly) different results.

The colorspaces can be converted into each other via some not too complicated formulas. Perhaps you should take a look at a random colorpicker(e.g. this one or that one) and then decide, which way of calculation suits you best.

like image 83
Christoph Avatar answered Sep 30 '22 14:09

Christoph