在 MDL 中打开抽屉时调整内容大小

Resize content when drawer is open in MDL

我正在建立一个基于 MDL 的网站。我想要实现的是抽屉不会打开内容,而是在它旁边打开。我设法禁用了混淆器并修改了 top 值。

然而,我打算这样做的方式是抽屉打开内容区域时将获得 250px 宽的左边距(抽屉是 250px 宽)并调整其宽度,以便 width: calc(100% - 250px)。这工作得很好,但我不知道这是否是最好的方法,即使是,我也不知道如何跟踪抽屉的状态。

以下是 material.js 处理更改的方式:

MaterialLayout.prototype.screenSizeHandler_ = function () {
    if (this.screenSizeMediaQuery_.matches) {
        this.element_.classList.add(this.CssClasses_.IS_SMALL_SCREEN);
    } else {
        this.element_.classList.remove(this.CssClasses_.IS_SMALL_SCREEN);
        // Collapse drawer (if any) when moving to a large screen size.
        if (this.drawer_) {
            this.drawer_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN);
            this.obfuscator_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN);
        }
    }
};

这超出了我的能力范围,无法弄清楚到底发生了什么。我试着用 Chrome 追踪它,但它太复杂了。

有没有简单的方法可以做到这一点?如果没有,我该如何编辑脚本?

干杯!

.mdl-layout__drawer 在 open/visible 时收到 .is-visible class。 这个小 CSS-规则对我有用:

.mdl-layout__drawer.is-visible ~ .mdl-layout__content {
    padding-left: 250px;
}

有了这个,您也不需要固定内容区域的宽度,因为您使用的不是边距而是填充。请注意,默认情况下 material.css 也会在抽屉可见时禁用滚动,因此您还需要将 overflow-属性 添加到规则中:

.mdl-layout__drawer.is-visible ~ .mdl-layout__content {
    overflow: auto !important;
    padding-left: 250px;
}