在 CSS 中,如何让弹性项目无论其内容如何都能保持相同的长度?

cssweb developmentfront end technology更新于 2025/2/13 0:44:17

让我们尝试理解 flex 属性。flex 是一个简写属性,用于设置弹性元素的长度条件,即是否允许其根据内容量或视口宽度进行调整。

弹性属性

flex 属性 的组成属性如下所示 -

flex-grow

此属性设置分配给弹性项目的空间,该空间占弹性容器剩余空间的比重。换句话说,它设置是否允许弹性项目的主尺寸超出其范围。此属性的值是一个整数。

  • 剩余空间等于弹性容器的大小减去所有弹性元素大小之和。如果所有同级弹性项目具有相同的弹性增长因子,则它们将获得相同的剩余空间;否则,将根据各个弹性增长因子设定的比例进行分配。

  • 此属性的初始值为 0。它适用于弹性盒中的所有项目,也包括伪元素。它本质上不可继承,其动画类型为数字。

Flex-shrink

正如 flex-grow 属性允许弹性盒增长一样,当内容无法适应指定的空间时,此属性允许弹性项目收缩。

  • 此属性的初始值为 1,而不是 0。它会应用于 flexbox 中的所有项目,包括伪元素。与 flex-grow 一样,此属性本质上不可继承,并且其动画类型为数字。

Flex-basis

此属性用于指定容器的初始主尺寸。除非使用 box-sizing 另行指定,否则它决定了内容框的尺寸。

  • 它可以有两个可能的值。第一个是"content",它会根据内容量而变化;第二个值是宽度值,可以是绝对值或百分比。您也可以使用 auto 关键字作为宽度。

使用 flex 属性

如前所述,flex 是一个简写属性。因此,我们可以通过指定一个、两个或全部三个值来使用 flex 属性。

  • 当仅指定一个属性值时,它可以是 flex-grow / flex-basis 的有效值,也可以是全局关键字值。

  • 当使用两个值时,第一个值将作为 flex-grow 的值,之后的值将作为 flex-shrink 或 flex-basis 的值。

  • 当使用三个值时,第一个值将作为 flex-grow 的值,第二个值将作为 flex-shrink 的值,最后一个值将作为 flex-basis 的值。

示例

下面给出了一个在 CSS 中使用 flex 属性的示例。

<!DOCTYPE html>
<html>
<head>
   <title>CSS flex Property</title>
   <style>
      #Target {
         width: 500px;
         height: 400px;
         border: 1px dashed rgb(8, 0, 0);
         display: flex;
      }
      #Target div {
         flex: 1 0 auto;
      }
      .Target1 {
         background-color: rgb(193, 169, 169);
      }
      .Target2 {
         background-color: rgb(99, 121, 99);
      }
      .Target3 {
         background-color: rgb(221, 233, 221);
      }
   </style>
</head>
<body>
   <h2>Example of using a flex property in CSS</h2>
   <div id="Target">
      <div class="Target1">Lorem ipsum dolor sit amet.</div>
      <div class="Target2">Lorem, ipsum dolor.</div>
      <div class="Target3">Lorem, ipsum.</div>
   </div>
</body>
</html>

示例

此示例使用 CSS 中的 flex grow 属性

<!DOCTYPE html>
<html>
<head>
   <title>CSS flex Property</title>
   <style>
      .FlexContainer {
         padding: 0;
         margin: 0;
         list-style: none;
         -ms-box-orient: horizontal;
         display: -webkit-box;
         display: -moz-box;
         display: -ms-flexbox;
         display: -moz-flex;
         display: -webkit-flex;
         display: flex;
      }
      .FlexItem {
         background-color: blueviolet;
         padding: 10px;
         border: 5px dashed red;
         color: aliceblue;
         font-weight: bold;
         font-size: 2em;
         text-align: center;
      }
      .Flex1 {
         flex: 1 1 20em;
      }
      .Flex2 {
         flex: 2 2 20em;
      }
   </style>
</head>
<body>
   <ul class="FlexContainer">
      <li class="FlexItem Flex1">This is an example of using flexbox 1</li>
      <li class="FlexItem Flex2">This is an exmaple of using flexbox 2</li>
   </ul>
</body>
</html>

使用 flex 属性控制等长元素

正如我们所见,我们可以使用 flex 属性控制弹性元素的大小。因此,如果我们必须使所有弹性元素的长度相同,我们就会使用这个属性。

示例

以下示例使用 flex 属性在 CSS 中创建等长弹性框元素。

<!DOCTYPE html>
<html>
<head>
   <style>
      center {
         margin: 75px;
         color: rgb(10, 143, 10);
         font-size: 48px;
      }
      .FlexContainer {
         display: flex;
         border: dashed 3px black;
         width: 500px;
         height: 400px;
      }
      .FlexContainer div {
         flex: 1;
      }
      .FlexItem1 {
         background-color: rgb(246, 227, 192);
      }
      .FlexItem2 {
         background-color: rgb(197, 197, 197);
      }
      .FlexItem3 {
         background-color: rgb(198, 224, 224);
      }
   </style>
</head>
<body>
   <center>
      <div class="FlexContainer">
         <div class="FlexItem1">Lorem, ipsum dolor.</div>
         <div class="FlexItem2">Lorem, ipsum dolor.</div>
         <div class="FlexItem3">Lorem, ipsum dolor.</div>
      </div>
   </center>
</body>
</html>

结论

总而言之,CSS 允许使用"width"、"max-width"和"flex"等一系列属性,使弹性项目无论其内容如何,长度都保持一致。这种灵活性在设计响应式网站时非常有用,因为网站需要根据用户浏览的设备调整大小。通过使用这些属性,设计师可以创建无论在什么设备上浏览都能呈现美观的布局。


相关文章


有用资源