antd中table表格奇偶行设置不同样式(颜色交替)

前言

在做antd表格时通常会用到table组件,如何修改antd组件的默认样式想必大家都知道,那么我们如何将表格的奇数行和偶数行设置为不同样式呢,如下图所示
在这里插入图片描述

react中覆盖antd组件的样式

渲染时给奇偶行设置不同类名

利用Table组件官方API接口修改行的类名,通过类名设置不同行的样式.

js文件TableChangeDom.js

/**
 * @file 列表奇偶行设置不同样式;渲染时给奇偶行设置不同类名
 * */

import React from "react";
import {
    
     Table } from 'antd';
import styles from "./TableChangeDom.less";

const dataSource = [
  {
    
    
    key: '1',
    name: '张三',
    age: 32,
    address: '西湖区',
  },
  {
    
    
    key: '2',
    name: '李四',
    age: 42,
    address: '下城区',
  },
  {
    
    
    key: '3',
    name: '王五',
    age: 52,
    address: '上城区',
  },
  {
    
    
    key: '4',
    name: '赵六',
    age: 26,
    address: '余杭区',
  },
  {
    
    
    key: '5',
    name: '胡彦祖',
    age: 29,
    address: '萧山区',
  },
];

const columns = [
  {
    
    
    title: '序号',
    render: (text, record, index) => `${
      
      index + 1}`,
  },
  {
    
    
    title: '姓名',
    dataIndex: 'name',
    key: 'name',
  },
  {
    
    
    title: '地址',
    dataIndex: 'address',
    key: 'address',
  },
  {
    
    
    title: '年龄',
    dataIndex: 'age',
    key: 'age',
  },
];

class TableChangeDom extends React.Component {
    
    

  /**
   * @function 获取表格行的类名
   * @param {array} record 当前行数据
   * @param {number} index 当前行索引
   * @return {string} className 类名
   * */
  getRowClassName = (record, index) => {
    
    
    let className = '';
    className = index % 2 === 0 ? styles.oddRow : styles.evenRow;
    return className;

  }

  render() {
    
    
    // const { className, ...otherProps } = this.props;
    return (
      <div className={
    
    styles.root}>
        <Table dataSource={
    
    dataSource} columns={
    
    columns} pagination={
    
    false} rowClassName={
    
    this.getRowClassName} />
      </div>
    );
  }
};

export default TableChangeDom;

css文件TableChangeDom.less

.root {
    
    
  .oddRow {
    
    
    background-color: #fff;
  }
  .evenRow {
    
    
    background-color: #c0c0c0;
  }
}

通过CSS选择器为奇偶行设置不同样式

使用 :nth-child(n)选择器匹配奇偶行元素并为其设置不同样式

js文件TableChangeCss.js

/**
 * @file 列表奇偶行设置不同样式;通过CSS选择器为奇偶行设置不同样式
 * */

import React from "react";
import {
    
     Table } from 'antd';

import styles from "./TableChangeCss.less";

const dataSource = [
  {
    
    
    key: '1',
    name: '张三',
    age: 32,
    address: '西湖区',
  },
  {
    
    
    key: '2',
    name: '李四',
    age: 42,
    address: '下城区',
  },
  {
    
    
    key: '3',
    name: '王五',
    age: 52,
    address: '上城区',
  },
  {
    
    
    key: '4',
    name: '赵六',
    age: 26,
    address: '余杭区',
  },
  {
    
    
    key: '5',
    name: '胡彦祖',
    age: 29,
    address: '萧山区',
  },
];

const columns = [
  {
    
    
    title: '序号',
    render: (text, record, index) => `${
      
      index + 1}`,
  },
  {
    
    
    title: '姓名',
    dataIndex: 'name',
    key: 'name',
  },
  {
    
    
    title: '地址',
    dataIndex: 'address',
    key: 'address',
  },
  {
    
    
    title: '年龄',
    dataIndex: 'age',
    key: 'age',
  },
];

class TableChangeCss extends React.Component {
    
    
  render() {
    
    
    return (
      <div className={
    
    styles.root}>
        <Table dataSource={
    
    dataSource} columns={
    
    columns} pagination={
    
    false} />
      </div>
    );
  }
};

export default TableChangeCss;

css文件TableChangeCss.less

.root {
    
    
  :global {
    
    
    h1.ant-typography,
    .ant-typography h1 {
    
    
      margin-top: 0.5em;
    }
  }
}

以上例子的GitHub地址

react-demo

参考资料

antd-table组件
CSS3 :nth-child() 选择器

猜你喜欢

转载自blog.csdn.net/tianxintiandisheng/article/details/107840102