请在此处检查代码:https : //stackblitz.com/edit/angular-ztx27h
在这里,我正在尝试实现不隐藏的侧面导航,而是减小了宽度。当鼠标悬停在其上方时,其宽度会增加。
一切正常。
这里的问题是,当sidenav的宽度增加时,它将与内容重叠。
要求是它应该推送mat-sidenav-content,并且两者都应该可见。
现在,由于重叠,因此在sidenav展开时,右侧的内容不可见。
请让我知道在此处应执行哪些操作以推动“ mat-sidenav-content”而不重叠。
问候,Ashish
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
您好,Ashish!根据您的描述,您希望在Angular Material中实现一个侧面导航栏(mat-sidenav),该导航栏在鼠标悬停时展开宽度,并且在展开时推动内容区域(mat-sidenav-content)而不是重叠。要解决这个问题,您需要调整CSS以确保sidenav的动态变化能够正确地重新布局页面内容。
请按照以下步骤修改您的代码:
mat-sidenav-container
使用了Flex布局,这是Angular Material推荐的方式,用于自动处理sidenav和content之间的空间分配。<mat-sidenav-container class="example-container" [style.flex]="{value: '1 1 auto', suffix: ' !important'}">
sidenav
展开时的行为,确保它在宽度增加时推挤内容区域而不是覆盖。这通常涉及到调整sidenav
的flex
属性以及可能的过渡效果。.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;
}
position
, z-index
, 或是特定于组件的宽度设置相关的规则。确保没有意外地将sidenav
或sidenav-content
设为绝对定位或其他可能导致它们脱离正常文档流的样式。如果问题依旧存在,可能是因为项目中有其他CSS冲突或者遗漏了某些关键样式。您可以考虑在浏览器开发者工具中检查元素的实际计算样式,找出是哪些样式导致了预期之外的行为,并相应调整。
希望这些建议能帮助您解决问题!如果有进一步的问题或需要更详细的指导,请随时告诉我。