RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1079728
Accepted
Андрей
Андрей
Asked:2020-02-08 01:50:52 +0000 UTC2020-02-08 01:50:52 +0000 UTC 2020-02-08 01:50:52 +0000 UTC

如何在 flex 上制作这个

  • 772

在大屏幕上,菜单和语言必须紧贴右边缘,这样就可以了。但是当窗口缩小时,语言\u200b\u200bis的块总是一样大小,溢出时菜单被切断。似乎溢出根本不起作用。

.container {
  display: flex;
}

.header-logo {
  border: 1px solid red;
  width: 200px;
  height: 87px;
  display: flex;
  margin-right: 85px;
}

.header-content {
  width: 100%;
  display: flex;
  flex-wrap: wrap;
  align-content: flex-end;
}

.header-content-menu {
  display: flex;
  flex-basis: 100%;
  justify-content: flex-end;
}

.header-content-menu {
  padding-bottom: 7px;
}

nav {
  width: 100%;
}

nav ul {
  display: flex;
  justify-content: space-between;
  padding-left: 32px;
}

nav a {
  font-weight: 700;
  white-space: nowrap;
}

.header-content-language {
  margin-left: 20px;
  display: flex;
}

.header-content-language a {
  text-transform: uppercase;
  margin-left: 5px;
  font-size: 0.938em;
}

.current-language {
  font-weight: 700;
}

@media (max-width: 1000px) {
  nav {
    overflow: hidden;
  }
  nav ul {
    justify-content: flex-start;
    overflow: hidden;
  }
  nav ul li {
    margin-right: 10px;
  }
  nav ul::after {
    content: "...";
  }
}
<div class="container">
        <div class="header-logo">
        </div>
        <div class="header-content">
          <div class="header-content-menu">
            <nav>
              <ul>
                <li><a href="#">Линк1</a></li>
                <li><a href="#">Линк2</a></li>
                <li><a href="#">Линк3</a></li>
                <li><a href="#">Линк4</a></li>
                <li><a href="#">Линк5</a></li>
                <li><a href="#">Линк6</a></li>
              </ul>
            </nav>
            <div class="header-content-language">
              <a class="current-language" href="#">ru</a>
              <a href="#">ua</a>
            </div>
          </div>
        </div>
      </div>

html
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. Best Answer
    adudnik.ru
    2020-02-08T07:19:40Z2020-02-08T07:19:40Z

    像这样:

    1. 我们将主容器中带有语言的div取出到logo和菜单中。
    2. 在 flex 中,宽度不是通过 设置的width:,而是通过flex: 在我们的例子中,这些是徽标和语言的固定 flex,并自动计算菜单的大小(我们通过 计数calc())。
    3. 将溢出添加到菜单容器。
    4. 我们从三个主要元素(徽标、菜单、语言)中删除所有边距,并justify-content在容器上设置缩进。
    5. 我们梳理元素的外观。缩进,list-style:none在菜单上等等。

    缺点:

    因为 我们这里只有 CSS,没有办法巧妙地隐藏菜单项。有的被切断。

    要解决这个问题,你需要连接JS,计算菜单的宽度,计算每个项目的宽度,看看应该隐藏哪些项目。然后通过单击“隐藏”菜单项在下拉列表中显示的“点”附加到“后”按钮。

    在“flex”上,这是无法组织的。

    这是一个如何在一个好的 opencart 模板中组织它的示例:https ://unishop2.tk/

    你可以从他们的 JS 代码中得到这个菜单项的“启发”。

    .container {
      display: flex;
      justify-content: space-between;
      align-items: center;
    }
    
    .header-logo {
      border: 1px solid red;
      flex: 0 0 200px;
      height: 87px;
      display: flex;
    }
    
    .header-content {
      flex: 1 1 calc(100% - 250px);
      display: flex;
    }
    
    .header-content-menu {
      display: flex;
      flex-basis: 100%;
      justify-content: flex-end;
    }
    
    nav {
      width: 100%;
    }
    
    nav ul {
      display: flex;
      justify-content: space-between;
      list-style: none;
      padding: 0px;
    }
    
    nav ul li {
      padding: 0px 15px;
    }
    
    nav a {
      font-weight: 700;
      white-space: nowrap;
    }
    
    .header-content-language {
      display: flex;
      flex: 0 0 50px;
    }
    
    .header-content-language a {
      text-transform: uppercase;
      margin-left: 5px;
      font-size: 0.938em;
    }
    
    .current-language {
      font-weight: 700;
    }
    
    @media (max-width: 1000px) {
      .header-content {
        overflow: hidden;
        position:relative;
      }
      .header-content:after {
        content: "...";
        position: absolute;
        right: 0px;
        top: 0;
        height: 50px;
        width: 20px;
        background: #fff;
        line-height: 50px;
        text-align: right;
      }
    }
    <div class="container">
      <div class="header-logo">
      </div>
      <div class="header-content">
        <div class="header-content-menu">
          <nav>
            <ul>
              <li><a href="#">Линк1</a></li>
              <li><a href="#">Линк2</a></li>
              <li><a href="#">Линк3</a></li>
              <li><a href="#">Линк4</a></li>
              <li><a href="#">Линк5</a></li>
              <li><a href="#">Линк6</a></li>
              <li><a href="#">Линк6</a></li>
              <li><a href="#">Линк6</a></li>
              <li><a href="#">Линк6</a></li>
              <li><a href="#">Линк6</a></li>
              <li><a href="#">Линк6</a></li>
              <li><a href="#">Линк6</a></li>
            </ul>
          </nav>
        </div>
      </div>
      <div class="header-content-language">
        <a class="current-language" href="#">ru</a>
        <a href="#">ua</a>
      </div>
    </div>

    • 2
  2. Monkey Mutant
    2020-02-08T17:52:13Z2020-02-08T17:52:13Z

    像这样 - 溢出时,它在按钮下折叠

    function responseMenu() {
      $('ul.dropdown-menu li.item').appendTo('ul.menu');
      var items = $('ul.menu li.item');
      var max_width = $('ul.menu').width() - $('ul.menu li.dd_menu').outerWidth();
      var width = 0;
      var hide_from = 0;
    
      items.css({
        'width': 'auto'
      });
    
      items.each(function(index) {
        if (width + $(this).outerWidth() > max_width) {
          return false;
        } else {
          hide_from = index;
          width += $(this).outerWidth();
        }
      });
      if (hide_from < items.length - 1) {
        items.eq(hide_from).nextAll('li.item').appendTo('ul.dropdown-menu');
        items.css({
          'width': (max_width / (hide_from + 1)) + 'px'
        });
        $('ul.menu li.dd_menu').show();
      } else {
        $('ul.menu li.dd_menu').hide();
      }
    }
    
    $(document).ready(function() {
      $('.top_menu').on('click', '.dropdown-toggle', function() {
        $('.dropdown-menu').toggle();
      });
    
      $(window).on('resize', function() {
        responseMenu();
      }).trigger('resize');
    
    });
    ul.menu {
      padding: 0;
      margin: 0;
    }
    
    ul.menu li {
      list-style-type: none;
      display: block;
      float: left;
      padding: 5px 0;
      text-align: center;
      white-space: nowrap;
    }
    
    ul.menu li.dd_menu {
      float: right;
      position: relative;
      display: none;
    }
    
    ul.menu ul.dropdown-menu {
      display: none;
      position: absolute;
      top: 35px;
      right: 10px;
      padding: 5px;
      border: #CCC 1px solid;
      border-radius: 5px;
      z-index: 2;
    }
    
    ul.menu ul.dropdown-menu li {
      float: none;
    }
    
    ul.menu a {
      color: #0b4da2;
      display: inline-block;
      margin: 0 10px;
    }
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    
    <div class="top_menu">
      <ul class="menu">
        <li class="dd_menu">
          <button class="dropdown-toggle" type="button">+</button>
          <ul class="dropdown-menu"></ul>
        </li>
        <li class="item"><a href="#"><span>Menu item #1</span></a></li>
        <li class="item"><a href="#"><span>Menu item #2</span></a></li>
        <li class="item"><a href="#"><span>Menu item #3</span></a></li>
        <li class="item"><a href="#"><span>Menu item #4</span></a></li>
        <li class="item"><a href="#"><span>Menu item #5</span></a></li>
        <li class="item"><a href="#"><span>Menu item #6</span></a></li>
        <li class="item"><a href="#"><span>Menu item #7</span></a></li>
        <li class="item"><a href="#"><span>Menu item #8</span></a></li>
        <li class="item"><a href="#"><span>Menu item #9</span></a></li>
        <li class="item"><a href="#"><span>Menu item #10</span></a></li>
        <li class="item"><a href="#"><span>Menu item #11</span></a></li>
        <li class="item"><a href="#"><span>Menu item #12</span></a></li>
        <li class="item"><a href="#"><span>Menu item #13</span></a></li>
        <li class="item"><a href="#"><span>Menu item #14</span></a></li>
        <li class="item"><a href="#"><span>Menu item #15</span></a></li>
      </ul>
    </div>
    
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

    • 2

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何从列表中打印最大元素(str 类型)的长度?

    • 2 个回答
  • Marko Smith

    如何在 PyQT5 中清除 QFrame 的内容

    • 1 个回答
  • Marko Smith

    如何将具有特定字符的字符串拆分为两个不同的列表?

    • 2 个回答
  • Marko Smith

    导航栏活动元素

    • 1 个回答
  • Marko Smith

    是否可以将文本放入数组中?[关闭]

    • 1 个回答
  • Marko Smith

    如何一次用多个分隔符拆分字符串?

    • 1 个回答
  • Marko Smith

    如何通过 ClassPath 创建 InputStream?

    • 2 个回答
  • Marko Smith

    在一个查询中连接多个表

    • 1 个回答
  • Marko Smith

    对列表列表中的所有值求和

    • 3 个回答
  • Marko Smith

    如何对齐 string.Format 中的列?

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5