我正在使用剪辑技术为有视力的用户隐藏内容,但使其可供屏幕阅读器使用。它看起来像这样:
.accessible-hide {
position: absolute;
clip: rect(1px 1px 1px 1px);
}
当我想再次显示该项目时,我可以给它一个这些类,具体取决于它的原始位置:
.accessible-show-static {
/* No need to reset clip if we're resetting the position to static. */
position: static;
}
.accessible-show-relative {
/* Ditto for relative positioning. */
position: relative;
}
.accessible-show-absolute {
/* If the shown element should have absolute positioning, reset clipping. */
clip: auto;
}
这在大多数浏览器中都非常有效,但在 Internet Explorer 8 中当然存在问题!对于第二个类,通过仍然剪辑到元素的框来.accessible-show-absolute
重置clip
属性clip: auto
,并切断该元素位于其外部的任何子元素(通过绝对定位或诸如此类)。如何以显示这些元素的方式重置剪辑?
(注意:我意识到一个更整洁的解决方案是简单地.accessible-hide
通过 JavaScript 删除类,但有时您需要在 CSS 中这样做——例如,悬停或焦点状态:)
.submenu {
position: absolute;
clip: rect(1px 1px 1px 1px);
}
.menu-item:hover .submenu {
clip: auto;
top: 100%;
left: 0;
}