<Canvas> هو عنصر جديد في HTML5 ، والذي يمكن استخدامه بواسطة JavaScript لرسم الرسومات. أولاً ، تم تقديم <Canvas> على لوحة معلومات Mac OS X من Apple ، والتي تم تطبيقها على Safari ، ثم بناءً على متصفح Gecko1.8 ، والذي يدعم أيضًا هذا العنصر الجديد ، مثل متصفح Firefox. اليوم ، عنصر <Canvas> هو جزء من مواصفات HTML5 القياسية.
سنشرح ما يمكن أن يفعله <Canvas> ، من خلال هذا البرنامج التعليمي ، ويمكن استخدامه كنقطة انطلاق لتطبيقك <canvas>. التعلم <canvas> عناصر ليس بالأمر الصعب. ما عليك سوى أن يكون لديك المعرفة الأساسية لـ HTML و JavaScript ، بالإضافة إلى متصفح Firefox ، أحدث إصدار من Safari أو Opera9+، بحيث يمكنك رؤية جميع تأثيرات المثال.
الآن لنبدأ بكيفية تحديد عنصر <Canvas>.
<canvas id = عرض البرنامج التعليمي = 150 ارتفاع = 150> </canvas>
يحتوي عنصر <Canvas> على سمتين فقط ، العرض والارتفاع ، وهما اختياري ويمكن التحكم فيه باستخدام DOM أو CSS. إذا لم يتم تعيين العرض والارتفاع ، فإن العرض الافتراضي هو 300 بكسل ويتم استخدام ارتفاع 150 بكسل. على الرغم من أنه يمكن التحكم في حجم <canvas> وتعديله من خلال CSS ، إلا أنه سيتم قياس الصورة المقدمة للتكيف مع التصميم. بمجرد العثور على نتائج التقديم لتبدو مشوهة ، ليس عليك الاعتماد على CSS. يمكنك تحديد قيم العرض والارتفاع المعروض في <canvas>. تمامًا مثل علامات HTML القياسية ، يمكن أيضًا تحديد سمات المعرف ، والتي يمكن أن تجعل تطبيق البرنامج النصي أكثر ملاءمة. يمكن لعنصر <Canvas> تحديد أسلوبه (الهوامش ، الحدود ، الخلفيات ، إلخ) مثل الصورة العادية. ومع ذلك ، فإن هذه الأنماط ليس لها أي تأثير على الصورة الفعلية التي تم إنشاؤها بواسطة قماش.
نظرًا لأن هذا العنصر جديد نسبيًا ، لا يدعمه جميع المتصفحات ، لذلك نحتاج إلى توفير معلومات عرض بديلة لأولئك الذين لا يستطيعون تصفحهم بشكل طبيعي. يمكنه استخدام النص أو الصور:
- <canvasid = stockgraphwidth = 150Height = 150>
- لا يدعم متصفحك عنصر <Canvas>.
- </canvas>
- <canvasid = clockwidth = 150Height = 150>
- <imgsrc = images.pngwidth = 150height = 150alt = استبدال الصورة/
- </canvas>
في Apple Safari ، يشبه تطبيق <canvas> إلى حد كبير <img> ، وليس له علامة نهائية. ومع ذلك ، لكي يكون <canvas> قابلاً للتطبيق على نطاق واسع في عالم الويب ، يجب تزويد المحتوى البديل بمكان للبقاء ، لذلك من الضروري إنهاء العلامة (<//canvas>) في تطبيق Mozilla. <canvas id = foo ...> </tanvas> متوافق تمامًا مع Safari و Mozilla - Safari يتجاهل ببساطة علامة النهاية. إذا كان هناك محتوى بديل ، فيمكنك استخدام بعض حيل CSS لإخفاء محتوى بديل لـ Safari وفقط له ، لأنه يجب عرض المحتوى البديل في IE ولكن ليس في Safari.
يقوم <Canvas> بإنشاء شاشة رسم ذات حجم ثابت مع واحد أو أكثر من سياقات العرض التي يمكن أن تتحكم في ما يجب عرضه. نحن نركز على التقديم ثنائي الأبعاد ، وهو أيضًا الخيار الوحيد في الوقت الحالي. قد نضيف عرضًا ثلاثي الأبعاد على أساس OpenGL ES في المستقبل.
- varcanvas = document.getElementById ('البرنامج التعليمي') ؛
- varctx = canvas.getContext ('2d') ؛
دعنا نوضح الرمز أعلاه. تهيئة <canvas> فارغة. لرسم نص ، تحتاج إلى تقديم السياق أولاً. يمكن الحصول عليها من خلال طريقة getContext لكائن عنصر القماش. في الوقت نفسه ، يتم أيضًا الحصول على بعض الوظائف التي تحتاج إلى استدعاء الرسم. يقبل GetContext () قيمة تصف نوعها كوسيطة. يحصل السطر الأول أعلاه على عقدة DOM لكائن قماش من خلال طريقة getElementByID. ثم استخدم طريقة GetContext للحصول على سياق تشغيل الرسم. بالإضافة إلى ذلك ، يمكننا أيضًا استخدام البرامج النصية لتحديد دعم المتصفح لـ <canvas> ، أي ، لتحديد ما إذا كان GetContext موجودًا أم لا.
- varcanvas = document.getElementById ('البرنامج التعليمي') ؛
- if (canvas.getContext) {
- varctx = canvas.getContext ('2d') ؛
- // DrawingCodehere
- }آخر{
- // canvas-unsupportedCodehere
- }
نبدأ بأبسط قالب أدناه ، يمكنك نسخها إلى النسخ الاحتياطي المحلي.
- <html>
- <head>
- <title> canvastutorial </title>
- <scriptType = text/javaScript>
- functionDraw () {
- varcanvas = document.getElementById ('البرنامج التعليمي') ؛
- if (canvas.getContext) {
- varctx = canvas.getContext ('2d') ؛
- }
- }
- </script>
- <Tyletype = text/css>
- قماش {الحدود: 1pxsolidblack ؛}
- </style>
- </head>
- <bodyonload = draw () ؛>
- <canvasid = tutorialWidth = 150Height = 150> </tanvas>
- </body>
- </html>
ستجد بعناية وظيفة تسمى Draw ، والتي سيتم تنفيذها مرة واحدة بعد تحميل الصفحة (عن طريق تعيين خاصية Onload لعلامة الجسم) ، وبالطبع يمكن استدعاؤها أيضًا في SetTimeOut أو SetInterval أو وظائف معالجة الأحداث الأخرى.
للبدء ، دعونا نلقي نظرة بسيطة - ارسم مستطيلتين متداخلين ، أحدهما له تأثير شفاف ألفا. سنعطيك نظرة مفصلة على كيفية عمله في المثال التالي.
- <html>
- <head>
- <scriptType = Application/X-JavaScript>
- functionDraw () {
- varcanvas = document.getElementById (قماش) ؛
- if (canvas.getContext) {
- varctx = canvas.getContext (2d) ؛
- ctx.fillstyle = rgb (200،0،0) ؛
- CTX.FillRect (10،10،55،50) ؛
- CTX.FillStyle = RGBA (0،0،200،0.5) ؛
- CTX.FillRect (30،30،55،50) ؛
- }
- }
- </script>
- </head>
- <bodyonload = draw () ؛>
- <canvasid = canvaswidth = 150height = 150> </tanvas>
- </body>
- </html>
يمكنك نسخ الرمز أعلاه إلى ملف HTML لتشغيله ، العروض: