"overfow-x: hidden" 不适用于移动设备

"overfow-x: hidden" doesn't work on mobile

我有一个问题,overflow-x: hidden 无法在移动设备上运行。

我的 HTML 代码如下所示。

<div class = "topbar">
    <div class="navbar-brand float-left">
        <a href="#"><img src="assets/img/logo.png"></a>
    </div>
    <div class="float-right mr-4 menu-bar">
        <a href="#about"><span class="a-border" onclick="menuclick(this)">ABOUT US</span></a>
        <a href="#creater"><span class="a-border" onclick="menuclick(this)">CREATERS</span></a>
        <a href="#news"><span class="a-border" onclick="menuclick(this)">NEWS</span></a>
        <a href="#contact"><span class="a-border" onclick="menuclick(this)">CONTACT</span></a>
    </div>
    <div class="dropdown-btn">
        <div class="menu_btn" onclick="event.stopPropagation(); myFunction(this)">
            <div class="bar1"></div>
            <div class="bar2"></div>
            <div class="bar3"></div>
        </div>
        <div id="myDropdown" class="dropdown-content">
            <a href="#about"><span class="a-border" onclick="menuclick(this)">ABOUT US</span></a>
            <a href="#creater"><span class="a-border" onclick="menuclick(this)">CREATERS</span></a>
            <a href="#news"><span class="a-border" onclick="menuclick(this)">NEWS</span></a>
            <a href="#contact"><span class="a-border" onclick="menuclick(this)">CONTACT</span></a>
        </div>
    </div>
    <div class="menu-img"><img src="assets/img/menu-img.png"></div>
</div>

我的css在下面。

.topbar {
    width: 100%;
    background-color: black;
    color: white;
    margin: 0px;
    padding: 3rem;
    position: relative;
}
a {
    text-decoration: none;
}
a:hover {
    cursor: pointer;
}
.a-border {
    display: inline-block;
    position: relative;
    color: white;
    padding: 0.5rem 0.25rem;
    margin: 0 1.5rem;
    overflow: hidden;
}
.a-border::after {
    content: url("../img/more-btn-bottom.png");
    display: block;
    position: absolute;
    bottom: 0;
    left: -0.25rem;
    border: none;
    transform: scale(0, 1);
    transform-origin: 0% 100%;
    transition: transform 0.4s;
}
a:hover .a-border::after {
    transform:scale(1, 1);
}
a.focused .a-border::after {
    transform: none;
}
.menu-bar {
    z-index: 3;
}
.menu-btn {
  display: inline-block;
  cursor: pointer;
  z-index: 3;
}

.bar1, .bar2, .bar3 {
  width: 35px;
  height: 5px;
  background-color: #fff;
  margin: 6px 0;
  transition: 0.4s;
}

.change .bar1 {
  -webkit-transform: rotate(-45deg) translate(-9px, 6px);
  transform: rotate(-45deg) translate(-9px, 6px);
}

.change .bar2 {opacity: 0;}

.change .bar3 {
  -webkit-transform: rotate(45deg) translate(-8px, -8px);
  transform: rotate(45deg) translate(-8px, -8px);
}

.dropdown-btn {
  position: relative;
  display: inline-block;
  z-index: 3;
}

.dropdown-content {
  display: none;
  position: absolute;
  right: 20px;
  background-color: #343a40;
  min-width: 160px;
  overflow: auto;
  box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
  z-index: 1000;
}

.show {display: block;}
@media screen and (min-width: 780px) {
    .menu-bar {
        display: block;
    }
    .dropdown-btn {
        display: none;
    }
}
@media screen and (max-width: 779px){
    .menu-bar {
        display: none;
    }
    .dropdown-btn {
        display: block;
    }
}
.menu-img {
    position: fixed;
    top: 0;
    right: -5rem;
}

我这样试过。

body {
    overflow-x: hidden;
}

然后我又试了一次。

html {
    overflow-x: hidden;
}

以上代码无效。

如果我这样做,它会起作用。

topbar {
    overflow-x: hidden;
}

但问题是下拉菜单也隐藏了。 我想解决这个问题。 我想隐藏 overflown image,但显示 dropdown menu.

我这样试过

<div class = "topbar">
    <div class="navbar-brand float-left">
        <a href="#"><img src="assets/img/logo.png"></a>
    </div>
    <div class="float-right mr-4 menu-bar">
        <a href="#about"><span class="a-border" onclick="menuclick(this)">ABOUT US</span></a>
        <a href="#creater"><span class="a-border" onclick="menuclick(this)">CREATERS</span></a>
        <a href="#news"><span class="a-border" onclick="menuclick(this)">NEWS</span></a>
        <a href="#contact"><span class="a-border" onclick="menuclick(this)">CONTACT</span></a>
    </div>
    <div class="dropdown-btn">
        <div class="menu_btn" onclick="event.stopPropagation(); myFunction(this)">
            <div class="bar1"></div>
            <div class="bar2"></div>
            <div class="bar3"></div>
        </div>
        <div id="myDropdown" class="dropdown-content">
            <a href="#about"><span class="a-border" onclick="menuclick(this)">ABOUT US</span></a>
            <a href="#creater"><span class="a-border" onclick="menuclick(this)">CREATERS</span></a>
            <a href="#news"><span class="a-border" onclick="menuclick(this)">NEWS</span></a>
            <a href="#contact"><span class="a-border" onclick="menuclick(this)">CONTACT</span></a>
        </div>
    </div>
    <div class="menu-img"></div>
</div>

css

.menu-img {
    background-image: url("assets/img/menu-img.png");
    background-size: 100% 100%;
    position: fixed;
    top: 0;
    right: -5rem;
}

我觉得img不能隐藏,但是背景图片可以隐藏