recherche

Maison  >  Questions et réponses  >  le corps du texte

Ne faites pas défiler le menu des hamburgers

Texte CSS

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

Quand je clique sur l'icône, le code ajoute la classe HTML "lock"

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

J'ai un composant pour le menu hamburger. Je veux faire défiler pendant que le menu est actif.

Je clique sur l'icône puis le menu hamburger devient actif et j'ajoute la classe "Lock" au corps.

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

Menu Titre du composant

<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 pour le menu hamburger. Mais je ne peux pas le faire défiler lorsque mene est actif et je ne comprends pas pourquoi J'ai essayé d'écrire un débordement en le masquant et en le faisant défiler.

.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粉410239819444 Il y a quelques jours667

répondre à tous(1)je répondrai

  • P粉786800174

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

    Après avoir écrit la hauteur au lieu de la hauteur minimale, cela a fonctionné

    Code avant modifications

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

    Nouveau code

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

    répondre
    0
  • Annulerrépondre