flex 布局如何实现不定宽度导航(自动换行...)

发布于 2022-09-12 01:42:09 字数 65 浏览 11 评论 0

image.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

骄傲 2022-09-19 01:42:09

你看下是不是这样的,查看demo

<div class="box">
  <div>整形1</div>
  <div>整形2</div>
  <div>整形3</div>
  <div>其他整形1</div>
  <div>整的都形1</div>
  <div>整形嗯嗯1</div>
  <div>整形</div>
</div>
.box {
  width: 300px;
  border: 1px solid #000;
  display: flex;
  flex-wrap: wrap;
}
.box div {
  flex-grow: 1;
  flex-shrink: 0;
  background: #ccc;
  margin: 1px;
}

image.png

失与倦" 2022-09-19 01:42:09

看上去是移动端H5,而且菜单的宽度并不是自动撑开的,所以你可以直接设置每个菜单的宽度(750的设计稿,第一行就是 750/4,第二行就是750/3)。再通过rem自动转换就行了。

以下代码只能在浏览器移动模式375下才能正常显示,实际项目中再自动转成rem即可

image.png

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .menu {
        display: flex;
        flex-wrap: wrap;
      }
      .menu__item {
        height: 80px;
        border: 1px solid orange;
        box-sizing: border-box;
      }
    </style>
  </head>
  <body>
    <div class="menu">
      <div class="menu__item"></div>
    </div>

    <script>
      const menus = [
        { name: "1", width: 300 / 4 + "px" },
        { name: "1", width: 300 / 4 + "px" },
        { name: "1", width: 300 / 4 + "px" },
        { name: "1", width: 300 / 4 + "px" },
        { name: "1", width: 300 / 3 + "px" },
        { name: "1", width: 300 / 3 + "px" },
        { name: "1", width: 300 / 3 + "px" }
      ];
      const menusHtml = menus
        .map(
          item => `<div class="menu__item" style="width: ${item.width}"></div>`
        )
        .join("");
      document.querySelector(".menu").innerHTML = menusHtml;
    </script>
  </body>
</html>
愁以何悠 2022-09-19 01:42:09
  1. 父容器支持换行:flex-wrap: wrap
  2. 子元素设置最小宽度:flex-basis: 10em(10个全宽字符)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文