<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        使用SVG基本操作API的實例講解

        來源:懂視網 責編:小采 時間:2020-11-27 22:30:21
        文檔

        使用SVG基本操作API的實例講解

        使用SVG基本操作API的實例講解:前面的話 本文將詳細介紹SVG基本操作API,并使用這些API制作實例效果 基礎API 在javascript中,可以使用一些基本的API來對SVG進行操作 【NS地址】 因為SVG定義在其自身的命令空間下,而不是HTML的命名空間下,可以作為單獨的XML文件存在。所以需要使用自身
        推薦度:
        導讀使用SVG基本操作API的實例講解:前面的話 本文將詳細介紹SVG基本操作API,并使用這些API制作實例效果 基礎API 在javascript中,可以使用一些基本的API來對SVG進行操作 【NS地址】 因為SVG定義在其自身的命令空間下,而不是HTML的命名空間下,可以作為單獨的XML文件存在。所以需要使用自身

        前面的話

        本文將詳細介紹SVG基本操作API,并使用這些API制作實例效果

        基礎API

        在javascript中,可以使用一些基本的API來對SVG進行操作

        【NS地址】

        因為SVG定義在其自身的命令空間下,而不是HTML的命名空間下,可以作為單獨的XML文件存在。所以需要使用自身的NS地址

        有兩個常用的NS地址

        var SVG_NS = "http://www.w3.org/2000/svg";
        var XLINK_NS = http://www.w3.org/1999/xlink;

        【創建圖形】

        document.createElementNS(SVG_NS,tagName);

        【添加圖形】

        element.appendChild(childElement)

        【設置/獲取屬性】

        element.setAttribute(name,value);
        element.getAttribute(name);

        【設置xlink】

        <a>、<textPath>等標簽需要設置xlink屬性

        element.setAttributeNS(XLINK_NS,'xlink:href',value);

        封裝函數

        將創建標簽及添加屬性的操作封閉成一個函數,方便復用

        function createTag(tag,objAttr){
         var oTag = document.createElementNS('http://www.w3.org/2000/svg',tag);
         for(var attr in objAttr){
         if(attr == 'xlink:href'){
         oTag.setAttributeNS("http://www.w3.org/1999/xlink",attr,objAttr[attr]);
         }else{
         oTag.setAttribute(attr,objAttr[attr]);
         } 
         } 
         return oTag;
        }

        下面通過該函數,創建一個圓形

        <script>
        function createTag(tag,objAttr){
         var oTag = document.createElementNS('http://www.w3.org/2000/svg',tag);
         for(var attr in objAttr){
         if(attr == 'xlink:href'){
         oTag.setAttributeNS("http://www.w3.org/1999/xlink",attr,objAttr[attr]);
         }else{
         oTag.setAttribute(attr,objAttr[attr]);
         } 
         } 
         return oTag;
        } 
        var oSvg = createTag('svg',{'version':'1.1','xmls':'http://www.w3.org/2000/svg',height:'70'});
        var oCircle = createTag('circle',{'cx':'25','cy':'25','r':20,'fill':'pink'});
        oSvg.appendChild(oCircle);
        document.body.appendChild(oSvg);
        </script>

        實例

        下面通過SVG基本操作API,創建一個可交互的SVG實例

        <style>
        #box{
         height: 300px;
         width: 300px;
         background: hsl(20,40%,90%);
         background-image:linear-gradient(90deg,#fb3 11px,transparent 0),
         linear-gradient(90deg,#ab4 23px,transparent 0),
         linear-gradient(90deg,#655 41px,transparent 0);
         background-size: 41px 100%,61px 100%,83px 100%; 
        } 
        </style>
        <div id="box"></div>
        <script>
        var oSvg = createTag('svg',{'version':'1.1','xmls':'http://www.w3.org/2000/svg',height:'100%',width:'100%'});
        var oBox = document.getElementById('box');
        var W = parseInt(getComputedStyle(oBox).width);
        var H = parseInt(getComputedStyle(oBox).height);
        var appearance = {
         'dis':H/3,
         'r0':H/8,'r':H/10,
         'x0':W/2,'y0':H/2,
         'fontSize':H/20,
         'bg0':'hsla(0,0%,100%,.6)','bg':'hsla(0,0%,100%,.3)',
         'color0':'hsl(210,13%,30%)','color':'hsl(210,13%,30%)',
         'borderColor0':'rgba(0,0,0,0.3)','bordercolor':'rgba(0,0,0,0.3)',
         'strokWidth0':3,'strokWidth':2,
         'lineColor':'rgba(0,0,0,0.3)','lineWidth':1,'lineDashed':'5,5'
        }
        var data = {
         text:'前端開發',
         children:[
         {text:'HTML',url:'http://www.cnblogs.com/xiaohuochai/p/5203223.html'},
         {text:'CSS',url:'http://www.cnblogs.com/xiaohuochai/p/5249139.html'},
         {text:'JS',url:'http://www.cnblogs.com/xiaohuochai/p/5613593.html'},
         {text:'ES6',url:'http://www.cnblogs.com/xiaohuochai/p/7233392.html'},
         {text:'HTTP',url:'http://www.cnblogs.com/xiaohuochai/p/6392010.html'},
         {text:'NodeJS',url:'http://www.cnblogs.com/xiaohuochai/p/6940560.html'},
         {text:'前端工具',url:'http://www.cnblogs.com/xiaohuochai/p/6666415.html'},
         ], 
        }
        addChildenTags();
        addCenterTag();
        oBox.appendChild(oSvg);
        function createTag(tag,objAttr){
         var oTag = document.createElementNS('http://www.w3.org/2000/svg',tag);
         for(var attr in objAttr){
         if(attr == 'xlink:href'){
         oTag.setAttributeNS("http://www.w3.org/1999/xlink",attr,objAttr[attr]);
         }else{
         oTag.setAttribute(attr,objAttr[attr]);
         } 
         } 
         return oTag;
        } 
        function addCenterTag(){
         var oG = createTag('g',{'style':'cursor:default'});
         var oCircle = createTag('circle',{'cx':appearance.x0,'cy':appearance.y0,'r':appearance.r0,'fill':appearance.bg0,'stroke':appearance.borderColor0,'stroke-width':appearance.strokWidth0});
         var oText = createTag('text',{'x':appearance.x0,'y':appearance.y0,'font-size':appearance.fontSize,'text-anchor':'middle','dominant-baseline':'middle','stroke-width':appearance.strokWidth0});
         oText.innerHTML = data.text;
         oG.appendChild(oCircle);
         oG.appendChild(oText);
         oSvg.appendChild(oG);
        }
        function addChildenTags(){
         var children = data.children;
         var length = children.length;
         var deg = (360/length)*(2*Math.PI)/360;
         for(var i = 0; i < children.length;i++){
         var cos = Math.cos(deg*i - 90);
         var sin = Math.sin(deg*i - 90);
         var x = appearance.x0 + appearance.dis*cos;
         var y = appearance.y0 + appearance.dis*sin;
         var oA = createTag('a',{'xlink:href':children[i].url,'target':'_black'}); 
         var oG = createTag('g',{'style':'cursor:pointer'}); 
         oG.index = i; 
         var oLine = createTag('line',{'x1':x-appearance.r*cos,y1:y-appearance.r*sin,x2:appearance.x0+appearance.r0*cos,y2:appearance.y0+appearance.r0*sin,'stroke':appearance.lineColor,'stroke-width':appearance.lineWidth,'stroke-dasharray':appearance.lineDashed,'style':'transition:.5s'});
         var oLineHelper = createTag('line',{'x1':x-appearance.r*cos,y1:y-appearance.r*sin,x2:appearance.x0+appearance.r0*cos,y2:appearance.y0+appearance.r0*sin,'stroke':'transparent','stroke-width':10}); 
         var oCircle = createTag('circle',{'cx':x,'cy':y,'r':appearance.r,'fill':appearance.bg,'stroke':appearance.bordercolor,'stroke-width':appearance.strokWidth,'class':'frostedglass'});
         var oText = createTag('text',{'x':x,'y':y,'font-size':appearance.fontSize,'text-anchor':'middle','dominant-baseline':'middle','stroke-width':appearance.strokWidth,fill:appearance.color});
         oText.innerHTML = children[i].text; 
         oG.appendChild(oLine);
         oG.appendChild(oLineHelper); 
         oG.appendChild(oCircle); 
         oG.appendChild(oText);
         oA.appendChild(oG);
         oSvg.appendChild(oA);
         oG.onmouseenter = function(){
         elasticMove(this,appearance.r*1.2);
         var line = this.children[0];
         line.removeAttribute('stroke-dasharray');
         line.setAttribute('stroke-width',appearance.lineWidth*3);
         line.setAttribute('x1',appearance.x0+(appearance.dis - appearance.r0)*Math.cos(deg*this.index - 90));
         line.setAttribute('y1',appearance.y0+(appearance.dis - appearance.r0)*Math.sin(deg*this.index - 90));
         }
         oG.onmouseleave = function(){
         elasticMove(this,appearance.r);
         var line = this.children[0];
         line.setAttribute('stroke-width',appearance.lineWidth);
         line.setAttribute('stroke-dasharray',appearance.lineDashed);
         line.setAttribute('x1',appearance.x0+(appearance.dis - appearance.r)*Math.cos(deg*this.index - 90));
         line.setAttribute('y1',appearance.y0+(appearance.dis - appearance.r)*Math.sin(deg*this.index - 90)); 
         } 
         }
        }
        function elasticMove(obj,str){
         var circle = obj.getElementsByTagName('circle')[0];
         var r0 = circle.getAttribute('r');
         var r = Number(str);
         //聲明步長值
         var step = 0;
         //聲明彈性距離
         var len = r - r0;
         //聲明彈性系數
         var k = 0.7;
         //聲明損耗系數
         var z= 0.7;
         //聲明當前值
         var cur = r0;
         clearInterval(circle.timer);
         circle.timer = setInterval(function(){
         //獲取當前值cur
         cur = circle.getAttribute('r');
         //更新彈性距離
         len = r - cur;
         //彈力影響
         step += len*k;
         //阻力影響
         step = step*z;
         //賦值
         circle.setAttribute('r',Number(cur) + step);
         //當元素的步長值接近于0,并且彈性距離接近于0時,停止定時器
         if(Math.round(step) == 0 && Math.round(len) == 0){
         circle.setAttribute('r',r);
         clearInterval(circle.timer); 
         } 
         },30);
        }
        </script>

        以上這篇使用SVG基本操作API的實例講解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        使用SVG基本操作API的實例講解

        使用SVG基本操作API的實例講解:前面的話 本文將詳細介紹SVG基本操作API,并使用這些API制作實例效果 基礎API 在javascript中,可以使用一些基本的API來對SVG進行操作 【NS地址】 因為SVG定義在其自身的命令空間下,而不是HTML的命名空間下,可以作為單獨的XML文件存在。所以需要使用自身
        推薦度:
        標簽: 實例 基本的 svg
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲综合综合在线| 久久久久久a亚洲欧洲AV| 久久久久国产精品免费免费搜索| 2022久久国产精品免费热麻豆| 最近的中文字幕大全免费版| 亚洲第一福利网站在线观看| 亚洲无线电影官网| 亚洲AV无码男人的天堂 | 亚洲日本在线观看| 精品无码人妻一区二区免费蜜桃| 午夜高清免费在线观看| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 色天使亚洲综合一区二区| 免费无码中文字幕A级毛片| 在线免费观看色片| 国产精品亚洲二区在线| 99国产精品视频免费观看| 亚洲一卡2卡3卡4卡国产网站| 婷婷亚洲综合五月天小说在线| 亚洲 综合 国产 欧洲 丝袜| 涩涩色中文综合亚洲| 嫩草成人永久免费观看| 国产女高清在线看免费观看| 亚洲av日韩av无码| 91精品免费在线观看| 中文字幕中韩乱码亚洲大片| 亚洲熟妇成人精品一区| 91成人在线免费观看| 亚洲成人激情小说| 亚洲毛片网址在线观看中文字幕 | 亚洲精品成人区在线观看| a级片免费在线观看| 四虎永久精品免费观看| 456亚洲人成影院在线观| 91福利视频免费观看| 亚洲人成网站在线在线观看| 很黄很色很刺激的视频免费| 亚洲国产成人久久| 免费观看激色视频网站bd| 亚洲精品国产成人| 亚洲av无码成人精品区在线播放|