Css 如何将PanelGrid与中心对齐?JSF素数面

Css 如何将PanelGrid与中心对齐?JSF素数面,css,jsf,primefaces,panel,Css,Jsf,Primefaces,Panel,我知道在这个问题上有很多问题,但没有什么对我有效 我需要将PanelGrid与中心对齐(水平) 这是我的panelgrid <p:panelGrid styleClass="panelGridCenter"> 它只是将内容与中心对齐,而不是将panelGrid对齐。JSF组件呈现一个默认为HTML的HTML元素。要使块级元素本身居中,应将其水平边距设置为auto,而不是尝试将其内联内容居中 .panelGridCenter{ 保证金:0自动; } 另见: 上述答案在技术上是正

我知道在这个问题上有很多问题,但没有什么对我有效

我需要将PanelGrid与中心对齐(水平)

这是我的panelgrid

<p:panelGrid styleClass="panelGridCenter">
它只是将内容与中心对齐,而不是将panelGrid对齐。JSF
组件呈现一个默认为HTML的HTML
元素。要使块级元素本身居中,应将其水平边距设置为
auto
,而不是尝试将其内联内容居中

.panelGridCenter{
保证金:0自动;
}
另见:

    • 上述答案在技术上是正确的,但也不完整

      如果你想把像div一样的东西放在中间,如果你的div宽度有限,那么上面的使用左右边距作为auto的技术就可以了。 例如,为了让你开始产生任何效果,你必须放置宽度=60%之类的东西

      然后,一旦你意识到你需要使用固定的宽度。。。系统会立即提示您回答下一个问题: 那么,我应该输入什么作为我的固定宽度呢

      这就是为什么我认为这个问题最好的答案是: 像上面的CSS技术,对于网页上的小细节来说是可以的。 但是,将任何内容集中在web页面上的粗粒度方法应该是使用网格系统。 大多数网格系统使用12个单元。 例如,如果网格系统默认为12个单元格=100%宽度。 例如,您可以将内容放在单元格[5-8]的中心位置,而不将内容放在centurion space单元格[1-4]和单元格[9-12]的中心位置

      以下是一个基于prime faces网格系统的示例:

        <h3 id="signInTitle" class="first">Sign in - FIXME - i18n</h3>
        <form id="loginFormOld" (ngSubmit)="onLoginFormSubmit()">
          <!-- (a) Start a grid system-->
          <div class="ui-g ui-fluid">
      
            <!-- (b) Eat the first four cells of the grid -->
            <div class="ui-g-12 ui-md-4"></div>
      
            <!-- (c) In the center location of the grid put in the Login form -->
            <div class="ui-g-12 ui-md-4">
              <div class="ui-inputgroup">
                <span class="ui-inputgroup-addon"><i class="fa fa-user"></i></span>
                <input id="emailInput" pInputText type="email" placeholder="Email" [(ngModel)]="eMail" name="eMail">
              </div>
              <div class="ui-inputgroup">
                <span class="ui-inputgroup-addon"><i class="fa fa-key" aria-hidden="true"></i></span>
                <input id="passwordInput" pInputText type="password" class="form-control" placeholder="Password" [(ngModel)]="password" name="password">
              </div>
            </div>
      
            <!-- (d) Eat the rest of the first row of the grid without setting any contents -->
            <div class="ui-g-12 ui-md-4"></div>
      
            <!-- (e) Start the second row and eat the first four cells -->
            <div class="ui-g-12 ui-md-4"></div>
      
            <!-- (f) Position a form submit button on the fifth cell -->
            <div class="ui-g-12 ui-md-1">
              <button id="loginSubmit" pButton type="submit" label="Submit"></button>
            </div>
          </div>
        </form>
      
      登录-修复-i18n
      
      上面表格上的注释应该很清楚我上面的意思。 网格系统通常会提供CSS类,以允许您的UI跨多个设备的形状因素工作,尽管。。。在这方面,我认为你不能用桌面用户界面来制作一个好的移动用户界面,也不能用移动用户界面来制作一个好的桌面用户界面。 在我看来,你们可以得到一个很好的平板电脑/桌面用户界面,但你们应该从零开始编写页面,并为手机提供最少的必要内容。但这是一个不同的讨论。。。我只想说,FlexGrid css类只会带您走这么远。
      理论上有很多潜力,比在div元素上硬编码一些任意固定长度要好得多。。。但也不是解决所有问题的灵丹妙药。

      以防您需要右对齐

      .rightAlign{
           margin-left: auto;
       }
      

      因此,您建议使用
      p:panelGrid layout=“grid”
      (PF 6.1文档第365页)。除此之外,我还尝试使用纯html来判断“对等”jsf组件的优势是否太有限。嗨,当您使用基本面(jsf)时,我倾向于使用它们的网格系统,而不是面板网格。一般来说,在任何地方使用表都不是最佳实践。查看面板元素下的网格CSS。无论你是否使用JSF的angular。。。它是基于纯CSS的,您不需要为此使用花哨的组件。请阅读文档。。。(并检查showcase panelgrid生成的html源代码)。使用layout=“grid”时,它使用网格系统(用于响应)。不在任何地方使用桌子是完全错误的。。。如果某个东西是表(或网格,比如datatable或panelgrid),那么它就没有错。只是不要在页面布局中使用它。好的,你可以在布局网格中使用panelGrid组件。至于表,我很抱歉,但现实生活中使用表的用例很少。虽然基于DIV的表可以逐步呈现,并对较小的形状因子做出响应,但一个完整的表元素(具有多行)呈现为“大爆炸”——您经常会发现人们抱怨大表呈现速度慢。您需要表中的所有数据,并且浏览器会一次性呈现这些数据。一般来说,您最好不使用表。桌子的样式可能有问题,但很难。是的,我也不完全同意你的观点(也不完全同意),但事情不应该是教条式的。。。您可以覆盖
      tr
      td
      (imo非常容易)的css,这样您甚至可以使现有组件“响应”。。。我做到了,最困难的是你需要为盲人和聋人添加的所有新的“属性”。并不是说这样做不好,而是重复了很多努力。干杯在哪里添加
      .rightAlign
      ?在
      上?
      .rightAlign{
           margin-left: auto;
       }