【问题标题】:absolutely positioned content is not displayed inside angular ui-router ui-view绝对定位的内容不会显示在角度 ui-router ui-view 中
【发布时间】:2016-06-06 20:51:03
【问题描述】:

我在这里有 plunkr,它显示了我面临的问题。基本上我正在尝试为中间 div 元素创建一个滚动条,让所有三个 div 都适合页面。

如果我将它用作 html 页面,这种方法效果很好,但是当我在 ui-view 中使用它时,'#content-scroll' 内的内容不会显示,如果我从 CSS 中删除 position:absolute,它会显示,但不显示滚动条。

基本上我只想知道如何显示内容?

如何解决?

http://plnkr.co/edit/ZkGafJ8cS6VG6lfS9SJY?p=preview

#content-scroll {
position: absolute;
top: 0; bottom: 0;
left: 0; right: 0;
overflow: auto;}

这是在 html 中工作的同一页面的示例

http://jsfiddle.net/sA5fD/8/

【问题讨论】:

  • 为什么要使用display:table-row来包裹块元素?
  • 这就是我如何创建可滚动的 div
  • 尚未 100% 缩小问题范围,但在开发工具中将 height:100% 添加到容器和 #content 会有所帮助。还没有看到在哪里,但可能是某处的overflow:hidden
  • 没有溢出:隐藏在任何地方。你能发布 plunkr,因为它不适合我
  • 刷新时丢失了我所做的事情。但我所做的只是开始将height:100% 添加到各种元素,因为荧光笔并没有显示它们非常高。内容确实出现了

标签: html angularjs css angular-ui-router css-position


【解决方案1】:

absolute 定位元素的行为与其父元素一致。

如果我们将bottom:0; top:0; 赋予绝对定位元素,它将选择其父元素的bottomtop。所以:

  1. 您之前的示例正在运行,因为父级具有 100% 的高度。
  2. ui-view 内部它不会工作,它没有明确的height

解决这个问题的方法不止一种。例如,我将min-height 应用于父#content 并更改了它的显示属性。我想您有 #content 仅用于此滚动条内容。否则你必须对元素应用特殊的类。

#content {
  display:block;
  height:100%;
  background:#8f8;
  min-height: 90vh;
}

这是一个笨蛋:http://plnkr.co/edit/5vl0AN3WwtUJmDiNtNdL?p=preview

【讨论】:

  • 好吧,我试图避免硬编码视口高度,因为在这个例子中我只使用了一个级别的 ui-view,在我的实际应用程序中,我有多个级别的 ui-views,我想要它们取父母的身高。而且我也意识到 90vh 在不同的屏幕尺寸上效果不佳。而且我必须真正避免滚动条
  • 如果你想在一个绝对定位的元素中滚动条并且父高度为0,你需要显式地给元素高度。 (90vh 或 300px 这是我们的决定)。我已经改变了我的答案。请看一看。
  • 您可以在 Internet Explorer 和 Firefox 中查看吗?它不显示任何内容
  • 哪些版本?无论如何,您都知道 IE 令人头疼。 :)
【解决方案2】:

我想这会解决你的问题。

 html { height: 100%; }
    body {      
        padding:0 0;
        margin:0 0;
        height: 100%;
    }
    #main {
        display:table;
        height:100%;
        width:100%;
    }
    #header, #footer {
        display:table-row;
        background:#88f;
        left:0;
        right:0;
    }

    #content {
        display:table-cell;
        height:100vh;

        background:#8f8;
    }

    #content-scroll-wrap {
        position: relative;
        height: 100%;
    }
    #content-scroll {
        position: absolute;
        top: 0; bottom: 0;
        left: 0; right: 0;
    overflow: auto;
}

【讨论】:

  • 我想让页面适合整页,而不是 100px
  • 我根据屏幕高度调整了它的高度。所以现在它会覆盖整个页面。
  • 好吧.. 我只是想知道标记是否正确,因为我今天才意识到我的很多答案都是关于没有标记正确答案的问题。 @ua_boaz
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-22
  • 1970-01-01
  • 1970-01-01
  • 2016-04-15
  • 2016-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多