使用ant design的modal时,发现自定义组件的样式(组件高度)被改变了!

一 问题描述

        在项目中,自定义了一个组件,分别在界面和 antd的modal中都有使用到。但是突然发现,界面中的组件样式跟modal中的组件样式高度不一样。modal中的组件整体要比页面中的组件要高一点。

        项目中的自定义组件比较复杂,因此,自己写了一个简单的测试功能,如下所示:

如上图,可以看到,常规div的样式整体比modal中的div要矮一点(差别不是特别大)。

二 问题原因

       测试程序比较简单,因此可以很容易发现是行高不一致导致的。查了antd官网才看到,antd的modal中的文本自己设置了行高(lineHeight),因此modal中的组件会整体高一些(antd官网上,modal的默认文本行高为1.5714285714285714)。而自己自定义的组件中没有设置文本行高。这就是导致组件高度在html和modal中不一致的根本原因。

三 解决办法 

        给自定义组件文本添加固定的行高(lineHeight)。

四 测试代码如下 

import React, {useState} from "react";
import {Button, Divider, Modal} from "antd";

export default () => {
  const [open, setOpen] = useState(false);

  const testDiv = <div
    style={{
      color: "white",
      width: 200,
      backgroundColor: "rgba(51, 119, 255, 1)",
      fontSize: 14,
      lineHeight: 1
    }}>这是一行用于测试的文字</div>

  return (
    <div style={{height: 820, padding: 20}}>
      <Button type={"primary"} onClick={() => setOpen(true)}>
        打开弹窗
      </Button>
      <Divider/>
      <div>
        {testDiv}
      </div>

      <Modal open={open} onCancel={() => setOpen(false)}>
        {testDiv}
      </Modal>
    </div>
  );
}

 

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值