28

Is there a way to create a cross-browser, pure CSS3 text color gradient?

So, no png's. No 'webkit' only.

EDIT: To be more precise: It's CSS3 only, and it's for text, not box gradients.

EDIT: I found this solution, but it's only for webkit.

6
  • 1
    It's easy, you can refer to this article: webdesignerwall.com/tutorials/cross-browser-css-gradient Commented Jan 19, 2011 at 19:59
  • across which browsers? the ones that support CSS3? Commented Jan 19, 2011 at 20:04
  • That's limited to box gradient only, I'm afraid. I'm looking for text gradient. Commented Jan 19, 2011 at 20:17
  • Is the background a solid color? Commented Jan 19, 2011 at 22:55
  • 1
    Here's an SVG example - it uses an image rather than an SVG gradient, but that should be easy to change. Commented Jan 24, 2011 at 19:49

4 Answers 4

13

There is no cross-browser way to do this outside webkit because only webkit currently has a background-clip: text, and this extension to background-clip is not on standards track (as far as I am aware). If you want to relax your CSS3 requirement, you can accomplish the same effect cross-browser with Canvas (or SVG), but then you're talking about HTML5-capable browsers only.

Sign up to request clarification or add additional context in comments.

Comments

5

There is no "pure" CSS way at the moment, but there is a way using CSS and some duplication of content. See my server side css gradient text solution here, which doesn't require JavaScript or plain background. You can also do this client side using JavaScript, see what Dragonlabs has done here.

3 Comments

Very impressive and intuitive. Thanks for this option.
Sorry fo the double comment, but I thought it might be useful to quick add my variation of your solution: jsfiddle.net/P8k58. I used a few tricks to get it to work correctly and for my purposes I used a text shadow to finish off the effect. For the purpose of just creating a shine, however, this could easily be done with CSS content only (IE 8+ at best).
@JosephMarikle Thanks. And I like your use of :before and :after .
0

As I've already pointed out as a comment in zzzzBov's response, there is a way to achieve a text gradient in CSS3 only.

If you take the PNG solution a bit further, you can do the same trick with css3 gradients.

Of course this does only work for text that is on a uniform background color.

Comments

0

Best solution at the moment is to use a solid color as non-webkit fallback and then use the following technique ( requires webkit ):

h1 {
  color: $333;
  font-size: 72px;
  background: -webkit-linear-gradient(#eee, #333);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}
<h1>Example</h1>

1 Comment

I already pointed out that it "requires webkit" .. Did you have a better solution? Works in FF, Chrome and Safari .. @user2602584 poor user

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.