html - 在第四个之后截断操作栏元素

标签 html css flexbox

先决条件

我想用 CSS 制作一个操作栏。当发生超过 4 个操作时,操作栏中的第五项应该被截断一半。


预期结果

2 个 Action

enter image description here

3 个 Action

enter image description here

4 个 Action

enter image description here

超过 4 个 Action

enter image description here


请看下面的代码片段:

.flex-container {
  display: flex;
  justify-content: center;
  width: 100%;
  background-color: #e9e9f2;
  box-sizing: border-box;
}

.inner-flex {
  display: flex;
  align-items: center;
  justify-content: space-around;
  width: 36rem;
  height: 7rem;
  background-color: #f08bc3;
}

.sub-menu {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 7rem;
  color: white;
}

.menu-icon {
  width: 3.2rem;
  height: 3.2rem;
  text-align: center;
}

.menu-title {
  height: 1.7rem;
  width: 7rem;
  font-size: 1.2rem;
  font-weight: bold;
  font-style: normal;
  font-stretch: normal;
  line-height: normal;
  letter-spacing: normal;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<div class="flex-container">
  <div class="inner-flex">
    <div class="sub-menu">
      <div class="menu-icon"><i class="fa fa-trello fa-3x"></i></div>
      <span class="menu-title">Action 1</span>
    </div>
    <div class="sub-menu">
      <div class="menu-icon"><i class="fa fa-twitter fa-3x"></i></div>
      <span class="menu-title">Action 2</span>
    </div>
    <div class="sub-menu">
      <div class="menu-icon"><i class="fa fa-tumblr fa-3x"></i></div>
      <span class="menu-title">Action 3</span>
    </div>
    <div class="sub-menu">
      <div class="menu-icon"><i class="fa fa-vimeo fa-3x"></i></div>
      <span class="menu-title">Action 4</span>
    </div>
    <!-- More than 4 Actions -->
    <div class="sub-menu">
      <div class="menu-icon"><i class="fa fa-skype fa-3x"></i></div>
      <span class="menu-title">Action 5</span>
    </div>
  </div>
</div>

最佳答案

要在菜单中设置最多 4 个元素,您可以这样做:

  • sub-menu 上设置 min-width: 22%(要在一个容器中填充 4 个元素,它是 25%,但你想部分显示第 5 个;因此比那个少一点)

  • 子菜单 上设置 flex-grow: 1 以便当元素较少时它们会填充可用空间,

  • inner-flex 容器上设置 justify-content: flex-start 使溢出向右。

通过在 inner-flex 容器上添加 overflow: hidden 来完成它 - 请参见下面的演示:

.flex-container {
  display: flex;
  justify-content: center;
  width: 100%;
  background-color: #e9e9f2;
  box-sizing: border-box;
}
.inner-flex {
  display: flex;
  align-items: center;
  justify-content: space-around;
  width: 36rem;
  height: 7rem;
  background-color: #f08bc3;
  overflow: hidden; /* added */
  justify-content: flex-start; /* added */
}
.sub-menu {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 7rem;
  color: white;
  flex-grow: 1; /* added */
  min-width: 22%; /* added */
}
.menu-icon {
  width: 3.2rem;
  height: 3.2rem;
  text-align: center;
}
.menu-title {
  height: 1.7rem;
  width: 7rem;
  font-size: 1.2rem;
  font-weight: bold;
  font-style: normal;
  font-stretch: normal;
  line-height: normal;
  letter-spacing: normal;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<div class="flex-container">
  <div class="inner-flex">
    <div class="sub-menu">
      <div class="menu-icon"><i class="fa fa-trello fa-3x"></i></div>
      <span class="menu-title">Action 1</span>
    </div>
    <div class="sub-menu">
      <div class="menu-icon"><i class="fa fa-twitter fa-3x"></i></div>
      <span class="menu-title">Action 2</span>
    </div>
  </div>
</div>
<br/><br/>
<div class="flex-container">
  <div class="inner-flex">
    <div class="sub-menu">
      <div class="menu-icon"><i class="fa fa-trello fa-3x"></i></div>
      <span class="menu-title">Action 1</span>
    </div>
    <div class="sub-menu">
      <div class="menu-icon"><i class="fa fa-twitter fa-3x"></i></div>
      <span class="menu-title">Action 2</span>
    </div>
    <div class="sub-menu">
      <div class="menu-icon"><i class="fa fa-tumblr fa-3x"></i></div>
      <span class="menu-title">Action 3</span>
    </div>
  </div>
</div>
<br/><br/>
<div class="flex-container">
  <div class="inner-flex">
    <div class="sub-menu">
      <div class="menu-icon"><i class="fa fa-trello fa-3x"></i></div>
      <span class="menu-title">Action 1</span>
    </div>
    <div class="sub-menu">
      <div class="menu-icon"><i class="fa fa-twitter fa-3x"></i></div>
      <span class="menu-title">Action 2</span>
    </div>
    <div class="sub-menu">
      <div class="menu-icon"><i class="fa fa-tumblr fa-3x"></i></div>
      <span class="menu-title">Action 3</span>
    </div>
    <div class="sub-menu">
      <div class="menu-icon"><i class="fa fa-vimeo fa-3x"></i></div>
      <span class="menu-title">Action 4</span>
    </div>
  </div>
</div>
<br/><br/>
<div class="flex-container">
  <div class="inner-flex">
    <div class="sub-menu">
      <div class="menu-icon"><i class="fa fa-trello fa-3x"></i></div>
      <span class="menu-title">Action 1</span>
    </div>
    <div class="sub-menu">
      <div class="menu-icon"><i class="fa fa-twitter fa-3x"></i></div>
      <span class="menu-title">Action 2</span>
    </div>
    <div class="sub-menu">
      <div class="menu-icon"><i class="fa fa-tumblr fa-3x"></i></div>
      <span class="menu-title">Action 3</span>
    </div>
    <div class="sub-menu">
      <div class="menu-icon"><i class="fa fa-vimeo fa-3x"></i></div>
      <span class="menu-title">Action 4</span>
    </div>
    <!-- More than 4 Actions -->
    <div class="sub-menu">
      <div class="menu-icon"><i class="fa fa-skype fa-3x"></i></div>
      <span class="menu-title">Action 5</span>
    </div>
  </div>
</div>

关于html - 在第四个之后截断操作栏元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55896612/

相关文章:

javascript - Wordpress Divi 主题 - anchor 链接打开选项卡切换

html - 如何使用 jquery mobile 以百分比设置 2 行高度?

html - 左对齐一个元素并居中对齐另一个元素,但居中元素被左元素插入

html - 柔性盒模型解释

html - 从 flex 布局中的 justify-content 中排除具有固定定位的元素

html - 悬停时菜单项颜色不变

html - CSS 中的 "Position: fixed"更改为 "justify-content-end"

php - 仅允许 HTML 净化器中类属性中的特定类

html - Bootstrap 缩略图上的填充

html - 响应式水平 Accordion