【问题标题】:Making a full height and width menu bar when pressing on button按下按钮时制作一个完整的高度和宽度菜单栏
【发布时间】:2018-03-10 05:01:02
【问题描述】:

我想当我按下右上角的菜单按钮时,一些东西从左滑到右全屏(全高和全宽),其他一切都消失了。 这里的问题是,如果您向下滚动然后单击菜单按钮,它不会显示它只显示在顶部。 另外还有一些我不太明白的东西,高度和宽度。如果我想要一些东西覆盖整个页面或只覆盖我们可见的高度和宽度,我们该如何做这样的事情?为此,我设置了 100% 的高度和宽度,因此它是页面的可见部分,如果我们希望整个页面被某些东西覆盖怎么办? 高度和宽度如何工作?

$("#side-button").click(function(){
  if ($("#side-bar").css("display") == "block"){
    $("body").css("overflow","auto");
    $("#side-bar").animate({width: "0%"},400,function(){
        $("#side-bar").css("display","none");
    });
  }
  else{
    $("#side-bar").css("display","block").animate({width: "100%"},400,function(){
      $("body").css("overflow","hidden");
    });
  }
});
html{
  height:100%;
  width:100%;
}
body{
  position: relative;
  height:100%;
  width:100%;
}

#side-bar{
  position: absolute;
  width:0%;
  background: black;
  height: 100%;
  z-index: 100;
  display:none;
}

#side-button{
  display:flex;
  position:fixed;
  right:10px;
  top:10px;
  z-index: 100;
  width:30px;
  height:30px;
  justify-content: space-around;
  flex-direction: column;
}

#side-button div{
  width:100%;
  height:4px;
  background-color: gray;
  display:block;
}

#side-button:hover #first{
  transform: rotate(1turn);
  transition: 1s transform;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="bootstrap/css/bootstrap.css"/>
  <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css"/>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
  <link rel="stylesheet" href="bootstrap.css"/>
</head>
<body>
  <div id="side-bar">
    <div class="page-header text-center header1">
      <h1>THIS IS A HEADER</h1>
    </div>
  </div>
  <div id="side-button" >
    <div id="first"></div>
    <div id="second"></div>
    <div id="third"></div>
  </div>
<div class="container" style="padding-bottom:20px;">
  <div class="jumbotron ">
    <h1>This is a jumbotron !</h1>
    <p>The jumbotron makes a big fat div :p </p>
  </div>
    <div class="jumbotron ">
    <h1>This is a jumbotron !</h1>
    <p>The jumbotron makes a big fat div :p </p>
  </div>
    <div class="jumbotron ">
    <h1>This is a jumbotron !</h1>
    <p>The jumbotron makes a big fat div :p </p>
  </div>
    <div class="jumbotron ">
    <h1>This is a jumbotron !</h1>
    <p>The jumbotron makes a big fat div :p </p>
  </div>
  </div>
<script src="bootstrap.js"></script>
</body>
</html>

【问题讨论】:

    标签: javascript jquery html css width


    【解决方案1】:

    您可以将侧边栏的绝对位置更改为固定位置,该位置将相对于视口并固定在顶部

    $("#side-button").click(function(){
      if ($("#side-bar").css("display") == "block"){
        $("body").css("overflow","auto");
        $("#side-bar").animate({width: "0%"},400,function(){
            $("#side-bar").css("display","none");
        });
      }
      else{
        $("#side-bar").css("display","block").animate({width: "100%"},400,function(){
          $("body").css("overflow","hidden");
        });
      }
    });
    html{
      height:100%;
      width:100%;
    }
    body{
      position: relative;
      height:100%;
      width:100%;
    }
    
    #side-bar{
      position: fixed;
    top: 0;
      width:0%;
      background: black;
      height: 100%;
      z-index: 100;
      display:none;
    }
    
    #side-button{
      display:flex;
      position:fixed;
      right:10px;
      top:10px;
      z-index: 100;
      width:30px;
      height:30px;
      justify-content: space-around;
      flex-direction: column;
    }
    
    #side-button div{
      width:100%;
      height:4px;
      background-color: gray;
      display:block;
    }
    
    #side-button:hover #first{
      transform: rotate(1turn);
      transition: 1s transform;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <title>Bootstrap Example</title>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="bootstrap/css/bootstrap.css"/>
      <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css"/>
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
      <link rel="stylesheet" href="bootstrap.css"/>
    </head>
    <body>
      <div id="side-bar">
        <div class="page-header text-center header1">
          <h1>THIS IS A HEADER</h1>
        </div>
      </div>
      <div id="side-button" >
        <div id="first"></div>
        <div id="second"></div>
        <div id="third"></div>
      </div>
    <div class="container" style="padding-bottom:20px;">
      <div class="jumbotron ">
        <h1>This is a jumbotron !</h1>
        <p>The jumbotron makes a big fat div :p </p>
      </div>
        <div class="jumbotron ">
        <h1>This is a jumbotron !</h1>
        <p>The jumbotron makes a big fat div :p </p>
      </div>
        <div class="jumbotron ">
        <h1>This is a jumbotron !</h1>
        <p>The jumbotron makes a big fat div :p </p>
      </div>
        <div class="jumbotron ">
        <h1>This is a jumbotron !</h1>
        <p>The jumbotron makes a big fat div :p </p>
      </div>
      </div>
    <script src="bootstrap.js"></script>
    </body>
    </html>

    【讨论】:

    • 是的!非常感谢,你能解释一下关于宽度和高度的部分吗?如果我希望某个东西是整个页面高度的 100%,如果我希望它是页面可见部分高度的 100%,我们该怎么做宽度和高度如何在 CSS 中工作跨度>
    【解决方案2】:

    侧边栏有一个绝对位置,仍然指向文档。

    因此,您希望将#side-bar 置于文档流之外,将其放置为fixed
    然后它将位于视口“上方”。

    我比使用 top、left、bottom 和 width 来设置动画。

    $("#side-button").click(function(){
      if ($("#side-bar").css("display") == "block"){
        $("body").css("overflow","auto");
        $("#side-bar").animate({left: "-100%"},400,function(){
            $("#side-bar").css("display","none");
        });
      }
      else{
        $("#side-bar").css("display","block").animate({left: "0%"},400,function(){
          $("body").css("overflow","hidden");
        });
      }
    });
    html{
      height:100%;
      width:100%;
    }
    body{
      position: relative;
      height:100%;
      width:100%;
    }
    
    #side-bar{
      position: fixed;
      top:0;
      bottom: 0;
      left:-100%;
      width: 100%;
      background: black;
      z-index: 100;
      display:none;
    }
    
    #side-button{
      display:flex;
      position:fixed;
      right:10px;
      top:10px;
      z-index: 100;
      width:30px;
      height:30px;
      justify-content: space-around;
      flex-direction: column;
    }
    
    #side-button div{
      width:100%;
      height:4px;
      background-color: gray;
      display:block;
    }
    
    #side-button:hover #first{
      transform: rotate(1turn);
      transition: 1s transform;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <title>Bootstrap Example</title>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="bootstrap/css/bootstrap.css"/>
      <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css"/>
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
      <link rel="stylesheet" href="bootstrap.css"/>
    </head>
    <body>
      <div id="side-bar">
        <div class="page-header text-center header1">
          <h1>THIS IS A HEADER</h1>
        </div>
      </div>
      <div id="side-button" >
        <div id="first"></div>
        <div id="second"></div>
        <div id="third"></div>
      </div>
    <div class="container" style="padding-bottom:20px;">
      <div class="jumbotron ">
        <h1>This is a jumbotron !</h1>
        <p>The jumbotron makes a big fat div :p </p>
      </div>
        <div class="jumbotron ">
        <h1>This is a jumbotron !</h1>
        <p>The jumbotron makes a big fat div :p </p>
      </div>
        <div class="jumbotron ">
        <h1>This is a jumbotron !</h1>
        <p>The jumbotron makes a big fat div :p </p>
      </div>
        <div class="jumbotron ">
        <h1>This is a jumbotron !</h1>
        <p>The jumbotron makes a big fat div :p </p>
      </div>
      </div>
    <script src="bootstrap.js"></script>
    </body>
    </html>

    【讨论】:

      猜你喜欢
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 2013-11-29
      • 2017-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多