如果有空间,则在Div和Left浮动Div之间放置Div,如果没有足够的空间,则将它放在它们下面

时间:2018-04-24 15:55:07

标签: html css alignment css-float

我在网站的导航栏上工作,就像你的普通导航栏一样,它有一个徽标(浮动:左),指向其他页面的链接,以及最后的帐户设置(浮动:右),所有方面旁边。当窗口调整大小时,我希望能够仍然存在导航栏的所有元素,而不必水平滚动。我想通过将所有链接放置到徽标下方的页面(并且仍然在右上角设置帐户)来实现此目的。

在全屏幕下,导航栏工作完美(足够简单)。当窗口调整大小时,一切都搞砸了(最后一个div最终会离开窗口)。

The two top images are illustrations of what im working towards, and the third one down is my current issue.

我有一些css的经验,但了解如何解决这个问题(或查找如何解决这个问题)超出了我的能力范围。我真的很感激一些帮助:)

1 个答案:

答案 0 :(得分:2)

附加的代码片段是使用“CSS网格”和媒体查询的基础。 CSS中有一些重复项,可以花费更多时间,进行改进,从而最大限度地减少代码。它可以让您了解如何构建这些布局。

 @media only screen and (max-width: 600px) {

.wrapper {
  display: grid;
  grid-template-columns:
  1fr
  ;
  grid-template-rows:
  100px
  100px
  100px
  ;
  grid-template-areas:
  "header-1"
  "header-2"
  "content"
  ;
}

.header-1 {
  grid-area: header-1;
  background-color: grey;
}

.header-2 {
  grid-area: header-2;
  background-color: grey;
}

.content {
  grid-area: content;
  background-color: lightgrey;
}

.header-1 {
  display: grid;
  grid-template-columns:
  1fr
  1fr
  1fr
  ;
  grid-template-rows:
  100px
  ;
  grid-template-areas:
  "box-1 box-2 box-3"
  ;
}


.box-1 {
  grid-area: box-1;
  background-color: magenta;
  margin: 10px;
}

.box-2 {
  grid-area: box-2;
  background-color: cyan;
  margin: 10px;
}

.box-3 {
  grid-area: box-3;
  background-color: green;
  margin: 10px;
}

}

 @media only screen and (min-width: 600px) {

   .wrapper {
     display: grid;
     grid-template-columns:
     1fr
     ;
     grid-template-rows:
     100px
     100px
     100px
     ;
     grid-template-areas:
     "header-1"
     "header-2"
     "content"
     ;
   }

   .header-1 {
     grid-area: header-1;
     background-color: grey;
   }

   .header-2 {
     grid-area: header-2;
     background-color: grey;
   }

   .content {
     grid-area: content;
     background-color: lightgrey;
   }

   .header-1 {
     display: grid;
     grid-template-columns:
     1fr
     1fr
     1fr
     ;
     grid-template-rows:
     100px
     ;
     grid-template-areas:
     "box-1 . box-3"
     ;
   }

   .header-2 {
     display: grid;
     grid-template-columns:
     1fr
     1fr
     1fr
     ;
     grid-template-rows:
     100px
     ;
     grid-template-areas:
     "box-2 box-2 box-2"
     ;
   }


   .box-1 {
     grid-area: box-1;
     background-color: magenta;
     margin: 10px;
   }

   .box-2 {
     grid-area: box-2;
     background-color: cyan;
   }

   .box-3 {
     grid-area: box-3;
     background-color: green;
     margin: 10px;
   }

 }
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <link rel="stylesheet" href="index.css">
  <title>Document</title>
</head>

<body>

<div class="wrapper">

    <div class="header-1">
        <div class="box-1"></div>
        <div class="box-2"></div>
        <div class="box-3"></div>
    </div>

    <div class="header-2">
      <div class="box-1"></div>
      <div class="box-2"></div>
      <div class="box-3"></div>
    </div>

    <div class="content"></div>

</div>



</body>
</html>