CSS和canvas標籤設定畫布尺寸區別
很多朋友可能會遇到這樣的情況,在css中設定canvas的尺寸和在canvas標籤設定的值相同,但是表現的效果卻非常不相同。
通常會出現變形的情況,下面就介紹一下為什麼會出現此問題。
先看一段程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <style type="text/css"> #theCanvas{ background-color:#63F; } </style> <script type="text/javascript"> var i = 1; var x = 1; var y = 100; function moveSin(){ var oCanvas=document.getElementById("theCanvas"); var content=oCanvas.getContext( "2d" ); content.beginPath(); content.moveTo(x,y); i+=0.1; x=i*10; y=Math.sin(i)*10+100; content.lineTo(x,y); content.stroke(); content.closePath(); } setInterval(moveSin,10); window.onload=function(){ moveSin(); } </script> </head> <body> <canvas id="theCanvas" width="400" height="400"></canvas> </body> </html>
上面的程式碼可以比較完美的顯示正弦曲線效果。修改一下程式碼,將canvas的尺寸在css中設定:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <style type="text/css"> #theCanvas{ background-color:#63F; width:400px; height:400px; } </style> <script type="text/javascript"> var i = 1; var x = 1; var y = 100; function moveSin(){ var oCanvas=document.getElementById("theCanvas"); var content=oCanvas.getContext( "2d" ); content.beginPath(); content.moveTo(x,y); i+=0.1; x=i*10; y=Math.sin(i)*10+100; content.lineTo(x,y); content.stroke(); content.closePath(); } setInterval(moveSin,10); window.onload=function(){ moveSin(); } </script> </head> <body> <canvas id="theCanvas"></canvas> </body> </html>
程式碼顯示比較模糊,下面再通過一個更為簡單的程式碼來介紹一下兩種設定尺寸方式額區別。
首先要明確一點canvas是一個畫布,也就是影像圖形的繪製場所,它的預設尺寸是300 x 150。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload=function(){ var canvas, context; canvas=document.getElementById("thecanvas"); canvas.width=200; canvas.height=100; canvas.style.border="1px solid red"; context = canvas.getContext("2d"); context.strokeStyle="#99cc33"; context.fillRect(90,40,20,20); } </script> </head> <body> <canvas id="thecanvas"></canvas> </body> </html>
再來看使用css設定尺寸的效果,程式碼如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> canvas{ width:100px; height:50px; } </style> <script> window.onload=function(){ var canvas, context; canvas=document.getElementById("thecanvas"); canvas.style.border="1px solid red"; context=canvas.getContext("2d"); context.strokeStyle="#99cc33"; context.fillRect(90,40,20,20); } </script> </head> <body> <canvas id="thecanvas"></canvas> </body> </html>
上面程式碼的顯示圖形如下:
上面的程式碼是將整個畫布縮小了一半,所有的內容都縮小了,其實上面的程式碼依然是在300x150尺寸的畫布上繪製的,然後css又將其尺寸縮小了一半,類似於對於img圖片的尺寸的縮放。再來看一下正常方式設定尺寸,程式碼如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload=function(){ var canvas, context; canvas=document.getElementById("thecanvas"); canvas.width=100; canvas.height=50; canvas.style.border="1px solid red"; context = canvas.getContext("2d"); context.strokeStyle="#99cc33"; context.fillRect(90,40,20,20); } </script> </head> <body> <canvas id="thecanvas"></canvas> </body> </html>
上面程式碼的顯示圖形如下:
由效果圖可以看出,只是畫布的尺寸發生了變化,但是畫布上面的圖形影像尺寸並沒有發生變化。
相關文章
- css設定canvas畫布尺寸與width和height設定的區別CSSCanvas
- CSS與canvas屬性設定畫布尺寸CSSCanvas
- CSS 與 canvas 屬性設定畫布尺寸CSSCanvas
- 向量設計工具PaintCode如何使用標籤和畫布?AI
- 瞭解canvas畫布Canvas
- link標籤連結CSS和@import載入的區別CSSImport
- Tkinter (03) 畫布部件 CanvasCanvas
- canvas畫布效果程式碼Canvas
- html5畫布canvasHTMLCanvas
- css設定span元素的尺寸CSS
- mybatis的 choose -- when test -- otherwise 標籤和 if test 標籤的區別MyBatis
- HTML <canvas> 標籤HTMLCanvas
- CSS設定<input>標籤的背景小圖示CSS
- HTML5 Canvas(畫布)實戰程式設計初級篇:基本介紹和基礎畫布元素HTMLCanvas程式設計
- meta標籤設定
- matplotlib畫圖教程,設定座標軸標籤和間距
- canvas簡單的畫布動畫 - KaiqisanCanvas動畫AI
- canvas畫布基本知識點總結Canvas
- 如何抓取canvas畫布中的圖片Canvas
- MyBatis中的<where>標籤和where子句的區別MyBatis
- 標籤的readonly和disabled屬性的區別
- Meta標籤中name和http-equiv的區別HTTPUI
- CSS重置標籤預設樣式CSS
- HTML標籤和CSS個人總結HTMLCSS
- CSS之A標籤CSS
- 為Html頁面設定背景——通過設定body結構標籤和CSS指定背景屬性實現HTMLCSS
- ggplot 中繪圖設定 軸標籤和標題與繪圖區域的間距繪圖
- HTML5標籤HTMLCollection和NodeList的區別詳解HTML
- canvas標籤簡單介紹Canvas
- canvas標籤clock(時鐘)案例Canvas
- HTML5的canvas標籤HTMLCanvas
- Git tag標籤與branch分支 區別Git
- HTML5畫布canvas隨機生成圓形和正方形HTMLCanvas隨機
- QT設定標籤顯示位置QT
- css 滑鼠游標設定CSS
- html5中canvas元素建立畫布介紹HTMLCanvas
- CSS&HTML標籤CSSHTML
- 初學CSS標籤CSS