结合antd layout做自适应的可见区高度

本文旨在解决在React应用中,当内容组件高度不足一屏时,页面中间部分会塌陷的问题。通过设置minHeight并结合antd布局,确保内容区域在高度不足时自动占满一屏。通过计算header和footer等非内容区域(restHeight)的高度,并将min-height属性继承给内容区域的最外层div,实现了全页面自适应高度的效果。

目的: 当content组件高度不足一屏时,中间部分会塌陷,所以加minHeight让他不足一屏时自动占满一屏。
restHeight 是除了content的部分,比如header + footer的高度值。所以

minHeight: document.documentElement.clientHeight - restHeight

具体代码:

import React from 'react';
import { ConfigProvider, Layout } from 'antd';
import { PageBasicPropsModel } from '@/interfaces/common';
import zh_CN from 'antd/lib/locale/zh_CN';
import CustomFooter from './components/CustomFooter';
import CustomHeader from './components/CustomHeader';
import { restHeight } from '@/pages/constant';

const { Content } = Layout;
const BasicLayout: React.FC<PageBasicPropsModel> = props => {
  return (
    <ConfigProvider locale={zh_CN}>
      <Layout>
        <CustomHeader />
        <Content
          style={{
            background: 'white',
            minHeight: document.documentElement.clientHeight - restHeight,
          }}
        >
          {props.children}
        </Content>
        <CustomFooter />
      </Layout>
    </ConfigProvider>
  );
};

export default BasicLayout;

然后content具有了minHeight只需要对page内的组件的最外层dev加一个min-height: inherit;
如:
在这里插入图片描述
在这里插入图片描述
最终达到所有页面高度不够是自动撑满全局的体验

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值