如何“;“修复”;显示滚动条时的容器元素高度
how to "fix" container element height when scrollbar shows?
我有一个水平滚动条,只有在悬停时才会显示。但问题是,当它显示时,它会增加容器的高度,并向下推动以下元素。演示示例。当滚动条显示
时,两个div将被按下
<div class="wrapper">
<div class="one">
<div class="oneChild">the height is unknown,the height is unknown,the height is unknown,the height is unknown</div>
</div>
<div class="two">I'm two</div>
有一些规则:
- 包装器和一个高度无法固定,因为*oneChild*内容高度未知。两个人的身高都是由他们的孩子决定的
scroball仅在悬停时显示。您可以使用js或css来控制它的可见性。
欢迎使用任何js/css解决方案。
如果jquery是一个选项:
$(document).ready(function() {
height = $('.one').height();
$('.two').css('marginTop', height + 'px');
});
css:
.one {
width: 100px;
border: 1px seagreen solid;
position:relative;
}
.one:hover {
overflow: scroll;
}
.two {
position: absolute;
top:30px;
}
如果一个元素的子元素永远不会改变,那么您可以在设置高度后获得元素的高度,然后将其固定在该高度。
var $one = $('.one');
var height = $one.height();
$one.css('height', height);
如果一个元素的子元素的高度可能发生变化,则可以在悬停在该元素上时固定高度,并在停止悬停时将其设置为自动。
var $one = $('.one');
var height = $one.height();
$one.on('mouseenter', function() {
$one.css('height', height);
});
$one.on('mouseleave', function() {
$one.css('height', 'auto');
});
您可以将悬停时div的高度设置为滚动条不在时的高度。假设jQuery正常:
$(document).ready(function() {
var oneHeight = $('.one').height();
$('.one').hover(
function(){ $(this).height(oneHeight); },
function(){ $(this).height(oneHeight); }
);
});
这确实增加了一个不幸的垂直滚动条,但如果你想让垂直位置保持不变,你需要有垂直条来查看水平滚动条的内容。
我的解决方案是:首先添加填充底部,它与水平scroball一样高,然后当鼠标悬停事件发生时,填充底部设置为零。
相关文章:
- 查找元素高度,包括边距
- 如何计算每个元素's的高度,并将这些值用作函数中的变量
- 根据元素高度和宽度的百分比变化增加或减少字体大小
- 更改第二次推送时不起作用的元素高度
- 设置固定元素的最大高度
- 如何根据主体高度动态更改元素边距顶部
- 我需要帮助弄清楚一旦窗口的垂直高度被滚动,如何切换一个元素
- 要更改变量的高度li元素
- 如何在不同的设备模式下强制元素的高度
- 使用JavaScript更改带有窗口高度的元素样式
- 获取不可见元素的高度
- jQuery查找最大元素的高度
- 远距离变换元素的宽度/高度(以像素为单位)
- 使用Javascript匹配两个HTML元素的高度
- 指示中的角度手表元素高度
- 清空并附加元素的扩展高度
- 获取下一个或上一个隐藏元素的高度,以设置父元素的高度.jquery.
- 如何在 React 中使用可变高度元素实现无限滚动
- 如何获取"br"的高度元素使用jquery
- <对象的自动高度/>元素中嵌入的内容