用于在反应中为一行antd表着色的CSS

Posted

技术标签:

【中文标题】用于在反应中为一行antd表着色的CSS【英文标题】:CSS for colouring one row of antd table in react 【发布时间】:2019-04-12 17:23:04 【问题描述】:

这是我正在使用的 antd 样式的 CSS

style.css

.ant-table-tbody > tr > td, .ant-table-thead > tr > th

    padding:4px;    

tr:nth-child(odd) 
    background: #f1e6ff;

tr:nth-child(even)
    background: white;

thead[class*="ant-table-thead"] th
    background-color:#000 !important;
    color: white;
    font-weight: bold;
    border-color: #000;
    text-align: center;
  
.table_btn

    margin:0 !important;

.ant-btn

    margin:0;

.ant-table-tbody > tr:hover > td 
    color: #fff;

index.less

@import "callout";
@import 'e-commerce';
@import "pricing-tables";
@import "login";
@import "dashboard";
@import "error";
@import "editor";
@import "testimonials";


tr:nth-child(odd)
    background:inherit !important;

.ant-modal-content 
    .ant-modal-close
        color: #fff !important;
    
    .ant-modal-header 
        background-color: #000000;
        .ant-modal-title 
            color: #fff !important;
        
    


.table-wrapper 
    .ant-btn 
        padding: 0 10px;
        height: 30px;
        font-size: 13px;
        > .anticon 
             + span 
                margin-left: 5px;
             
             
        &.ant-btn-success 
            color: #3d8918;
            border-color: #d9d9d9;
            &:hover 
                background-color:#3d8918;
                color: #fff;
            
        
        &.ant-btn-danger 
            color: #c70d17;
            background-color:#fff;
            &:hover
                background-color:#c70d17;
                color: #fff;
            
        
    
    .actions 
       text-align: right;
       .ant-input 
          border-radius: 2px;
          padding:0 10px;
          font-size: 13px;
          height: 30px;
       
    
    .table-layout 
        .ant-table-small
            > .ant-table-content
                > .ant-table-body 
                    margin: 0 !important;
                    > table 
                        > .ant-table-tbody
                            > tr
                                > td
                                    padding: 2px 8px !important;
                                    font-size: 13px !important; 
                                    text-align:center;
                                    min-width: 80px;
                                    .ant-btn 
                                        width:100px;
                                    
                                 
                             
                        
                       
                
            

index.js

<Table
                    className="table-layout"
                    columns=this.state.columns
                    dataSource=filteredData
                    rowClassName='data-row'
                    bordered=true
                    size="small"
                    onRowDoubleClick= (record, index, event) => this.handleEditModal(record) 
                    onRowClick=(record, index, event) => this.handleRowClick(record)
                    loading=this.state.loading
                    pagination= pageSize: 14                    
                />

这就是 Table 在索引页面中的使用方式。 style.css 和 index.less 是 CSS 的页面。

谁能帮我在这个页面上写一个 CSS 来制作一排绿色? 我想根据条件使一排绿色。 我需要 CSS 我需要在代码所在的页面调用CSS

【问题讨论】:

根据条件添加活动类并添加CSStr.active background-color: green; 【参考方案1】:

看看这些 Jsfiddle 链接是否对您有帮助。他们展示了两种改变行背景颜色的方法。

https://jsfiddle.net/2b2376a4/

https://jsfiddle.net/2b2376a4/

data: [
        id:1, name: 'one', color: '#fff',
        id:2, name: 'two', color: '#eee',
        id:3, name: 'three', color: '#ddd'
      ]

第一个链接

  render(text, record) 
            return 
                props: 
                style:  background: record.color ,
              ,
                children: <div>text</div>,
            ;
          ,

第二个链接

 rowClassName=(record) => record.color.replace('#', '')

【讨论】:

antd表如何禁用:hover 我们也可以对标题执行此操作吗? @P-RAD 我还没有尝试过,但我想我们可以。您也可以通过定位 .antd-table-head 来直接更改 CSS。 请接受这个答案,以便其他开发者也知道答案。【参考方案2】:

到目前为止,我找到了两种方法:

一种方法是使用rowClassName Table 的 prop:

.table-row-light 
    background-color: #ffffff;

.table-row-dark 
    background-color: #fbfbfb;

<Table
  rowClassName=(record, index) => index % 2 === 0 ? 'table-row-light' :  'table-row-dark'
  columns=columns
  dataSource=dataSource
  loading=loading
/>

第二种方法是使用纯 CSS

.table-striped-rows tr:nth-child(2n) td 
    background-color: #fbfbfb;

.table-striped-rows thead 
    background-color: #f1f1f1;

<Table
  className="table-striped-rows"
  columns=columns
  dataSource=dataSource
  loading=loading
/>

请注意,rowClassName 仅适用于行,因此对于表头上的 CSS,我们只能使用上述纯 CSS。

【讨论】:

以上是关于用于在反应中为一行antd表着色的CSS的主要内容,如果未能解决你的问题,请参考以下文章

在 iPad 上的 inputAssistantItem 中为 UIBarButtonItems 着色

使用 CSS Grid 每隔一行着色

如何在 Swift 中为 UIImage 着色?

在 Eclipse 控制台中为日志着色

在光线追踪中为对象着色

如何在网格视图中为网格单元格着色?