整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          HTML5 參數(shù)傳遞

          現(xiàn)代碼

          主頁(yè)代碼:

          <!DOCTYPE html>
          <html>
           <head>
           <meta charset="UTF-8">
           <title></title>
           </head>
           <body>
           <br>
           <br>
           <a href="jssendValue.html?id=test&user=xujinzhong&pwd=123456&uid=123456" target="_blank"&nbsp >>>> 點(diǎn)擊跳轉(zhuǎn)到下一個(gè)界面 >>></a> 
           </body>
          </html>
          

          跳轉(zhuǎn)頁(yè)面代碼:

          <!DOCTYPE html>
          <html>
           <head>
           <meta charset="UTF-8">
           <title></title>
           <script language="javascript">
           var myID = "id"http://前端全棧學(xué)習(xí)交流圈:866109386 
           var myuser = "user"http://面向1-3年前端人員
           var mypwd = "pwd"http://幫助突破技術(shù),提升思維
           var myuid = "uid"
           function getParameter(param) {
           var query = window.location.search; //獲取URL地址中?后的所有字符 
           var iLen = param.length; //獲取你的參數(shù)名稱長(zhǎng)度 
           var iStart = query.indexOf(param); //獲取你該參數(shù)名稱的其實(shí)索引 
           if(iStart == -1) //-1為沒(méi)有該參數(shù) 
           return "";
           iStart += iLen + 1;
           var iEnd = query.indexOf("&", iStart); //獲取第二個(gè)參數(shù)的其實(shí)索引 
           if(iEnd == -1) //只有一個(gè)參數(shù) 
           return query.substring(iStart); //獲取單個(gè)參數(shù)的參數(shù)值 
           return query.substring(iStart, iEnd); //獲取第二個(gè)參數(shù)的值 
           }
           function init() {
           document.getElementById("id").value = getParameter(myID);
           document.getElementById("user").value = getParameter(myuser);
           document.getElementById("pwd").value = getParameter(mypwd);
           document.getElementById("uid").value = getParameter(myuid);
           }
           </script>
           </head>
           <body onload="init()">
           this is a test <br>
           <input id="id" type="text" />
           <br>
           <input id="user" type="text" />
           <br>
           <input id="pwd" type="text" />
           <br>
           <input id="uid" type="text" />
           </body>
          </html>
          

          對(duì)前端的技術(shù),架構(gòu)技術(shù)感興趣的同學(xué)關(guān)注我的頭條號(hào),并在后臺(tái)私信發(fā)送關(guān)鍵字:“前端”即可獲取免費(fèi)的架構(gòu)師學(xué)習(xí)資料

          知識(shí)體系已整理好,歡迎免費(fèi)領(lǐng)取。還有面試視頻分享可以免費(fèi)獲取。關(guān)注我,可以獲得沒(méi)有的架構(gòu)經(jīng)驗(yàn)哦!!

          VG 動(dòng)畫(huà)有很多種實(shí)現(xiàn)方法,也有很大SVG動(dòng)畫(huà)庫(kù),現(xiàn)在我們就來(lái)介紹 svg動(dòng)畫(huà)實(shí)現(xiàn)方法都有哪些?

          一、SVG 的 animation

          SVG animation 有五大元素,他們控制著各種不同類型的動(dòng)畫(huà),分別為:

          • set
          • animate
          • animateColor
          • animateTransform
          • animateMotion

          1.1、set

          set 為動(dòng)畫(huà)元素設(shè)置延遲,此元素是SVG中最簡(jiǎn)單的動(dòng)畫(huà)元素,但是他并沒(méi)有動(dòng)畫(huà)效果。

          使用語(yǔ)法:

          <set attributeName="" attributeType="" to="" begin="" />
          • attributeName :是要改變的元素屬性名稱。
          • attributeType :是表明attributeName屬性值的列表,支持三個(gè)固定參數(shù) CSS/XML/auto,如x,y以及transform屬于XML,opacity屬于CSS。auto是瀏覽器自動(dòng)判別的意思,也是默認(rèn)值,如果你不知道該選哪個(gè)就填auto,瀏覽器自己判別。
          • to :動(dòng)畫(huà)結(jié)束的屬性值。
          • begin :動(dòng)畫(huà)延遲時(shí)間。

          eg:繪制一個(gè)半徑為200的圓,4秒之后,半徑變?yōu)?0。

          <svg width="320" height="320">
           <circle cx="0" cy="0" r="200" style="stroke: none; fill: #0000ff;">
            <set attributeName="r" attributeType="XML" to="50" begin="4s" />
           </circle>
          </svg>

          1.2、animate

          是基礎(chǔ)的動(dòng)畫(huà)元素,實(shí)現(xiàn)單屬性的過(guò)渡效果。

          使用語(yǔ)法:

          <animate 
           attributeName="r" 
           from="200" to="50" 
           begin="4s" dur="2s" 
           repeatCount="2"
          ></animate>
          • from :過(guò)渡效果的屬性開(kāi)始值。
          • to:過(guò)渡效果的屬性結(jié)束值。
          • begin:動(dòng)畫(huà)開(kāi)始時(shí)間。
          • dur:動(dòng)畫(huà)過(guò)渡時(shí)間,控制動(dòng)畫(huà)速度。
          • repeatCount:動(dòng)畫(huà)重復(fù)次數(shù)。

          eg:繪制一個(gè)半徑為200的圓,4秒之后半徑在2秒內(nèi)從200逐漸變?yōu)?0。

          <circle cx="0" cy="0" r="200" style="stroke: none; fill: #0000ff;">
           <animate attributeName="r" from="200" to="50" 
            begin="4s" dur="2s" repeatCount="2"></animate>
          </circle>

          1.3、animateColor

          控制顏色動(dòng)畫(huà),animate也可以實(shí)現(xiàn)這個(gè)效果,所以該屬性目前已被廢棄。

          1.4、animateTransform

          實(shí)現(xiàn)transform變換動(dòng)畫(huà)效果,與css3的transform變換類似。實(shí)現(xiàn)平移、旋轉(zhuǎn)、縮放等效果。

          使用語(yǔ)法:

          <animateTransform attributeName="transform"  type="scale" 
           from="1.5" to="0" 
           begin="2s"  dur="3s" 
           repeatCount="indefinite"></animateTransform>
          • repeatCount:重復(fù)次數(shù),設(shè)置為 indefinite 表示無(wú)限循環(huán),一直執(zhí)行。
          • type:添加 transform 變換類型。
          • eg:繪制一個(gè)半徑為200的圓,4秒之后開(kāi)始縮放,在2秒內(nèi)從1.5縮小到0倍。
          <svg width="320" height="320">
           <circle cx="0" cy="0" r="200" style="stroke: none; fill: #0000ff;">
            <animateTransform attributeName="transform" begin="4s"  
             dur="2s" type="scale" from="1.5" to="0" 
             repeatCount="indefinite"></animateTransform>
           </circle>
          </svg>

          1.5、animateMotion

          可以定義動(dòng)畫(huà)路徑,讓SVG各個(gè)圖形,沿著指定路徑運(yùn)動(dòng)。

          使用語(yǔ)法:

          <animateMotion 
           path="M 0 0 L 320 320" 
          begin="4s" dur="2s"></animateMotion>
          • path:定義路徑,使用語(yǔ)法與《HTML5(八)——SVG 之 path 詳解》path的d屬性一致。
          • begin:延遲時(shí)間。
          • dur:動(dòng)畫(huà)執(zhí)行時(shí)間。

          eg:繪制一個(gè)半徑為10的圓,延遲4秒從左上角運(yùn)動(dòng)的右下角。

          <svg width="320" height="320">
           <circle cx="0" cy="0" r="10" style="stroke: none; fill: #0000ff;">
            <animateMotion 
             path="M 0 0 L 320 320" 
             begin="4s" dur="2s"
             ></animateMotion>
           </circle>
          </svg>

          實(shí)際制作動(dòng)畫(huà)的時(shí)候,動(dòng)畫(huà)太單一不酷,需要同時(shí)改變多個(gè)屬性時(shí),上邊的四種元素可以互相組合,同類型的動(dòng)畫(huà)也能組合。以上這些元素雖然能夠?qū)崿F(xiàn)動(dòng)畫(huà),但是無(wú)法動(dòng)態(tài)地添加事件,所以接下來(lái)我們就看看 js 如何制作動(dòng)畫(huà)。

          二、JavaScript 控制

          上篇文章我們介紹js可以操作path,同樣也可以操作SVG的內(nèi)置形狀元素,還可以給任意元素添加事件。

          給SVG元素添加事件方法與普通元素一樣,可以只用on+事件名 或者addEventListener添加。

          eg:使用SVG繪制地一條線,點(diǎn)擊線條地時(shí)候改變 x1 ,實(shí)現(xiàn)旋轉(zhuǎn)效果。

          <svg width="800" height="800" id="svg">
              <line id="line" x1="100" y1="100" 
              x2="400" y2="300" 
              stroke="black" stroke-width="5"></line>  
            </svg>
          <script>
           window.onload = function(){
            var line = document.getElementById("line")
            line.onclick = function(){
             let start = parseInt(line.getAttribute("x1")),
                 end=400,dis = start-end
             requestAnimationFrame(next)
             let count = 0;
             function next(){
              count++
              let a = count/200,cur = Math.abs(start+ dis*a)
              line.setAttribute('x1',cur)
              if(count<200)requestAnimationFrame(next)
             }
            }
           }
          </script>

          js制作的SVG動(dòng)畫(huà),主要利用 requestAnimationFrame 來(lái)實(shí)現(xiàn)一幀一幀的改變。

          我們上述制作的 SVG 圖形、動(dòng)畫(huà)等,運(yùn)行在低版本IE中,發(fā)現(xiàn)SVG只有IE9以上才支持,低版本的并不能支持,為了兼容低版本瀏覽器,可以使用 VML ,VML需要添加額外東西,每個(gè)元素需要添加 v:元素,樣式中還需要添加 behavier ,經(jīng)常用于繪制地圖。由于使用太麻煩,所以我們借助 Raphael.js 庫(kù)。

          三、Rapha?l.js (拉斐爾)

          Raphael.js是通過(guò)SVG/VML+js實(shí)現(xiàn)跨瀏覽器的矢量圖形,在IE瀏覽器中使用VML,非IE瀏覽器使用SVG,類似于jquery,本質(zhì)還是一個(gè)javascript庫(kù),使用簡(jiǎn)單,容易上手。

          使用之前需要先引入Raphael.js庫(kù)文件。cdn的地址為:https://cdn.bootcdn.net/ajax/libs/raphael/2.3.0/raphael.js

          3.1、創(chuàng)建畫(huà)布

          Rapheal有兩種創(chuàng)建畫(huà)布的方式:

          第一種:瀏覽器窗口上創(chuàng)建畫(huà)布

          創(chuàng)建語(yǔ)法:

          var paper = Raphael(x,y,width,height)

          x,y是畫(huà)布左上角的坐標(biāo),此時(shí)畫(huà)布的位置是絕對(duì)定位,有可能會(huì)與其他html元素重疊。width、height是畫(huà)布的寬高。

          第二種:在一個(gè)元素中創(chuàng)建畫(huà)布

          創(chuàng)建語(yǔ)法:

          var paper = Raphael(element, width, height);

          element是元素節(jié)點(diǎn)本身或ID width、height是畫(huà)布的寬度和高度。

          3.2、繪制圖形

          畫(huà)布創(chuàng)建好之后,該對(duì)象自帶SVG內(nèi)置圖形有矩形、圓形、橢圓形。他們的方法分別為:

          paper.circle(cx, cy, r); // (cx , cy)圓心坐標(biāo) r 半徑
          paper.rect(x, y, width, height, r); // (x,y)左上角坐標(biāo) width寬度 height高度 r圓角半徑(可選)
          paper. ellipse(cx, cy, rx, ry); // (cx , cy)圓心坐標(biāo) rx水平半徑 ry垂直半徑

          eg:在div中繪制一個(gè)圓形,一個(gè)橢圓、一個(gè)矩形。

          <div id="box"></div>
          <script>
           var paper = Raphael("box",300,300)
           paper.circle(150,150,150)
           paper.rect(0,0,300,300)
           paper.ellipse(150,150,100,150)
          </script>

          運(yùn)行結(jié)果如下:

          除了簡(jiǎn)單圖形之外,還可以繪制復(fù)雜圖形,如三角形、心型,這時(shí)就使用path方法。

          使用語(yǔ)法:paper.path(pathString)

          pathString是由一個(gè)或多個(gè)命令組成,每個(gè)命令以字母開(kāi)始,多個(gè)參數(shù)是由逗號(hào)分隔。

          eg:繪制一個(gè)三角形。

          let sj = paper.path("M 0,0 L100,100 L100,0 'Z'")

          還可以繪制文字,如果需要換行,使用 \n 。

          文字語(yǔ)法:paper.text(x,y,text)

          (x,y)是文字坐標(biāo),text是要繪制的文字。

          3.3、設(shè)置屬性

          圖形繪制之后,我們通常會(huì)添加stroke、fill、stroke-width等讓圖形更美觀,Raphael使用attr給圖形設(shè)置屬性。

          使用語(yǔ)法:circle.attr({"屬性名","屬性值","屬性名","屬性值",...})

          如果只有屬性名沒(méi)有屬性值,則是獲取屬性,如果有屬性值,則是設(shè)置屬性。

          注意:如果只設(shè)置一個(gè)屬性時(shí),可以省略‘{}’。如:rect.attr('fill','pink')

          eg:給上邊的矩形添加邊框和背景色。

          <div id="box"></div>
          <script>
           var paper = Raphael("box",300,300)
           let rect = paper.rect(100,100,150,200)
           rect.attr({'fill':'red','stroke':'blue','stroke-width':'10'})
          </script>

          3.4、添加事件

          RaphaelJS一般具有以下事件:
          click、dblclick、drag、hide、hover、mousedown、mouseout、mouseup、mouseover等以及對(duì)應(yīng)的解除事件,只要在前面加上“un”就可以了(unclick、undblclick)。

          使用語(yǔ)法:

          obj.click(function(){
           //需要操作的內(nèi)容
          })

          3.5、添加動(dòng)畫(huà)

          animate為指定圖形添加動(dòng)畫(huà)并執(zhí)行。

          使用語(yǔ)法:

          obj.animate({
           "屬性名1":屬性值1,
           "屬性名2":屬性值2,
            ...
          },time,type)

          屬性名和屬性值就根據(jù)你想要的動(dòng)畫(huà)類型加就ok。

          time:動(dòng)畫(huà)所需時(shí)間。

          type:指動(dòng)畫(huà)緩動(dòng)類型。常用值有:

          • linear - 線性漸變
          • ease-in | easeIn | < - 由慢到快
          • ease-out | easeOut | > - 由快到慢
          • ease-in-out | easeInOut | <> - 由慢到快再到慢
          • back-in | backIn - 開(kāi)始時(shí)回彈
          • back-out | backOut - 結(jié)束時(shí)回彈
          • elastic - 橡皮筋
          • bounce - 彈跳

          eg:點(diǎn)擊矩形,矩形緩緩變大。

          <div id="box"></div>
          <script>
           var paper = Raphael("box",800,500)
           let rect = paper.rect(100,100,150,100)
           rect.attr({'fill':'red','stroke':'blue','stroke-width':'10'})
           rect.attr('fill','pink')
           rect.click(function(){
            rect.animate({
             "width":300,
             "height":300
            },1000,"bounce")
           })
          </script>

          復(fù)制上邊的代碼,分別在各個(gè)瀏覽器和低版本IE瀏覽器運(yùn)行,發(fā)現(xiàn)都可以正常運(yùn)行。SVG的動(dòng)畫(huà)庫(kù)挺多了,我們介紹了拉斐爾,有興趣的小伙伴可以自行找找其他庫(kù)。

          <!DOCTYPE html>
          <html>
          <head>
          <meta charset="UTF-8">
          <title>Title of the document</title>
          <link rel="stylesheet" type="text/css" href="main.css" />
           <script type="text/javascript" src="myscript.js" ></script>
          </head>
          <body>
          這里是內(nèi)容
          </body>
          </html>
          
          【說(shuō)明】
          第一行<!DOCTYPE html>用來(lái)聲明這是個(gè)html5文檔
          html文檔 以<html>開(kāi)始,以</html>結(jié)束
          <head></head>是頭部信息,這部分是在頁(yè)面上是不顯示的,主要告訴瀏覽器一些信息,比如使用的字符集,
          文檔標(biāo)題、需要加載的CSS(層疊樣式表)和JavaScript文檔。
          <link>表示鏈接一個(gè)外部mian.css 的樣式表文件。樣式表用來(lái)美化頁(yè)面元素,定義元素的參數(shù)。
          <javascript>表示這是個(gè)瀏覽器腳本文件,里面的src屬性表示鏈接一個(gè)外部腳本文件。
          <body></body>表示主體,這部分是用來(lái)在瀏覽器頁(yè)面是顯示的,是用戶可以真正看到的內(nèi)容。body里面可
          包含很多語(yǔ)義標(biāo)簽,像div,span,table,form,video,li等。

          主站蜘蛛池模板: 一区二区三区四区在线播放| 波多野结衣一区二区三区88| 东京热无码av一区二区| 亚洲AV无码一区东京热久久 | 国产成人av一区二区三区在线| 麻豆一区二区99久久久久| 日韩AV无码久久一区二区| 亚洲精品一区二区三区四区乱码| 亚洲色婷婷一区二区三区| 国产精品美女一区二区视频 | 亚洲熟妇无码一区二区三区| 蜜桃臀无码内射一区二区三区| 人妻体体内射精一区二区| 少妇人妻精品一区二区三区| 麻豆AV无码精品一区二区| 免费精品一区二区三区在线观看 | 久久一区二区精品| 在线播放偷拍一区精品| 国产精品成人一区二区三区| 国产成人久久精品麻豆一区| 国产精品免费一区二区三区四区| 51视频国产精品一区二区| 国产在线一区二区三区av| 亚洲国产综合无码一区| 中文字幕日韩精品一区二区三区| 午夜在线视频一区二区三区| 亚洲一区二区三区偷拍女厕| 在线欧美精品一区二区三区| 久久中文字幕无码一区二区| AV怡红院一区二区三区| 无码人妻精品一区二区三区99性| 无码日韩人妻av一区免费| 精品无码国产一区二区三区麻豆| 中文字幕精品亚洲无线码一区应用| 人妻无码一区二区不卡无码av | 亚洲AV无码一区二区三区电影| 亚洲AⅤ视频一区二区三区| 无码人妻一区二区三区兔费| 亚洲爆乳精品无码一区二区三区 | 自拍日韩亚洲一区在线| 久久精品一区二区三区不卡|