开发者社区 问答 正文

角材料Sidenav应该推动不重叠

请在此处检查代码:https : //stackblitz.com/edit/angular-ztx27h

在这里,我正在尝试实现不隐藏的侧面导航,而是减小了宽度。当鼠标悬停在其上方时,其宽度会增加。

一切正常。

这里的问题是,当sidenav的宽度增加时,它将与内容重叠。

要求是它应该推送mat-sidenav-content,并且两者都应该可见。

现在,由于重叠,因此在sidenav展开时,右侧的内容不可见。

请让我知道在此处应执行哪些操作以推动“ mat-sidenav-content”而不重叠。

问候,Ashish

展开
收起
几许相思几点泪 2019-12-15 20:12:36 636 分享 版权
阿里云 AI 助理回答

您好,Ashish!根据您的描述,您希望在Angular Material中实现一个侧面导航栏(mat-sidenav),该导航栏在鼠标悬停时展开宽度,并且在展开时推动内容区域(mat-sidenav-content)而不是重叠。要解决这个问题,您需要调整CSS以确保sidenav的动态变化能够正确地重新布局页面内容。

请按照以下步骤修改您的代码:

  1. 确保使用Flex Layout: 确保您的mat-sidenav-container使用了Flex布局,这是Angular Material推荐的方式,用于自动处理sidenav和content之间的空间分配。
<mat-sidenav-container class="example-container" [style.flex]="{value: '1 1 auto', suffix: ' !important'}">
  1. 修改Sidenav样式: 您需要通过CSS来控制sidenav展开时的行为,确保它在宽度增加时推挤内容区域而不是覆盖。这通常涉及到调整sidenavflex属性以及可能的过渡效果。
.example-container {
  height: 100%;
}

.mat-sidenav {
  /* 初始状态下的宽度 */
  width: 64px; /* 或您想要的初始宽度 */
  transition: width 0.3s ease; /* 平滑过渡 */
}

.mat-sidenav:hover {
  /* 鼠标悬停时的宽度 */
  width: 200px; /* 或您想要的展开宽度 */
}

.mat-sidenav-content {
  /* 内容区域应该随着sidenav的变化而自适应 */
  flex-grow: 1;
}
  1. 避免重叠: 如果上述方法仍导致重叠,请检查是否有其他CSS规则影响布局,特别是与position, z-index, 或是特定于组件的宽度设置相关的规则。确保没有意外地将sidenavsidenav-content设为绝对定位或其他可能导致它们脱离正常文档流的样式。

如果问题依旧存在,可能是因为项目中有其他CSS冲突或者遗漏了某些关键样式。您可以考虑在浏览器开发者工具中检查元素的实际计算样式,找出是哪些样式导致了预期之外的行为,并相应调整。

希望这些建议能帮助您解决问题!如果有进一步的问题或需要更详细的指导,请随时告诉我。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答地址: