使用 CSS Grid 将最后一项固定在水平导航菜单的右侧

布莱恩

我有一个水平导航,它将具有可变数量的链接。对于这个特定示例,我有 3 个,如下所示:

在此处输入图片说明

我希望第一个 2 保持在它们所在的位置,第三个一直定位到右侧。我能够弄清楚如何做到这一点的唯一方法是在链接上设置宽度,如下所示:grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));然后将以下内容添加到最后我想要的元素中:grid-column-end: -1;

那会起作用,但我不希望所有链接的宽度都相同。我希望将宽度设置为auto,但是我没有跨越整个宽度的隐式网格,因此似乎无法将第三个链接放在导航栏的最右侧。有没有一种相对简单的方法可以使用 CSS Grid 完成此任务?如果没有,我怎么能用 Flexbox 做到这一点?我想避免使用浮点数和绝对定位。

这是我目前使用的 CSS:

ul.nav {
  display: grid;
  grid-auto-flow: column;
  align-items: center;
  justify-content: start;
  grid-gap: 10px;
  margin: 0;
  padding: 0;
  list-style: none;
}
迈克尔·本杰明

使用 Grid,您需要一条规则,说明:“将所有列设置为不auto考虑数字,但将最后一列设置为1fr然后将最后一个网格项设置为margin-left: auto

但是,我在当前的 Grid 规范(级别 1)中没有看到任何允许您将最后一列作为目标列数未知的内容。

据我所知,这不能用做grid-template-columnsgrid-auto-columns或它们的组合。

然而,使用 flexbox 布局很简单。只需将最后一项设置为margin-left: auto.


网格布局

这就是它对一定数量的列的工作方式。

将前两列设置为auto,它使用内容长度。

将第三列设置为1fr,其中:

  1. 消耗线路上的所有可用空间,并且
  2. 将前两列固定在左侧。

然后使用auto边距将第三个链接(网格项)固定到右侧(在第三列的空间内)。

nav {
  display: grid;
  grid-template-columns: auto auto 1fr;
}

a:last-child {
  margin-left: auto;
}

/* demo styles */
nav { background-color: lightgray ; border: 1px solid gray; padding: 5px 0; }
a   { background-color: lightgreen; border: 1px solid gray; }
<nav>
  <a>Link 1</a>
  <a>Link 2</a>
  <a>Link 3</a>
</nav>

弹性布局

这就是它适用于确定或不确定数量的弹性项目的方式。

nav {
  display: flex;
}

a:last-child {
  margin-left: auto;
}

/* demo styles */
nav { background-color: lightgray ; border: 1px solid gray;  padding: 5px 0; }
a   { background-color: lightgreen; border: 1px solid gray; }
<nav>
  <a>Link 1</a>
  <a>Link 2</a>
  <a>Link 3</a>
</nav>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Grid Css折叠边框?

来自分类Dev

使用display:grid将CSS居中放置在框内的对象

来自分类Dev

如何使用CSS Grid实现此布局?

来自分类Dev

使用CSS Grid调整图像大小

来自分类Dev

如何使用 Grid 组件的 CSS API

来自分类Dev

在 JavaScript 中使用 CSS Grid repeat() 声明

来自分类Dev

为什么我的HTML结构不能与CSS Grid布局一起使用?

来自分类Dev

在CSS Grid中使用自动调整如何使一个单元格占据2列?

来自分类Dev

CSS Grid导致水平滚动条

来自分类Dev

在 CSS Grid 项中定位元素

来自分类Dev

CSS Grid使用特定的项目高度作为最大行高度

来自分类Dev

Divs没有使用CSS Grid垂直跨越

来自分类Dev

使用CSS Grid或Flexbox将定宽包装柱居中

来自分类Dev

无法使用CSS Grid定位HTML图例标签

来自分类Dev

如何使用CSS Grid重新排序React组件?

来自分类Dev

使用CSS Grid时如何使内容居中并使背景覆盖整列?

来自分类Dev

如何正确使用 css grid 进行页面布局?

来自分类Dev

如何使用 CSS-grid 创建粘性标题?

来自分类Dev

固定的导航栏即使使用位置也不起作用:固定在CSS中

来自分类Dev

固定的导航栏即使使用位置也不起作用:固定在CSS中

来自分类Dev

如何在使用“ grid-auto-flow:column”时将“ height:auto”设置为CSS网格容器?

来自分类Dev

为什么fr单位不能与CSS网格上的grid-template-rows一起使用?

来自分类Dev

使用CSS Sprite背景将UL导航水平居中

来自分类Dev

CSS Grid内容区域-水平扩展以填充容器

来自分类Dev

使用 GRID 将左侧的一个大框和右侧的其他框网格化

来自分类Dev

如何在CSS Grid项周围设置内部边框?

来自分类Dev

CSS Grid - 如何获取图像以填充网格项空间

来自分类Dev

如何使用CSS将所有固定在每个位置的物品固定?

来自分类Dev

CSS Grid 将主页分成两部分

Related 相关文章

  1. 1

    使用Grid Css折叠边框?

  2. 2

    使用display:grid将CSS居中放置在框内的对象

  3. 3

    如何使用CSS Grid实现此布局?

  4. 4

    使用CSS Grid调整图像大小

  5. 5

    如何使用 Grid 组件的 CSS API

  6. 6

    在 JavaScript 中使用 CSS Grid repeat() 声明

  7. 7

    为什么我的HTML结构不能与CSS Grid布局一起使用?

  8. 8

    在CSS Grid中使用自动调整如何使一个单元格占据2列?

  9. 9

    CSS Grid导致水平滚动条

  10. 10

    在 CSS Grid 项中定位元素

  11. 11

    CSS Grid使用特定的项目高度作为最大行高度

  12. 12

    Divs没有使用CSS Grid垂直跨越

  13. 13

    使用CSS Grid或Flexbox将定宽包装柱居中

  14. 14

    无法使用CSS Grid定位HTML图例标签

  15. 15

    如何使用CSS Grid重新排序React组件?

  16. 16

    使用CSS Grid时如何使内容居中并使背景覆盖整列?

  17. 17

    如何正确使用 css grid 进行页面布局?

  18. 18

    如何使用 CSS-grid 创建粘性标题?

  19. 19

    固定的导航栏即使使用位置也不起作用:固定在CSS中

  20. 20

    固定的导航栏即使使用位置也不起作用:固定在CSS中

  21. 21

    如何在使用“ grid-auto-flow:column”时将“ height:auto”设置为CSS网格容器?

  22. 22

    为什么fr单位不能与CSS网格上的grid-template-rows一起使用?

  23. 23

    使用CSS Sprite背景将UL导航水平居中

  24. 24

    CSS Grid内容区域-水平扩展以填充容器

  25. 25

    使用 GRID 将左侧的一个大框和右侧的其他框网格化

  26. 26

    如何在CSS Grid项周围设置内部边框?

  27. 27

    CSS Grid - 如何获取图像以填充网格项空间

  28. 28

    如何使用CSS将所有固定在每个位置的物品固定?

  29. 29

    CSS Grid 将主页分成两部分

热门标签

归档