这似乎是一个可疑的简单问题,但在搜索过StackOverflow和Google并使用了通常的技巧(getBoundingClientRect
, clientWidth
, offsetWidth
)后,我仍然没有找到答案。
简单来说,有没有一种方法可以找到包括不仅是边框、填充等,还包括阴影在内的元素的宽度/高度?
详见:jsfiddle,这里有一个示例,展示了所有内容都返回不带阴影的元素宽度。
编辑:理想情况下,我希望不必调查阴影的CSS属性并解析出其尺寸,虽然这可能是唯一的方法。
这似乎是一个可疑的简单问题,但在搜索过StackOverflow和Google并使用了通常的技巧(getBoundingClientRect
, clientWidth
, offsetWidth
)后,我仍然没有找到答案。
简单来说,有没有一种方法可以找到包括不仅是边框、填充等,还包括阴影在内的元素的宽度/高度?
详见:jsfiddle,这里有一个示例,展示了所有内容都返回不带阴影的元素宽度。
编辑:理想情况下,我希望不必调查阴影的CSS属性并解析出其尺寸,虽然这可能是唯一的方法。
这里有另一种对于我来说在一个特定的例子中非常有效的技术:
创建一个影响高度的shadowParent类,其值与子元素的阴影相同。如果需要,为此目的创建新的父级div。可以使用CSS类来实现,例如: shadow
和 shadowParent
。
那么每当您需要高度+阴影时,只需获取父元素的高度即可。
优点:
在这种情况下,我只是在父元素上设置了一些填充,以适应子元素的阴影。然后获取父元素的高度。
/* ----------------------- */
/* SHADOW */
/* ----------------------- */
.shadow {
box-shadow: 0px 10px 10px black;
}
.shadowParent {
/* Apply matching values to some property that affects parent height. */
/* I used padding, which worked for my context. */
padding-bottom: 10px; /* Value matches shadow values. */
}
<div id="wrapper" class="shadowParent">
<div id="content" class="shadow">
Content + shadow
</div>
</div>