Как расширить элемент html5 <label>, чтобы сделать пользовательский элемент? - PullRequest
0 голосов
/ 08 июня 2018

В HTML5 нам разрешено определять любой элемент, который мы хотим, например:

<mycustomlabel attr1="...">
    <!-- contents whatsoever -->
</mycustomlabel>

Теперь я хочу, чтобы <mycustomlabel> выглядел и чувствовал себя как обычный <label>.Что касается части внешнего вида, я могу положиться на CSS, и я мог бы выделить тонны CSS-правил, чтобы они выглядели так же, как <label>.

НО a <label> также имеет оченьконкретное поведение, которое я хочу видеть клонированным в <mycustomlabel>: когда он получает фокус, его первый фокусируемый потомок получает фокус.Более того (и что более важно), если его щелкнуть, этот ребенок получит щелчок.

Я мог бы запрограммировать все это поведение в javascript (за исключением того, что я не знал точно , каковы все особые поведения в<label> имеет, но, зная, что мой новый пользовательский элемент должен вести себя точно , как <label>).Однако я ненавижу дублирование кода, и все эти детали реализации в любом случае прячутся где-то внутри браузера.

Так как же я могу сделать так, чтобы мой пользовательский элемент расширялся от <label>?

...