barake

Gradient from canvas

Mar 16th, 2011
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var renderToCanvas = function(w, h, render) {
  2.     var buffer = document.createElement('canvas');
  3.     buffer.width = w;
  4.     buffer.height = h;
  5.     render(buffer.getContext('2d'));
  6.     return buffer;
  7. };
  8.  
  9. function gradientDataURL(height) {
  10.     var canvas = renderToCanvas(1, height, function(ctx) {
  11.         var g = ctx.createLinearGradient(0, 0, 0, height);
  12.         g.addColorStop(0, '#ffffff');
  13.         g.addColorStop(1, '#000000');
  14.         ctx.fillStyle = g;
  15.         ctx.fillRect(0, 0, 1, height);
  16.     });
  17.     return canvas.toDataURL();
  18. }
  19.  
  20. function hasGradients() {
  21.     return !!jQuery.browser.msie || !!(function() {
  22.         var div = document.createElement('div');
  23.         div.style.cssText = [
  24.             "background-image:-webkit-gradient(linear, 0% 0%, 0% 100%, from(red), to(blue))",
  25.             "background-image:-moz-linear-gradient(top left, bottom right, from(red), to(blue))",
  26.             "background-image:-moz-linear-gradient(left, red, blue)"
  27.         ].join(';');
  28.         return div.style.backgroundImage;
  29.     })();
  30. }
  31.  
  32. if (!('gradient' in $.support)) $.extend($.support, {'gradient': hasGradients()});
  33.  
  34. $(function() {
  35.     if (!jQuery.support.gradient) {
  36.         var target = $('#target');
  37.         var data = gradientDataURL(target.height());
  38.         target.css({backgroundImage: "url('"+ data + "')", backgroundRepeat: 'repeat-x'});
  39.     }
  40. });
Advertisement
Add Comment
Please, Sign In to add comment