【发布时间】:2018-05-14 21:47:08
【问题描述】:
我在另一个 div(outer) 中有一个居中的 div(inner)。如果内部 div 大于外部 div,我希望滚动条滚动到元素的顶部或底部。可悲的是,我无法完全滚动到顶部。我认为这是由 transform:translate 技巧引起的。
.outer {
overflow: scroll;
width:100%;
height:100%;
position:relative;
}
.inner {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
background-color:red;
overflow:hidden;
}
/* normalize */
body,html{
width:100%;
height:100%;
margin:0;
padding:0;
}
<div class="outer">
<div class="inner" style="width: 100px; height: 800px;">
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
</div>
</div>
我使用 inline-style 作为内部 div 的宽度和高度,因为我用 js 动态改变了它。
这个问题是在here 之前提出的。但是没有人明白他想做什么。
【问题讨论】:
-
是的,由于溢出行为,您无法滚动顶部
-
不,如果你删除它,你仍然有同样的问题:jsfiddle.net/9yzu7gyd/1
-
检查 stackoverflow.com/questions/49278725/… ;) 我不是指 orverlow 属性,而是 CSS 中的溢出是如何工作的,与 translate 无关
-
感谢您的快速响应,我看错了。
-
@woodyplz 我试图更好地理解你的问题。所以如果内部 div 太高,你希望内部 div 动态调整大小,外部 div 获得滚动条和滚动(而且太宽?)不适合。 1)当你说你的内部 div 是
centered是垂直/水平/两者? 2)你为什么用absolute然后用transform撤消定位?
标签: javascript html css