如题 :oops: 字数不够 :x 还是不够:shock: 字数够了吧 :D
1条回答 默认 最新
- zhoujuan520 2009-03-25 17:28关注
引用http://blog.csdn.net/nhconch/archive/2008/07/30/2739733.aspx
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'); } } })();
用JS实现渐变效果,兼容各款浏览器
以 住做B/S的系统都是以IE浏览器为主,基本上忽略其他的浏览器,这次决定来个大兼容,但在实现背景渐变上就是个大麻烦。本想用图片来实现的,但要兼顾多 种分辨率实在不好办,最后在网上找到一个Javascript的实现办法,兼容IE6/7、FF、Safari等,相当完美。好东西不敢独占,贴出来大家 共享://调用方式:
setGradient('example1','#4ddbbe','#d449cc',1); setGradient(document.body, '#629be2','#333ebe',0);本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 如何让企业微信机器人实现消息汇总整合
- ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
- ¥15 如何用Python爬取各高校教师公开的教育和工作经历
- ¥15 TLE9879QXA40 电机驱动
- ¥20 对于工程问题的非线性数学模型进行线性化
- ¥15 Mirare PLUS 进行密钥认证?(详解)
- ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
- ¥20 想用ollama做一个自己的AI数据库
- ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
- ¥15 请问怎么才能复现这样的图呀