【发布时间】:2015-08-28 11:38:51
【问题描述】:
我正在使用 Web 组件 polyfill 为 API 开发一堆自定义元素,但遇到了困难。
其中一个元素可能包含<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> 的宽度或高度应用百分比时,这不起作用。取而代之的是子元素takes up the same percentage of its parent。
我已经尝试过各种其他解决方案,但无济于事。我认为纯 CSS 解决方案可能是不可能的,但我希望有人能证明并非如此。
澄清一下,最终结果应该是<my-el> 本身的行为就像一个内联替换元素,就好像它是一个具有自己内部尺寸的<img>。当您没有在这些元素上设置宽度或高度时,它们默认为其内部尺寸。当您确实设置宽度或高度时,这具有优先权,并且任何“内部”内容都会相应地调整大小。 (至少,我希望澄清一下!)
【问题讨论】:
-
it should be the default size of the child element.我显然误解了,但为什么width/height:100%不能为子元素工作? -
没关系,我现在看到了jsfiddle.net/6vygke92/1
-
假设容器是 400px 宽,当父级有 50% 的宽度(解析为 200px)并且子级继承了这个值,你到底想要什么?子级与父级具有相同的宽度以像素为单位?
-
@sp00m,正确。我可能不得不用更多的例子来澄清这个问题,因为目前的形式似乎很难理解。
-
这个问题可以通过CSS Display 3 中的
my-el { display: contents; }来解决。神奇的是,Firefox 37+ 中至少存在一种实现,允许我构造 this demo。
标签: css web-component custom-element