当前位置: 首页 > news >正文

react17 + antd4 如何实现Card组件与左侧内容对齐并撑满高度

在使用antd进行页面布局时,经常会遇到需要将内容区域进行左右分栏,并在右侧区域内放置一个或多个Card组件的情况。然而,有时我们会发现右侧的Card组件并不能与左侧的栏目对齐,尤其是当左侧栏目高度动态变化时。本文将介绍如何使用antd的Grid布局和CSS样式来实现Card组件与左侧内容对齐,并撑满剩余高度

1. 问题描述:

当我们在一个Row中放置两个Col,分别代表左侧内容和右侧内容,并在右侧的Col中放置一个Card组件时,可能会遇到以下问题:

  • 右侧的Card组件高度不足,无法与左侧的Col对齐。
  • 当左侧内容高度动态变化时,右侧的Card组件高度不会相应调整。

2. 解决方案:

1、确保包含左侧内容和右侧Card的Row具有足够的高度。

2、需要在右侧的Col中使用flex布局来撑开Card组件的高度。具体做法是为右侧的Col设置display: flex;flex-direction: column;,然后为Card组件所在的Row设置flex:1;display:flex;这样是为了保证该Row可以占据上下的空间,再给Card设置flex:1;。这样,Card组件就会自动填充右侧Col的剩余空间。

  • flex-direction: column;保证父级的直接子元素(两个 Row)将会沿着列方向排列.为了让包含Card的Row能够填充整个Col的剩余空间,就需要确保其父级Col的flex方向是垂直的。
  • flex:1;:常常用于确保 flex 容器中的项目能够均匀地分配容器中的空间,如果你希望 Card 组件或其他任何元素填充其父容器的剩余空间,你可以使用 flex: 1; 来实现这一点。

3、包含Card的Row中如果还有Col,也要给该Col加上flex:1;display:'flex';每一层都要保证能够填充父级的剩余高度。

4、Row和Col本身就是flex布局,还要重新设置flex布局,是因为在复杂的布局需求下,需要在它们内部再次使用 flex 布局来获得更精细的控制。
例如,需要把Col设置为一个flex容器,保证里面内容的垂直对齐或高度填充。

3. 案例

import React, { Component } from 'react'
import {Row,Col,Card} from 'antd'
export default class Index extends Component {render() {return (<div><Row gutter={12}><Col span={12}><Card style={{backgroundColor:'red'}}><p>hello</p><p>hello</p><p>hello</p><p>hello</p><p>hello</p><p>hello</p><p>hello</p><p>hello</p><p>hello</p><p>hello</p><p>hello</p><p>hello</p><p>hello</p><p>hello</p><p>hello</p><p>hello</p><p>hello</p><p>hello</p></Card></Col>{/* 给右侧一列的Col开启flex布局,并垂直分布 */}<Col span={12} style={{display:'flex',flexDirection:'column'}}><Row><Col span={24}><Card style={{backgroundColor:'pink'}}><p>hello</p><p>hello</p><p>hello</p><p>hello</p></Card></Col></Row>{/* 给该行要设置flex:1;为了保证该行的内容占据剩余空间;再开启flex布局 */}<Row style={{flex:1,display:'flex'}}>{/* 同Row */}<Col span={24} style={{flex:1,display:'flex'}}><Card style={{backgroundColor:'blue',flex:'1'}}><p>hello</p><p>hello</p><p>hello</p><p>hello</p></Card></Col></Row></Col></Row></div>)}
}

在这里插入图片描述

http://www.lryc.cn/news/339959.html

相关文章:

  • Rust入门-Hello World
  • 堆放砖块-第12届蓝桥杯选拔赛Python真题精选
  • 019——IIC模块驱动开发(基于EEPROM【AT24C02】和I.MX6uLL)
  • 【开发篇】十三、JVM基础参数设置与垃圾回收器的选择
  • 多维 HighCharts
  • 单细胞RNA测序(scRNA-seq)cellranger count的细胞定量和aggr整合
  • Unity URP 2021 Release-Notes
  • 最新IntelliJ IDEA 2024.1 安装和快速配置教程
  • 24应届生求职中QAQ
  • centos7离线安装postgresql13
  • 【JavaSE】搞定String类
  • 数字乡村创新实践探索农业现代化与农村治理现代化新路径:科技赋能农村全面振兴与农民幸福生活
  • 【从零开始手搓12306项目】四、12306是如何成为全球最忙碌的网站之一?
  • WebKit简介及工作流程
  • 软考-系统集成项目管理中级--进度管理(输入输出很重要!!!本章占分较高,着重复习)
  • AndroidAutomotive模块介绍(一)整体介绍
  • 【开发问题记录】Nacos修改服务实例权重时报错
  • 高级IO和5种IO模型
  • OpenHarmony轻量系统开发【7】驱动之I2C显示OLED屏幕
  • C#:循环中断
  • 34. UE5 RPG实现鼠标点击移动
  • 《二》Qt Creator工具介绍与使用
  • 20240415金融读报:市场信贷不能过于宽松声音碳领域新增文件
  • 2024年第十五届蓝桥杯研究生组题目总结(Java、Python、C++)
  • MindOpt APL向量化建模语法的介绍与应用(2)
  • 深入理解图形处理器(GPU):加速人工智能和大数据计算的引擎
  • 【Java探索之旅】数组使用 初探JVM内存布局
  • RabbitMQ消息模型之Simple消息模型
  • 设计模式系列:简单工厂模式
  • 解决 windows+Ubuntu 时间不同步问题