侧边栏应浮动在移动设备的顶部-而不是台式机

时间:2019-05-13 12:03:32

标签: jquery html css bootstrap-4 media-queries

在开始新项目之前,我想知道是否有可能在移动设备和平板电脑上滑动侧边栏。但是在台式机上,它将始终显示在屏幕上,并且侧栏将成为主容器的一部分,如下所示。

<div class="container">
 <div class="col-md-9"> </div> 
 <div class="col-md-3" id="sidebar"> </div>
 </div>

问题是我不确定如何做到这一点,例如我会使用媒体查询还是Jquery获得我想要的效果

3 个答案:

答案 0 :(得分:0)

您可能的代码在这里:也许对您的开发有帮助。

您可以尝试以下方法:

.content {
  background: gray;
  min-height: 100vh;
  order: 2
}

#sidebar {
  background: green;
  width: 200px;
}
 
#sidebar.show { 
  transform: inherit;
  display: block;
  background: red;
}
.hambarger {
  display: none;
}

@media screen and (max-width: 767px) {
  #sidebar {
    display:none;
    transform: translateX(-100%);
  }
  .hambarger {
    display: inline-block;
  }
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">

<div class="container-fluid d-flex w-100">
 <div class="col content">
  <button class="hambarger" onclick="document.getElementById('sidebar').classList.toggle('show')">menu</button>
 </div> 
 <div class="col-md-3" id="sidebar"> </div>
</div>

==谢谢==

答案 1 :(得分:0)

关于您的问题,我认为您正在使用引导程序,并且引导程序具有其一个导航栏,该导航栏与您搜索的功能相同!

Bootstap 4v Navbar

您也可以使用媒体查询和CSS从头开始! 或jQuery

    if (jQuery(window).width() < 900) {
       //select the element and style it
 }

答案 2 :(得分:-1)

您可以看以下示例: 使用几乎没有自定义CSS的bootstrap 4.3。 要查看左侧对齐,请尝试在全屏模式下可视化代码段。

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<style>
  body {
    font-family: "Lato", sans-serif;
    transition: background-color .5s;
  }
  
  .sidebar {
    height: 100vh;
    width: 250px;
    background-color: #111;
    overflow-x: hidden;
    transition: 0.5s;
    padding-top: 60px;
  }
  
  .sidebar a {
    padding: 8px 8px 8px 32px;
    text-decoration: none;
    font-size: 25px;
    color: #818181;
    display: block;
    transition: 0.3s;
  }
  
  .sidebar a:hover {
    color: #f1f1f1;
  }
  
  .sidebar .closebtn {
    position: absolute;
    top: 0;
    right: 25px;
    font-size: 36px;
    margin-left: 50px;
  }
  
  #main {
    transition: margin-left .5s;
    padding: 16px;
  }
  
  .hamburger {
    z-index: 999;
    font-size: 30px;
    cursor: pointer font-size: 30px;
    position: fixed;
    top: 5px;
    left: 5px;
  }
  
  @media screen and (max-width: 768px) {
    .sidebar {
      position: fixed;
      z-index: 1;
      top: 0;
      left: 0;
      width: 0;
    }
  }
  
  @media screen and (max-height: 450px) {
    .sidebar {
      padding-top: 15px;
    }
    .sidebar a {
      font-size: 18px;
    }
  }
</style>

<div id="main" class="row p-0">
  <span id="hamburger" class="hamburger d-md-none" onclick="openNav()">&#9776;</span>
  <div id="sidebar" class="sidebar col-lg-3 p-0">
    <a href="javascript:void(0)" class="closebtn d-md-none" onclick="closeNav()">&times;</a>
    <a href="#">About</a>
    <a href="#">Services</a>
    <a href="#">Clients</a>
    <a href="#">Contact</a>
  </div>
  <div class="col-sm-12 col-md-12 col-lg-9 p-0 text-center">
    This is the content area
  </div>
</div>

<script>
  function openNav() {
    document.getElementById("sidebar").style.width = "250px";
    document.body.style.backgroundColor = "rgba(0,0,0,0.4)";
    document.getElementById("hamburger").style.display = "none";
  }

  function closeNav() {
    document.getElementById("sidebar").style.width = "0";
    document.getElementById("main").style.marginLeft = "0";
    document.body.style.backgroundColor = "white";
    document.getElementById("hamburger").style.display = "block";
  }
</script>