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
- canvas預設畫布的尺寸是多大?怎樣設定才能不會變形?Canvas
- 向量設計工具PaintCode如何使用標籤和畫布?AI
- link標籤連結CSS和@import載入的區別CSSImport
- 瞭解canvas畫布Canvas
- mybatis的 choose -- when test -- otherwise 標籤和 if test 標籤的區別MyBatis
- HTML <canvas> 標籤HTMLCanvas
- Tkinter (03) 畫布部件 CanvasCanvas
- matplotlib畫圖教程,設定座標軸標籤和間距
- canvas簡單的畫布動畫 - KaiqisanCanvas動畫AI
- 請說說 `<pre>` 和 `<code>` 標籤的區別?
- MyBatis中的<where>標籤和where子句的區別MyBatis
- ggplot 中繪圖設定 軸標籤和標題與繪圖區域的間距繪圖
- CSS max-width/min-width設定元素尺寸CSS
- HTML5標籤HTMLCollection和NodeList的區別詳解HTML
- css 滑鼠游標設定CSS
- canvas標籤簡單介紹Canvas
- CSS 動畫方式改變 div 尺寸CSS動畫
- canvas畫布基本知識點總結Canvas
- 如何抓取canvas畫布中的圖片Canvas
- 元素的尺寸 offsetWidth和clientWidth的區別client
- Git tag標籤與branch分支 區別Git
- Matplotlib 設定x軸的標籤
- CSS&HTML標籤CSSHTML
- Git tag標籤與branch分支的區別Git
- (二)Chrome新標籤頁的設定Chrome
- properties標籤和typeAliases標籤
- css如何去掉i標籤預設的斜體?CSS
- 如何設定列印尺寸?
- html5中canvas元素建立畫布介紹HTMLCanvas
- day42:HTML標籤和CSS選擇器HTMLCSS
- CSS設定滑鼠指標形狀CSS指標
- Python HTML和CSS 1:html文件結構和常用標籤PythonHTMLCSS
- 標籤上title與alt屬性的區別
- HTML5畫布如何設定線的樣式?HTML
- H5 video標籤列表渲染用canvas擷取視訊畫面做封面H5IDECanvas