Я разрабатываю кучу пользовательских элементов для API с помощью веб-компонентов polyfill, и я попал в ловушку.
Один из элементов может содержать элемент <img>
или <canvas>
. Если для настраиваемого элемента не указаны размеры, это должен быть размер дочернего элемента по умолчанию. Если указано одно или несколько измерений, они должны быть унаследованы дочерним элементом.
Для моего первого усилия я подумал, что значение CSS inherit
будет достаточно хорошим:
my-el img, my-el canvas {
width: inherit;
height: inherit;
max-width: inherit;
min-width: inherit;
max-height: inherit;
min-height: inherit;
}
Однако это не работает, если для ширины или высоты для <my-el>
применяется процент. Вместо этого дочерний элемент занимает тот же процент от своего родителя.
Я пробовал различные другие попытки решения и искал всюду, безрезультатно. Я думаю, что чистое решение CSS может быть невозможно, но я надеюсь, что кто-то может доказать обратное.
Чтобы уточнить, конечный результат должен состоять в том, что <my-el>
ведет себя как сам встроенный элемент, как если бы он был <img>
со своими внутренними измерениями. Если вы не задаете ширину или высоту этих элементов, они по умолчанию имеют внутренние размеры. Когда вы устанавливаете ширину или высоту, это имеет приоритет, и любое "внутреннее" содержимое изменяется соответствующим образом. (По крайней мере, я надеюсь, что это разъясняется!)