Javascript “高度:100%”和`<;md自动选择>;`窗户

Javascript “高度:100%”和`<;md自动选择>;`窗户,javascript,html,css,angularjs,angular-material,Javascript,Html,Css,Angularjs,Angular Material,在我的项目中,我必须在和标签上设置高度:100%,以形成中心元素,并使超过整页高度 这在某种程度上破坏了指令。在我的例子中,我有很多自动选择在彼此下面。只要我点击下面的一个,整个页面就会变成白色。 这是由$mdUtils中的disableBodyScroll-方法引起的,该方法在打开自动选择、侧导航等时被调用 主要问题似乎是在我们的例子中,body.scrollHeight与body.clientHeight相同 $mdUtils.disableBodyScroll代码: var clientW

在我的项目中,我必须在
标签上设置
高度:100%
,以形成中心元素,并使
超过整页高度

这在某种程度上破坏了
指令。在我的例子中,我有很多自动选择在彼此下面。只要我点击下面的一个,整个页面就会变成白色。 这是由
$mdUtils
中的
disableBodyScroll
-方法引起的,该方法在打开自动选择、侧导航等时被调用

主要问题似乎是在我们的例子中,
body.scrollHeight
body.clientHeight
相同

$mdUtils.disableBodyScroll
代码:

var clientWidth = body.clientWidth;
if (body.scrollHeight > body.clientHeight + 1) {
    applyStyles(body, {
        position: 'fixed',
        width: '100%',
        top: -scrollOffset + 'px'
    });

    applyStyles(htmlNode, {
        overflowY: 'scroll'
    });

 if (body.clientWidth < clientWidth) applyStyles(body, {overflow: 'hidden'});
}
var clientWidth=body.clientWidth;
如果(body.scrollHeight>body.clientHeight+1){
applyStyles(主体{
位置:'固定',
宽度:“100%”,
顶部:-滚动偏移量+‘px’
});
applyStyles(htmlNode{
溢出:“滚动”
});
if(body.clientWidth
这是由100%高度引起的。从body和html标记中删除height属性可以解决自动选择的问题。但是如果我们去掉高度,小于100%的页面将显示错误的sidenav行为(sidenav仅与页面一样高)。 我们通过monkey patching
$mdUtils.disableBodyScroll
临时修复了该问题。 我们替换了
if(body.clientWidth
具有
applyStyles(主体,{'overflow':'visible'})

对于这个示例,很难创建plnkr,因为结构非常复杂,并且只要我尝试简化代码,问题就不会出现。 有人遇到过这个问题吗

另请查看AngularJS材料GitHub页面上的问题:

如果您使用
flex
布局填充
,侧导航和主要内容将始终填充整个页面,如果有更多内容,则会滚动。谢谢,但布局填充只是
高度:100%
的包装。这意味着我们仍然有同样的问题:/也许你可以在侧边栏不填充高度的情况下为你的主布局添加一个plunkr。这似乎是根本问题。