当前位置: 首页 > 面试题库 >

Flexbox没有给元素相等的宽度

濮翰学
2023-03-14
问题内容

尝试最多包含5个项目且只有3个项目的flexbox导航,但它并未在所有元素之间平均分配宽度。

* {

  font-size: 16px;

}



.tabs {

  max-width: 1010px;

  width: 100%;

  height: 5rem;

  border-bottom: solid 1px grey;

  margin: 0 0 0 6.5rem;

  display: table;

  table-layout: fixed;

}

.tabs ul {

  margin: 0;

  display: flex;

  flex-direction: row;

}

.tabs ul li {

  flex-grow: 1;

  list-style: none;

  text-align: center;

  font-size: 1.313rem;

  background: blue;

  color: white;

  height: inherit;

  left: auto;

  vertical-align: top;

  text-align: left;

  padding: 20px 20px 20px 70px;

  border-top-left-radius: 20px;

  border: solid 1px blue;

  cursor: pointer;

}

.tabs ul li.active {

  background: white;

  color: blue;

}

.tabs ul li:before {

  content: "";

}


<div class="tabs">

  <ul>

    <li class="active" data-tab="1">Pizza</li>

    <li data-tab="2">Chicken Noodle Soup</li>

    <li data-tab="3">Peanut Butter</li>

    <li data-tab="4">Fish</li>

  </ul>

</div>

问题答案:

您链接到的文章中没有提到一个重要的部分,那就是flex-basis。默认flex-basisauto

如果指定的flex-basis是auto,则使用的flex基础是flex项目的main
size属性的值。(它本身可以是关键字auto,它会根据其内容来调整弹性项目的大小。)

每个伸缩项目都有一个flex-basis类似于其初始大小的。然后,从那里开始,所有剩余的可用空间将按比例(基于flex- grow)分配在项目之间。使用时auto,该基础是内容大小(或使用定义的大小width等)。因此,示例中总体上包含较大文本的项目将获得更大的空间。

如果希望元素完全均匀,可以设置flex-basis: 0。这会将flex基础设置为0,然后将基于比例分配所有剩余空间(由于所有基础均为0,因此将为所有空间)flex-grow

li {
    flex-grow: 1;
    flex-basis: 0;
    /* ... */
}

规范中的这张图很好地说明了这一点。



 类似资料:
  • 尝试一个flexbox导航,最多有5个项目,少则3个,但它没有在所有元素之间平均划分宽度。 我在此建模的教程是http://www.sitepoint.com/responsive-fluid-width-variable-item-navigation-css/ 萨斯 null null

  • 在鼠标悬停时,我想变换两个相邻的flex元素的位置,如下图所示 标记如下 我希望两个元素都是父元素的100%宽度,第二个元素溢出,这样我就可以在鼠标悬停时变换X。我遇到的问题是两个元素都被挤压到容器中。 我知道我可以在另一个div中包装这两个元素,并给它200%的容器宽度。但想知道这能不能用Flexbox完成

  • 问题内容: 我有一个父母和几个项目。 有什么办法可以将我的列表项以均等划分父级宽度(800px)的方式排列,并且每个项目都具有相同的宽度?即每个将采取200px宽度。 我不想对值进行硬编码。是否有任何样式属性可以做到这一点? 我不想对20%之类的宽度进行硬编码,因为列表项是动态添加的。有时可能是4或5或6 问题答案: 有关详细信息:在div上使用display:table-cell`是否有缺点?

  • 相关问题: null 不过,这为我的测试添加了一个额外的断言,并人为地使报告的测试计数大于所需的值。 有什么想法吗?

  • 我试图找到一个没有属性的元素的XPath。它只能通过其父级的属性来识别。然而,父级也不具有唯一属性。 例如: 这里有两个元素。如何获得第二个元素。上面的语法为我提供了第一个元素。。但是,如果我使用: 我得到一个错误消息"xpath表达式 '//*[@id="btn"][2]/ul/li[2]/a/span'无法计算或不会导致WebElement"

  • 目前,我正在与Selenium合作,尝试使用Chrome中的“Inspect”正确识别元素。在某些情况下,我单击的某些按钮仅由类定义,但使用“”驱动程序无法找到某些类。find_element_by_class_name''。 下面是我从Chrome上用Inspect获得的代码的和平: 我需要单击“导入费用”按钮,该按钮是“x-btn文本menu_import2”类的一部分。我不能在这里使用XPA