CSS3 Gradients to reproduce an 'inner glow' effect from Illustrator with border-radius applied

37,766

Solution 1

It seems like you're trying to produce a gradient to replicate this:

"I then applied an 'inner glow' to it with a 25% opacity, 8px blur, white from the center."

You can do exactly that using an inset box-shadow. For example:

-moz-box-shadow: inset 0 0 8px rgba(0,0,0, 0.25);
-webkit-box-shadow: inset 0 0 8px rgba(0,0,0, 0.25);

Solution 2

With no extra markup:

Radial gradients are very difficult to control, and work much more differently across browsers than linear gradients do. And, unlike an inner glow, they will actually be circular rather than matching the mostly-rectangular contours of your box.

Since every browser that allows box-shadows also allows rgba and multiple-backgrounds, I would use a combination of two linear gradients, stacked and using rgba colors - one horizontally and one vertically. Something along these lines (replacing my colors with what you need):

section#featured footer p a {
  background-color: #000;
  background-image: -moz-linear-gradient(
    left, 
    rgba(255,255,255,.5), 
    rgba(255,255,255,0) 10%, 
    rgba(255,255,255,0) 90%, 
    rgba(255,255,255,.5)
  ), -moz-linear-gradient(
    top, 
    rgba(255,255,255,.5), 
    rgba(255,255,255,0) 10%, 
    rgba(255,255,255,0) 90%, 
    rgba(255,255,255,.5)
  );
  background-image: -webkit-gradient(
    /* webkit's syntax for the same horizontal gradient */
    ), -webkit-gradient(
    /* webkit's syntax for the same vertical gradient */
    );
} 

Solution 3

You can also create a radial gradient that goes from white to transparent on an overlayed div. I used this awesome css3 generating tool that gives you the all the needed css3 for cross browser compatibility.

http://www.colorzilla.com/gradient-editor/

Hope this helps somebody!

Share:
37,766
RichardTape
Author by

RichardTape

WordPress developer originally from Manchester, England and now living and loving life in Vancouver, Canada.

Updated on July 10, 2020

Comments

  • RichardTape
    RichardTape almost 4 years

    I am in the process of trying to get my head properly around CSS3 Gradients (specifically radial ones) and in doing so I think I've set myself a relatively tough challenge.

    In Adobe Illustrator I have created the following 'button' style.

    Button style screenshot

    To create this image I created a rectangle with a background colour of rgb(63,64,63) or #3F403F, then 'stylized' it to have a 15px border radius.

    I then applied an 'inner glow' to it with a 25% opacity, 8px blur, white from the center. Finally, I applied a 3pt white stroke on it. (I'm telling you all of this in case you wished to reproduce it, if the image above isn't sufficient.)

    So, my question is thus:

    Is it possible to recreate this 'button' using CSS without the need for an image?

    I am aware of the 'limitations' of Internet Explorer (and for the sake of this experiment, I couldn't give a monkeys). I am also aware of the small 'bug' in webkit which incorrectly renders an element with a background colour, border-radius and a border (with a different color to the background-color) - it lets the background color bleed through on the curved corners.

    My best attempt so far is fairly pathetic, but for reference here is the code:

    section#featured footer p a
    {
        color: rgb(255,255,255);
        text-shadow: 1px 1px 1px rgba(0,0,0,0.6);
        text-decoration: none;
        padding: 5px 10px;
        border-radius: 15px;
        -moz-border-radius: 15px;
        -webkit-border-radius: 15px;
        border: 3px solid rgb(255,255,255);
        background: rgb(98,99,100);
    
        background: -moz-radial-gradient(
            50% 50%, 
            farthest-side, 
            #626364, 
            #545454
        );
        background: -webkit-gradient(
            radial, 
            50% 50%,
            1px,
            50% 50%,
            5px,
            from(rgb(98,99,100)),
            to(rgb(84,84,84))
        );
    }
    

    Basically, terrible. Any hints or tips gratefully accepted and thank you very much in advance for them!

  • Ian Storm Taylor
    Ian Storm Taylor about 14 years
    Oh and you're going to want to add the -webkit prefixes for Safari as well. But like you said, Safari lets that border-radius creep out a little bit.
  • Ian Storm Taylor
    Ian Storm Taylor about 14 years
    Hey, do you have a live preview of this? I'm curious to see how it works... I can't get it to work by just copy pasting. Thanks!
  • Ian Storm Taylor
    Ian Storm Taylor about 14 years
    Don't do this... Dan provided a much better and faster way to get what you are after.
  • Mhmd
    Mhmd over 12 years
    Thanks :), add also box-shadow to be applied to IE