特定のPrimeFaces <p:panelGrid>
から境界線を削除するのが困難です。
<p:panelGrid styleClass="companyHeaderGrid">
<p:row>
<p:column>
Some tags
</p:column>
<p:column>
Some tags
</p:column>
</p:row>
</p:panelGrid>
私はセルから境界線を削除することができました:
.companyHeaderGrid td {
border: none;
}
しかし
.companyHeaderGrid {
border: none;
}
動作しません。
ボーダーは、tr
ではなく、生成されたtd
およびtable
要素に設定されます。だから、これはする必要があります:
.companyHeaderGrid.ui-panelgrid>*>tr,
.companyHeaderGrid.ui-panelgrid .ui-panelgrid-cell {
border: none;
}
どうやって見つけたの? Chromeのwebdeveloperツールセットで生成されたHTML出力とすべてのCSSスタイルルールを確認するだけです(右クリック、Inspect ElementまたはF12キーを押します) 。 FirebugとIE9には同様のツールセットがあります。混乱については、JSF/Faceletsが最終的にHTMLを生成し、CSSはJSFソースコードではなくHTMLマークアップにのみ適用されることに留意してください。したがって、CSSを適用/微調整するには、代わりにクライアント(webbrowser)側を調べる必要があります。
まだPrimeFaces 4以前を使用している場合は、代わりに以下を使用してください。
.companyHeaderGrid.ui-panelgrid>*>tr,
.companyHeaderGrid.ui-panelgrid>*>tr>td {
border: none;
}
Primefaces 6.0を使用しています。パネルグリッドから境界線を削除するには、次のようにこのスタイルクラス「ui-noborder」を使用します。
<p:panelGrid columns="3" styleClass="ui-noborder">
<!--panel grid contents -->
</p:panelGrid>
Primefaces libで「components」という名前のcssファイルを使用します
これは私のために働いた:
。ui-panelgrid td、.ui-panelgrid tr { border-style:none!important }
BalusCの答えがうまくいかない場合は、これを試してください:
.companyHeaderGrid td {
border-style: hidden !important;
}
列の間に行が見つかったら、次のコードを使用します。
.panelNoBorder, .panelNoBorder tr, .panelNoBorder td{
border: hidden;
border-color: white;
}
Primefaces 5.1でこれを確認しました
<h:head>
<title>Login Page</title>
<h:outputStylesheet library="css" name="common.css"/>
</h:head>
<p:panelGrid id="loginPanel" columns="3" styleClass="panelNoBorder">
<p:outputLabel value="Username"/> <p:inputText id="loginTextUsername"/>
<p:outputLabel value="Password"/> <p:password id="loginPassword"/>
<p:commandButton id="loginButtonLogin" value="Login"/> <p:commandButton id="loginButtonClear" value="Clear"/>
</p:panelGrid>
現在、Primefaces 5.xにはpanelGridに「columnClasses」という名前の属性があります。
.no-border {
border-style: hidden !important ; /* or none */
}
そのため、2列のpanelGridに対して、cssクラスを2回繰り返します。
<p:panelGrid columns="2" columnClasses="no-border, no-border">
他の要素にとって、い「!important」は必要ではありませんが、それだけで国境まではうまく機能します。
試して
<p:panelGrid styleClass="ui-noborder">
従来のテーマと現代のすべてのテーマに境界線がないようにするには、次を適用します。
<!--No Border on PanelGrid-->
<h:outputStylesheet>
.ui-panelgrid, .ui-panelgrid td, .ui-panelgrid tr, .ui-panelgrid tbody tr td
{
border: none !important;
border-style: none !important;
border-width: 0px !important;
}
</h:outputStylesheet>
もっとシンプルなものが必要な場合は、変更するだけです。
<p:panelGrid >
</p:panelGrid>
に:
<h:panelGrid border="0">
</h:panelGrid>
それは私のためにうまくいきました
BalusCで述べたように、tr
ではなく、生成されたtd
およびtable
要素のPrimeFacesによって境界が設定されます。ただし、PrimeFacesバージョン5で試してみると、PrimeFaces CSS .ui-panelgrid .ui-panelgrid-cell > solid
からより具体的な一致があるように見えるため、提案されたスタイルを適用すると黒い境界線が表示されます。
!important
宣言を使用せずにPrimefacesをオーバーライドするには、次のスタイルを使用してみてください。
.companyHeaderGrid tr, .companyHeaderGrid td.ui-panelgrid-cell {
border: none;
}
言及したように、CSSが PrimeFacesの後にロードされる であることを確認してください。
私はデータグリッド内にパネルグリッドを配置したため、私の作業ソリューションは
.ui-datatable-scrollable-body .myStyleClass tbody td{border:none;}
for
<h:panelGrid styleClass="myStyleClass" >...</h:panelGrid>
私にとっては、次のコードのみが機能します
.noBorder tr {
border-width: 0 ;
}
.ui-panelgrid td{
border-width: 0
}
<p:panelGrid id="userFormFields" columns="2" styleClass="noBorder" >
</p:panelGrid>
カスタムcss mycss.cssにこれらの行を追加するだけです
table tbody .ui-widget-content {
background: none repeat scroll 0 0 #FFFFFF;
border: 0 solid #FFFFFF;
color: #333333;
}