文章目录
-
- [1 设计UI,组件拆分](#1 设计UI,组件拆分)
- [2 实现](#2 实现)
- 关于
1 设计UI,组件拆分

编辑器整体如上图所示,重点关注:
- flex弹性布局
- 上
- 左
- 中
- 右
- 下
- 左
- 中
- 右
- 上
- 画布居中
- 画布Y轴滚动
2 实现
src/pages/question/Edit/index.tsx代码如下:
ts
import { FC } from "react";
import useLoadQuestionData from "@/hooks/useLoadQuestionData";
import styles from "./index.module.scss";
const Edit: FC = () => {
// 获取问卷信息
const { loading } = useLoadQuestionData();
return (
<div className={styles.container}>
<div style={{ backgroundColor: "#fff", height: "40px" }}>Header</div>
<div className={styles["content-wrapper"]}>
<div className={styles.content}>
<div className={styles.left}>Left</div>
<div className={styles.main}>
<div className={styles["canvas-wrapper"]}>
</div>
</div>
<div className={styles.right}>Right</div>
</div>
</div>
</div>
);
};
export default Edit;
src/pages/question/Edit/index.module.scss代码如下:
scss
.container {
display: flex;
flex-direction: column;
height: 100vh;
background-color: #f0f2f5;
}
.content-wrapper {
flex: auto;
padding: 12px 0;
}
.content {
display: flex;
margin: 0 24px;
height: 100%;
.left {
width: 285px;
background-color: #fff;
padding: 0 12px;
}
.main {
flex: 1;
position: relative;
overflow: hidden;
.canvas-wrapper {
position: absolute;
width: 400px;
height: 712px;
top: 50%;
left: 50%;
transform: translateX(-50%) translateY(-50%);
overflow: auto;
box-shadow: 0 2px 10px #00001f;
}
}
.right {
width: 300px;
background-color: #fff;
padding: 0 12px;
}
}
效果如下图所示:

关于
❓QQ:806797785
⭐️仓库地址:https://gitee.com/gaogzhen
⭐️仓库地址:https://github.com/gaogzhen
1\][react官网](https://reactjs.org/)\[CP/OL\]. \[2\][Redux官网](https://redux.js.org/)\[CP/OL\].