【发布时间】:2020-05-20 06:52:26
【问题描述】:
我正在使用transform: tranxlate(x, y) css 属性将我的元素定位在容器内。
当我将元素移动到右侧或底部时 - 出现滚动条是因为容器有 overflow: auto;。但是,如果我将元素移动到左侧或顶部 - 显然滚动条不会出现,因为溢出不起作用。
现在我正在寻找一些带有纯 html/js/css 的简约方法,以便能够滚动容器,记住内部内容可能会随机移动到任何一侧。
简而言之,如果黄色块超出左边缘,我希望滚动条出现,就像它在右边缘出现时一样?
这是一个Codepen example,它显示了问题。
var btns = document.querySelectorAll('button');
var inner = document.querySelector('.inner');
var offset = 0;
btns[0].addEventListener('click', function() {
offset -= 25;
inner.style.transform = `translate(${offset}px, 0px)`;
});
btns[1].addEventListener('click', function() {
offset += 25;
inner.style.transform = `translate(${offset}px, 0px)`;
});
button {
margin: 0 auto;
display: block;
}
.outer {
outline: 1px dashed black;
margin: 0 auto;
width: 200px;
height: 200px;
overflow: auto;
}
.inner {
width: 100px;
height: 100px;
background: yellow;
}
<button>Move Left</button>
<button>Move Right</button>
<div class="outer">
<div class="inner"></div>
</div>
【问题讨论】:
-
我不明白,你想总是显示滚动条还是从不显示滚动条?这里的问题到底是什么?另外,您能否在问题中而不是在 StackOverflow 之外的站点中提供可运行的 sn-p?
-
您的询问不清楚,但如果右侧交叉元素,您可以实现一个条件,避免进入右侧站点或最大右侧站点相等值
-
对不起,我正在做一些更大的事情,所以这只是一个非常简单的例子——这就是为什么它可能不容易理解的原因。但是想象一下在画布内移动的对象,如果有任何边界越界,我需要显示滚动条。
-
那么,简而言之,您的问题是什么?你不需要解释你的整个项目,只需要解释你面临的问题。如果我理解正确,您希望滚动条在黄色块超出左边缘时出现,就像它在右边缘时出现的方式一样?
-
是的@CalvinNunes 完全正确
标签: javascript html css scrollbar overflow