css 不滚动汉堡菜单

gmxoilav  于 2023-04-13  发布在  其他
关注(0)|答案(2)|浏览(135)

CSS for body

body  {
        .lock & {
            overflow: hidden;
            touch-action: none;
            overscroll-behavior: none;
      }
      .loaded & {
      }
    }

当我点击图标时,代码添加了HTML类'lock'

const burgerClick = (e:React.MouseEvent<HTMLDivElement>) => {
        if (widthWindow && widthWindow < 991.98) {
            dispatch(changeStateMenuBurgerHeader(!stateMenuBurgerHeader))
            document.documentElement.classList.toggle('lock');
        }
    }

我有汉堡菜单组件。我想在菜单激活时滚动。
我点击图标,然后汉堡菜单是活跃的,我添加类'锁'的身体。

return (
        <div className= {!stateMenuBurgerHeader
            ? "header__burger"
            : "header__burger menu-open"
        }>
            <MyButton
                className = "header__btn-burger icon-menu"
                type = "button"
                >
                    <span></span>
            </MyButton>
                <nav className="header__nav nav-header">
                    <ul className="header__list nav-header__list">
                        {widthWindow && widthWindow >= 950
                            ? burgerMenu.map((item) =>
                                <LinkBurger
                                    burgerMenuList = {item}
                                    key = {item.text}
                                    className = {item.icon}
                                />)
                            : burgerMenuSecond.map((item) =>
                                <LinkBurger
                                    burgerMenuList = {item}
                                    key = {item.text}
                                    className = {item.icon}
                                />)
                        }
                    </ul>
                </nav>
        </div>
    );

组件标题菜单

<div className="header__cover-lines">
        <div className = "header__cover-left-block"
            onMouseEnter={burgerMouseEnter}
            onMouseLeave={burgerMouseLeave}
            onClick = {burgerClick}
        >
            <BurgerMenu/>
            <div className="header__menu-block">CinemaGO</div>
    </div>

汉堡菜单的CSS。但是当mene处于活动状态时,我不能滚动它,我不明白为什么我试图写溢出隐藏和滚动它。

.nav-header{
    background-color: rgba(21, 21, 21, 0.96);
    z-index: 4;
    @media (min-width: $tablet) {
      padding-bottom: rem(10);
      padding-top: rem(100);
      border-radius: rem(10);
      min-width: rem(400);
      margin-left: -10px;
      position: absolute;
      top: 0;
      left: 0;
      transform: translate(0px,-30px);
    }
    @media (max-width: $tablet) {
        position: fixed;
        top: 0;
        left: 0;
        min-width: 100%;
        min-height: 100%;
        padding-top: rem(80);
        transform:translate(-120%,0%);
        transition: transform ease 1s 0s;
        overflow: scroll;
        .menu-open & {
          transform:translate(0%,0%);
          transition: transform ease 1s 0s;
        }
    }
qcbq4gxm

qcbq4gxm1#

它的工作后,我写的高度,而不是min-height
变更前代码

@media (max-width: $tablet) {
        position: fixed;
        top: 0;
        left: 0;
        min-width: 100%;
        **min-height: 100%;**
        padding-top: rem(80);
        transform:translate(-120%,0%);
        transition: transform ease 1s 0s;
        overflow: scroll;
        .menu-open & {
          transform:translate(0%,0%);
          transition: transform ease 1s 0s;
        }
    }

新代码

@media (max-width: $tablet) {
        position: fixed;
        top: 0;
        left: 0;
        min-width: 100%;
        **height: 100%;**
        padding-top: rem(80);
        transform:translate(-120%,0%);
        transition: transform ease 1s 0s;
        overflow: scroll;
        .menu-open & {
          transform:translate(0%,0%);
          transition: transform ease 1s 0s;
        }
    }
nwlqm0z1

nwlqm0z12#

看起来你想在汉堡菜单打开时在正文中启用滚动。目前,你的CSS代码设置为'overflow:为'.nav-header'元素设置'scroll',当菜单内容超出可用空间时,它应该启用菜单内的滚动。但是,它也设置了'position:菜单的“fixed”,这意味着它脱离了正常的文档流,不会影响正文的滚动行为。
要在菜单打开时启用正文中的滚动,您需要删除“溢出:hidden'属性。当'lock'类添加到'HTML'元素时,此属性会阻止在正文中滚动。
下面是更新后的body的CSS代码:

body  {
  .lock & {
    touch-action: none;
    overscroll-behavior: none;
  }
  .loaded & {
  }
}

通过此更改,您应该能够在菜单打开时滚动正文。

相关问题