Primefaces 菜单栏右对齐子菜单

Posted

技术标签:

【中文标题】Primefaces 菜单栏右对齐子菜单【英文标题】:Primefaces menubar right align submenu 【发布时间】:2014-07-09 02:48:22 【问题描述】:

我发现我可以在选项方面(菜单栏的右侧)播放命令按钮,但是我似乎无法以相同的方式添加子菜单。我想要一个向右对齐的实际菜单下拉菜单,而不是按钮。

有什么想法吗?

<html lang="en" xmlns="http://www.w3.org/1999/xhtml"
   xmlns:h="http://java.sun.com/jsf/html"
   xmlns:f="http://java.sun.com/jsf/core"
   xmlns:p="http://primefaces.org/ui"
   xmlns:ui="http://java.sun.com/jsf/facelets">

<h:head title="Primefaces Test">
   <style>
.ui-layout-north 
   z-index: 20 !important;
   overflow: visible !important;


.ui-layout-north .ui-layout-unit-content 
   overflow: visible !important;

</style>
</h:head>

<h:body>
   <h:form>
      <p:layout fullPage="true">
         <p:layoutUnit position="north">
            <p:menubar>
               <p:submenu label="Mail">
                  <p:menuitem value="Gmail" url="http://www.google.com" />
                  <p:menuitem value="Hotmail" url="http://www.hotmail.com" />
                  <p:menuitem value="Yahoo Mail" url="http://mail.yahoo.com" />
               </p:submenu>
               <p:submenu label="Videos">
                  <p:menuitem value="Youtube" url="http://www.youtube.com" />
                  <p:menuitem value="Break" url="http://www.break.com" />
               </p:submenu>
               <f:facet name="options">
                  <p:commandButton value="logout" />
                  <p:submenu label="Videos">
                     <p:menuitem value="Youtube" url="http://www.youtube.com" />
                     <p:menuitem value="Break" url="http://www.break.com" />
                  </p:submenu>
               </f:facet>
            </p:menubar>
         </p:layoutUnit>
         <p:layoutUnit position="center">
            <h:outputText value="Hello, world." />
         </p:layoutUnit>
      </p:layout>
   </h:form>
</h:body>
</html>

-- 谢恩

【问题讨论】:

【参考方案1】:

我用这样的方法解决它:

style="位置:绝对;右:6px;"

试试吧。

【讨论】:

【参考方案2】:

我最终忘记了整个“选项”方面,而是使用了 css float,我希望这对某人有所帮助:

<h:body>
   <h:form>
      <p:layout fullPage="true">
         <p:layoutUnit position="north">
            <p:menubar>
               <p:submenu label="Mail">
                  <p:menuitem value="Gmail" url="http://www.google.com" />
                  <p:menuitem value="Hotmail" url="http://www.hotmail.com" />
                  <p:menuitem value="Yahoo Mail" url="http://mail.yahoo.com" />
               </p:submenu>
               <p:submenu label="Videos">
                  <p:menuitem value="Youtube" url="http://www.youtube.com" />
                  <p:menuitem value="Break" url="http://www.break.com" />
               </p:submenu>
               <p:submenu label="Videos2" style="float:right">
                  <p:menuitem value="Youtube" url="http://www.youtube.com" />
                  <p:menuitem value="Break" url="http://www.break.com" />
               </p:submenu>
            </p:menubar>
         </p:layoutUnit>
         <p:layoutUnit position="center">
            <h:outputText value="Hello, world." />
         </p:layoutUnit>
      </p:layout>
   </h:form>
</h:body>

--谢恩

【讨论】:

这在您需要嵌套子菜单之前非常有效。嵌套的子菜单将在屏幕外显示。【参考方案3】:

如果您使用的是引导程序,则可以使用内置的 flexbox 类

注意:这是一个primeng(角度)示例,将正确对齐所有项。

<p-menubar [model]="items" styleClass="d-flex justify-content-end"></p-menubar>

【讨论】:

我只想要右边的一项 -> 注销按钮。

以上是关于Primefaces 菜单栏右对齐子菜单的主要内容,如果未能解决你的问题,请参考以下文章

Primefaces p:tabMenu 将 p:menuitem 向右对齐

自定义标题栏右键菜单

PopupMenu 子菜单不尊重重力对齐

我的第一个 Prime Faces 响应项目 [重复]

导航栏菜单在小屏幕上不垂直对齐和汉堡菜单的位置

win10状态栏右键菜单变成黑色怎么破