suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Scrollen Sie nicht durch das Hamburger-Menü

Text-CSS

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

Wenn ich auf das Symbol klicke, fügt der Code die HTML-Klasse „lock“ hinzu

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

Ich habe eine Komponente für ein Hamburger-Menü. Ich möchte scrollen, während das Menü aktiv ist.

Ich klicke auf das Symbol und dann wird das Hamburger-Menü aktiv und ich füge dem Textkörper die Klasse „Sperren“ hinzu.

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>
    );

Komponententitelmenü

<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 für Hamburger-Menü. Aber ich kann nicht scrollen, wenn mene aktiv ist, und ich verstehe nicht, warum Ich habe versucht, den Überlauf auszublenden und zu scrollen.

.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;
        }
    }

P粉410239819P粉410239819447 Tage vor674

Antworte allen(1)Ich werde antworten

  • P粉786800174

    P粉7868001742023-09-10 09:37:40

    在我写了 height 而不是 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;
            }
        }

    Antwort
    0
  • StornierenAntwort