介绍

首先,在布局这方面而言,我觉得作为前端人员,应该不需要做过多的解释

有一种布局是响应式布局,大概的意思就是将一套代码同时运行在 PC App 平板三个主要的设备,当时这是很流行的布局,但现在而言,App与PC的差异还是蛮大的,所以现在PC与APP的页面布局等差异还是蛮大的,所以现在一般来说会分开写的~~

做过移动端的人都知道,手机的屏幕大小可能会影响页面的布局,同理,PC端也存在响应的问题,所以我们需要将页面组件尽量写为响应式,至少不要看着特别难受~~~

大家可以参考 Row ColProCard

在线演示:响应式列表

功能

当你有以下需求时,可以试试这个组件

  • 列表展示模块,类似卡片的模块
  • 介绍产品的列表

代码演示

功能演示

PC端

image.png

平板

image.png

移动端

image.png

具体代码

文件位置:src/components/Card/CardLayout.tsx

全局配置文件:src/utils/Setting/CardSy

  1. import ProCard from '@ant-design/pro-card';
  2. import { CardSy } from '@/utils/Setting';
  3. import type { CardLayoutProps } from './interface';
  4. import './index'
  5. /**
  6. * @module CardLayOut 卡片布局
  7. *
  8. * @param list 数据的列表,可以是对象也可以是节点,如果是对象,则必须加入render,在render中做为内容,并且可以配置ProCard其他属性,
  9. * @param type 一行显示的数量, 目前有 2 3 4 6 8,会更具页面的大小自动换行,默认为2
  10. * @param 其他的ProCard布局
  11. * @param _config 通知设置子组件的属性
  12. * @param height 设置统一高度
  13. */
  14. const CardLayout: React.FC<CardLayoutProps> = ({ list = [], type = 2, _config={}, ...props }) => {
  15. const colSpan = type === 8 ? colSpanEight : type === 3 ? colSpanThree : type === 4 ? colSpanFour : type === 6 ? colSpanSix : colSpanTwo
  16. return (
  17. <ProCard gutter={[24, 24]} ghost {...props} wrap>
  18. {list.map((item, index) => {
  19. const { render, ...propsList } = item;
  20. return (
  21. <ProCard
  22. className="CardLayoutChildrenSy"
  23. key={'WrapProCard' + index}
  24. {...CardSy.Layout}
  25. {..._config}
  26. {...propsList}
  27. colSpan={colSpan}
  28. >
  29. {item.render ? item.render : item}
  30. </ProCard>
  31. );
  32. })}
  33. </ProCard>
  34. );
  35. };
  36. export default CardLayout;
  37. const colSpanTwo = {
  38. xs: 24,
  39. sm: 24,
  40. md: 24,
  41. lg: 24,
  42. xl: 12,
  43. };
  44. const colSpanThree = {
  45. xs: 24,
  46. sm: 12,
  47. md: 12,
  48. lg: 12,
  49. xl: 8,
  50. };
  51. const colSpanFour = {
  52. xs: 24,
  53. sm: 12,
  54. md: 12,
  55. lg: 12,
  56. xl: 6,
  57. };
  58. const colSpanSix = {
  59. xs: 24,
  60. sm: 12,
  61. md: 12,
  62. lg: 12,
  63. xl: 4,
  64. };
  65. const colSpanEight = {
  66. xs: 24,
  67. sm: 12,
  68. md: 6,
  69. lg: 6,
  70. xl: 3,
  71. };

特殊说明

  • 此处的布局结合 ProCard 进行的,如果有什么好的修改,可根据自己的项目进行样式的配置等