canvas標籤的width和height以及style.width和style.height的區別
由於HTML5 Canvas本身的特殊性,所以其大小的設定是很有講究的。下面我們先來看看Canvas一般的寫法。
HTML5 標籤用法程式碼顯示
HTML程式碼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Canvas width(寬)與height(高)</title>
<style>
canvas{border: 1px solid #ccc}
</style >
</head>
<body>
<canvas id="mycanvas">瀏覽器不支援Canvas,請升級或改用其它瀏覽器!</canvas>
<script src="./js/canvas.js"></script>
</body>
</html>
JavaScript程式碼
window.onload = function(){
var mycanvas = document.getElementById('mycanvas');
var ctx = mycanvas.getContext('2d' );
ctx.font ='28px Arial';
ctx.fillStyle = '#0099CC';
ctx.fillText('雲庫網 - 前端開發',35,30);
}
Canvas大小的修改有三種方法
方法一:通過CSS樣式來控制Canvas元素,具體程式碼如下
canvas{border: 1px solid #ccc;width: 600px;height: 300px;}
這裡給canvas加了一個邊框樣式,只是為了方便大家檢視元素變化。
方法二:直接在canvas標籤內定義width和height。具體程式碼如下
<canvas id="mycanvas" width='580' height='350' >瀏覽器不支援Canvas,請升級或改用其它瀏覽器!</canvas>
方法三:在JS程式碼裡面設定width和height,在var ctx = mycanvas.getContext(‘2d’);後面追加如下程式碼
mycanvas.width = 580;
mycanvas.height = 350;
程式碼裡的mycanvas就是前面通過var mycanvas = document.getElementById(‘mycanvas’);獲取的canvas物件,這個根據具體情況進行替換就好了。
那麼兩個 問題來了,如果你有測試過這兩種方法的話,你就會發現通過CSS樣式控制與直接在Canvas標籤內定義width(寬)和height(高),他們在瀏覽器上顯示的效果是不一樣的。通過CSS樣式控制的canvas裡面的內容會被自動放大了。而在Canvas標籤內容定義的width和height就不會。這是為什麼呢?
原來Canvas標籤包涵兩個東西,一個是元素本身,另一個是元素繪圖表面(drawing surface)。他們都有著自己各自的尺寸大小。所在canvas的大小實際上是指兩方面的,元素本身的大小和元素繪圖表面大小。Canvas元素本身和元素繪圖表面預設的大小都是300x150畫素。
前面提到的兩個設定Canvas大小的方法的區別在於,通過CSS設定Canvas大小時,只對Canvas元素本身的大小進行設定,而沒有對元素繪圖表面大小進行設定,所以元素繪圖表面是預設大小300x150畫素。當Canvas元素本身大小與元素繪圖表面不一樣時,瀏覽器會對元素繪圖表面進行縮放,使其符合元素大小。所以就會出現上面看到的兩中不同的效果。而在canvas標籤內直接定義width和height就不一樣了,它是同時定義元素本身大小和元素繪圖表面大小。通過JS來定義與在canvas標籤內定義效果是一樣的。
相關推薦
新手初入Java(二)資料型別、變數和常量以及拆包和
資料型別、變數和常量以及拆包和裝包 一、資料型別 Java資料型別分為基本型別(primitive types)和引用型別(reference type),其中基本型別又分為數值型、字元型、布林型。引用型別又分為類型別、介面型別、陣列型別、null型別。這兩種大的型別包含了int
自制爬蟲,爬取分類總閱讀量,總評論量。全部文章閱讀量和,以及評論量和。但是發現數據不對
def tt(a,name): global ss global cc sum = 0 com = 0 pages = 10 x = 1 nn = [] mm = [] 其中global,很重要。沒有這個global會
C#:區分:重寫、覆蓋和過載以及虛方法和抽象方法
(一)重寫和覆蓋: 重寫: 在宣告時,父類的方法前面加上virtual關鍵字,子類的方法前面加上override關鍵字,且與父類方法同名,表示父類的方法可以被子類進行修改和重新定義。 覆蓋: 在宣告子類方法的時候,新增new關鍵字,定義與父類同名的方法,
extjs 迴圈執行多個非同步請求時,引數和後臺以及相關問題和衍生問題的處理
在Extjs中,非同步請求的寫法: Ext.Ajax.request({ url: '***.action', //async: false, params: { p1: v1, p2: v2 ... }, success: function(resp
POST和GET以及同步請求和非同步請求的區別
一、HTTP是應用層的網路傳輸協議,對於HTTP的請求方式主要流行的GET請求與POST請求對於GET請求與POST請求的區別 1.GET請求,伺服器以及引數都會出現在請求介面中,也就是請求引數也是介面的一部分,而POST請求在介面中只有伺服器地址,而引數會作為請求提交
python 分離檔名和路徑 以及 分離檔名和字尾
分離路徑和檔名: os.path.split() 區分檔案的名字和字尾: os.path.splitext() import os file_path = "D:/test/test.py" (filepath, tempfilename) = os.path.
HTML連載34-背景關聯和縮寫以及插圖圖片和背景圖片的區別
一、背景屬性縮寫的格式 1.backgound:背景顏色 背景圖片 平鋪方式 關聯方式 定位方式 2.注意點: 這裡的所有值都可以省略,但是至少需要一個 3.什麼是背景關聯方式 預設情況下,背景圖片會隨著滾動條的滾動而滾動,如果不想這樣,那麼我們可以修改它們的關
canvas標籤的width和height以及style.width和style.height的區別
由於HTML5 Canvas本身的特殊性,所以其大小的設定是很有講究的。下面我們先來看看Canvas一般的寫法。 HTML5 標籤用法程式碼顯示 HTML程式碼 <!DOCTYPE html> <html lang="en">
用javascript控制css中style.height和style.width時應注意px單位問題
divSlider.style.height = 1000; //在chrome不管用 divSlider.style.height = "500px"; //這樣就好了 1、document.getElementById('div').style.height=
canvas裡設定width和css裡設定width和js裡設定width的區別
canvas.width 和 它的style.width是不一樣的: canvas是個畫布,有他自己的寬和高(預設是沒有單位的純數字),就是canvas.width和canvas.height的寬和高, &nb
style.width 和offsetwidth的區別
當我使用JS的時候 , 我發現有時候用style.width不能獲取元素的值. 後面我才明白 style.width只能獲取當前元素的行間樣式,不能獲取元素的內部樣式 當你的width或者height寫在CSS樣式中的時候,在JS裡你的style不能獲取到width,
js獲取瀏覽器和設備相關width(屏幕的寬度)
view dev viewport document one size ini left cal 首先呢,我們將iPhone手機的相關數據表示如下 我們要理解很多東西,比如邏輯分辨率、物理分辨率、縮放因子、ppi等,這裏先不討論。 首先呢,我們先介紹下各個屏幕寬度: 網
***獲取螢幕寬高 :width(),height(),clientHeight,clientWidth 獲取寬高的區別*
獲取螢幕寬高 :width(),height(),clientHeight,clientWidth 獲取寬高的區別 $(window).width() & $(window).height():獲得的是螢幕可視區域的寬高,不包括滾動條與工具條。 $(window).heigh
vue練習demo 實現簡單的輪播圖,方法簡單快捷,使用到transition-group標籤增加使用者體驗 以及vue中的class與style繫結
結構程式碼: <div class="slider"> <div class="slidershow"> <!-- <transition-group tag="ul">
使用mybatis提供的各種標籤方法實現動態拼接Sql。這裡演示where標籤和if標籤實現使用姓名的模糊查詢和性別查詢使用者列表,當用戶沒有選擇姓名以及性別時查詢出所有的記錄。
1.需求: 使用姓名的模糊查詢和性別查詢使用者列表,當用戶沒有選擇姓名以及性別時查詢出所有的記錄。 2.在UserMapper介面中定義方法: public List<User> findUserByNameAndSex(User user); 3.在UserMapper.xml中
Chrome和Safari瀏覽器jquery width()獲取不到高度的問題
問題概要 : 偶要遍歷一組圖片,遍歷時需要獲取其寬度,效果出來後,IE和Firefox都沒有問題,唯獨Chrome和Safari會出現獲取不到圖片寬度的情況。以往基本上是IE不相容,這下出現Chrome和Safari不相容了,倒覺得稀奇了,故寫出來分享下。 注:程式
web前段設計之痛:手機瀏覽器和pc瀏覽器的width:100%的自適應問題
Tips: 除錯 iPad 或 iPhone 可在設定中啟動除錯模式,在 Mac 中的 Safari 瀏覽器 同樣開啟開發者模式後,進行聯機除錯。功能彪悍。 最近在做一個頁面時,發現在 iPad 的 Safari 瀏覽器中背景顯示不全,定位到該 div 後發現所指定 cs
XHTML:非IE瀏覽器裡對style.width賦值無效的問題
在做JSP頁面時,除錯div的高度的時候,在IE等瀏覽器裡都已經測試通過沒有任何問題,但是在Chrome、Mozilla、Firefox、Netscape裡測試時問題就來了,我的多頁面是在頁面裡用到了 iframe,這些 iframe 初始的 style.height 都
基於js中style.width與offsetWidth的區別
作為一個初學者,經常會遇到在獲取某一元素的寬度(高度、top值...)時,到底是用 style.width還是offsetWidth的疑惑。1. 當樣式寫在行內的時候,如 <div id="box" style="width:100px">時,用 style.wi
去掉html標籤與標籤之間的空格以及標籤和內容之間的空格
看程式碼: <?php if(!function_exists('test')) {function test($str){ $str = preg_replace('/(?<=\>)[\s]+(?=\<)/i','', $s