如何在css

时间:2017-04-18 17:28:48

标签: css

我已经看到了一些尝试解决这个问题的例子,但我似乎无法找到一个完全有效的例子。我正在尝试在屏幕中央创建一个对话框作为叠加层。示例1仅在对话框适合查看器的屏幕高度时。在示例2中固定位置将不允许在增加的高度上滚动。如果我将叠加位置更改为绝对并将对话框更改为相对,则它会解决高度/滚动问题,除非我向下滚动视图外部分不是叠加示例3的一部分。

example1 https://jsfiddle.net/jdjmmzd6/1/

example2 https://jsfiddle.net/jdjmmzd6/2/(覆盖高度更改为500)

example3 https://jsfiddle.net/jdjmmzd6/(覆盖绝对和对话相对)

示例1如下所示:

<html>

<style>

.overlay {
 position:fixed;
 z-index:9999;
 background-color:rgba(0,0,0,0.5);
 text-align:center;
 width:100%;
 height:100%;
 top:0px;
 left:0px;
}

.popup {
 margin:0;
 position:absolute;
 top:50%;
 left:50%;
 -ms-transform:translate(-50%, -50%);
 transform:translate(-50%, -50%);
 background:#fff;
 width:50%;
 height:200px;
}

</style>

<body>
 <div class="overlay">
  <div class="popup">Hello World</div>
 </div>
 page<br>filler<br>page<br>filler<br>page<br>filler<br>
 page<br>filler<br>page<br>filler<br>page<br>filler<br>
 page<br>filler<br>page<br>filler<br>page<br>filler<br>
 page<br>filler<br>page<br>filler<br>page<br>filler<br>
 page<br>filler<br>page<br>filler<br>page<br>filler<br>
 page<br>filler<br>page<br>filler<br>page<br>filler<br>
 page<br>filler<br>page<br>filler<br>page<br>filler<br>
 page<br>filler<br>page<br>filler<br>page<br>filler<br>
</body>

</html>

2 个答案:

答案 0 :(得分:0)

如果您希望对话框有自己的滚动,则需要为其设置容器。然后,从那里,您可以在容器上设置特定高度,并能够滚动(overflow-y: scroll),然后在内部div上设置更大的高度。这使您可以自定义它们在内部div中滚动的程度。

请注意,因为我们在原始对话框周围添加了容器,所以我们需要将定位逻辑移动到dialog-container。您的示例1适用于定位,但您真正想知道的是如何使对话框可滚动。

这是jsFiddle:https://jsfiddle.net/augburto/085k68pa/

内联代码示例

.overlay {
 position:fixed;
 z-index:9999;
 background-color:rgba(0,0,0,0.5);
 text-align:center;
 width:100%;
 height:100%;
 top:0px;
 left:0px;
}

.dialog {
 height:500px;
}

.dialog-container {
  posiiton: relative;
  width:50%;
  overflow-y: scroll;
  height: 200px;  
  margin:0;
  position:absolute;
  top:50%;
  left:50%;
  -ms-transform:translate(-50%, -50%);
  transform:translate(-50%, -50%);
  background:#fff;
}
<body>
 <div class="overlay">
  <div class="dialog-container">
    <div class="dialog">Hello World</div>
  </div>
  </div>
 page<br>filler<br>page<br>filler<br>page<br>filler<br>
 page<br>filler<br>page<br>filler<br>page<br>filler<br>
 page<br>filler<br>page<br>filler<br>page<br>filler<br>
 page<br>filler<br>page<br>filler<br>page<br>filler<br>
 page<br>filler<br>page<br>filler<br>page<br>filler<br>
 page<br>filler<br>page<br>filler<br>page<br>filler<br>
 page<br>filler<br>page<br>filler<br>page<br>filler<br>
 page<br>filler<br>page<br>filler<br>page<br>filler<br>
</body>

答案 1 :(得分:0)

如果我理解正确,您希望整个页面使用模态滚动。在这种情况下,使用:

代替宽度和高度100%
top:0px;
left:0px;
bottom: 0px;
right: 0px;

确保相对于模态的容器元素添加位置(在您的情况下为body)。

body {
  position: relative;
}

小提琴here