zoukankan      html  css  js  c++  java
  • js实现颜色渐变

    #grad {
      background: -webkit-linear-gradient(red, blue); /* Safari 5.1 - 6.0 */
      background: -o-linear-gradient(red, blue); /* Opera 11.1 - 12.0 */
      background: -moz-linear-gradient(red, blue); /* Firefox 3.6 - 15 */
      background: linear-gradient(red, blue); /* 标准的语法 */
    }

    上面是c3的实现方法,但是现在对c3的支持不是很好,所以只有通过其他的方式来实现。

    下面则是用js来实现

           var setGradient = (function() {
                    //private variables;
                    var p_dCanvas = document.createElement('canvas');
                    var p_useCanvas = !!(typeof(p_dCanvas.getContext) == 'function');
                    var p_dCtx = p_useCanvas ? p_dCanvas.getContext('2d') : null;
                    var p_isIE = /*@cc_on!@*/ false;
                    //test if toDataURL() is supported by Canvas since Safari may not support it
                    try {
                        p_dCtx.canvas.toDataURL()
                    } catch(err) {
                        p_useCanvas = false;
                    };
                    if(p_useCanvas) {
                        return function(dEl, sColor1, sColor2, bRepeatY) {
                            if(typeof(dEl) == 'string') dEl = document.getElementById(dEl);
                            if(!dEl) return false;
                            var nW = dEl.offsetWidth;
                            var nH = dEl.offsetHeight;
                            p_dCanvas.width = nW;
                            p_dCanvas.height = nH;
                            var dGradient;
                            var sRepeat;
                            // Create gradients
                            if(bRepeatY) {
                                dGradient = p_dCtx.createLinearGradient(0, 0, nW, 0);
                                sRepeat = 'repeat-y';
                            } else {
                                dGradient = p_dCtx.createLinearGradient(0, 0, 0, nH);
                                sRepeat = 'repeat-x';
                            }
                            dGradient.addColorStop(0, sColor1);
                            dGradient.addColorStop(1, sColor2);
                            p_dCtx.fillStyle = dGradient;
                            p_dCtx.fillRect(0, 0, nW, nH);
                            var sDataUrl = p_dCtx.canvas.toDataURL('image/png');
                            with(dEl.style) {
                                backgroundRepeat = sRepeat;
                                backgroundImage = 'url(' + sDataUrl + ')';
                                backgroundColor = sColor2;
                            };
                        }
                    } else if(p_isIE) {
                        p_dCanvas = p_useCanvas = p_dCtx = null;
                        return function(dEl, sColor1, sColor2, bRepeatY) {
                            if(typeof(dEl) == 'string') dEl = document.getElementById(dEl);
                            if(!dEl) return false;
                            dEl.style.zoom = 1;
                            var sF = dEl.currentStyle.filter;
                            dEl.style.filter += ' ' + ['progid:DXImageTransform.Microsoft.gradient( GradientType=', +(!!bRepeatY), ',enabled=true,startColorstr=', sColor1, ', endColorstr=', sColor2, ')'].join('');
                        };
                    } else {
                        p_dCanvas = p_useCanvas = p_dCtx = null;
                        return function(dEl, sColor1, sColor2) {
                            if(typeof(dEl) == 'string') dEl = document.getElementById(dEl);
                            if(!dEl) return false;
                            with(dEl.style) {
                                backgroundColor = sColor2;
                            };
                            //alert('your browser does not support gradient effet');
                        }
                    }
                })();
    
            setGradient('nth2', '#012D5E', '#07779D', 1);
        第一个参数是容器名(id)接下来则是起始颜色和结束颜色,最后1代表从左到右 0表示从上到下
  • 相关阅读:
    tar打包如何不打包某一个文件夹(排除某些文件夹)
    第一个SpringBoot应用
    Linux(以RHEL7为例)下添加工作区的方法|| The Way To Add Workspace On Linux
    Linux(以centos7为例)下自动挂载NTFS硬盘
    基于Moodle的IT课程辅助教育平台搭建
    搭建基于python +opencv+Beautifulsoup+Neurolab机器学习平台
    如何利用word2013写图文并茂的博客
    如何安装win10+Red Hat Enterprise Linux双系统?
    课堂练习:ex 4-20
    实验二 函数重载、函数模板、简单类的定义和实现
  • 原文地址:https://www.cnblogs.com/colaman/p/7195598.html
Copyright © 2011-2022 走看看