中心div大于其容器溢出滚动

时间:2018-02-14 12:32:17

标签: css scroll overflow transform centering

在容器中有一个绝对放置且完全居中(“翻译技巧”)的div:jsfiddle

<div id='container'>
  <div id='content'>
    <p>
      centered...
    </p>
  </div>
</div>

#container{
  position: relative;
  width: 400px;
  height: 400px;
  background-color: gray;
}

#content{
  position: absolute;
  width: 100px;
  height: 100px;
  top: 50%;
  left: 50%;
  border: 1px solid red;
  transform: translate(-50%, -50%);
}

现在当这个内部div变得比它的容器大并且容器有溢出时:auto(滚动)。通过向左和向上滚动它及其最大值jsfiddle,无法使内部div的最顶部和左侧部分在容器内变得可见。

#container{
  ...
  overflow: auto;
}

#content{
  ...
  width: 500px;
  height: 500px;
  ...
}

当内部div缩放到溢出容器div的比例时,会发生“相同”的事情:jsfiddle

#container{
  ...
  overflow: auto;
}

#content{
  ...
  transform: ... scale(5);
}

关于如何让内部div保持居中并且仍然能够通过使用容器div的滚动条到达其所有区域的任何想法?或者当大小溢出容器时可能会丢弃“居中”(可能使用javascript)?纯css解决方案是首选。

1 个答案:

答案 0 :(得分:0)

您可以使用一些绝对定位来进行居中,最大高度和最大宽度,并将滚动放在内部容器上,如下所示:

https://jsfiddle.net/hnzo2sa4/

&#13;
&#13;
.container {
  position: relative;
  background-color: gray;
  margin: 10px;
}

.bigger {
  width: 300px;
  height: 300px;
}

.same {
  width: 200px;
  height: 200px;
}

.smaller {
  width: 100px;
  height: 100px;
}

.content {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  margin: auto;
  width: 200px;
  height: 200px;
  max-width: 100%;
  max-height: 100%;
  background: rgba(987, 654, 321, .6);
  overflow: scroll;
}
&#13;
<div class="container bigger">
  <div class='content'>
    <p>centered...</p>
    <p>centered...</p>
    <p>centered...</p>
    <p>centered...</p>
  </div>
</div>

<div class="container same">
  <div class='content'>
    <p>centered...</p>
    <p>centered...</p>
    <p>centered...</p>
    <p>centered...</p>
  </div>
</div>

<div class="container smaller">
  <div class='content'>
    <p>centered...</p>
    <p>centered...</p>
    <p>centered...</p>
    <p>centered...</p>
  </div>
</div>
&#13;
&#13;
&#13;

相关问题