Slidenav onclick 来自右边的问题 HTML CSS JAVASCRIPT

Slidenav onclick from right problems HTML CSS JAVASCRIPT

我的幻灯片点击导航几乎没有问题。

这是我的HTML

<div id="menu-mobile" class="menu-mobile">
    <div class="menu-mobile-close" onclick=closeNav()>
        <p>x</p>
    </div>
    <div class="menu-mobile-header">
        <img src="img/poznanprzeprowadzki_logo3.png" name="Poznań przeprowadzki logo" alt="Poznań przeprowadzki logo"></a>
        <p>Zapraszamy do kontaktu!</p>
    </div>
    <a href="index.php#indexmain"><div class="dropdown-content-item">
        <div class="dropdown-content-item-icon">
            <img width="20px" height="20px" src="img/Home_icon_white.png">
        </div>
        <div class="dropdown-content-item-text">
            <p class="lang" key="home">Strona główna</p>
        </div>
    </div></a>
    <a href="about.php#indexmain"><div class="dropdown-content-item">
        <div class="dropdown-content-item-icon">
            <img width="20px" height="20px" src="img/About_icon_white.png">
        </div>
        <div class="dropdown-content-item-text">
            <p class="lang" key="about">O nas</p>
        </div>
    </div></a>
    <a href="gallery.php#indexmain"><div class="dropdown-content-item">
        <div class="dropdown-content-item-icon">
            <img width="20px" height="15px" src="img/Gallery_icon_white.png">
        </div>
        <div class="dropdown-content-item-text">
            <p class="lang" key="gallery">Galeria</p>
        </div>
    </div></a>
    <a href="contact.php#indexmain"><div class="dropdown-content-item">
        <div class="dropdown-content-item-icon">
            <img width="20px" height="15px" src="img/Contact_icon_white.png">
        </div>
        <div class="dropdown-content-item-text">
            <p class="lang" key="contact">Kontakt</p>
        </div>
    </div></a>
    <a href="advices.php#indexmain"><div class="dropdown-content-item">
        <div class="dropdown-content-item-icon">
            <img width="15px" height="20px" src="img/Advices2_icon_white.png">
        </div>
        <div class="dropdown-content-item-text">
            <p class="lang" key="advices">Pomoc / Porady</p>
        </div>
    </div></a>
</div>
<div id="menu-mobile-background" class="menu-mobile-background">
    
</div>

<div class="menu-slider" onclick=openNav()>

</div>

这是我的 CSS:

.menu-slider {
    display: block;
    position: relative;
    background-image: url("img/Dropdown_menu_orange.png");
    background-repeat: no-repeat; 
    background-size: cover; 
    background-position: center; 
    height: 35px;
    width: 35px;
    margin: 0px 0px 0px 10px;   
}

.menu-slider:hover {
    cursor: pointer;
}

.menu-mobile {
    display: block;
    height: 100%;
    width: 0px;
    position: fixed;
    z-index: 9999;
    top: 0;
    right: 0;
    background-color: rgba(100,100,100,1);
    overflow-x: hidden;
    padding-top: ;
    transition: 1s;
}

.menu-mobile-close {
    position: absolute;
    top: 5px;
    right: 10px;
    transition: 0.05s;
}

.menu-mobile-background {
    right: 0;
    top: 0;
    transition: 0.2s;
    position: fixed;
    overflow: hidden;
    z-index: 9998;
    width: 0px;
    height: 100%;
    background-color: rgba(0,0,0,0.3);
}

.menu-mobile-header {
    padding: 16px;
    text-align: center;
    background-color: white;
}

.menu-mobile-header p {
    font-family: Open Sans;
    font-size: 14px;
    color: rgba(100,100,100,1);
    padding: 2px;
    font-weight: 500;
    display: block;
}

.menu-mobile-header img {
    margin: 0 auto;
    height: 50px;
    padding-bottom: 6px;

}

.menu-mobile-close p:hover {
    color: rgba(240,240,240,1);
    cursor: pointer;
}

.menu-mobile-close p {
    font-family: Open Sans;
    font-size: 18px;
    color: rgba(100,100,100,1);
    font-weight: 600;
    display: block;
}

.dropdown-content-item {
    min-width: 100%;
    transition: 0.1s;
    display: flex;
    align-items: center;
    align-content: center;
    justify-content: flex-start;
    padding: 10px;
    padding-top: 15px;
    margin: 0;
    flex-wrap: nowrap;
}

.dropdown-content-item-text p {
    font-family: Open Sans;
    font-size: 13px;
    color: white;
    padding: 10px;
    padding-left: 0;    
    margin: 0;
    display: block;
}

.dropdown-content-item-text {
    padding: 0;
    margin: 0;
}

.dropdown-content-item-icon {
    width: 50px;
    display: flex;
    margin: 0;
}

.dropdown-content-item-icon img {
    margin: 0 auto;
}

.dropdown-content-item:hover {
    background-color: rgba(150,150,150,1);
}

这是我这部分的 JS:

  function openNav() {
        document.getElementById("menu-mobile").style.width = "250px";
        document.getElementById("menu-mobile-background").style.width = "100%";
    }

    function closeNav() {
        document.getElementById("menu-mobile").style.width = "0px";
        document.getElementById("menu-mobile-background").style.width = "0px";
    }

openNav 和 closeNav 按钮工作正常,但是当“menu-mobile”打开或即将关闭时,导航中的段落被换行。这纯粹是整容问题,我觉得不好看。以下是我要表达的一些照片:

这是已经通过单击网站上的菜单按钮打开的移动菜单。

这是点击“x”后要向右隐藏的移动菜单

你知道我怎样才能让这个文本在关闭时不换行吗?

另一件事是我希望能够通过单击菜单以外的任何地方来关闭菜单。有谁知道我怎样才能做到这一点?我必须在这里使用很多 js 吗?

您也可以在此处查看整个网站 www.pozanprzeprowadzki.pl。移动菜单仅在较小的 window 尺寸上显示。

如果整个主题不清楚,敬请谅解。欢迎提问

将文本设置为 white-space: nowrap 将阻止它在 dropdown-content-item-text 和徽标下方的段落中换行。

但是其他东西会被压扁,你需要给它一个固定的宽度。

我认为更好的方法是将整个东西移到视口之外会更好看,像这样:

   function openNav() {
        document.getElementById("menu-mobile").style.transform = "translateX(0)";
        document.getElementById("menu-mobile-background").style.width = "100%";
    }

function closeNav() {
    document.getElementById("menu-mobile").style.transform = "translateX(100vw)";
    document.getElementById("menu-mobile-background").style.width = "0px";
} 

我认为你可以向右滑动菜单,因为位置是固定的,你必须将这个 css 设置为 menu-mobile div overflow-x: hidden;[=12 的主体或父级=]

     function openNav() {
        document.getElementById("menu-mobile").style.right= "0px";
    }

    function closeNav() {
        document.getElementById("menu-mobile").style.right= "-250px";
    }