【问题标题】:Ionic: hide backdrop in ion-menu离子:在离子菜单中隐藏背景
【发布时间】:2020-09-17 20:10:25
【问题描述】:

我有一个使用离子菜单打开汉堡菜单的 Ionic 应用程序。但是,我不想让背景显示在此屏幕截图中:

我想要的是这个(没有背景):

离子菜单:

<ion-menu side="start" type="push" menuId="first" contentId="main" class="burger-menu">...</ion-menu>

我已经尝试了 CSS 中的所有内容:

.burger-menu {
  // Doesn't work
  --backdrop: none !important;
  backdrop-filter: none !important;
}

// Doesn't work
ion-menu#backdrop {
  display: none !important;
}

// Doesn't work
ion-menu > ion-backdrop {
  display: none !important;
}

// Doesn't work
ion-backdrop.menu-backdrop {
  display: none !important;
}

// Doesn't work
:host(.menu-type-push) .show-backdrop {
  display: none !important;
}

但它们似乎都不起作用。

编辑:这是我打开菜单时在控制台中看到的内容。

【问题讨论】:

    标签: javascript angular ionic-framework


    【解决方案1】:

    backdropion-menu 元素的阴影树内,这意味着 CSS 将不起作用。

    根据documentation 关于ion-menu 的说法,backdrop 是暴露的CSS 阴影部分。因此,您可以使用::part() 伪元素,它允许您选择阴影树内的元素以设置它们的样式。

    ion-menu::part(backdrop) {
        background-color: transparent;
    }
    

    在设置 Ionic 框架样式时详细了解 CSS Shadow Parts

    编辑

    Ionic 5 之前的版本中似乎没有实现 CSS 阴影部分。
    您可以改写 --ion-backdrop-color 变量。

    global.scss

    :root {
      ion-menu {
        --ion-backdrop-color: transparent;
      }
    }
    

    在 Ionic 4 上运行良好。

    【讨论】:

    • 您好,感谢您的回答,我已经尝试了您的解决方案,但我仍然得到背景。
    • 恐怕这个解决方案只适用于 Ionic 5,我似乎在文档 v4 中找不到与 CSS Shadow Parts 相关的任何内容。你可能不得不依赖::ng-deep,即使它已被弃用。
    • 我的Ionic版本是6.3.0,这个版本有解决办法吗?我试过ion-menu::ng-deep(backdrop),但这似乎也不起作用。
    • 可能是因为我也在使用 ion-menu-toggle?我编辑了最初的帖子,并添加了打开菜单时在控制台中看到的内容。
    • 当我说 Ionic 5 时,我指的是框架版本,而不是 CLI。我已经用新的解决方案相应地更新了我的答案,请检查一下。
    猜你喜欢
    • 2019-08-02
    • 2014-09-10
    • 1970-01-01
    • 2021-09-30
    • 2016-01-07
    • 1970-01-01
    • 2018-09-03
    • 2016-07-02
    • 2017-12-01
    相关资源
    最近更新 更多