【发布时间】:2021-10-13 17:46:17
【问题描述】:
我有一个名为img-with-overlay 的div,其中包含一个静态定位的图像和一个绝对定位的叠加层。当img-with-overlay 悬停在上面时,覆盖从0 不透明度变为1。一个意想不到的副作用是,在基于 Chrome 和 Chromium 的浏览器中,当覆盖层不透明时,垂直滚动条会消失。它不会出现在 Firefox 中。
你问为什么会有滚动条?你可以看到有一个container 有一个非常具体的width 和height。即使这些尺寸改变了半个像素,也不会发生意外的副作用。我正在使用这个容器来代表我网页的body,尽管我为了适应 sn-p 的目的而将它缩小了。虽然大多数屏幕尺寸不会出现问题,但我仍然想防止它过度发生。
$(document).ready(function () {
$('.img-with-overlay').hover(function () {
$('.overlay').css('opacity',1);
}, function () {
$('.overlay').css('opacity',0);
})
});
.container {
width: 600px;
height: 248.5px;
overflow: auto;
overflow-x: hidden;
}
.img-with-overlay {
position: relative;
overflow: hidden;
width: 100%;
}
img {
display: block;
width: 100%;
}
.overlay {
position: absolute;
top: 0;
opacity: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
<div class="img-with-overlay">
<img src="https://via.placeholder.com/468x200?text=Hover">
<div class="overlay">This is an overlay</div>
</div>
</div>
为什么当叠加层的不透明度发生变化时,滚动条会消失/重新出现?
我注意到的一些有趣的事情:
- 如果将
img替换为相同尺寸的div,则不会出现滚动条。 - 如果将叠加层不透明度设置为小于 1 的值,例如 0.7,则滚动条不会在悬停时消失。
【问题讨论】:
标签: jquery google-chrome scrollbar chromium opacity