Bootstrap导航栏,全高导航栏崩溃,但有奇怪的动画

时间:2017-11-28 17:35:54

标签: javascript html css twitter-bootstrap

我设法让div包含展开的菜单,覆盖整个视图(100vh)。我注意到很酷的动画,虽然它正在扩展,但只能工作到li内容的末尾(最后一个菜单链接),然后速度增加或者只是动画停止工作并且导航栏崩溃最终到达结束时查看端口,但不是很好。

你知道为什么吗?它是一个bootstrap javascript功能吗?你知道怎么解决吗?

我在这个小提琴中复制了代码

body {
  padding-top: 53px;
}

.pids-navbar{
  position: absolute;
  top: 0px;
  left: 0px;
  width: 100%;
  z-index: 99999;
}

.pids-navbar-toggle .pids-icon-bar {
  display: block;
  width: 16px;
  height: 1px;
  border-radius: 1px;
}

.pids-navbar-toggle {
  margin-top: 14px;
  margin-bottom: 14px;
  margin-right: 0px;
  float: left;
}

.pids-navbar-nav {
  margin: 0px -15px;
  font-weight: lighter;
}

.pids-navbar-collapse {
  border: 0px;
  height: calc(100vh - 60px);
}
.full-height {
  height: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">

<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>





<nav class="navbar navbar-default navbar-static-top pids-navbar">
  <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle pids-navbar-toggle" data-toggle="collapse" data-target="#pids-bs-navbar">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar pids-icon-bar"></span>
        <span class="icon-bar pids-icon-bar"></span>
        <span class="icon-bar pids-icon-bar"></span>
      </button>
    </div>
    <div class="navbar-collapse collapse pids-navbar-collapse" id="pids-bs-navbar">
      <ul class="nav navbar-nav pids-navbar-nav full-height">
        <li class="active">
          <a href="#">Home 1</a>
        </li>
        <li class="">
          <a href="#">Home 2</a>
        </li>
        <li class="">
          <a href="#">Home 3</a>
        </li>
      </ul>
    </div>
  </div>
</nav>

谢谢!

2 个答案:

答案 0 :(得分:1)

我遇到了完全相同的问题,对我有用的是将ul的高度设置为100vh,而不是整个navbar崩溃的高度。查看代码:

var txt = $"<root>{text}</root>";
var xml = XDocument.Parse(txt);
var elems = xml.XPathSelectElements("//instance").Select(
    x =>
        {
            var sb = new StringBuilder();
            foreach (var le in x.Elements("label"))
            {
                sb.Append(", ");
                sb.Append(le.Element("group") == null ? string.Empty : le.Element("group")?.Value + "=");
                sb.Append(le.Element("text") == null ? string.Empty : le.Element("text")?.Value);
            }

            if (sb.Length > 0)
            {
                sb.Remove(0, 2);
            }

            return new { Instance = x, LabelString = sb.ToString() };
        });

注意:我正在使用引导程序4。

答案 1 :(得分:0)

<!DOCTYPE html>
<html>
<head>
<style>
body {
    font-family: 'Lato', sans-serif;
}

.overlay {
    height: 0%;
    width: 100%;
    position: fixed;
    z-index: 1;
    top: 0;
    left: 0;
    background-color: rgb(0,0,0);
    background-color: rgba(0,0,0, 0.9);
    overflow-y: hidden;
    transition: 0.5s;
}

.wrap {
    position: relative;
    top: 25%;
    width: 100%;
    text-align: center;
    margin-top: 30px;
}

.overlay a {
    padding: 8px;
    text-decoration: none;
    font-size: 36px;
    color: #818181;
    display: block;
    transition: 0.3s;
}

.overlay a:hover, .overlay a:focus {
    color: #f1f1f1;
}

.overlay .closebtn {
    position: absolute;
    top: 20px;
    right: 45px;
    font-size: 60px;
}

@media screen and (max-height: 450px) {
  .overlay {overflow-y: auto;}
  .overlay a {font-size: 20px}
  .overlay .closebtn {
    font-size: 40px;
    top: 15px;
    right: 35px;
  }
}
</style>
</head>
<body>

<div id="myNav" class="overlay">
  <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a>
  <div class="wrap">
    <a href="#">Home</a>
    <a href="#">Home 1</a>
    <a href="#">Home 2</a>
    <a href="#">Home 3</a>
  </div>
</div>


<span style="font-size:30px;cursor:pointer" onclick="openNav()">&#9776; open</span>

<script>
function openNav() {
    document.getElementById("myNav").style.height = "100%";
}

function closeNav() {
    document.getElementById("myNav").style.height = "0%";
}
</script>

</body>
</html>