primefaces 反转列显示顺序
primefaces reverse the columns display order
我必须使用 Primefaces 创建 2 列,为此我编写了以下代码:
<div class="ui-fluid">
<p:panelGrid
columns="2"
columnClasses="
ui-g-12 ui-md-6 ui-l-6 ui-lg-3,
ui-g-12 ui-md-6 ui-l-6 ui-lg-9"
layout="grid"
styleClass="ui-panelgrid-blank ui-fluid ">
<h:outputLabel>
Column 1 content
</h:outputLabel>
<h:outputLabel>
Column 2 content
</h:outputLabel>
</p:panelGrid>
</div>
如果我想在应用程序中将第 1 列置于第 2 列之上,此方法可以正常工作。我的问题是在顶部显示右列,在底部显示左列。
我没有找到解决这个问题的方法。
我从 bootstrap 找到了一些东西:
@media (max-width: 640px) {
.order-md-first {
-webkit-box-ordinal-group: 0;
-ms-flex-order: -1;
order: -1;
}
.order-md-last {
-webkit-box-ordinal-group: 14;
-ms-flex-order: 13;
order: 13;
}
.flex-column-reverse {
-webkit-box-orient: vertical !important;
-webkit-box-direction: reverse !important;
-ms-flex-direction: column-reverse !important;
flex-direction: column-reverse !important;
}
}
我通过添加这些样式更改了 panelGrid:
<p:panelGrid
columns="2"
columnClasses="
ui-g-12 ui-md-6 ui-l-6 ui-lg-3 order-md-last,
ui-g-12 ui-md-6 ui-l-6 ui-lg-9 order-md-first"
layout="grid"
styleClass="ui-panelgrid-blank ui-fluid ">
我偶然发现了与 primefaces 相同的问题。由于所有现代浏览器都支持 flexbox css,因此仅使用“顺序”属性 就足够了。在我的代码中,我倾向于使用 Primefaces 中的普通网格 CSS,但这只是个人喜好问题。
此外,如果您想响应式更改顺序,则必须使用经典的@media“hack”:
XHTML:
<div class="ui-g">
<div class="ui-g-12 ui-md-6 ui-l-6 ui-lg-3" id="column1">
</div>
<div class="ui-g-12 ui-md-6 ui-l-6 ui-lg-9" id="column2">
</div>
</div>
CSS:
/* Primefaces ui-sm*/
@media only screen and (max-width: 640px) {
#column2 {
order: 0
}
#column1 {
order: 1
}
}
/* Primefaces ui-md*/
@media only screen and (min-width: 641px) {
#mcolumn2 {
order: 0
}
#column1 {
order: 1
}
}
/* Primefaces ui-lg*/
@media only screen and (min-width: 1025px) {
#column2 {
order: 1
}
#column1 {
order: 0
}
}
/* Primefaces ui-xl and bigger*/
@media only screen and (min-width: 1441px) {
#column2 {
order: 1
}
#column1 {
order: 0
}
}
我必须使用 Primefaces 创建 2 列,为此我编写了以下代码:
<div class="ui-fluid">
<p:panelGrid
columns="2"
columnClasses="
ui-g-12 ui-md-6 ui-l-6 ui-lg-3,
ui-g-12 ui-md-6 ui-l-6 ui-lg-9"
layout="grid"
styleClass="ui-panelgrid-blank ui-fluid ">
<h:outputLabel>
Column 1 content
</h:outputLabel>
<h:outputLabel>
Column 2 content
</h:outputLabel>
</p:panelGrid>
</div>
如果我想在应用程序中将第 1 列置于第 2 列之上,此方法可以正常工作。我的问题是在顶部显示右列,在底部显示左列。 我没有找到解决这个问题的方法。
我从 bootstrap 找到了一些东西:
@media (max-width: 640px) {
.order-md-first {
-webkit-box-ordinal-group: 0;
-ms-flex-order: -1;
order: -1;
}
.order-md-last {
-webkit-box-ordinal-group: 14;
-ms-flex-order: 13;
order: 13;
}
.flex-column-reverse {
-webkit-box-orient: vertical !important;
-webkit-box-direction: reverse !important;
-ms-flex-direction: column-reverse !important;
flex-direction: column-reverse !important;
}
}
我通过添加这些样式更改了 panelGrid:
<p:panelGrid
columns="2"
columnClasses="
ui-g-12 ui-md-6 ui-l-6 ui-lg-3 order-md-last,
ui-g-12 ui-md-6 ui-l-6 ui-lg-9 order-md-first"
layout="grid"
styleClass="ui-panelgrid-blank ui-fluid ">
我偶然发现了与 primefaces 相同的问题。由于所有现代浏览器都支持 flexbox css,因此仅使用“顺序”属性 就足够了。在我的代码中,我倾向于使用 Primefaces 中的普通网格 CSS,但这只是个人喜好问题。
此外,如果您想响应式更改顺序,则必须使用经典的@media“hack”:
XHTML:
<div class="ui-g">
<div class="ui-g-12 ui-md-6 ui-l-6 ui-lg-3" id="column1">
</div>
<div class="ui-g-12 ui-md-6 ui-l-6 ui-lg-9" id="column2">
</div>
</div>
CSS:
/* Primefaces ui-sm*/
@media only screen and (max-width: 640px) {
#column2 {
order: 0
}
#column1 {
order: 1
}
}
/* Primefaces ui-md*/
@media only screen and (min-width: 641px) {
#mcolumn2 {
order: 0
}
#column1 {
order: 1
}
}
/* Primefaces ui-lg*/
@media only screen and (min-width: 1025px) {
#column2 {
order: 1
}
#column1 {
order: 0
}
}
/* Primefaces ui-xl and bigger*/
@media only screen and (min-width: 1441px) {
#column2 {
order: 1
}
#column1 {
order: 0
}
}