Primefaces 3.5/CSS - selectOneMenu和按钮垂直对齐

wst*_*wst 3 css themes primefaces

在Primefaces 3.5中p:selectOneMenu,button当你将它们放在一行时,垂直对齐并且很奇怪.我的用例是:用户从菜单中选择选项,然后单击按钮激活它.问题是 - 两个组件必须在同一行(表行).

XHTML非常简单:

<h:form>
    <p:selectOneMenu>
        <f:selectItem itemLabel="test" itemValue="test"/>
    </p:selectOneMenu>
    <p:commandButton value="GO"/>
</h:form>
Run Code Online (Sandbox Code Playgroud)

不幸的是结果不是我所期望的: 错了对齐

我的期望是这样的: 想要对齐1 要么 想要对齐2

我试图用Firebug研究渲染的HTML代码,但老实说,我很难找到任何CSS边距,填充,左边,顶部或类似的东西可以帮助我.

任何人都在努力解决这个问题(希望 - 解决它)?

wst*_*wst 13

解决方案是:

    <style type="text/css">
        .selectMenu { display: inline-block; vertical-align: top; }
    </style>
    <h:form>
        <p:selectOneMenu styleClass="selectMenu">
            <f:selectItem itemLabel="test" itemValue="test"/>
        </p:selectOneMenu>
        <p:commandButton value="GO"/>
    </h:form>
Run Code Online (Sandbox Code Playgroud)

  • `vertical-align:middle`也可以,但`vertical-align:baseline`(默认值)不行.一个真正的组合框有一个真正的基线,但PrimeFaces版本不是一个真正的组合框,似乎没有基线.根据[CSS 2.1](http://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align),"如果框没有基线,请将底部边缘边缘与父级边缘对齐基线."我相信这一点和缺乏真正的基线解释了我们所看到的行为. (2认同)