固定列
StkTableColumn['fixed'] = 'left' または 'right' を設定して、左または右の固定列を実現します。
新しい固定列インタラクション
テーブルは sticky を使用して固定列を実装しているため、列吸着機能をサポートしています。任意列を固定列に設定でき、列が可視領域を超えると初めて固定されます。
基本
列設定デモ
const columns: StkTableColumn<any>[] = [
{ title: 'Name', dataIndex: 'name', fixed: 'left', width: 100 },
{ title: 'Age', dataIndex: 'age', width: 100 },
{ title: 'Address', dataIndex: 'address', width: 200 },
// Gender 列前面的列都必须指定列宽
{ title: 'Gender', dataIndex: 'gender', width: 50, fixed: 'left' },
{ title: 'Email', dataIndex: 'email' },
{ title: 'Phone', dataIndex: 'phone' },
{ title: 'Company', dataIndex: 'company' },
{ title: 'Operation', dataIndex: 'operation', fixed: 'right', width: 100 },
];WARNING
固定列の吸着位置を列幅で計算するために、左固定列より前のすべての列はwidthを指定する必要があります。
上記のテーブルのように、性別 列より前のすべての列はwidthが設定されている必要があります。右固定列也同样です。
右固定列が「異常」?
右固定列は通常**columns の末尾に宣言します**。この場合、これらの列は列幅の設定に依存せず、常に固定されたままになります。
ただし、吸着効果(列が可視領域を超えたときにのみ吸着する効果、および固定列シャドウ)が必要な場合は、すべての列に列幅を指定する必要があります。吸着位置は各列の列幅を累積して計算するため、中間のある列(下記の url 列など)に width がないと、計算結果が実際のレンダリング幅と一致せず、吸着のタイミングが異常になります。
const columns: StkTableColumn<any>[] = [
{ title: '名前', dataIndex: 'name', width: 100 },
{ title: '配信URL', dataIndex: 'url' }, // ❌ width未設定。吸着の計算が不正確になる
{ title: '操作', dataIndex: '_action', fixed: 'right', width: 150 },
];横スクロールすると、性別 列が自動的に左に吸着するのがわかります。
TIP
すべての左固定列を一番左に配置したい場合は、columns 配列の先頭に配置します。同様に、すべての右固定列を columns 配列の末尾に配置します。
固定列シャドウ
デフォルトでは、固定列にはシャドウ効果はありません。シャドウ効果が必要な場合は、fixedColShadow プロパティを true に設定できます。
<StkTable fixed-col-shadow></StkTable>仮想リスト列固定
WARNING
props.virtualX(横方向仮想リスト)が設定されている場合、widthが指定されていない列は強制的に100pxになります