この問題について多くの質問があることは知っていますが、何も適切に機能しませんでした。
PanelGridを中央(水平)に揃える必要があります。
これは私のパネルグリッドです
<p:panelGrid styleClass="panelGridCenter">
と私のCSS:
.panelGridCenter td,.panelGridCenter tr {
text-align: center;
}
コンテンツを中央に揃えるだけで、panelGridは揃えません
この問題について多くの質問があることは知っていますが、何も適切に機能しませんでした。
PanelGridを中央(水平)に揃える必要があります。
これは私のパネルグリッドです
<p:panelGrid styleClass="panelGridCenter">
と私のCSS:
.panelGridCenter td,.panelGridCenter tr {
text-align: center;
}
コンテンツを中央に揃えるだけで、panelGridは揃えません
JSFコンポーネントは、デフォルトでブロックレベルの要素<p:panelGrid>
であるHTML要素をレンダリングします。ブロックレベルの要素自体を中央に配置するには、インラインコンテンツを中央に配置するのではなく、水平方向のマージンをに設定する必要があります。<table>
auto
.panelGridCenter {
margin: 0 auto;
}
上記の答えは技術的には正しいですが、不完全でもあります。
divのようなものを中央に配置する場合は、DIVの幅が制限されていれば、上記のように左右の余白を自動で再生する手法が機能します。たとえば、効果を発揮するには、width = 60%のようなものを配置する必要があります。
そして、固定幅で遊ぶ必要があることに気づいたら...すぐに次の質問が表示されます。では、固定幅として正確に何を入力する必要がありますか?
そのため、この質問に対するより良い答えは次のとおりです。上記のようなCSS手法は、Webページの細部に問題はありません。ただし、Webページの中央に何かを配置するための大まかなアプローチは、グリッドシステムを利用することです。ほとんどのグリッドシステムは12個のセルを使用します。たとえば、グリッドシステムがデフォルトである場合、12セル= 100%幅にします。たとえば、コンテンツをセル[5-8]の中央に配置し、センチュリオンスペースセル[1-4]とセル[9-12]として除外することで、何かを中央に配置できます。
これは、プライムフェイスグリッドシステムに基づく例です。
<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>
上記のフォームへのコメントは、私が上記で何を意味していたかをかなり明確にするはずです。グリッドシステムは通常、デバイスの複数のフォームファクターでUIを機能させるためのCSSクラスを提供しますが、...この点に関して、デスクトップUIを使用して優れたモバイルUIを作成することも、優れたUIを作成することもできないと思います。モバイルUIを使用したデスクトップUI。私の意見では、優れたタブレット/デスクトップUIを作成できますが、モバイルに必要な最小限のコンテンツを使用して、最初からページを作成する必要があります。しかし、それは別の議論です...言うまでもなく、フレックスグリッドのcssクラスはこれまでのところしか理解できません。理論的には多くの可能性があり、div要素に任意の固定長をハードコーディングするよりもはるかに優れています...しかし、すべての問題に対する特効薬ではありません。
右揃えにしたい場合
.rightAlign{
margin-left: auto;
}