侧边栏背景设计:

step1:导入背景图片

background-image: url(../../assets/menu-background.png);background-repeat:no-repeat ;background-size: cover;

step2:设置背景图片高度

  • 父盒子高度就是所有可见区高度
height:100%;
  • 父盒子高度中蕴含其余盒子
height: ~'calc(100% - @{layout-header-height})';
  • 背景图片须要设计为滚动条可见区高度
const scrollHight = document.body.scrollHeight;style={{ height:{scrollHight}}}

浮动Menu设计

step1:导入andt组件<Menu>

`import { Menu } from 'antd';`

step2:<div>(menu的父元素)中导入menu的背景图片并设置浮动

background-image: url(../../assets/menu-focusing.png);background-repeat:no-repeat ;background-size: cover;position: fixed;

step3:写出menu的style和题目

<Menu className={addStyles.newStyle}><SubMenu title="我的项目合集" className={addStyles.writeSize}>{this.getProjectData()}</SubMenu><div className={addStyles.backLogo} /
step4:getProjectData()函数获取数据,并获得前5(NUMBER_FIVE)条数据,再通过数据驱动生成menuitem
  • 获取数据
getProjectData = () => {    const { ProjectModel = {} } = this.props;    const { Topdata = [""] } = ProjectModel;    const getedData = [];    for (let i = 0; i < Topdata.length; i += 1) {      if (Topdata.length !== 0) {        const { projectName = [] } = Topdata[i];        getedData[i] = projectName;      }    }    if (getedData.length >NUMBER_FIVE) {      for (let j = NUMBER_FIVE; j <= getedData.length - 1; j += 1) {        getedData.pop();      }    }    return (      getedData.map((rigthData) => (        this.createProjectMenu(rigthData)      )))  }
  • createProjectMenu()函数生成menuitem
  createProjectMenu = (rigthData) => {    const { changeStyle = ''} = this.state;    const { ProjectModel = {} } = this.props;    const { Topdata = [""] } = ProjectModel;    return (      <div>        <Menu>          <Menu.Item className={addStyles.menuItemStyle}>            <Button onClick={this.goTheProject} className={addStyles.buttonStyle}>              {rigthData}            </Button>          </Menu.Item>          <span>            <Button className={addStyles.anoButtonStyle} onClick={() => this.changeIcon(Topdata)}>              <Icon type="star" style={{ fontSize: '30px' }} theme={changeStyle === 1 ? ("twoTone") : ("")} twoToneColor={changeStyle === 1 ? ("#52c41a") : ("")} />            </Button>          </span>        </Menu>      </div>    )  }
  • goTheProject()函数:通过点击事件进行跳转,跳转到该项目标详情页面
goTheProject = () => {    router.push({ pathname: '/Project/ProjectBranch' });  }
  • changeIcon()函数:通过点击图标进行珍藏和勾销珍藏
const { confirm } = Modal;changeIcon = (record) => {    const { isChange } = this.state;    const { dispatch, ProjectModel: { pagination } } = this.props;    const data = record[0];    const { id = '' } = data;    this.setState({      visible: true    })    if (isChange === 1) {      this.setState(        {          changeStyle: 0,          isChange: 0,        }      )      confirm({        title: `是否勾销珍藏所选我的项目`,        okText: '确定',        cancelText: '勾销',        onOk: () => {          dispatch({            type: 'ProjectModel/deleteTopProject',            payload: {              data: {                projectId: id,              },              pagination,            },          });        },      });    } else {      this.setState(        {          changeStyle: 1,          isChange: 1,        }      )      confirm({        title: `是否珍藏所选我的项目`,        okText: '确定',        cancelText: '勾销',        onOk: () => {          dispatch({            type: 'ProjectModel/topProject',            payload: {              data: {                projectId: id,              },              pagination,            },          });        },      });    }  }