知識點
HTML5,javascript,jquery,html,css,css3,主要由jquery來處理特效問題。
具體特效
1.3D多層平鋪特效,可鼠標滾輪拉進拉遠,鼠標左鍵點擊拖拽
2.平鋪點擊變球形,可鼠標拖拽旋轉,拉近拉遠,
請點擊此處輸入圖片描
3.球形變螺旋特效
4.螺旋變平鋪特效
每個小方格點擊進去都可以打開為一種企業(yè)常用的特效。左下角切換為多種特效。
由于圖片大小的限制,所以圖片解析的不是非常詳細,如果需要本課程教程視頻的伙伴請點擊關注,已經(jīng)連載到11集,基本每日更新!
記得在過去的Web前端開發(fā)中,如果你需要繪圖或者生成相關圖形的話,使用Flash可能是你唯一或者說最強大的實現(xiàn)方式,而在近些年的技術熱點HTML5標準中,HTML Canvas(畫布)能夠更加方便的幫助你實現(xiàn)2D繪制圖形圖像及其各種動畫效果功能。
首先我們先來了解一下什么是HTML Canvas?
我們可以在HTML中使用屬性width和height來定義Canvas。但是實現(xiàn)Canvas的相關功能主要還依賴于Javascript實現(xiàn),即HTML5 Canvas API。我們使用javascript來訪問和控制Canvas相關的區(qū)域,比如調用相關繪圖的方法,用來動態(tài)的生成需要的動畫或者圖形。
接下來我們來看看canvas的特性:
互動性:Canvas支持互動,可以很好的響應用戶的操作,我們可以通過Javascript來監(jiān)鍵盤,鼠標,及其觸摸設備相關事件。
動 畫:任何被canvas繪制的圖形都可以添加動畫,簡單的彈跳球或者復雜的HTML5游戲都可以實現(xiàn)
靈活性:開發(fā)人員可以使用Canvas來繪制任何的內容,比如,直線,圖形,文字,圖片等,可以包含動畫或者不包含。同時你可以添加音頻或者視頻瀏覽器支持:幾乎所有的現(xiàn)代瀏覽器都支持,并且被廣泛的各種設備支持,例如,桌面,平板,智能手機等等。
流行度:canvas目前很流行,很多的開發(fā)人員都使用它來開發(fā)類似游戲或者繪圖類應用
web標準:只需要有瀏覽器就可以運行,而非flash或者silverlight,需要安裝相關的插件
開發(fā)一次,任何瀏覽器都可以運行(當然,不包括老式瀏覽器)
可以使用免費擁有大量的開發(fā)工具及其類庫。
使用HTML5 Canvas我們能開發(fā)那些相關產(chǎn)品或者應用呢?
1 可視化數(shù)據(jù): 各類統(tǒng)計圖表,比如:百度的echart
2 場景秀:用Canvas實現(xiàn)動態(tài)的廣告效果能夠非常融洽的跨平臺運行。如:手機中微產(chǎn)品.在移動端兼容性很好。
3 游戲:canvas在基于Web的圖像顯示方面比Flash更加立體、更加精巧,canvas成為HTML5小游戲開發(fā)首選。現(xiàn)階段h5做游戲,營業(yè)方式不是很明確. 25 超棒的 HTML5 Canvas 游戲。
4 其他可嵌入網(wǎng)站的內容 (多用于活動頁面、特效):類似圖表、音頻、視頻,還有許多元素能夠更好地與Web融合,并且不需要任何插件。
5 趨勢=> 模擬器: 無論從視覺效果還是核心功能方面來說,模擬器產(chǎn)品可以完全由JavaScript來實現(xiàn)。模擬真實硬件環(huán)境,如移動端各種類型手機.
6 趨勢=> 遠程計算機控制: Canvas可以讓開發(fā)者更好地實現(xiàn)基于Web的數(shù)據(jù)傳輸,構建一個完美的可視化控制界面。
7 趨勢=> 圖形編輯器: Photoshop圖形編輯器將能夠100%基于Web實現(xiàn)。
如何使用HTML5 Canvas?
使用HTML5 canvas其實非常簡單, 每一個canvas都擁有一個上下文(context)。使用它你可以來調用相關的畫布方法。
<canvas id="mycanvas" width="500" height="400">
<p>您的瀏覽器不支持HTML5 Canvas</p>
</canvas>
以上代碼我們在HTML中添加了一個canvas標簽,如果瀏覽器不支持canvas,會顯示<p>標簽的內容,當然,如果你需要支持老式瀏覽器你也可以使用flash或者其它方法來做一個替代的解決方案。
var canvas=document.getElementById('mycanvas'),
context=canvas.getContext(‘2d’);
以上代碼我們通過canvas取到2D的context。
在HTML5 Canvas的2D結構中,坐標(0,0)在左上方,這和傳統(tǒng)的坐標不太一樣。大家需要注意一下,如下圖所示:
下面來說一下canvas的API:
canvas的主要屬性和方法:
save():保存當前環(huán)境的狀態(tài)
restore():返回之前保存過的路徑狀態(tài)和屬性
createEvent()
getContext():返回一個對象,指出訪問繪圖功能必要的API
toDateURL():返回canvas圖像的URL
顏色、樣式和陰影屬性和方法:
fillStyle:設置或返回用于填充繪畫的顏色、漸變或模式
strokeStyle:設置或返回用于筆觸的顏色、漸變或模式
shadowColor:設置或返回用于陰影的顏色
shadowBlur:設置或返回用于陰影的模糊級別
shadowOffsetX:設置或返回陰影距形狀的水平距離
shadowOffsetY:設置或返回陰影距形狀的垂直距離
createLinearGradient():創(chuàng)建線性漸變(用在畫布內容上)
createPattern():在指定的方向上重復指定的元素
createRadialGradient():創(chuàng)建放射狀/環(huán)形的漸變(用在畫布內容上)
addColorStop():規(guī)定漸變對象中的顏色和停止位置
線條樣式屬性和方法
lineCap:設置或返回線條的結束端點樣式
lineJoin:設置或返回兩條線相交時,所創(chuàng)建的拐角類型
lineWidth:設置或返回當前的線段寬度
miterLimit:設置或返回最大斜接長度
Canvas的API-路徑方法
fill():填充當前繪圖(路徑)
stroke():繪制已定義的路徑
beginPath():起始一條路徑,或重置當前路徑
moveTo():把路徑移動到畫布中的指定點,不創(chuàng)建線條
closePath():創(chuàng)建從當前點回到起始點的路徑
lineTo():添加一個新點,創(chuàng)建從該點到最后指定點的線條
clip():從原始畫布剪切任意形狀和尺寸的區(qū)域
quadraticCurveTo():創(chuàng)建二次貝塞爾曲線
bezierCurveTo():創(chuàng)建三次貝塞爾曲線
arc():創(chuàng)建弧/曲線(用于創(chuàng)建圓形或部分圓)
arcTo():創(chuàng)建兩切線之間的弧/曲線
isPointInPath():如果指定的點位于當前路徑中,返回布爾值
Canvas的API-轉換方法
scale():縮放當前繪圖至更大或更小
rotate():旋轉當前繪圖
translate():重新映射畫布上的(0,0)位置
transform():替換繪圖的當前轉換矩陣
setTransform():將當前轉換重置為單位矩陣,然后運行transform()
Canvas的API-文本屬性和方法
font:設置或返回文本內容的當前字體屬性
textAlign:設置或返回文本內容的當前對齊方式
textBaseline:設置或返回在繪制文本時使用的的當前文本基線
fillText():在畫布上繪制“被填充的”文本
strokeText():在畫布上繪制文本(無填充)
measureText():返回包含指定文本寬度的對象
Canvas的API-圖像繪制方法
drawImage():向畫布上繪制圖像、畫布或視頻
Canvas的API-像素操作方法和屬性
width:返回ImageData對象的寬度
height:返回ImageData對象的高度
data:返回一個對象,其包含指定的ImageData對象的圖像數(shù)據(jù)
createImageData():創(chuàng)建新的、空白的I馬哥Data對象
getImageData():返回ImageData對象,該對象為畫布上指定的矩形復制像素數(shù)據(jù)
putImageData():把圖像數(shù)據(jù)(從指定的ImageData對象)放回畫布上
Canvas的API-圖像合成屬性
globalAlpha:設置或返回繪圖的當前alpha或透明值
globalCompositeOperation:設置或返回新圖像如何繪制到已有的圖像上
直接使用Canvas來繪制圖形相對來說比較乏味并且麻煩,所以在現(xiàn)代的HTML5 Canvas中我們使用一些現(xiàn)成的第三方類庫幫助我們多快好省的實現(xiàn)圖形繪制的功能:
KineticJS
Paper.js
EaselJS
Fabric.js
oCanvas
Echart.js
TML5 Canvas API 是一個強大的圖形系統(tǒng),它允許開發(fā)者在網(wǎng)頁上繪制2D圖形。自從 HTML5 標準推出以來,Canvas API 已經(jīng)成為了網(wǎng)頁游戲開發(fā)、數(shù)據(jù)可視化、圖像處理等領域的關鍵技術。在本文中,我將介紹 Canvas API 的基礎知識,并通過幾個實例演示如何使用 Canvas API 來創(chuàng)建簡單的圖形和動畫。
Canvas API 提供了一個通過 JavaScript 和 HTML <canvas> 元素來繪制圖形的方式。它可以用來繪制簡單的直線、圓形、復雜的圖形,甚至可以用來制作動畫。Canvas API 是基于像素的,這意味著一旦圖形被繪制,它就變成了畫布上的像素集合。
在開始使用 Canvas 繪圖之前,你需要在 HTML 文檔中添加 <canvas> 標簽,并通過 JavaScript 獲取該元素的引用和繪圖上下文。下面是基本的設置步驟:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Canvas 基礎示例</title>
<style>
body {
font-family: 'Arial', sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f0f0f0;
}
canvas {
box-shadow: 0 0 5px rgba(0, 0, 0, 0.5); /* 添加陰影效果 */
background-color: #fff; /* 設置畫布背景色 */
}
</style>
</head>
<body>
<canvas id="myCanvas" width="400" height="300" style="border:1px solid #000;">
您的瀏覽器不支持Canvas。
</canvas>
<script>
// 獲取 canvas 元素
var canvas=document.getElementById('myCanvas');
// 獲取繪圖上下文
var ctx=canvas.getContext('2d');
// 繪制藍色矩形
ctx.fillStyle='blue'; // 設置填充顏色為藍色
ctx.fillRect(10, 10, 150, 100); // 繪制矩形
// 繪制紅色圓形
ctx.beginPath(); // 開始路徑繪制
ctx.arc(300, 150, 50, 0, Math.PI * 2, true); // 繪制圓形
ctx.fillStyle='red'; // 設置填充顏色為紅色
ctx.fill(); // 填充圓形
// 繪制黑色邊框的文字
ctx.font='20px Arial'; // 設置字體
ctx.fillStyle='black'; // 設置填充顏色為黑色
ctx.fillText('Hello Canvas', 120, 250); // 繪制文字
</script>
</body>
</html>
在這個示例中,我們首先通過CSS將頁面背景設置為淺灰色,并將Canvas居中顯示,為Canvas添加了陰影效果,使其在頁面上更加突出。
接著,通過JavaScript在Canvas上繪制了一個藍色的矩形、一個紅色的圓形,以及帶有黑色邊框的文字“Hello Canvas”,以展示Canvas的基本繪圖功能。
Canvas API 的基礎是能夠繪制簡單的形狀,比如矩形。下面的示例展示了如何繪制一個填充的矩形和一個矩形輪廓。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>繪制矩形示例</title>
</head>
<body>
<canvas id="rectangleCanvas" width="400" height="300" style="border:1px solid #000;"></canvas>
<script>
var canvas=document.getElementById('rectangleCanvas');
var ctx=canvas.getContext('2d');
// 繪制填充矩形
ctx.fillStyle='blue'; // 設置填充顏色
ctx.fillRect(50, 50, 150, 100); // 填充矩形
// 繪制矩形輪廓
ctx.strokeStyle='red'; // 設置輪廓顏色
ctx.strokeRect(250, 50, 150, 100); // 繪制矩形輪廓
</script>
</body>
</html>
在這個示例中,我們使用了 fillRect 方法來繪制一個藍色填充的矩形,使用了 strokeRect 方法來繪制一個紅色輪廓的矩形。
Canvas API 允許你創(chuàng)建復雜的路徑和形狀。下面的示例展示了如何繪制一個路徑,這個路徑組成了一個三角形。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>繪制路徑和形狀示例</title>
</head>
<body>
<canvas id="pathCanvas" width="400" height="300" style="border:1px solid #000;"></canvas>
<script>
var canvas=document.getElementById('pathCanvas');
var ctx=canvas.getContext('2d');
// 開始路徑
ctx.beginPath();
// 移動到起點
ctx.moveTo(100, 100);
// 繪制線條
ctx.lineTo(200, 100);
ctx.lineTo(150, 200);
// 關閉路徑形成三角形
ctx.closePath();
// 繪制路徑
ctx.fillStyle='green';
ctx.fill();
ctx.strokeStyle='black';
ctx.stroke();
</script>
</body>
</html>
在這個示例中,我們使用了 beginPath 方法開始一個新路徑,使用 moveTo 和 lineTo 方法定義路徑,然后使用 closePath 方法關閉路徑。最后,我們使用 fill 方法填充路徑,并使用 stroke 方法繪制路徑的輪廓。
Canvas API 也可以用來創(chuàng)建動畫。下面的示例展示了如何創(chuàng)建一個簡單的動畫,其中一個藍色的球在畫布上移動。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Canvas 動畫示例</title>
</head>
<body>
<canvas id="animationCanvas" width="400" height="300" style="border:1px solid #000;"></canvas>
<script>
var canvas=document.getElementById('animationCanvas');
var ctx=canvas.getContext('2d');
var x=canvas.width / 2;
var y=canvas.height / 2;
var radius=20;
var dx=2;
var dy=-2;
function drawBall() {
ctx.beginPath();
ctx.arc(x, y, radius, 0, Math.PI*2);
ctx.fillStyle='blue';
ctx.fill();
ctx.closePath();
}
function update() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
drawBall();
if(x + dx > canvas.width-radius || x + dx < radius) {
dx=-dx;
}
if(y + dy > canvas.height-radius || y + dy < radius) {
dy=-dy;
}
x +=dx;
y +=dy;
requestAnimationFrame(update);
}
update();
</script>
</body>
</html>
在這個示例中,我們定義了一個 drawBall 函數(shù)來繪制球,然后在 update 函數(shù)中移動球的位置并反復調用 requestAnimationFrame(update) 來創(chuàng)建動畫效果。
Canvas API 是一個功能強大的工具,它為前端開發(fā)者提供了廣泛的圖形繪制能力。通過上述示例,我們可以看到,Canvas API 不僅可以用來繪制靜態(tài)圖形,還可以創(chuàng)建動態(tài)的、交互式的應用。隨著技術的不斷發(fā)展,Canvas API 的應用場景將會越來越廣泛,作為一名前端工程師,掌握 Canvas API 將是一個非常有價值的技能。
*請認真填寫需求信息,我們會在24小時內與您取得聯(lián)系。