全局设置的scss变量,通过js修改,使得所有使用到改变量的地方都同步或者单次修改

背景如下

左侧菜单无限添加子级菜单后,菜单宽度需要被改变,且右侧页面同时被往右侧推。而不是只改变菜单宽度,右侧页面被遮挡。

错误:只改变菜单宽度,则会压住右侧内容

正确:添加多层菜单,菜单无限变宽,但是右侧也同步被推后。

下面是我的代码:有不懂的地方可以留言问我

variables.scss

$sideBarWidth: var(--test, 285px);

菜单的js代码

方法内容:

handleOpen(key, keyPath) {
      console.log(key, keyPath);
      if (keyPath.length >= 3) {
        //当菜单层级比较多时,动态改变菜单的宽度
       // 这里是我一开始写的,但是这样写只能改变菜单的宽度,其他地方的宽度不会一起改变,这样变宽的菜单会遮挡右侧内容,必须是setProperty
        // document.getElementsByClassName('sidebar-container')[0].style.width =
        //   285 + (keyPath.length - 2) * 30 + 'px';
       
        let width = `${285 + (keyPath.length - 2) * 30}px`;
        console.log('width', width);
        document
          .getElementsByTagName('body')[0]
          .style.setProperty('--test', width);
      } else {
        document
          .getElementsByTagName('body')[0]
          .style.setProperty('--test', '285px');
      }
    },
    handleClose(key, keyPath) {
      console.log(key, keyPath.length);
      if (keyPath.length >= 3) {
        let width = `${285 + (keyPath.length - 3) * 30}px`;
        console.log('width', width);
        document
          .getElementsByTagName('body')[0]
          .style.setProperty('--test', width);
      } else {
        console.log('elsewidth');

        document
          .getElementsByTagName('body')[0]
          .style.setProperty('--test', '285px');
      }
    }
posted @ 2023-02-13 20:22  sinceForever  阅读(1230)  评论(0编辑  收藏  举报