首页 > 其他分享 >实现Antd Modal拉伸改变弹窗大小

实现Antd Modal拉伸改变弹窗大小

时间:2023-02-20 18:15:41浏览次数:28  
标签:拉伸 const 元素 弹窗 Modal 大小 Antd resize

1. 场景:想通过拖动弹窗右下角,实现弹窗大小的自由拉伸,效果类似textarea。

2. 实现思路:利用css的resize属性,将Modal弹窗的容器盒子改为支持拉伸的元素。

我们先来看一下resize的用法(来自MDN)。

(1)resize CSS 属性允许你控制一个元素的可调整大小性。

(2)取值:none-元素不能被用户缩放;both-允许用户在水平和垂直方向上调整元素的大小;horizontal-允许用户在水平方向上调整元素的大小;vertical-允许用户在垂直方向上调整元素的大小。

(3)实例:textarea标签默认resize=both。

在实际项目中的用法

// 根据弹窗高度调整内容区域高度
  const flatRef = useRef(null);

  const onResize = useCallback((entries: any) => {
    requestAnimationFrame(async () => {
      flatRef.current &&
        ((flatRef.current as any).style.height = entries[0].contentRect.height - 54 + "px");
    });
  }, []);

  useEffect(() => {
    const resizeObserver = new ResizeObserver(onResize);
    resizeObserver.observe(document.getElementsByClassName("ant-modal-content")[0]);
    return () => {
      resizeObserver.disconnect();
    };
  }, [onResize]);

return (
    <Modal open={true} className="demo-modal">
        <div ref={ref}>
            ...
        </div>
    </Modal>
)

.demo-modal {
    .ant-modal-content {
        height: 540px;
        overflow: auto;
        resize: both;
    }
}

 

标签:拉伸,const,元素,弹窗,Modal,大小,Antd,resize
From: https://www.cnblogs.com/shellon/p/17138405.html

相关文章

  • modal的使用
    今天在开发的时候,想要使用Drawer。RN原生不自带Drawer,react-native-drawer又有bug(没法显示背景层),react-native-elements只提供了Overlay,teaset不带没有ts声明文件。奔溃......
  • AntDesign样式穿透解决方案
    业务效果//直接放在style标签中不要放在<stylelang="scss"scoped>标签中<style>.ant-table.ant-table-bordered.ant-table-title{background:#f3f3f3;}......
  • AntDesign中card卡片动态添加bodystyle样式,实现body切换
    业务效果核心代码<template><a-layoutclass="layout"><a-layout-headerclass="header"style="height:50px"><divclass="wrappercontent">......
  • element中dialog弹窗打开滚动条问题
    element中dialog弹窗打开后,页面body自动增加了如下属性底层界面滚动条消失,导致界面抖动。折中方法:main.js引入element时,添加Element.Dialog.props.lockScroll.default=f......
  • vue+elementUI 实现设置还款日字母弹窗组件
    1、业务背景还款业务,设置每月还款日,选每月几号扣款,不需要29、30、31,因为不是每个月都有这三天的2、预期效果图3、代码实现3.1初始化vue项目地址:https://cn.vuejs.org......
  • vue+elementUI 实现设置还款日字母弹窗组件
    1、业务背景还款业务,设置每月还款日,选每月几号扣款,不需要29、30、31,因为不是每个月都有这三天的2、预期效果图3、代码实现3.1初始化vue项目地址:https://cn.vuejs.or......
  • vue3+jsx+antd项目,ant design vue组件中日期组件的自定义格式
    目标效果实际效果关键代码,直接从react版本的antd复制的代码,并修改了,current加上了moment(current)<DatePickerdateRender={current=>{conststyle......
  • antd table 自定义折叠展开图标(示例)
    expandable={{expandedRowKeys,onExpandedRowsChange:(expandedRows)=>{updateState((draft)=......
  • Antd里面的Select选择器的一些非常规用法
    Select选择器 检索的时候是默认按照id检索的 我们通常用label检索的 optionFilterProp搜索时过滤对应的 option 属性,如设置为 children 表示对内嵌内容进......
  • 抓取toast提示及各种弹窗定位
    一般来说,toast提示显示时间都很快1.可以用浏览器debug操作,定位元素2.toast提示属于html弹窗,可以直接定位到,不需要switch_to3.弹窗(alert、confirm、prompt),属于浏览器弹......