淘先锋技术网

首页 1 2 3 4 5 6 7

我在做一个网站,我把所有的东西都包装在这个代码块里,它把所有的东西都很好地放在网页的中间,宽度为780像素。我确实计划让它更具响应性,但现在这正是我希望我的网站在大显示器上看起来的样子。因为宽度的原因,有足够的空间放一个小菜单,我可以把它放在主要内容的最左边。我希望这个菜单包括像用户的名字,职位和其他基本信息。一个例子就是你登录后LinkedIn页面的外观。当我尝试包含代码时,它将自己设置在我的主要内容的顶部,而不是左侧。

.content {
  box-sizing: border-box;
  margin: 0 auto;
  max-width: 100%;
  min-height: 100vh;
  padding: 0 1rem;
  width: 780px;
}

.sidenav {
  border: 1px solid black;
}

<main class="content">
  <div class="sidenav">
    ...
  </div>
  <div class="main__home">
    <form action="" method="POST">
      ...
    </form>
  </div>
</main>

可以添加display:flex;敬。满足于让他们并肩而立。 若要解决大小调整问题,可以设置。基于flex的侧导航宽度:150像素;(或者可能是另一个值)然后加上flex-grow:1;敬。main__home,它将填充宽度的其余部分。 下面是完整的css:

.content {
  box-sizing: border-box;
  margin: 0 auto;
  max-width: 100%;
  min-height: 100vh;
  padding: 0 1rem;
  width: 780px;
  display: flex;
}

.sidenav {
  border: 1px solid black;
  flex-basis: 100px;
}

.main__home {
  flex-grow: 1;
}

如果你想在主内容的左边挂一个菜单,那么在你的容器上使用position: relative创建一个新的包含块,然后在侧边栏上使用position: absolute。使用right: 100%将它一直推到块的左侧(这听起来与直觉相反,但它将侧导航的左侧边缘一直推到容器之外)。

对于小于总宽度的屏幕尺寸,请使用媒体查询来更改其显示方式。

.content {
  position: relative; /* define a new containing block */
  box-sizing: border-box;
  margin: 0 auto;
  max-width: 100%;
  min-height: 100vh;
  padding: 0 1rem;
  width: 780px;
  border: 1px solid gray;
  border-radius: 0.25rem;
}

.main__home {
  background: lightgray;
}

.sidenav {
  position: absolute; /* added this */
  right: 100%; /* push the right hand edge all the way to the left edge of the container */
  
  /* this is all just prettification */
  border: 1px solid black;
  padding: 0.5rem;
  border-radius: 0.25rem;
  display: flex;
  flex-direction:column;
  gap: 0.5rem;
  background: #333;
  color: white;
}

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" integrity="sha512-iecdLmaskl7CVkqkXNQ/ZH/XLlvWZOJyj7Yy7tcenmpD1ypASozpmT/E0iPtmFIB46ZmdtAc9eNBvH0H/ZpiBw==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<main class="content">
  <div class="sidenav">
     <i class="fa-solid fa-house"></i>
    <i class="fa-solid fa-magnifying-glass"></i>
    <i class="fa-solid fa-circle-info"></i>
  </div>
  <div class="main__home">
    <form action="" method="POST">
      main
    </form>
  </div>
</main>