当bean的布尔值为false时如何实现标签/菜单项置灰效果
Angular 侧边栏权限菜单置灰实现方案
你当前的模板已经完成了禁用类的绑定逻辑,只需要补充对应样式即可实现需求,步骤如下:
1. 补充.disabled 类的 CSS 样式
直接在组件对应的样式文件或者全局公共样式文件中添加以下代码:
/* 禁用状态的菜单项样式 */ .menuitem.disabled { /* 文字置灰 */ color: #9ca3af !important; /* 鼠标悬浮显示不可点击光标 */ cursor: not-allowed !important; /* 禁止元素响应所有鼠标交互,相当于从交互层面屏蔽点击,双重保障权限控制 */ pointer-events: none !important; /* 降低整体透明度,视觉上更突出不可用状态 */ opacity: 0.6 !important; } /* 可选:同步置灰菜单项的图标 */ .menuitem.disabled img { /* 给图标加灰度滤镜 */ filter: grayscale(100%); opacity: 0.6; }
以上代码可以直接实现无权限时菜单项置灰、不可点击的效果,和你现有navigateToPage方法里的权限判断逻辑叠加,不会出现权限泄露问题。
2. 可选优化(适配无障碍规范)
如果需要兼容键盘操作、屏幕阅读器等场景,可以对模板做少量调整:
<div class="sidenav"> <a [ngClass]="{'menuitem': true,'activemenu':currentPage=='reporting' }" [class.disabled]="!home.reportAccess" <!-- 无权限时不让键盘聚焦到该元素 --> [attr.tabindex]="home.reportAccess ? 0 : -1" (click)="navigateToPage('reporting',home.reportAccess)" role="menuitem"> <!-- 给图标加alt描述,提升无障碍体验 --> <img src=".\assets\images\monotone_arrow_play_right_next1.png" alt="报告入口图标">Reporting </a> </div>
内容的提问来源于stack exchange,提问作者JCP
相关产品推荐
相关产品推荐

