RichFaces 选择列表:流动的可滚动列表/列

RichFaces picklist: Fluid scrollable list/ column

瞄准

我想要这个:Aim Pic.

初始情况

在下面的示例代码中使用了 rich:picklist

<rich:pickList id="userAuthoritiesPickList" value="#{securityBean.selectedUserAuthorities}"
  sourceCaption="sourceCaption" targetCaption="targetCaption" style="background:green" orderable="false"
  addText="addText" addAllText="addAllText" removeText="removeText" removeAllText="removeAllText">
    <f:selectItems value="#{securityBean.authorities}" var="authority" itemValue="#{authority}"
     itemLabel="#{securityBean.getLocalizedRoleName(authority.authority)}" />
</rich:pickList>

我得到以下结果:resultPic

观察结果

  1. sourceList 有一个滚动条,因为它的元素太大。
  2. 右边有很多space

目标

  1. 我希望 pickList 使用右侧的空闲 space,以便 sourceList 中的滚动条变小,甚至不需要。 pickList 例如应该使用 space.
  2. 的 70%
  3. 当调整浏览器大小时 window pickList(和 sourceList)的宽度应该调整,以便 sourceLists 中的滚动条再次变得必要。

我试过的

使用了这些资源

记下:

总结:那么如何获得行为:SourceList(pickList)应该使用freeSpace。如果还不够 -> 调整 sourceList 的大小? (就像在 table 中你可以用 table-layout: fixed; 做一些事情)。由于使用 chrome devTools table-layout 手动更改页面,我得到了我想要的。但是 table 是由 rich:pickList 生成的,我无法为它们设置 css 属性(没有 id,class..):

我想要它就像post开头的目标图片

您不需要 id 或 class 来使用 CSS,尤其是当您知道布局是静态的时:

.rf-pick > table,
.rf-pick > table > tbody > tr > td:nth-child(3) > table {
    width: 100%;
    table-layout: fixed;
}

.rf-pick > table > tbody > tr > td:nth-child(2) {
    width: 30px; /* buttons */
}

将 listWidth 设置为 "auto"(“100%”也可以,我必须修改说明)