react如何自定义Ant Design对话框Modal的样式

一、效果展示:

在这里插入图片描述

二、具体实现:

 1. 在官方api中写到,可以为Modal添加类名,那这样就可以通过类选择器给对话框设置样式了

在这里插入图片描述

 2. 再来看一下Modal的结构、整个页面的class是ant-modal-content

ruge

 在DevTools中选中对话框,可以看到整个Modal由header、body、footer,还有右上角的叉叉构成
 以及他们 对应的类名
在这里插入图片描述

 3. 去掉header(即title)和footer
 这里不需要通过类名去设置样式,可以直接在< Modal >标签里设置 title={null} footer={null}
 效果是这样的
在这里插入图片描述

 4. 修改body样式
 在这里我们为Modal定义一个类名 wrapClassName={‘weipay’}
注意:这里子元素body和父元素content大小一致

 根据需求,需要给body设置边框圆角以及背景图片
 就可通过wrapClassName以及ant-modal-content、ant-modal-body来修改样式

 过程是这样的
 先为body添加上背景图
在这里插入图片描述

 然后设置圆角,这里可以看到背景即父元素content是白色的
在这里插入图片描述

 将背景设为透明
在这里插入图片描述

三、详细代码

Ps:上面展示部分是直接在antd官网修改的,下面的代码是文章开头的那张图片的实现

html部分

<Modal
   width='1000px'
   title={null}
   footer={null}
   visible={visible}
   onOk={this.hideModal}
   onCancel={this.hideModal}
   maskClosable={false} //点击蒙版不允许关闭,防止误触
   wrapClassName={'weipay'} //为对话框设置类名,用来修改modal样式
>
   <div maxWidth={1000}>
       <div style={{ height: 360, padding: '30px' }} >
           <Row>
              <Col xl={16}>
                 <div className='leftintro'>
                   <p style={{ fontSize: '22px', marginTop: '17%', color: '#eee' }}>请扫描二维码进行会员认证,支付成功后完成注册</p>
                   <div style={{ margin: '0 auto' }}>
                     <p style={{ fontSize: '18px', marginTop: '10%', marginLeft: '13%', color: '#eee' }}>请在<span style={{ fontSize: '20px', color: 'red' }}>&nbsp;30&nbsp;</span>秒内完成支付,否则需要重新提交</p>
                   </div>
                 </div>
              </Col>
              <Col xl={8} >
                 <QRCode
                   value={qrcode}
                   size={200} //二维码的宽高尺寸
                   fgColor="#000"  //二维码的颜色
                 />
                 <div style={{ width: 240, height: 100, marginTop: '14%', marginLeft: '24%' }}>
                   <div style={{ width: 60, height: 60, float: 'left', marginTop: '4%' }} className='wxlogo'></div>
                   <div style={{ width: 160, height: 160, float: 'left', marginTop: '-17%' }} className='wcp'></div>
                 </div>
              </Col>
           </Row>
       </div>
   </div>
</Modal>

css部分

.weipay .ant-modal-content {
    background-color: rgb(0, 0, 0, 0); /* 将背景设置为透明 */
}
.weipay .ant-modal-body {
    background-image: url("../../../../../../public//pic//weipay.png");
    background-repeat: no-repeat;
    background-position: center;
    border-radius: 30px;
}
  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值