html - 如何为不对称的导航栏创建 css?

标签 html css flexbox

我需要为这样的导航栏编写 css(黑色背景是网格,白色和灰色是导航栏本身):

enter image description here

所以我不知道如何创建 div 容器,从中心到左边有 550px,从中心到右边有 458px,以便在右上角添加橙色按钮。 enter image description here 另一件事是右边的橙色按钮应该占据屏幕末尾的所有空间

最佳答案

根据当屏幕变得比给定的 1100 像素更宽或更窄时会发生什么,这个答案可能需要一些调整。

如果你创建 3 个容器,然后给前 2 个 flex-basis(宽度)和最后一个 flex-grow(填充剩余空间),你可以完成那个。

当没有足够的空间时,此示例将收缩left/right

.wrapper {
  display: flex;
}

.wrapper .left {
  flex-basis: 550px;
}

.wrapper .right {
  flex-basis: 458px;
  
  display: flex;
  justify-content: flex-end;    /*  align right (at end)  */
}

.wrapper .button {
  flex-grow: 1;
}


/* style for this demo */
.wrapper > div {
  padding: 5px;
  box-sizing: border-box;
  border: 1px dashed lightgray;
}
<div class="wrapper">

  <div class="left">
    Links left aligned
  </div>

  <div class="right">
    Links right aligned
  </div>

  <div class="button">
    Button
  </div>

</div>


此示例会在空间不足时保持left/right宽度,导致出现水平滚动条

.wrapper {
  display: flex;
}

.wrapper .left {
  flex-basis: 550px;
  flex-shrink: 0;             /*  disallow to shrink  */
}

.wrapper .right {
  flex-basis: 458px;
  flex-shrink: 0;             /*  disallow to shrink  */

  display: flex;
  justify-content: flex-end;    /*  align right (at end)  */
}

.wrapper .button {
  flex-grow: 1;
}


/* style for this demo */
.wrapper > div {
  padding: 5px;
  box-sizing: border-box;
  border: 1px dashed lightgray;
}
<div class="wrapper">

  <div class="left">
    Links left aligned
  </div>

  <div class="right">
    Links right aligned
  </div>

  <div class="button">
    Button
  </div>

</div>


此示例将缩小/增大left/right 并将您在图像中显示的中心标记 保持在其父图像的中心。

.wrapper {
  display: flex;
}

.wrapper .left {
  flex: 6 6 0;                  /*  6/12  */
  overflow: hidden;
}

.wrapper .right {
  flex: 5 5 0;                  /*  5/12  */
  overflow: hidden;
  
  display: flex;
  justify-content: flex-end;    /*  align right (at end)  */
}

.wrapper .button {
  flex: 1 1 0;                  /*  1/12  */
  overflow: hidden;
}


/* style for this demo */
.wrapper > div {
  padding: 15px 0;
  box-sizing: border-box;
  border: 1px dashed lightgray;
}
.mark-center {
  text-align: center;
  font-size: 30px;
  color: red;
}
<div class="wrapper">

  <div class="left">
    Links left aligned
  </div>

  <div class="right">
    Links right aligned
  </div>

  <div class="button">
    Button
  </div>

</div>

<div class="mark-center">
  &uarr;    
</div>

关于html - 如何为不对称的导航栏创建 css?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46353565/

相关文章:

html - CSS格式第二行与第一行不同

html - 我似乎无法控制特定元素的样式

css - 使用CSS在水平中心的左侧和右侧设置两行

css - Bootstrap 4/Flexbox IE11 错误

html - 极其简单的 flexbox 布局,溢出 : hidden -- vertical mis-alignment in Firefox

javascript - 圆形背景无法放在图标周围

php - 将 URL 中的变量提交到 MySQL 数据库

jquery - 到达屏幕顶部时将 div 固定到页面顶部

javascript - 单击 <tr> 上的事件监听器

html - 有什么方法可以在每次包裹在 flexbox 后访问第一个元素?