2011-01-25 2 views

ответ

39

Учитывая, что canvas element имеет transparent content model, он может содержать FALLBACK элементы, которые отображаются в том случае, если элемент canvas не поддерживается. Они будут не будет отображаться, если холст поддерживается.

Вы можете размещать элементы HTML относительно родителя canvas, чтобы кнопки «зависали» над холстом. menu element может быть соответствующим образом семантический элемент для отображения списка элементов управления, в зависимости от контекста:

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

Использование 'menu' не требуется. Таким образом вы можете отобразить почти любой элемент HTML поверх холста. –

+3

@ peci1, я выбрал '

' для этого случая, потому что он был семантическим, а не потому, что он делает что-то особенное в отношении ''. – zzzzBov

4

HTML внутри холста невозможно, но, возможно, вы можете позиционировать свои элементы абсолютно так, чтобы они «плавали» над холстом, но не внутри него.

+2

Сейчас смотрите мой ответ здесь HTTP: // StackOverflow.ком/а/12464988/575501. – cburgmer

4

Я не верю, что вы можете «помещать» содержимое HTML внутри тега canvas. Независимо от того, что вы там разместите, на самом деле будет отображаться, если браузер не поддерживает<canvas>.

Вы можете, однако, позиционировать свои кнопки абсолютно поверх холста или визуализировать области на вашем холсте, которые «смотрят» на кнопки и обрабатывают события самостоятельно (много работы).

+3

Вы имеете в виду все, что вы вкладываете в холст _element_ (не тег);) – kangax

+0

kangax правильный, я должен быть более ясным! –

0

HTML внутри холста не представляется возможным.
Но если вы действительно хотите использовать кнопки, почему бы вам не попробовать позиционировать кнопки поверх холста?

8

Вы можете поставить кнопку на верхней части canvas, давая холст z-index, который ниже, чем z-index кнопки:

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

где x и y являются числами.

+1

Я обнаружил, что это сработало в chrome, но для firefox я должен был дать холсту отрицательный z-индекс. – skorulis

2

Один из способов кнопку, чтобы добавить динамически в верхней части холста следующие два следующих пунктов: 1. Создание ZIndex кнопки выше, чем холст 2. Положение кнопки, используя абсолютное позиционирование с желаемой сверху и слева значение

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

HTML:

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

CSS:

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

JavaScript:

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'); 
}); 
Смежные вопросы