欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript 線性漸變二

 更新時間:2009年10月14日 21:33:20   作者:  
上部分我們逐一分析了各瀏覽器的可行方法,這部分將搞鼓出一個統(tǒng)一的類來實現(xiàn)跨瀏覽器的線性漸變。
先來IE的,這是最大的用戶群,如果這部分開發(fā)不出來,基本可以說不用做了。IE雖然有Gradient濾鏡,但對比其他瀏覽器的實現(xiàn)特弱,沒有多重漸變(stop-color),不能實現(xiàn)角度漸變,而且還經常失效。我的思路是這樣,假如有一個帶文本的DIV,要實現(xiàn)多重線性漸變,我們首先得把它里面的文本取出來,然后里面放幾個DIV,有幾重就放幾個,然后把它們漸變。如果是垂直漸變,這好辦,什么也不用做,只需設置其濾鏡與各個高就行了。如果水平,就讓其浮動或絕對定位,放到適當?shù)奈恢?,設置其濾鏡與寬。但漸變?yōu)V鏡竟然會在浮動后或定位后失效,這是在使用透明濾鏡時聞所未聞的。沒有辦法,祭出上古神器table。但設置長與寬時,使用style來設置是不頂用的,一定要用DOM屬性。漸變則由它的td元素負責。為了去除table元素與td元素之間,td元素與其內容之間的空白,我們還得用到cellPadding與cellSpacing。

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]

safari,chrome與opera打算都用SVG實現(xiàn)。為了減少函數(shù)的長度,特意搞了兩個輔助函數(shù)。
復制代碼 代碼如下:

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;"
}

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

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]

再把它做成類。扼要說明一下:它的第一個參數(shù)為IE,第二個為哈希。哈希中的各參數(shù)都為必選的,width,height的單位為px;type為0或者1,0代表垂直,1為水平;color-stop代表漸變體,由一個字符串數(shù)組構成,每個字符串都是由數(shù)字加逗號加顏色值組成,數(shù)字表代偏移量,單位為%,顏色值可以是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需再刷新一下頁面才能執(zhí)行]

相關文章

  • Postman如何實現(xiàn)參數(shù)化執(zhí)行及斷言處理

    Postman如何實現(xiàn)參數(shù)化執(zhí)行及斷言處理

    這篇文章主要介紹了Postman如何實現(xiàn)參數(shù)化執(zhí)行及斷言處理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • 使用layer.msg 時間設置不起作用的解決方法

    使用layer.msg 時間設置不起作用的解決方法

    今天小編就為大家分享一篇使用layer.msg 時間設置不起作用的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • 微信小程序swiper組件實現(xiàn)抖音翻頁切換視頻功能的實例代碼

    微信小程序swiper組件實現(xiàn)抖音翻頁切換視頻功能的實例代碼

    這篇文章主要介紹了微信小程序swiper組件實現(xiàn)抖音翻頁切換視頻功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • Sourcemap源代碼映射詳細介紹

    Sourcemap源代碼映射詳細介紹

    這篇文章主要為大家介紹了Sourcemap源代碼映射介紹及示例詳解解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪<BR>
    2023-04-04
  • 詳解JavaScript中的構造器Constructor模式

    詳解JavaScript中的構造器Constructor模式

    構造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading。通過本文給大家分享JavaScript中的構造器Constructor模式,對構造器constructor相關知識感興趣的朋友一起學習吧
    2016-01-01
  • js實現(xiàn)踩五彩塊游戲

    js實現(xiàn)踩五彩塊游戲

    這篇文章主要為大家詳細介紹了js實現(xiàn)踩五彩塊游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • JS實現(xiàn)元素的拖動與占位功能

    JS實現(xiàn)元素的拖動與占位功能

    這篇文章主要介紹了JS實現(xiàn)元素的拖動與占位功能,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • JS代碼優(yōu)化技巧之通俗版(減少js體積)

    JS代碼優(yōu)化技巧之通俗版(減少js體積)

    如果你問我網站中最影響網站打開速度的是什么?我會告訴是網站中的javascript,簡稱JS。模板中引用的JS文件越多,打開速度越慢,這點我深有體會,不信你看看盧松松博客首頁,使勁優(yōu)化后依然有100K的文件
    2011-12-12
  • iframe里使用JavaScript控制主頁轉向的方法

    iframe里使用JavaScript控制主頁轉向的方法

    這篇文章主要介紹了iframe里使用JavaScript控制主頁轉向的方法,涉及使用javascript實現(xiàn)iframe頁面跳轉的技巧,需要的朋友可以參考下
    2015-04-04
  • Input 特殊事件onpopertychange和oninput

    Input 特殊事件onpopertychange和oninput

    onpopertychange和oninput的區(qū)別。
    2009-06-06

最新評論