✅ 修正后的 HTML 结构示例:
<body>
<!-- 模态框置于 body 最顶层,与 main-content 平级 -->
<div id="mad" style="display: none; position: fixed; z-index: 1000; ...">
<!-- 表单内容 -->
</div>
<!-- 主体内容容器(将被变暗) -->
<div id="main-content">
<nav>...</nav>
<p id="sign_up_here" onclick="myfunc1()">SIGN UP HERE</p>
<!-- 其他页面内容 -->
</div>
</body>✅ 对应的 JavaScript(安全、精准):
function myfunc1() {
const mad = document.getElementById("mad");
const mainContent = document.getElementById("main-content"); // ✅ 只作用于主体容器
mad.style.display = "block";
mainContent.style.filter = "brightness(20%)";
mainContent.style.transition = "filter 0.3s ease"; // 建议添加平滑过渡
}⚠️ 注意事项:
- z-index 至关重要:确保 #mad 的 z-index(如 1000)显著高于 #main-content 及其子元素,避免被遮挡;
- 关闭逻辑需同步还原:添加关闭功能时,务必重置 mainContent.style.filter = "";
- 无障碍与语义化:建议为模态框添加 role="dialog"、aria-modal="true",并禁用背景内容的键盘焦点(使用 inert 属性或手动管理 tabindex);
- 响应式兼容:若页面有滚动条,变暗后隐藏 main-content 可能导致布局抖动,可额外设置 body { overflow: hidden; }。
总结:JavaScript 本身没有内置 :not() 方法直接筛选“非某元素”,但通过合理的 DOM 结构设计 + 作用域收缩(对容器而非 body 操作),即可完美复现 CSS :not() 的视觉隔离效果。这是比尝试复杂 DOM 遍历或内联样式覆盖更健壮、可维护的工程实践。
今天关于《JavaScript实现CSSnot选择器方法详解》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!
机动车发票查询方法及全国查验指南
- 上一篇
- 机动车发票查询方法及全国查验指南
- 下一篇
- Golang类型断言教程与实例解析


