Bagaimana saya bisa mendapatkan lebar dan tinggi elemen kanvas di JavaScript?
Juga, apa "konteks" dari kanvas yang terus saya baca?
sumber
Bagaimana saya bisa mendapatkan lebar dan tinggi elemen kanvas di JavaScript?
Juga, apa "konteks" dari kanvas yang terus saya baca?
Mungkin ada baiknya melihat tutorial: Tutorial Kanvas Firefox
Anda bisa mendapatkan lebar dan tinggi elemen kanvas hanya dengan mengakses properti elemen tersebut. Sebagai contoh:
var canvas = document.getElementById('mycanvas');
var width = canvas.width;
var height = canvas.height;
Jika atribut width dan height tidak ada dalam elemen kanvas, ukuran default 300x150 akan dikembalikan. Untuk mendapatkan lebar dan tinggi yang benar secara dinamis gunakan kode berikut:
const canvasW = canvas.getBoundingClientRect().width;
const canvasH = canvas.getBoundingClientRect().height;
Atau menggunakan sintaks penghancur objek yang lebih pendek:
const { width, height } = canvas.getBoundingClientRect();
Ini context
adalah objek yang Anda dapatkan dari kanvas untuk memungkinkan Anda menggambar ke dalamnya. Anda bisa menganggapnya context
sebagai API ke kanvas, yang memberi Anda perintah yang memungkinkan Anda menggambar di elemen kanvas.
width
danheight
ditentukan secara langsung sebagai<canvas />
atribut tagNah, semua jawaban sebelumnya tidak sepenuhnya benar. 2 dari browser utama tidak mendukung 2 properti tersebut (IE adalah salah satunya) atau menggunakannya secara berbeda.
Solusi yang lebih baik (didukung oleh sebagian besar browser, tetapi saya tidak memeriksa Safari):
Setidaknya saya mendapatkan nilai yang benar dengan scrollWidth dan -Height dan HARUS mengatur canvas.width dan height saat ukurannya diubah.
sumber
Jawaban yang menyebutkan
canvas.width
mengembalikan dimensi internal kanvas, yaitu yang ditentukan saat membuat elemen:Jika Anda mengukur kanvas dengan CSS, dimensi DOM-nya dapat diakses melalui
.scrollWidth
dan.scrollHeight
:sumber
width
danheight
call akan selalu mengembalikan 300x150 jika Anda tidak menentukan nilai apa pun dan menggunakan ukuran relatif (saat menggunakan bootstrap ... dll). Terima kasih.Objek konteks memungkinkan Anda untuk memanipulasi kanvas; Anda bisa menggambar persegi panjang misalnya dan banyak lagi.
Jika Anda ingin mendapatkan lebar dan tinggi, Anda cukup menggunakan atribut HTML standar
width
danheight
:sumber
sekarang mulai tahun 2015 semua browser (utama?) tampaknya rendah
c.width
danc.height
mendapatkan ukuran internal kanvas , tetapi:pertanyaan sebagai jawaban menyesatkan, karena kanvas pada prinsipnya memiliki 2 ukuran berbeda / independen.
"Html" katakanlah lebar / tinggi CSS dan lebar / tingginya (atribut-)
lihat contoh singkat tentang ukuran yang berbeda ini , di mana saya meletakkan kanvas 200/200 ke dalam elemen 300/100 html
Dengan sebagian besar contoh (semua yang saya lihat) tidak ada set ukuran css, jadi ini mengimplikasikan lebar dan tinggi dari ukuran kanvas (gambar-). Tetapi itu bukanlah suatu keharusan, dan dapat menghasilkan hasil yang lucu, jika Anda mengambil ukuran yang salah - mis. css widht / height untuk posisi dalam.
sumber
Tidak ada yang berhasil untuk saya. Coba ini.
sumber
Berikut adalah CodePen yang menggunakan canvas.height / width, CSS height / width, dan konteks untuk merender kanvas dengan benar dalam ukuran berapa pun .
HTML:
CSS:
Javascript:
Pada dasarnya, canvas.height / width mengatur ukuran bitmap yang Anda render. Tinggi / lebar CSS kemudian menskalakan bitmap agar sesuai dengan ruang tata letak (sering kali membelokkannya saat menskalakannya). Konteks kemudian dapat memodifikasi skalanya untuk digambar, menggunakan operasi vektor, pada ukuran yang berbeda.
sumber
Saya mengalami masalah karena kanvas saya berada di dalam wadah tanpa ID jadi saya menggunakan kode jquery di bawah ini
sumber