天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

javascript 線性漸變二

先來IE的,這是最大的用戶群,如果這部分開發不出來,基本可以說不用做了。IE雖然有Gradient濾鏡,但對比其他瀏覽器的實現特弱,沒有多重漸變(stop-color),不能實現角度漸變,而且還經常失效。我的思路是這樣,假如有一個帶文本的DIV,要實現多重線性漸變,我們首先得把它里面的文本取出來,然后里面放幾個DIV,有幾重就放幾個,然后把它們漸變。如果是垂直漸變,這好辦,什么也不用做,只需設置其濾鏡與各個高就行了。如果水平,就讓其浮動或絕對定位,放到適當的位置,設置其濾鏡與寬。但漸變濾鏡竟然會在浮動后或定位后失效,這是在使用透明濾鏡時聞所未聞的。沒有辦法,祭出上古神器table。但設置長與寬時,使用style來設置是不頂用的,一定要用DOM屬性。漸變則由它的td元素負責。為了去除table元素與td元素之間,td元素與其內容之間的空白,我們還得用到cellPadding與cellSpacing。

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
safari,chrome與opera打算都用SVG實現。為了減少函數的長度,特意搞了兩個輔助函數。
復制代碼 代碼如下:
var createSVG = function(tag){
return document.createElementNS("http://www.w3.org/2000/svg",tag);
};
var attr= function(node,bag){
for(var i in bag){
if(bag.hasOwnProperty(i))
node.setAttribute(i,bag[i])
}
};
var COSgradient = function(entity,stops,width,height,type){
var svg = createSVG("svg");
attr(svg,{width:width+"px",height:height+"px"})
entity.appendChild(svg);
.
var defs = createSVG("defs");
svg.appendChild(defs);
var linearGradient = createSVG("linearGradient");
defs.appendChild(linearGradient);
attr(linearGradient,{id:"nasami",x1:"0%",y1:"0%"})
if(type){
attr(linearGradient,{x2:"100%",y2:"0%"})
}else{
attr(linearGradient,{x2:"0%",y2:"100%"})
}
for(var i=0,j=0,l=stops.length;i<l;i++,j++){
var offset = stops[i].split(",")[0] + "%",
color = stops[i].split(",")[1],
stop = createSVG("stop");
attr(stop,{offset:offset,"stop-color":color});
linearGradient.appendChild(stop);
}
var rect = createSVG("rect");
svg.appendChild(rect);
attr(rect,{x:"0px",y:"0px",width:width+"px",height:height+"px",fill:"url(#nasami)"});
}

firefox則利用其私有屬性:
復制代碼 代碼如下:
var FFgradient= function(entity,stops,width,height,type){
var cssText = ";background: -moz-linear-gradient("
cssText += type? "top,bottom," :"left,right,";
.
for(var i=0,j=0,l=stops.length;i<l;i++,j++){
var offset = stops[i].split(",")[0] + "%",
color = stops[i].split(",")[1];
cssText += "color-stop("+[offset,color]+"),"
}
cssText = cssText.replace(/,$/,"")+") no-repeat;";
entity.style.cssText = cssText+"width:"+width+"px;height:"+height+"px;"
}

不過今天研磨一下,發現firefox還是支持SVG的線性漸變的,因此糾正我原來的觀點。上面的函數只是作用一種實現手段放在這里,它并沒有整合到我最終的版本中(雖然它比SVG實現短很多。)這樣一來,在老一點版本的firefox中我們也能實現線性漸變了。
下面這個運行框里的漸變效果可在所有主流瀏覽器中正常運作。

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
再把它做成類。扼要說明一下:它的第一個參數為IE,第二個為哈希。哈希中的各參數都為必選的,width,height的單位為px;type為0或者1,0代表垂直,1為水平;color-stop代表漸變體,由一個字符串數組構成,每個字符串都是由數字加逗號加顏色值組成,數字表代偏移量,單位為%,顏色值可以是red,green等名詞,也可以是六位或三位的哈希值。漸變體至少要有一個。
復制代碼 代碼如下:
new Gradient("gradient",{width:800,height:100,type:0,"color-stop":["0,red",
3."16,orange","32,yellow","48,green","64,blue","80,indigo","100,violet"]})


[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]

JavaScript技術javascript 線性漸變二,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 97国产人妻精品无码AV在线 | 国产乱辈通伦影片在线播放亚洲 | 母乳女神春日もな | 16女下面流水不遮图免费观看 | 麻花传媒XK在线观看 | 在线毛片片免费观看 | 一日本道伊人久久综合影 | 果冻传媒在线观看完整版免费 | 国产在线精品视频免费观看 | 亚洲精品久久久久久偷窥 | 秋霞电影网午夜一级鲁丝片 | 美国ZOOM动物在线观看 | X8X8拨牐拨牐X8免费视频8午夜 | 欧美多人群p刺激交换电影 欧美多毛的大隂道 | 伊人狠狠丁香婷婷综合尤物 | 泡妞高手在都市免费观看 | xx69美国 | 果冻传媒剧情在线观看 | 九九这里有精品 | 日韩 亚洲 欧美 中文 高清 | 猛烈抽插H1V1 | 成年美女黄网站色app | 最新高清无码专区 | 久爱在线中文在观看 | 国语自产一区视频 | 免费看成人毛片 | yellow日本动漫观看免费 | 免费看b站| 香蕉99久久久久成人麻豆 | 美女尿口羞羞视频 | yellow免费观看在线 | 亚洲精品久久无码AV片银杏 | 成人中文字幕在线观看 | 国产成人亚洲综合无 | 四房色播手机版 | 国语大学生自产拍在线观看 | 男男校园园bl文全肉高h寝室 | 忘忧草研究院一二三 | 一本道高清不卡v免费费 | 国产综合自拍 偷拍在线 | 欧美在线看费视频在线 |