我使用 PrimeFaces 布局是否正确?我应该使用其他东西吗?
答:视情况而定。我认为,p:layout fullPage="true"
是一个想要超级快速、简单地创建页面并且没有足够时间与视图层一起工作的组件。如果展示示例几乎不符合您的要求,那么没有理由放弃它。
但是,如果您想自定义或更改其行为或功能,请自行停止并滚动。
我准备了一个适合您要求的启动示例,正如我所说,它并不完整,但它可以激发您的灵感。让我们从组件开始;
<h:form>
<p:fieldset legend="West" styleClass="west">
</p:fieldset>
<p:panel styleClass="north">
</p:panel>
<p:fieldset legend="East" styleClass="east">
</p:fieldset>
<p:fieldset legend="Center" styleClass="center">
</p:fieldset>
<p:panel styleClass="footer">
<p:commandButton onclick="makeMe();" value="SeeTheMagic"></p:commandButton>
</p:panel>
</h:form>
可以看出,这些是基本的 PrimeFaces 组件,这里指的是 CSS 本身。(我使用过p:fieldset,因为我喜欢你可以使用它的外观p:panel
)。
让我们从footer
. 有一点值得一提,它的位置,我们只是通过bottom:0px
和将它放在页面底部position:absolute
。
.footer{
width:100%;
height:30px;
padding:30px;
background: #000007;
clear: both;
position: absolute;
bottom: 0px;
}
中心组件水平以 为中心margin 0 auto
。当然还有其他方法可以做到。此外,如果您想将其垂直居中,则可以通过边距轻松完成。并且margin-top:70px
只是防止与北面板重叠。
.center{
margin: 0 auto;
width:650px;
height:200px;
margin-top: 70px;
background-color: #f7f7f7;
}
东位于最左边和最西;反之亦然。
.east{
width:200px;
height:400px;
position: absolute;
margin-top: 30px;
right: 0px;
background-color: #f7f7f7;
}
.west{
width:200px;
height:400px;
margin-top: 30px;
position: absolute;
left: 0px;
background-color: #f7f7f7;
}
North 组件就像页脚一样,但它当然位于顶部top:0px
。
.north {
background-color: black;
position: absolute;
top:0px;
width: 100%;
height: 40px;
}
现在页面看起来像。类似于p:layout fullPage="true"
。您当然应该自定义它的外观,也许您可以查看更新的 CSS 属性,例如box-shadow
(用于北面板)等。因此关于您的要求:
我正在寻找的行为是动态调整中心区域的大小,向下推页脚(南布局单元)并显示整个页面的滚动条。
我准备了一个最初从中心面板溢出的内容,然后在页脚上有一个按钮,上面写着某事。关于魔术,它调用makeMe()
js 函数:
function makeMe() {
$(".center").css({
"height":"auto",
"word-wrap": "break-word"
});
$(".footer").css({
"position":"relative"
});
}
只需扩展p:panel
的高度,现在如果它有 100 个内容项,它将包含所有内容项。并且通过position:relative
,我们对页脚说“不要呆在那里,只是粘在中心组件的底部。”
这是它最初的样子:
如果您通过 ajax 加载内容,最初不会有滚动条。我只是将大量文本复制到其中,这就是最初有滚动条的原因。
点击按钮后:
如果有问题只是警告我,希望有帮助。