javascript 線性漸層三

來源:互聯網
上載者:User

IE還有一個利器至今沒有被使用過,那就是VML。雖然比不上SVG,但它還是非常強大的。在實現漸層上,其fill還比IE的Gragient濾鏡強悍得多了。不過VML出現得比較早,只支援很少的顏色名,如red,blue,yellow,其他如orange就可以搞死它了。因此要使用VML做線性漸層,我們得對這些顏色名做一下轉換。
HTML4的顏色值
black = #000000 green = #008000 silver = #c0c0c0 lime = #00ff00
gray = #808080 olive = #808000 white = #ffffff yellow = #ffff00
maroon = #800000 navy = #000080 red = #ff0000 blue = #0000ff
purple = #800080 teal = #008080 fuchsia = #ff00ff aqua = #00ffff

我們可以在Firefox官網以及W3C瞭解到更多的顏色值。 複製代碼 代碼如下:var htmlcolor={ black :"#000",green :"#008000",silver :"#c0c0c0",lime :"#0f0",
gray :"#808080",olive :"#808000",white :"#fff",yellow :"#ff0",
maroon :"#800000",navy :"#000080",red :"#f00",blue :"#00f",
purple :"#800080",teal :"#008080",fuchsia :"#f0f",aqua :"#0ff",
indigo :"#4b0082",orange : "#ffa500",sienna :"#a0522d",plum :"#dda0dd",
gold :"#ffd700", tan :"#d2b48c", snow :"#fffafa",violet :"#ee82ee"
}

接著我們在需要線性漸層的那個元素內部建立一個同樣大小的rect元素,然后里面再添加一個fill元素,用來設定漸層。偽碼如下: 複製代碼 代碼如下:<div class="gradient" style="position:relative;width:width;height:height">
javascript線性漸層 by 司徒正美 實現多重水平漸層效果
<vml:rect style="position:absolute;width:width;height;top:0;left:0" stroked="f" >
<vml:fill colors="與SVG相對應的color-stop" focus="100%" type="gradient" method="linear"/>
</vml:rect>
</div>

<meta charset="utf-8"><meta name="keywords" content="javascript線性漸層 by 司徒正美"><meta name="description" content="javascript線性漸層 by 司徒正美"><br /><style type="text/css"> .gradient{ width:800px; height:100px; } </style><p>javascript線性漸層 by 司徒正美 實現多重水平漸層效果javascript線性漸層 by 司徒正美 實現多重垂直漸層效果<p>
[Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]

利用VML實現IE的線性漸層後整個類的長度減少一半。
我們再來看如何?角度漸層,IE那邊好辦,直接傳入一個角就行了(0—360,也可以為負數)。SVG比較麻煩,它由linearGradient 的四個屬性來控制傾斜度,x1,x2,y2,y2,實質就是兩個點。假設第一個點為(0,0),第二個點為(100,0),它就是水平漸層。假設第一個點為(0,0),第二個點為(0,100),它就是垂直漸層。要實現傾斜就必須讓第二個點的座標與第一個點的座標完全不相等,無論是X軸還是Y軸。這就要用到三角函數了。 複製代碼 代碼如下:var x = (Math.sin(angle*Math.PI/180) * 100).toFixed(2)+"%";
var y = (Math.cos(angle*Math.PI/180)* 100).toFixed(2)+"%";
this.attr(linearGradient,{x2:x,y2:y});

我們也應該看得出水平漸層與垂直漸層其實只是一個特例,我們大可以廢除type這個屬性,改成angle,傳入一個0至360的數。 <meta charset="utf-8"><meta name="keywords" content="javascript線性漸層 by 司徒正美"><meta name="description" content="javascript線性漸層 by 司徒正美"><br /><style type="text/css"> .gradient{ width:800px; height:100px; } </style><p>javascript線性漸層 by 司徒正美 實現多重水平漸層效果javascript線性漸層 by 司徒正美 實現多重垂直漸層效果javascript線性漸層 by 司徒正美 實現多重角度漸層效果<p>
[Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.