Как убрать границу из конкретного PrimeFaces p:panelGrid?

У меня трудности с удалением границ из определенных 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;
}

Не работает.

16 ответов

Решение

Граница была установлена ​​на сгенерированном tr а также td элементы, а не на table, Итак, это должно сделать:

.companyHeaderGrid.ui-panelgrid>*>tr,
.companyHeaderGrid.ui-panelgrid .ui-panelgrid-cell {
    border: none;
}

Как я это нашел? Просто проверьте сгенерированный вывод HTML и все правила стиля CSS в наборе инструментов веб-разработчика Chrome (щелкните правой кнопкой мыши, Inspect Element или нажмите F12). Firebug и IE9 имеют похожий набор инструментов. Что касается путаницы, просто помните, что JSF/Facelets в конечном итоге генерирует HTML и что CSS применяется только к разметке HTML, а не к исходному коду JSF. Таким образом, чтобы применить / отрегулировать CSS, вам нужно смотреть в сторону клиента (веб-браузера).

Смотрите также:


Если вы все еще используете 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>

Он использует CSS-файл с именем "компоненты" в Primefaces lib

Это сработало для меня:

.ui-panelgrid td,.ui-panelgrid tr
{
    стиль границы: нет! важно
}

Если ответ 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>  

Пытаться

<p:panelGrid styleClass="ui-noborder">

В настоящее время у Primefaces 5.x в PanelGrid есть атрибут с именем "columnClasses".

.no-border {
    border-style: hidden !important ; /* or none */

} Итак, для PanelGrid с 2 столбцами, повторите два раза класс CSS.

<p:panelGrid columns="2" columnClasses="no-border, no-border">

Другим элементам уродливый "! Важный" не нужен, но для границы просто с этим у меня нормально работает.

Как упомянуто BalusC, граница устанавливается PrimeFaces для сгенерированного tr а также td элементы, а не на table, Тем не менее, при попытке с PrimeFaces версии 5, похоже, что существует более конкретное соответствие из PrimeFaces CSS .ui-panelgrid .ui-panelgrid-cell > solid что по-прежнему приводит к появлению черных рамок при применении предложенного стиля.

Попробуйте использовать следующий стиль, чтобы переопределить Primefaces один без использования !important объявление:

.companyHeaderGrid tr, .companyHeaderGrid td.ui-panelgrid-cell {
    border: none;
}

В качестве упоминания убедитесь, что ваш CSS загружен после PrimeFaces.

Если вы просто хотите что-то более простое, вы можете просто изменить:

<p:panelGrid >

</p:panelGrid>

чтобы:

<h:panelGrid border="0">

</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;
}

Чтобы традиционные, а также все современные темы не имели границ, применяйте следующее;

<!--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>

Я поместил панель внутри таблицы данных, и, следовательно, мой рабочий раствор

.ui-datatable-scrollable-body .myStyleClass tbody td{border:none;}

за

<h:panelGrid  styleClass="myStyleClass" >...</h:panelGrid>

В Primefaces theme.css будет иметь код ниже, просто нам нужно указать styleClass как 'ui-panelgrid-blank'. Таким образом, это удалит границу для компонента panelGrid.

      .ui-panelgrid.ui-panelgrid-blank {
  border: 0 none;
  background: none;
}

<p:panelGrid columns="2" layout="grid" styleClass="ui-panelgrid-blank">
</p:panelGrid>

Пожалуйста, попробуйте это тоже

.ui-panelgrid tr, .ui-panelgrid td {
border:0 !important;
}

Используйте модификацию стиля ниже, чтобы удалить границу для кнопки Primefaces

.ui-selectoneradio td, .ui-selectoneradio tr
{
    border-style: none !important
}
Другие вопросы по тегам