CSS與canvas屬性設定畫布尺寸
繪圖自然需要畫布,canvas中的畫布就是<canvas>元素。
根據繪製圖案大小的不同,可能需要調整畫布的尺寸以滿足實際需求。
在預設狀態下,畫布尺寸300x150,單位是畫素。
首先看一段程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload = function () { let canvas = document.getElementById("ant"); let ctx=canvas.getContext("2d"); ctx.beginPath(); ctx.arc(100,85,80,0,2*Math.PI); ctx.fillStyle = 'blue' ctx.fill(); } </script> </head> <body> <canvas id="ant"></canvas> </body> </html>
程式碼執行效果截圖如下:
由於畫布過小,導致在其中繪製的圓形有部分內容無法顯示。
下面通過程式碼例項介紹一下設定畫布大小的兩種方式,以及產生的問題。
一.使用標籤的width和height設定畫布大小:
HTML中有不少標籤自身具有width和height屬性,可以設定尺寸。
與使用CSS效果完全相同,當然我們推薦使用CSS。
<canvas>也具有width和height屬性,可以設定畫布大小。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload = function () { let canvas = document.getElementById("ant"); let ctx=canvas.getContext("2d"); ctx.beginPath(); ctx.arc(100,85,80,0,2*Math.PI); ctx.fillStyle = 'blue' ctx.fill(); } </script> </head> <body> <canvas id="ant" width="200px" height="200px"></canvas> </body> </html>
程式碼執行效果截圖如下:
調整畫布大小之後,圓可以完全顯示出來。
可以看到使用標籤自身的width和height屬性設定畫布尺寸完全沒有認為。
二.使用標籤的CSS設定畫布大小:
下面使用CSS的width與height屬性替代標籤的對應屬性。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> canvas{ width:200px; height:200px; border:1px solid red; } </style> <script> window.onload = function () { let canvas = document.getElementById("ant"); let ctx=canvas.getContext("2d"); ctx.beginPath(); ctx.arc(100,85,80,0,2*Math.PI); ctx.fillStyle = 'blue' ctx.fill(); } </script> </head> <body> <canvas id="ant"></canvas> </body> </html>
程式碼執行效果截圖如下:
最終的展現效果有點讓人吃驚,非但圖案沒有完全展示出來,而且變成了一個"蛋"。
從上面的圖案展現形式可以有如下疑問:
(1).CSS修改的可能不是畫布大小,如果畫布大小變成200x200,完全可以容納此圖案。
(2).從紅色邊框看,canvas的尺寸的確變成200x200。
分析如下:
標籤自身的width與height屬性確實是設定畫布的尺寸,正確的設定方式。
再來分析CSS設定canvas的尺寸,大家知道<canvas>標籤最終會被瀏覽器渲染為一張真正的圖片。
CSS真正設定的是生成圖片的尺寸,於是上述程式碼的解析過程大致可以認為如下:
(1).<canvas>標籤預設尺寸是300x150,圓形無法完全顯示。
(2).在渲染過程中,首先生成一張300x150尺寸圖片。
(3).然後在通過CSS將此圖片尺寸設定為200x200,於是出現了拉伸變形現象。
相關文章
- CSS 與 canvas 屬性設定畫布尺寸CSSCanvas
- css設定canvas畫布尺寸與width和height設定的區別CSSCanvas
- CSS和canvas標籤設定畫布尺寸區別CSSCanvas
- canvas預設畫布的尺寸是多大?怎樣設定才能不會變形?Canvas
- QT QLable屬性設定(尺寸,邊框等)QT
- CSS中常用的屬性設定CSS
- jQuery設定disabled屬性與移除disabled屬性jQuery
- 瞭解canvas畫布Canvas
- Tkinter (03) 畫布部件 CanvasCanvas
- canvas簡單的畫布動畫 - KaiqisanCanvas動畫AI
- canvas globalAlpha 屬性Canvas
- canvas shadowOffsetY 屬性Canvas
- canvas shadowOffsetX 屬性Canvas
- canvas lineWidth 屬性Canvas
- canvas textBaseline 屬性Canvas
- canvas globalCompositeOperation 屬性Canvas
- canvas shadowBlur 屬性Canvas
- canvas shadowColor 屬性Canvas
- canvas lineJoin 屬性Canvas
- canvas miterLimit 屬性CanvasMIT
- canvas lineCap 屬性Canvas
- canvas font 屬性Canvas
- CSS內聯樣式的使用,設定字型屬性CSS
- 表屬性設定
- 屬性動畫與差值器動畫
- canvas ImageData data 屬性Canvas
- canvas ImageData height 屬性Canvas
- canvas ImageData width 屬性Canvas
- JavaScript與CSS3動畫方式改變元素尺寸JavaScriptCSSS3動畫
- Cookie設定HttpOnly屬性CookieHTTP
- AppTheme屬性設定集合APP
- CSS max-width/min-width設定元素尺寸CSS
- 舉例說明photoshop中的設定與css哪些屬性是對應的呢?CSS
- CSS 屬性篇(一):relative與absoluteCSS
- CSS動畫屬性關鍵幀keyframes全解析CSS動畫
- 如何抓取canvas畫布中的圖片Canvas
- canvas畫布基本知識點總結Canvas
- CSS 動畫方式改變 div 尺寸CSS動畫