首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用于模式的css -如何将其放置在页面上方但可在窗口中滚动

用于模式的css -如何将其放置在页面上方但可在窗口中滚动
EN

Stack Overflow用户
提问于 2015-04-15 19:04:00
回答 3查看 6.8K关注 0票数 4

以下是html:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<body>
 <div class="ngdialog">
   <div class="ngdialog-overlay></div>
   <div class="ngdialog-content>
      ...modal content
   </div.
 </div>
<body>

正如您所猜测的,is对话框div是一个模式(z-index: 10000)。我的目标是,运用一些组合风格(位置,浮子等)。使之成为这样:

当显示模式时,有覆盖(灰色和不透明度;0.5)覆盖页面中的所有其他元素。

( b)如果模态内容比页面长,我希望用户能够使用主滚动条查看模态的底部/顶部。换句话说,如果页面的其余部分只有100 of,但模式是200 of,我想要使用scoll条来允许用户滚动额外的100 of。

我遇到的问题是,当我将no对话框定位为绝对值时,窗口将不允许我滚动以查看模态的其余部分(因为绝对元素不再在标准元素流中)。

如果我尝试使用固定定位,就没有滚动条。如果我使用相对定位,其他页面元素(覆盖在上面)会被移动。

我尝试过(感觉上)所有这些元素的绝对,相对,固定,静态,浮动的每一个组合,我无法得到我想要的行为。

记住身体是相对的(如果需要的话可以改变)。

谢谢你,谢谢你的评论。

编辑:对不起,我不得不在那里睡觉,这里有一把小提琴:

https://jsfiddle.net/vpgoy756/1/

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-16 06:52:49

WIthout更改您的HTML结构,这是您需要做的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
* {
    /* This was to save typing */
    margin: 0;
    padding: 0;
}
html {
    width: 100%;
    height: 100%;
}
body {
    position: relative;
    width: 100%;
    min-height: 100%;
}
.ngdialog {
    z-index: 10000;
    text-align: center;
    overflow: hidden;
}
.ngdialog-overlay {
    position: absolute;
    width: 100%;
    height: 100%;
    z-index: 9999;
    background: rgba(0,0,0, .4);
}
.ngdialog-content {
    position: absolute;
    z-index: 10000;
    width: 100%;
    height: 100%;
    max-height: 100%;
    overflow: auto;
}
.panel {
    margin-top: 50px;
    margin-left: 10%;
    margin-right: 10%;
    min-height: 500px;
    z-index: 10000;
}
.reg-page-block {
    width: 200px;
    height: 200px;
    display: inline-block;
    background-color: #0f0;
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"/>
<!-- ^ from your provided fiddle -->
<body>
    <div class="ngdialog">
        <div class="ngdialog-overlay"></div>
        <div class="ngdialog-content">
            <div class="panel panel-primary">
                <div class="panel-heading">modal</div>
                <div class="panel-body">content</div>
            </div>
        </div>
    </div>
    <div class="reg-page-block">Regular Page</div>
</body>

请注意,如果对话框和内容都比viewport高,您将得到双滚动条--这可能不可取,但您特别要求对话框与内容分开滚动。

票数 2
EN

Stack Overflow用户

发布于 2015-04-15 19:58:50

尝试一些这种CSS,看看它是否能起作用。如果不看到当前的CSS代码,很难提供精确的解决方案,但这可能会奏效。

使用此HTML结构代替:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="ngdialog-overlay">
    <div class="ngdialog-content">CONTENT HERE</div>
</div>

这个CSS代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.ngdialog-overlay {
    display:block;
    width:100%;
    height:100%;
    background:#333333;
    background:rgba(0,0,0,0.8);
    z-index:10000;
    position:fixed;
    top:0;
    left:0;
    overflow: scroll;
}
.ngdialog-content{
    text-align: center;
    width:100%;
    height:100%;
    padding-top:30px;
    padding-bottom:30px;

    /* Optional if you want content vertically centered */
    display:table-cell;
    vertical-align: middle;
}

诀窍是overflow:scroll;高度:100%;--因为我们有一个设置的高度,如果内容变得更高,它们就会溢出并滚动。但是在这种情况下,当用户试图滚动时,它实际上是在滚动.ngdialog-overlay元素,而不是窗口本身。

http://jsfiddle.net/bcole808/6wcsxf3z/1/

票数 0
EN

Stack Overflow用户

发布于 2022-07-13 06:09:08

在CSS文件中添加以下行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.modal-dialog {
  transform: translateY(50%)!important;
}

您可以将50%更改为任何其他值,这将解决浏览器中的问题,它为我工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29664622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文