【问题标题】:Removing horizontal scrolling on smaller devices移除较小设备上的水平滚动
【发布时间】:2017-12-11 21:27:26
【问题描述】:

我正在尝试制作 bootstrap navbar,在较小的设备上,我在 Login 内的 navbar 上获得了水平滚动

您可以通过运行代码 sn-p 并单击整页然后调整大小来查看问题 > 浏览器窗口

此外,当我在移动设备上点击登录时,我希望内容完全显示,而不是垂直滚动。

我也在使用overflow-x: hidden;,但滚动条还在。我知道使用overflow-x: hidden; 只会隐藏滚动条,但我仍然可以水平滚动,我不希望在移动设备上发生这种情况。

html,
body {
  max-width: 100%;
  overflow-x: hidden;
}

.container-fluid,
.no-padding {
  padding: 0;
}

.navbar {
  background: #fff;
  border: #058A9B;
  border-radius: 0;
}

.navbar-default {
  margin-bottom: 0;
}

.navbar-nav>li>.dropdown-menu {
  margin-top: 2px;
  width: 20vw;
  padding: 10px 0;
  background: #fff;
}

@media (min-width: 768px) and (min-width: 640px) and (min-width: 480px) and (min-width: 320px) {
  .navbar-nav>li>.dropdown-menu {
    width: 300px;
  }
}

.dropdown-menu .form-control {
  background-color: #fff;
  color: black;
}

.glyphicon {
  color: darkgrey;
}

.or-social {
  margin-top: 10px;
  text-align: center;
  color: white;
}

.sign-in-btn,
.social-btn {
  width: 100%;
}

.navbar-default .navbar-nav>li>a,
.navbar-default .navbar-header>a {
  color: #777;
  font-size: 18px;
}

.navbar-default .navbar-nav>.open>a,
.navbar-default .navbar-nav>.open>a:focus,
.navbar-default .navbar-nav>.open>a:hover {
  background-color: #fff;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />

<div class="container-fluid">

  <div class="col-md-12 col-sm-12 col-xs-12 no-padding">
    <!-- Static navbar -->
    <nav class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                  <span class="sr-only">Toggle navigation</span>
                  <span class="icon-bar"></span>
                  <span class="icon-bar"></span>
                  <span class="icon-bar"></span>
                </button>
          <a class="navbar-brand" href="#">Company Name</a>
        </div>
        <div id="navbar" class="navbar-collapse collapse">
          <ul class="nav navbar-nav">
            <li>
              <a href="#"><span class="glyphicon glyphicon-earphone"></span>Contact Number</a>
            </li>
          </ul>
          <ul class="nav navbar-nav navbar-right">
            <li class="dropdown open">
              <a href="#" data-toggle="dropdown">Login <span class="caret"></span></a>
              <ul class="dropdown-menu">
                <form method="post" action="">
                  <div class="col-md-12 col-sm-12 col-xs-12">
                    <li>
                      <div class="form-group has-feedback">
                        <i class="glyphicon glyphicon-envelope form-control-feedback"></i>
                        <input type="email" class="form-control" name="email" placeholder="Email Address">
                      </div>
                    </li>
                  </div>
                  <div class="col-md-12 col-sm-12 col-xs-12">
                    <li>
                      <div class="form-group has-feedback">
                        <i class="glyphicon glyphicon-lock form-control-feedback"></i>
                        <input type="password" class="form-control" name="password" placeholder="Password">
                      </div>
                    </li>
                  </div>
                  <div class="col-md-12 col-sm-12 col-xs-12">
                    <li>
                      <button type="submit" class="btn btn-success sign-in-btn">
                                <i class="fa fa-sign-in" aria-hidden="true"></i> Sign In
                              </button>
                      <a class="pull-right" href="#">forgot password?</a>
                    </li>
                  </div>
                </form>
                <div class="col-md-12 col-sm-12 col-xs-12 or-social">
                  <li>
                    <p>or sign in with</p>
                  </li>
                </div>

                <li style="margin-top: 15px">

                  <div class="row">
                    <div class="col-md-12 col-sm-12 col-xs-12">

                      <div class="col-md-6 col-sm-12 col-xs-12">
                        <button type="button" name="button" class="btn btn-primary social-btn"><span class="fa fa-facebook"></span> Facebook</button>
                      </div>
                      <div class="col-md-6 col-sm-12 col-xs-12">
                        <button type="button" name="button" class="btn btn-danger social-btn"><span class="fa fa-google"></span> Google</button>
                      </div>

                    </div>
                  </div>

                </li>
              </ul>
            </li>
          </ul>
        </div>
        <!--/.nav-collapse -->
      </div>
      <!--/.container-fluid -->
    </nav>
    <!--- Static Navbar End -->
  </div>
</div>


<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.js"></script>

【问题讨论】:

    标签: html twitter-bootstrap responsive-design


    【解决方案1】:

    只为较小的设备添加了媒体查询,即max-height:768px

    @media only screen and (max-width: 768px) {
      #navbar {
        max-height: fit-content;
      }
     /* And we even need to overwrite the overflow property*/
      .navbar-collapse.in { 
        overflow-y: hidden; 
        overflow-x: hidden; 
      }
    
    }
    

    这样,您的内容将完全可见且不可滚动。你甚至不需要overflow:hidden。 随意删除background-color

    html,
    body {
      max-width: 100%;
      overflow-x: hidden;
    }
    
    .container-fluid,
    .no-padding {
      padding: 0;
    }
    
    .navbar {
      background: #fff;
      border: #058A9B;
      border-radius: 0;
    }
    
    .navbar-default {
      margin-bottom: 0;
    }
    
    .navbar-nav>li>.dropdown-menu {
      margin-top: 2px;
      width: 20vw;
      padding: 10px 0;
      background: #fff;
    }
    
    .dropdown-menu .form-control {
      background-color: #fff;
      color: black;
    }
    
    .glyphicon {
      color: darkgrey;
    }
    
    .or-social {
      margin-top: 10px;
      text-align: center;
      color: white;
    }
    
    .sign-in-btn,
    .social-btn {
      width: 100%;
    }
    
    .navbar-default .navbar-nav>li>a,
    .navbar-default .navbar-header>a {
      color: #777;
      font-size: 18px;
    }
    
    .navbar-default .navbar-nav>.open>a,
    .navbar-default .navbar-nav>.open>a:focus,
    .navbar-default .navbar-nav>.open>a:hover {
      background-color: #fff;
    }
    
    @media only screen and (max-width: 768px) {
      #navbar {
        background-color: lightblue;
        max-height: fit-content;
      }
    }
    <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
    
    <div class="container-fluid">
    
      <div class="col-md-12 col-sm-12 col-xs-12 no-padding">
        <!-- Static navbar -->
        <nav class="navbar navbar-default navbar-fixed-top">
          <div class="container">
            <div class="navbar-header">
              <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                      <span class="sr-only">Toggle navigation</span>
                      <span class="icon-bar"></span>
                      <span class="icon-bar"></span>
                      <span class="icon-bar"></span>
                    </button>
              <a class="navbar-brand" href="#">Company Name</a>
            </div>
            <div id="navbar" class="navbar-collapse collapse">
              <ul class="nav navbar-nav">
                <li>
                  <a href="#"><span class="glyphicon glyphicon-earphone"></span>Contact Number</a>
                </li>
              </ul>
              <ul class="nav navbar-nav navbar-right">
                <li class="dropdown open">
                  <a href="#" data-toggle="dropdown">Login <span class="caret"></span></a>
                  <ul class="dropdown-menu">
                    <form method="post" action="">
                      <div class="col-md-12 col-sm-12 col-xs-12">
                        <li>
                          <div class="form-group has-feedback">
                            <i class="glyphicon glyphicon-envelope form-control-feedback"></i>
                            <input type="email" class="form-control" name="email" placeholder="Email Address">
                          </div>
                        </li>
                      </div>
                      <div class="col-md-12 col-sm-12 col-xs-12">
                        <li>
                          <div class="form-group has-feedback">
                            <i class="glyphicon glyphicon-lock form-control-feedback"></i>
                            <input type="password" class="form-control" name="password" placeholder="Password">
                          </div>
                        </li>
                      </div>
                      <div class="col-md-12 col-sm-12 col-xs-12">
                        <li>
                          <button type="submit" class="btn btn-success sign-in-btn">
                                    <i class="fa fa-sign-in" aria-hidden="true"></i> Sign In
                                  </button>
                          <a class="pull-right" href="#">forgot password?</a>
                        </li>
                      </div>
                    </form>
                    <div class="col-md-12 col-sm-12 col-xs-12 or-social">
                      <li>
                        <p>or sign in with</p>
                      </li>
                    </div>
    
                    <li style="margin-top: 15px">
    
                      <div class="row">
                        <div class="col-md-12 col-sm-12 col-xs-12">
    
                          <div class="col-md-6 col-sm-12 col-xs-12">
                            <button type="button" name="button" class="btn btn-primary social-btn"><span class="fa fa-facebook"></span> Facebook</button>
                          </div>
                          <div class="col-md-6 col-sm-12 col-xs-12">
                            <button type="button" name="button" class="btn btn-danger social-btn"><span class="fa fa-google"></span> Google</button>
                          </div>
    
                        </div>
                      </div>
    
                    </li>
                  </ul>
                </li>
              </ul>
            </div>
            <!--/.nav-collapse -->
          </div>
          <!--/.container-fluid -->
        </nav>
        <!--- Static Navbar End -->
      </div>
    </div>
    
    
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.js"></script>

    【讨论】:

    • 垂直滚动固定但水平滚动条还在
    • .navbar-collapse.in{ overflow-y: //change this to none or something; },我会在一小时内调查。很确定,就是这样。
    • .navbar-collapse.in { overflow-y: hidden; overflow-x: hidden; } 添加这些解决了我的问题,因此您可以更新您的答案
    • 接受... :-)
    猜你喜欢
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多