React 抽屉显示和隐藏

html 复制代码
<div className={styles.content}>
      <div className={styles.left} ref={leftRef}>
      	<div className={styles.drawer} onClick={drawerChange}>
          我是抽屉开关
        </div>

        <div>
        	我是左边内容
        </div>
      </div>
      <div className={styles.right} ref={rightRef}>
        我是右边
      </div>
</div>
css 复制代码
// less文件语法
.content {
    position: relative;
    display: flex;
    height: 100%;
}

.drawer {
    position: absolute;
    top: 50%;
    right: -24px;
    transform: translateX(-50%);
    cursor: pointer;
    z-index: 999;
}

.left {
    height: 100%;
    position: absolute;
    left: 0;
    transition: left 0.3s ease;
    width: 312px;
}

.right {
    flex: 1;
    padding-left: 312px;
    transition: padding-left 0.3s ease;
}
javascript 复制代码
const [isOpen, setIsOpen] = useState<boolean>(true)
const leftRef = useRef<any>();
const rightRef = useRef<any>();

const drawerChange = () => {
    setIsOpen(!isOpen)
    const leftDom= leftRef?.current as any;
    const rightDom = rightRef?.current as any;

    leftDom.style.left = isOpen ? "-312px" : "0";
    rightDom.style.paddingLeft = isOpen ? "0" : "312px";
    rightDom.style.width = isOpen ? "100%" : 'calc(100% - 312px)';
}
相关推荐
Larcher5 小时前
React Router 不只是页面跳转:从 SPA 路由到权限守卫的完整实践
javascript·后端
Larcher5 小时前
大模型为什么每次回答都不一样?一文搞懂 Temperature、Top K 与 Top P
javascript·后端
eric-sjq9 小时前
10 分钟实战:用 0.6B 本地模型生成中文网页(WanlyFrontend + 编译器全流程)
javascript·机器学习·自然语言处理·html
To_OC9 小时前
LC 438 找到所有字母异位词:暴力超时后,我靠滑动窗口一招搞定
javascript·算法·leetcode
kyriewen10 小时前
面试官问"这段逻辑为什么这样写"——我才发现,这半年我写的代码,我自己都解释不了
前端·javascript·面试
一壶浊酒..11 小时前
Scrape Webpack练习
开发语言·javascript·webpack
To_OC11 小时前
别只拿 useRef 绑 DOM 了,搭配 Web Worker 解决页面卡顿才是真的香
前端·react.js·dom
小当家.10514 小时前
深入理解 ReAct Agent:从原理到 Java 实战
java·react.js·agent·react·架构设计·agent设计
默_笙14 小时前
⛵ 我用 React + TS 做了个"调色盘",顺便学会了企业级项目的目录架构
前端·javascript
渣波14 小时前
拒绝 Redux 样板代码:Zustand 核心原理与实战进阶指南(基础、异步与切片模式)
前端·javascript