You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让antd Descriptions组件中无标题项左对齐?

问题描述

我正在使用antd的Descriptions组件,需求是当项没有title时,对应的value需要左对齐,效果如下图所示:
输入图片描述

我尝试修复但未成功,请问该如何解决?

附当前代码(demo.tsx):

import React from "react";
import "antd/dist/antd.css";
import "./index.css";
import { Descriptions } from "antd";

const App: React.FC = () => {
  const items = [
    { title: "title 1", value: "value-1" },
    { title: "title 2", value: "value-2" },
    { value: "value-3" }
  ];
  return (
    <Descriptions column={1} bordered>
      {items.map((description, index) =>
        description.title ? (
          <Descriptions.Item
            key={index}
            label={description.title}
            labelStyle={{ width: "25%" }}
          >
            {description.value}
          </Descriptions.Item>
        ) : (
          <div key={index}>{description.value}</div>
        )
      )}
    </Descriptions>
  );
};

export default App;
解决方案

直接在Descriptions组件内嵌套div会破坏原有布局结构,导致对齐异常,推荐以下两种规范的实现方式:

方式一:利用Descriptions.Item的span属性占满整行

无需额外嵌套div,给无title的项设置span={2}(对应Descriptions默认的label+value两列布局),让它占满整行,同时隐藏空label的占位:

import React from "react";
import "antd/dist/antd.css";
import "./index.css";
import { Descriptions } from "antd";

const App: React.FC = () => {
  const items = [
    { title: "title 1", value: "value-1" },
    { title: "title 2", value: "value-2" },
    { value: "value-3" }
  ];
  return (
    <Descriptions column={1} bordered>
      {items.map((description, index) =>
        description.title ? (
          <Descriptions.Item
            key={index}
            label={description.title}
            labelStyle={{ width: "25%" }}
          >
            {description.value}
          </Descriptions.Item>
        ) : (
          <Descriptions.Item
            key={index}
            label=""
            span={2}
            labelStyle={{ display: "none" }}
          >
            {description.value}
          </Descriptions.Item>
        )
      )}
    </Descriptions>
  );
};

export default App;

方式二:自定义CSS样式覆盖

如果不想修改组件结构,可给无title的内容添加自定义类名,通过CSS强制对齐:

第一步:修改JSX代码

import React from "react";
import "antd/dist/antd.css";
import "./index.css";
import { Descriptions } from "antd";

const App: React.FC = () => {
  const items = [
    { title: "title 1", value: "value-1" },
    { title: "title 2", value: "value-2" },
    { value: "value-3" }
  ];
  return (
    <Descriptions column={1} bordered>
      {items.map((description, index) =>
        description.title ? (
          <Descriptions.Item
            key={index}
            label={description.title}
            labelStyle={{ width: "25%" }}
          >
            {description.value}
          </Descriptions.Item>
        ) : (
          <div key={index} className="full-width-desc-value">{description.value}</div>
        )
      )}
    </Descriptions>
  );
};

export default App;

第二步:在index.css中添加样式

.full-width-desc-value {
  width: 100%;
  padding: 16px;
  border: 1px solid #d9d9d9;
  border-top: none;
  box-sizing: border-box;
}

推荐优先使用方式一,更符合Ant Design组件的设计规范,避免样式冲突。

内容的提问来源于stack exchange,提问作者CCCC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 18:05:24