2011-01-25 6 views
26

मैं उस गेम के लिए बटन बनाना चाहता हूं जो मैं वास्तविक HTML बटन के रूप में बना रहा हूं, लेकिन उन्हें कैनवास के अंदर होना चाहिए।क्या मैं कैनवास के अंदर एक HTML बटन डाल सकता हूं?

मैं यह करने के बारे में कैसे जाउंगा?

उत्तर

39

यह देखते हुए कि canvas element एक transparent content model है, यह वापस आने तत्व है जो घटना है कि canvas तत्व असमर्थित है में प्रदर्शित किए जाते हैं हो सकता है। वे नहीं प्रदर्शित होंगे यदि कैनवास समर्थित है।

आप कैनवास के माता-पिता से संबंधित एचटीएमएल तत्वों को कैनवास पर "होवरिंग" बटन रखने के लिए स्थिति दे सकते हैं। एक menu element नियंत्रण की एक सूची प्रस्तुत करने के लिए संदर्भ के आधार पर एक उचित रूप से अर्थ तत्व हो सकता है:

HTML:
<div id="container"> 
    <canvas id="viewport"> 
    </canvas> 
    <menu id="controls"> 
    </menu> 
</div> 
सीएसएस:
#container 
{ 
    height: 400px; 
    position: relative; 
    width: 400px; 
} 
#viewport 
{ 
    height: 100%; 
    width: 100%; 
} 
#controls 
{ 
    bottom: 0; 
    left: 0; 
    position: absolute; 
    width: 100%; 
} 
+0

'मेनू' का उपयोग करना आवश्यक नहीं है। आप इस तरह से कैनवास पर लगभग किसी भी HTML तत्व प्रदर्शित कर सकते हैं। –

+3

@ peci1, मैंने इस मामले के लिए '

'चुना क्योंकि यह अर्थपूर्ण था, क्योंकि यह' 'के संबंध में कुछ खास नहीं करता है। – zzzzBov

4

कैनवास के अंदर एचटीएमएल संभव नहीं है, लेकिन हो सकता है कि आप अपने तत्वों को पूरी तरह से स्थापित कर सकें ताकि वे कैनवास पर "फ़्लोटिंग" कर सकें, लेकिन इसके अंदर नहीं।

+2

अब यह मेरा उत्तर यहाँ http देख रहा है।com/एक/12464988/575501। – cburgmer

4

मुझे विश्वास नहीं है कि आप एक कैनवास टैग के अंदर HTML सामग्री डाल सकते हैं। जो भी आप वहां डालते हैं, वास्तव में प्रदर्शित किया जाएगा यदि ब्राउज़र <canvas> का समर्थन नहीं करता है।

हालांकि, आप अपने बटन को कैनवास के शीर्ष पर पूरी तरह से स्थानांतरित कर सकते हैं या अपने कैनवास में ऐसे क्षेत्रों को प्रस्तुत कर सकते हैं जो बटन की तरह दिखते हैं और ईवेंट को स्वयं (बहुत सारे काम) को संभालते हैं।

+3

आपका मतलब है कि आप जो कुछ भी डाल सकते हैं वह कैनवास _element_ (टैग नहीं);) – kangax

+0

कंगैक्स सही है, मुझे और स्पष्ट होना चाहिए! –

0

एचटीएमएल कैनवास के अंदर संभव नहीं है।
लेकिन यदि आप वास्तव में बटन का उपयोग करना चाहते हैं, तो आप कैनवास के शीर्ष पर बटन को स्थानांतरित करने का प्रयास क्यों नहीं करते?

8

आप कैनवास एक z-index जो बटन के z-index तुलना में कम है देकर canvas के शीर्ष पर बटन रख सकते हैं:

<canvas style="z-index:1"></canvas> 
<input type="button" style="z-index:2; position:absolute; top:x; left:y" value="test"/> 

जहां x और y नंबर दिए गए हैं।

+1

मैंने पाया कि यह क्रोम में काम करता है, लेकिन फ़ायरफ़ॉक्स के लिए मुझे कैनवास को नकारात्मक जेड-इंडेक्स देना था। – skorulis

2

एक तरह से कैनवास के शीर्ष पर गतिशील बटन जोड़ने के लिए अगले दो अंक पीछा कर रहा है: 1. बटन कैनवास 2. स्थिति बटन वांछित शीर्ष के साथ पूर्ण स्थिति का उपयोग कर की तुलना में अधिक की zindex बनाना और बाएं मूल्य

Jsfiddle: https://jsfiddle.net/n2EYw/398/

HTML:

<canvas id="canvas" width="200" height="200">   
</canvas> 

सीएसएस:

canvas { 
    border: 1px dotted black; 
    background: navy; 
} 

जावास्क्रिप्ट: // stackoverflow:

var $testButton = $('<input/>').attr({ 
    type: 'button', 
    name: 'btn1', 
    value: 'TestButton', 
    id: 'testButton', 
    style: 'position:absolute; top:50px;left:100px; zindex:2' 
}); 
$('body').append($testButton); 
$(document).on("click", "#testButton", function() { 
    alert('button clicked'); 
}); 
संबंधित मुद्दे