根据 PrimeFaces 默认样式表primefaces.css,<p:message(s)> 图标是相对定位的。
.ui-messages-info-icon, .ui-messages-warn-icon, .ui-messages-error-icon, .ui-messages-fatal-icon, .ui-message-info-icon, .ui-message-warn-icon, .ui-message-error-icon, .ui-message-fatal-icon {
background: url("/omnifaces/javax.faces.resource/messages/messages.png.xhtml?ln=primefaces") no-repeat;
display: block;
float: left;
margin: 0;
padding: 0;
position: relative;
}
首先我不确定为什么它是相对定位的,因为它似乎不需要被抵消,也没有任何绝对定位的孩子。也许它已被用作某些(很可能是 IE 特定的)解决方法/hack 来解决其他问题(如果这是“具有布局”相关的,开发人员最好使用 overflow: hidden 来代替)。因此,只需将其设为默认 position: static 即可修复它。
将以下内容添加到您的覆盖样式表以实现此目的:
.ui-messages-info-icon, .ui-messages-warn-icon, .ui-messages-error-icon, .ui-messages-fatal-icon, .ui-message-info-icon, .ui-message-warn-icon, .ui-message-error-icon, .ui-message-fatal-icon {
position: static;
}
或者,您当然也可以将菜单的z-index 设置为疯狂的高值,正如您自己发现的那样。不过,我不认为这是一个可靠的解决方案,这是一种解决方法/破解方法。