В HTML5 нам разрешено определять любой элемент, который мы хотим, например:
<mycustomlabel attr1="...">
<!-- contents whatsoever -->
</mycustomlabel>
Теперь я хочу, чтобы <mycustomlabel>
выглядел и чувствовал себя как обычный <label>
.Что касается части внешнего вида, я могу положиться на CSS, и я мог бы выделить тонны CSS-правил, чтобы они выглядели так же, как <label>
.
НО a <label>
также имеет оченьконкретное поведение, которое я хочу видеть клонированным в <mycustomlabel>
: когда он получает фокус, его первый фокусируемый потомок получает фокус.Более того (и что более важно), если его щелкнуть, этот ребенок получит щелчок.
Я мог бы запрограммировать все это поведение в javascript (за исключением того, что я не знал точно , каковы все особые поведения в<label>
имеет, но, зная, что мой новый пользовательский элемент должен вести себя точно , как <label>
).Однако я ненавижу дублирование кода, и все эти детали реализации в любом случае прячутся где-то внутри браузера.
Так как же я могу сделать так, чтобы мой пользовательский элемент расширялся от <label>
?