添加margin-top会导致页面扩展

时间:2016-10-22 01:31:45

标签: html css

我试图让“mainbar”div的高度拉伸整个页面,而不需要垂直滚动条,同时也确保我可以看到div的顶部。当我从“mainbar”css中删除“margin-top”值时,它会移除滚动条,但会切断前50px。如何在不扩展页面并添加滚动条的情况下将div 50px降低(因此我可以看到其中的所有内容)?

这是html:

<!DOCTYPE html>
  <html>
    <head>
      <link href="style.css" type="text/css" rel="stylesheet">
    </head>

    <body>
      <div class="navbar">
        <ul>
          <li class="nav">Home</li>
          <li class="nav">About</li>
          <li class="nav">Upload</li>
        </ul>
      </div>
      <div class="mainbar">
          <h1>hello</h1>
          <h2>whats up</h2>
      </div>
    </body>
  </html>

这是css

* {
  box-sizing: border-box;
}

body {
  background-color: #450068;
  background-color: rgb(69, 0, 104);
  margin: 0px;
  padding: 0px;
}
h1, h2 {
  text-align: center;
  color: white;
}

li {
  display: inline;
  text-align: right;
  list-style: none;
  padding: 20px;
}

.navbar {
  background-color: #8729a5;
  border-bottom: .5px solid gray;
  width: 100%;
  height: 50px;
  position: fixed;
  top: 0;
  padding: 0px;
  border-bottom-left-radius: 15px;
  border-bottom-right-radius: 15px;
}

.mainbar {
  background-color: #8729a5;
  background-color: black;
  height: 100vh;
  width: 1100px;
  margin-left: auto;
  margin-right: auto;
  margin-top: 50px;
  border: .5px solid gray;
  border-radius: 15px;
  overflow: scroll;
  overflow-x: hidden;
}

3 个答案:

答案 0 :(得分:1)

* {
  box-sizing: border-box;
}

body {
  background-color: #450068;
  background-color: rgb(69, 0, 104);
  margin: 0px;
  padding: 0px;
}
h1, h2 {
  text-align: center;
  color: white;
}

li {
  display: inline;
  text-align: right;
  list-style: none;
  padding: 20px;
}

.navbar {
  background-color: #8729a5;
  border-bottom: .5px solid gray;
  width: 100%;
  height: 45px;
  position: fixed;
  top: 0;
  padding: 0px;
  border-bottom-left-radius: 15px;
  border-bottom-right-radius: 15px;
}



 body > .mainbar {
  background-color: #8729a5;
  background-color: black;
  height: 90vh;
  width: 1100px;
  margin-left: auto;
  margin-right: auto;
  margin-top: 50px;
  border: .5px solid gray;
  border-radius: 15px;
  overflow: scroll;
  overflow-x: hidden;
  overflow-y: auto
}

new slimScroll(Element);
<!DOCTYPEhtml>
<head>
  <link href="style.css" type="text/css" rel="stylesheet">
  <script src="slimscroll.js"></script>
</head>

<body>
  <div class="navbar">
    <ul>
      <li class="nav">Home</li>
      <li class="nav">About</li>
      <li class="nav">Upload</li>
    </ul>
  </div>
  <div class="mainbar">
      <h1>hello</h1>
      <h2>whats up</h2>
	  <h2>whats up</h2>
	
								   
  </div>
</body>

注意:https://github.com/kamlekar/slim-scrollHide scroll bar, but still being able to scroll

不确定这是否是您想要的,但插件已移除页面右侧的滚动条&gt;&gt;

答案 1 :(得分:0)

所以问题似乎是,你有一个固定的导航栏高度,并希望主栏能够占据屏幕的其余部分。

如果主栏高度为100vh,它将与视口一样高;所以任何你将它向下移动50px将导致滚动条出现。这是混合像素大小和相对(%,vh / vw)大小的头痛。

如果你的目标浏览器支持现代CSS,那么flexbox就是解决这个问题的方法。

如果没有,那么&#34;旧方式&#34;在计算初始的基于CSS的布局后,使用JavaScript调整主条div的大小;在flexbox之前,纯CSS解决方案并不存在。

答案 2 :(得分:0)

尝试修改CSS可能会解决问题。

对于margin-top

padding-top.mainbar

* {
  box-sizing: border-box;
}

body {
  background-color: #450068;
  background-color: rgb(69, 0, 104);
  margin: 0px;
  padding: 0px;
}
h1, h2 {
  text-align: center;
  color: white;
}

li {
  display: inline;
  text-align: right;
  list-style: none;
  padding: 20px;
}

.navbar {
  background-color: #8729a5;
  border-bottom: .5px solid gray;
  width: 100%;
  height: 50px;
  position: fixed;
  top: 0;
  padding: 0px;
  border-bottom-left-radius: 15px;
  border-bottom-right-radius: 15px;
}

.mainbar {
  background-color: #8729a5;
  background-color: black;
  height: 100vh;
  width: 1100px;
  margin-left: auto;
  margin-right: auto;
  padding-top: 50px; /* here */
  border: .5px solid gray;
  border-radius: 15px;
  overflow: scroll;
  overflow-x: hidden;
}