css PrimeNG表未采用Angular 中的固定宽度

7vux5j2d  于 2023-03-20  发布在  Angular
关注(0)|答案(5)|浏览(164)

我试图修正primeNG表中第一列的宽度,但不知何故,它覆盖了我的CSS,即使它在检查元素时显示。
基本上,我正在寻找的CSS中,通过改变标签的第一列的表将有一个固定的宽度,无论是什么大小的所有列。
我已经尝试过以下方法,为第一个孩子定义固定宽度,但它是基于宽度:100%。


在上面的图片中,您可以看到大小为368,即使它是100px定义的。
同样,当我改变标签,宽度是未来的920甚至100px是固定的。

有没有什么办法可以定义固定宽度100px与表格宽度:100%,因为我不想打破响应?
以下是可复制的示例,以供参考:
https://stackblitz.com/edit/primeng-tablescroll-demo-wtpbny

p5cysglq

p5cysglq1#

在primeng 12中,他们删除了colgroup模板,因此如果您在应用程序上使用colgroup,则需要删除该模板,因为如果您使用可滚动的检查迁移指南,则自定义宽度不适用于列。

链接:https://github.com/primefaces/primeng/wiki/Migration-Guide
解决方案:您需要为标签〈th [style]=“'width':'100 px'"〉和〈td [style]=”'width':'100 px'"〉添加相同的宽度,如果您使用动态列,则再添加一个属性宽度,如下所示

[{标题:“姓名”,字段:“名称”,宽度:'100 px' }] //列对象数组对象

<p-table [value]="data" [columns]="ColumnObjectArray">   
<ng-template pTemplate="header" let-columns>
                <tr>
                    <th *ngFor="let col of columns; let idx=index;" class="" 
                           [style]="'width':col.width">{{col.header}}</th>
               </tr>
</ng-template>
<ng-template pTemplate="body" let-data let-columns="columns">
                <tr>
                    <td *ngFor="let col of columns" [style]="'width':col.width">
                       {{data[col.field]}}
                    </td>
                </tr>
</ng-template>
</p-table>

试试这个,你肯定会得到表的响应宽度,也会得到自定义列和标题宽度

gywdnpxw

gywdnpxw2#

我有一个项目所需的解决方案。
您应执行以下步骤:
1.设置所需列的宽度
1.在“水平滚动”部分中,根据原始文档设置水平滚动:
水平滚动:在水平滚动时,需要为列给予固定宽度。通常,在自定义可滚动表格的列宽时,请使用下面的列组以避免对齐问题,因为它将同时应用页眉、正文和页脚部分,这些部分在内部是不同的独立元素。
这是一个实时的example,它只包含第一列的固定大小和一个响应表。
这是唯一的解决方案(为表格设置固定大小),因为如果您在移动终端中将宽度设置为100%,则可能不会显示所有列或重叠所有列,从而影响响应性。

snvhrwxg

snvhrwxg3#

我认为问题在于th元素的选择器有一点不正确。

::ng-deep .p-datatable .p-datatable-tbody > tr > th:nth-child(1) {

但你只需要用.p-datatable-thead代替.p-datatable-tbody

::ng-deep .p-datatable .p-datatable-thead > tr > th:nth-child(1) {
mnemlml8

mnemlml84#

这应该可以修复。删除所有th元素的修复。将此添加到您的style.css

.p-datatable .p-datatable-thead > tr > th {
    width: inherit !important;
}
v64noz0r

v64noz0r5#

我发现将table-layout: auto;设置为.p-datatable table可以达到目的:

.p-datatable table {
  table-layout: auto;
}

然后,它将考虑您为每个td给予的宽度

相关问题