我正在使用 Web Components 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>
的宽度或高度上应用百分比时,这种方法不起作用。相反,子元素会占据其父元素相同的百分比空间。
我已经尝试了各种其他解决方案并进行了广泛搜索,但都没有找到解决办法。我认为纯CSS的解决方案可能是不可能的,但我希望有人能证明否定的结论是错误的。
澄清一下:最终结果应该是<my-el>
本身表现得像一个内联替换元素,就好像它是具有自己内部尺寸的<img>
元素一样。当您在这些元素上不设置宽度或高度时,它们默认使用其内部尺寸。当您设置宽度或高度时,它们将优先采用,并且任何“内部”内容都会相应调整大小。(至少,我希望能够说明问题!)
width/height:100%
不适用于子元素? - AmmarCSEmy-el { display: contents; }
解决。奇迹般的是,至少在 Firefox 37+ 中存在一种实现,使我能够构建 此演示。 - BoltClock