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

JavaScript 動態創建VML的方法

要使用VML,我們首先要開辟一個命名空間。以前動態創建比較麻煩
document.namespaces.add('vml', 'urn:schemas-microsoft-com:vml', "#default#VML");
ie8出現后,微軟一口氣升級了IE6,IE7。創建方法更簡單。
document.namespaces.add('vml', 'urn:schemas-microsoft-com:vml');
它們的作用相當于把HTML標簽搞成下面這個樣子:
<html xmlns:vml="urn:schemas-microsoft-com:vml">
接著就是在樣式中調用對應的CSS hehavior。靜態代碼應該是這個樣子:
<style type="text/css">
vml/:* { behavior: url(#default#VML) }
</style>
網上風傳IE8對VML支持不友好,要放棄VML云云,主要原因在于“vml/:*”這個選擇器被IE8認為不合法(反面證明IE在努力修正其 CSS bug)。由此,人們被迫利用v/:line, v/:rect, v/:roundrect, v/:oval這樣子的聯合選擇器來調用相關的CSS hehavior。不過只要是合法選擇器就可以調用CSS hehavior,因此這里用聯合選擇器實在太累贅了。我想換類選擇器是否更合適點呢?試驗一下,是無問題的。但僅僅是這樣是渲染不出來的,由于IE8已 經重寫了內核,因此此bug不是hasLayout可以解決的。官方給出答案是使用display:inline-block,這樣就可以強逼它繼續渲染了。后來我又發現display:block也有此功效,但考慮到內聯元素的問題,還是用官方的補丁吧 。至此,開辟命名空與與渲染VML元素的問題就告一段落。
再來看如何動態創建VML元素,由于是非標準,我們就用非標準的createElement方式來創建它。我們需要拼接一個字符串,作為createElement 的參數,它應該包含命名空間與類名。
var createVML = function (tagName) {
return doc.createElement('<vml:' + tagName + ' class="vml">');
};
隨便做了一個小工具,看看后果如何:
復制代碼 代碼如下:
function(){
if(!window.vml){
window.vml = {};
document.createStyleSheet().addRule(".vml", "behavior:url(#default#VML);display:inline-block;");
if (!document.namespaces.vml && !+"/v1"){
document.namespaces.add("vml", "urn:schemas-microsoft-com:vml");
}
}
var vml = window.vml = function(name){
return vml.fn.create(name || "rect");
}
vml.fn = vml.prototype = {
create : function(name){
this.node = document.createElement('<vml:' + name + ' class="vml">');
return this;
},
appendTo: function(parent){
if(typeof this.node !== "undefined" && parent.nodeType == 1){
parent.appendChild(this.node);
}
return this;
},
attr : function(bag){
for(var i in bag){
if(bag.hasOwnProperty(i)){
this.node.setAttribute(i,bag[i])
}
}
return this;
},
css: function(bag){
var str = ";"
for(var i in bag){
if(bag.hasOwnProperty(i))
str += i == "opacity" ? ("filter:alpha(opacity="+ bag[i] * 100+");"):(i+":"+bag[i]+";")
}
this.node.style.cssText = str;
return this;
}
}
})()

最后附上三種創建VML元素的方法:
復制代碼 代碼如下:
var VmlElement = document.createElement('<vml:' + tagName + ' class="vml">');
var VmlElement = document.createElement('<' + tagName + '
xmlns="urn:schemas-microsoft.com:vml" class="vml">')
var VmlElement = document.createElement('vml:' + tagName );
VmlElement.className = "vml";//最后必須把命名空間當作類名加上

//最后必須把命名空間當作類名加上

JavaScript技術JavaScript 動態創建VML的方法,轉載需保留來源!

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

主站蜘蛛池模板: 无码国产成人777爽死在线观看 | 中国特级黄色大片 | 在线视频 国产 日韩 欧美 | 好满射太多了装不下了视频 | 国产成人久视频免费 | 9久高清在线不卡免费无吗视频 | 色婷婷激情AV精品影院 | 亚洲精品国产品国语在线试看 | 红杏俱乐部 | 天天夜夜草草久久亚洲香蕉 | 婚后被调教当众高潮H喷水 回复术士勇者免费观看全集 | 99热最新网站| 变态露出野外调教 | 欧美区 bt| 小夫妻天天恶战 | 理论片在线观看片免费 | 无码人妻精品一区二区蜜桃色欲 | 亚洲精品久久久午夜麻豆 | 好大好爽CAO死我了BL | 70岁妇女牲交色牲片 | 亚洲色欲色欲WWW在线丝 | 日本免费无码A专区在线观看 | 亚洲AV无码久久流水呻蜜桃久色 | 色欲AV亚洲永久无码精品 | 大地影院日本韩国电影免费观看 | 国产午夜婷婷精品无码A片 国产午夜视频在永久在线观看 | 伊人影院综合 | 色狠狠xx | 国产专区青青草原亚洲 | 被送到黑人性奴俱乐部 | 2020亚洲色噜噜狠狠网站 | 高清欧美videos sexo | 亚洲黄色高清 | 国产露脸150部国语对白 | 99国产强伦姧在线看RAPE | 亚洲精品久久一区二区三区四区 | 欧美亚洲日韩一道免费观看 | 亚洲国产日韩欧美在线a乱码 | 最新果冻传媒在线观看免费版 | 99er热精品视频国产免费 | 国产精品AV视频一二三区 |