父元素设置了超出隐藏,怎么获取子元素的真是高度
时间: 2024-09-17 12:03:12 浏览: 102
当父元素设置 `overflow` 属性为 `hidden` 以隐藏超出内容时,直接通过 JavaScript 或 CSS 获取子元素的高度可能会受到影响,因为浏览器实际上不会显示这部分内容。但是,你可以采用几种方法来获取子元素的真实高度:
1. 使用 JavaScript (DOM 方式):
- **offsetHeight** 或 **getBoundingClientRect()**: 这两个方法可以获取元素相对于视口的位置信息,包括高度。示例:
```javascript
var childElement = document.getElementById('your-child-element');
var height = childElement.offsetHeight; // 如果元素未滚动,则返回总高度
if (childElement.getBoundingClientRect().top !== 0) { // 如果有滚动,取可视部分高度
height = childElement.getBoundingClientRect().height;
}
```
2. 利用CSS计算属性(如果浏览器支持):
- 可以利用 `height` 和 `scrollHeight` 属性结合计算样式,如 `height: max-content` 或 `height: calc(100% - <padding + margin>)` 来获取实际高度。
```css
.parent {
overflow: hidden;
display: flex; /* 需要 flex 来保证子元素高度可见 */
}
.parent > div {
height: calc(100% - env(safe-area-inset-bottom));
}
```
3. 使用 `getComputedStyle()` 和 `window.getComputedStyle()`(针对动态变化高度):
- 获取元素的 computed style,其中包含滚动高度的信息。
```javascript
var parentStyle = window.getComputedStyle(parentElement);
var childHeight = parseInt(parentStyle.getPropertyValue('height'), 10) + parseInt(parentStyle.getPropertyValue('padding-top')) + parseInt(parentStyle.getPropertyValue('padding-bottom'));
```
阅读全文