VG 動畫有很多種實現方法,也有很大SVG動畫庫,現在我們就來介紹 svg動畫實現方法都有哪些?
SVG animation 有五大元素,他們控制著各種不同類型的動畫,分別為:
1.1、set
set 為動畫元素設置延遲,此元素是SVG中最簡單的動畫元素,但是他并沒有動畫效果。
使用語法:
<set attributeName="" attributeType="" to="" begin="" />
eg:繪制一個半徑為200的圓,4秒之后,半徑變為50。
<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
是基礎的動畫元素,實現單屬性的過渡效果。
使用語法:
<animate
attributeName="r"
from="200" to="50"
begin="4s" dur="2s"
repeatCount="2"
></animate>
eg:繪制一個半徑為200的圓,4秒之后半徑在2秒內從200逐漸變為50。
<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
控制顏色動畫,animate也可以實現這個效果,所以該屬性目前已被廢棄。
1.4、animateTransform
實現transform變換動畫效果,與css3的transform變換類似。實現平移、旋轉、縮放等效果。
使用語法:
<animateTransform attributeName="transform" type="scale"
from="1.5" to="0"
begin="2s" dur="3s"
repeatCount="indefinite"></animateTransform>
<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
可以定義動畫路徑,讓SVG各個圖形,沿著指定路徑運動。
使用語法:
<animateMotion
path="M 0 0 L 320 320"
begin="4s" dur="2s"></animateMotion>
eg:繪制一個半徑為10的圓,延遲4秒從左上角運動的右下角。
<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>
實際制作動畫的時候,動畫太單一不酷,需要同時改變多個屬性時,上邊的四種元素可以互相組合,同類型的動畫也能組合。以上這些元素雖然能夠實現動畫,但是無法動態地添加事件,所以接下來我們就看看 js 如何制作動畫。
上篇文章我們介紹js可以操作path,同樣也可以操作SVG的內置形狀元素,還可以給任意元素添加事件。
給SVG元素添加事件方法與普通元素一樣,可以只用on+事件名 或者addEventListener添加。
eg:使用SVG繪制地一條線,點擊線條地時候改變 x1 ,實現旋轉效果。
<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動畫,主要利用 requestAnimationFrame 來實現一幀一幀的改變。
我們上述制作的 SVG 圖形、動畫等,運行在低版本IE中,發現SVG只有IE9以上才支持,低版本的并不能支持,為了兼容低版本瀏覽器,可以使用 VML ,VML需要添加額外東西,每個元素需要添加 v:元素,樣式中還需要添加 behavier ,經常用于繪制地圖。由于使用太麻煩,所以我們借助 Raphael.js 庫。
Raphael.js是通過SVG/VML+js實現跨瀏覽器的矢量圖形,在IE瀏覽器中使用VML,非IE瀏覽器使用SVG,類似于jquery,本質還是一個javascript庫,使用簡單,容易上手。
使用之前需要先引入Raphael.js庫文件。cdn的地址為:https://cdn.bootcdn.net/ajax/libs/raphael/2.3.0/raphael.js
3.1、創建畫布
Rapheal有兩種創建畫布的方式:
第一種:瀏覽器窗口上創建畫布
創建語法:
var paper=Raphael(x,y,width,height)
x,y是畫布左上角的坐標,此時畫布的位置是絕對定位,有可能會與其他html元素重疊。width、height是畫布的寬高。
第二種:在一個元素中創建畫布
創建語法:
var paper=Raphael(element, width, height);
element是元素節點本身或ID width、height是畫布的寬度和高度。
3.2、繪制圖形
畫布創建好之后,該對象自帶SVG內置圖形有矩形、圓形、橢圓形。他們的方法分別為:
paper.circle(cx, cy, r); // (cx , cy)圓心坐標 r 半徑
paper.rect(x, y, width, height, r); // (x,y)左上角坐標 width寬度 height高度 r圓角半徑(可選)
paper. ellipse(cx, cy, rx, ry); // (cx , cy)圓心坐標 rx水平半徑 ry垂直半徑
eg:在div中繪制一個圓形,一個橢圓、一個矩形。
<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>
運行結果如下:
除了簡單圖形之外,還可以繪制復雜圖形,如三角形、心型,這時就使用path方法。
使用語法:paper.path(pathString)
pathString是由一個或多個命令組成,每個命令以字母開始,多個參數是由逗號分隔。
eg:繪制一個三角形。
let sj=paper.path("M 0,0 L100,100 L100,0 'Z'")
還可以繪制文字,如果需要換行,使用 \n 。
文字語法:paper.text(x,y,text)
(x,y)是文字坐標,text是要繪制的文字。
3.3、設置屬性
圖形繪制之后,我們通常會添加stroke、fill、stroke-width等讓圖形更美觀,Raphael使用attr給圖形設置屬性。
使用語法:circle.attr({"屬性名","屬性值","屬性名","屬性值",...})
如果只有屬性名沒有屬性值,則是獲取屬性,如果有屬性值,則是設置屬性。
注意:如果只設置一個屬性時,可以省略‘{}’。如: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等以及對應的解除事件,只要在前面加上“un”就可以了(unclick、undblclick)。
使用語法:
obj.click(function(){
//需要操作的內容
})
3.5、添加動畫
animate為指定圖形添加動畫并執行。
使用語法:
obj.animate({
"屬性名1":屬性值1,
"屬性名2":屬性值2,
...
},time,type)
屬性名和屬性值就根據你想要的動畫類型加就ok。
time:動畫所需時間。
type:指動畫緩動類型。常用值有:
eg:點擊矩形,矩形緩緩變大。
<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>
復制上邊的代碼,分別在各個瀏覽器和低版本IE瀏覽器運行,發現都可以正常運行。SVG的動畫庫挺多了,我們介紹了拉斐爾,有興趣的小伙伴可以自行找找其他庫。
家好,我是新媒之聲廣告工作室的大白,今天我給大家帶來的是HTML5文字教學。
首先給大家介紹一下html5的標準語言結構和后綴;
點擊右鍵新建一個文本文檔重命名為index(可根據自己來命名但不能用中文)后綴改為html
html5有兩種后綴一種為html另一種為htm;
我們來認識一下html5它是html4.0升級而來,相比html4.0來說改的更簡單更完善了,html5是一種標簽語言
是瀏覽器可以直接解析的一種語言不像php或是其它語言需要用服務器解析在用瀏覽器來識別表現出來,一般用來寫網站靜態頁面或是模板,html5現在的地位在慢慢提升,一些app開始使用html5加原生混編開發。
html語言結構分析:
一般html5都是雙標簽很少有單標簽的存在;
<!DOCTYPE html>
<!-- 文檔類型 -->
<html>
<!-- html開始標簽-->
<head>
<!-- head頭部開始標簽-->
<!-- 里面可以寫一些設置字符的代碼和頁面標題代碼css樣式和js樣式等 -->
<meta charset="UTF-8">
<!-- 設置字符集 -->
<title>Document</title>
<!-- 頁面標題標簽-->
</head>
<!-- head結束標簽 -->
<body>
<!-- body體開始標簽 -->
<!-- body體用于寫一些直接解析在瀏覽器里讓用戶觀看的標簽 -->
</body>
<!-- body結束標簽 -->
</html>
<!-- html結束標簽 -->
由于html5標簽使用<>組成所以要用大于號和小于號要非常謹慎,比如要表現2>1必須要用實體符來代替相應的符號。
HTML <!--...--> 注釋標簽
標簽定義及使用說明
<!--...--> 注釋標簽用來在源文檔中插入注釋。注釋不會在瀏覽器中顯示。
您可使用注釋對您的代碼進行解釋,這樣做有助于您在以后的時間對代碼的編輯。特別是代碼量很大的情況下很有用。
您也可以在注釋內容存儲針對程序所定制的信息。在這種情況下,這些信息對用戶是不可見的,但是對程序來說是可用的。一個好的習慣是把注釋或樣式元素放入注釋文本中,這樣就可避免不支持腳本或樣式的老瀏覽器把它們顯示為純文本。
<script type="text/javascript"><!-- function displayMsg() { alert("Hello World!") } //--> </script>
html 注釋代碼分析圖
注釋:命令行最后的兩個正斜杠(//)是 JavaScript 注釋符號。這確保了 JavaScript 不會執行 --> 標簽。
除了在源文檔中有非常明顯的作用外,許多 Web 服務器也利用注釋來實現文檔服務端軟件特有的特性。這些服務器可以掃描文檔,從傳統的 HTML/XHTML 注釋中找到特定的字符序列,然后再根據嵌在注釋中的命令采取相應的動作。這些動作可能是簡單的包括其他文件中的文本(即所謂的服務器端包含,server-inside include),也可能是復雜地執行其他命令去動態生成文檔的內容。
所有主流瀏覽器都支持 <!--...--> 注釋標簽。
HTML 4.01 與 HTML5之間的差異
無。
標準屬性
<!--...--> 注釋標簽不支持任何標準屬性。
如需更多有關 HTML 標準屬性的信息,請訪問 標準屬性。
事件屬性
<!--...--> 注釋標簽不支持任何事件屬性。
如需更多有關 HTML 事件屬性的信息,請訪問 事件屬性。
HTML注釋的作用
一套完整的代碼可以讓人眼花繚亂,當程序員想要對某些部分進行修改的時候,可能要花很多的時間去找出那部分的代碼。就像我們在文章中給重要的部分進行標記、做記號一樣,在代碼里可以使用到“注釋標簽”來對一些代碼進行注解。注釋標簽不會在可視化界面當中顯示,因為它只是程序員們用來標注說明的一個小玩意,用來對一些代碼程序進行解釋,也方便后來者能夠快速地接手并且理解其用處。
網頁的開發必定卻少不了顏色的組成,html5顏色屬性標簽:
HTML 顏色
目前所有瀏覽器都支持以下顏色名。
141個顏色名稱是在HTML和CSS顏色規范定義的(17標準顏色,再加124)。下表列出了所有顏色的值,包括十六進制值。
提示: 17標準顏色:黑色,藍色,水,紫紅色,灰色,綠色,石灰,栗色,海軍,橄欖,橙,紫,紅,白,銀,藍綠色,黃色。點擊其中一個顏色名稱(或一個十六進制值)就可以查看與不同文字顏色搭配的背景顏色。:
顏色屬性標簽共分為四種:
1.英文 2.十進制 3.十六進制
red rgb(255,0,0); #ffffff(#fff) 白色
green rgb(0,255,0); #ff0000(#f00) 紅色
blue rgb(0,0,255); #00ff00(#0f0) 綠色
4.帶有透明度 #0000ff(#00f) 藍色
rgba(255,0,0,0.5); #000000(#000) 黑色
rgba(0,255,0,0.5); #ffff00(#ff0) 黃色
rgba(0,0,255,0.5); #00ffff(#0ff) 青色
#ff00ff(#f0f) 紫色
html顏色屬性標簽:
<style type="text/css">
h1{
color: red;
}
</style>
注意:這里用的十六進制全寫和縮寫表達的是一個意思#ff00aa只要十六進制顏色有兩位重復可以只寫一個#f0a。
body體背景顏色:
<body bgcolor="#aaf"></body>
注意:css樣式有三種寫法這里用到前兩種,后面講解css的時候會介紹;
嵌入式樣式(屬于內部樣式表) 特征: 1、樣式的屬性內容以代碼的形式[放在 ]寫在網頁代碼中! 2、首先,通過【格式】→【樣式】設置樣式的屬性內容! 3、在合適的地方使用 class="樣式名" 調用具體的樣式效果! 如: <style type="text/css"> h1{ color: red; } </style> 內聯式樣式(屬于內部樣式表) 特征: 1、樣式的屬性內容直接跟在將要修飾的文字標記里[如: 2、具體格式: <body bgcolor="#aaf"></body> 例如:修飾單元格里的文字特征:1、有一個單獨的CSS文件存在![如:001.css]2、首先,通過【格式】→【樣式表連接】與CSS文件[001.css]建立連接!3、在合適的地方使用 class="樣式名" 調用具體的樣式效果!如:<link href="001.css" type="text/css" rel="Stylesheet"/>嵌入式樣式(屬于內部樣式表)
如果需要課件和今天用到的文件可以加關注私聊我。
TML5 Canvas是HTML5新增的一個元素,它提供了一個可執行JavaScript腳本繪制圖形的區域。Canvas元素通過使用JavaScript API,可以在瀏覽器上繪制圖形、渲染動畫和實現交互效果等。
<!DOCTYPE html>
<html>
<head>
<title>HTML5 Canvas示例</title>
</head>
<body>
<canvas id="myCanvas" width="400" height="400"></canvas>
<script>
// 獲取Canvas元素和繪圖上下文
var canvas=document.getElementById("myCanvas");
var ctx=canvas.getContext("2d");
// 繪制矩形
ctx.fillStyle="blue";
ctx.fillRect(50, 50, 100, 100);
// 繪制圓形
ctx.beginPath();
ctx.arc(200, 200, 50, 0, Math.PI * 2);
ctx.fillStyle="red";
ctx.fill();
</script>
</body>
</html>
在上述代碼中,我們首先獲取了Canvas元素和繪圖上下文(Context),然后使用fillRect()方法繪制了一個藍色的矩形,使用arc()方法繪制了一個紅色的圓形。最后,我們使用fill()方法填充了圓形的顏色。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。