flex: <flex-grow> <flex-shrink> <flex-basis>设置 Flex 容器中子元素的伸缩行为


在这里插入图片描述

  • 这个el-form-item el-form-item–small的宽度就是250px
  • 对应代码 <div style="flex: 0 0 250px;">
<div class="el-form-item el-form-item--small">
  <label for="batch-number" class="el-form-item__label" style="width: 120px;">
    <div style="text-align: right;">
      <span>
        批次号 
        <i class="el-tooltip el-icon-warning-outline item" aria-describedby="el-tooltip-6967" tabindex="0"></i>
      </span>
    </div>
  </label>
  <div class="el-form-item__content" style="margin-left: 120px;">
    <div class="el-input el-input--small" style="width: 100%;">
      <input
        type="text"
        id="batch-number"
        autocomplete="off"
        placeholder="批次号"
        class="el-input__inner"
        maxlength="50" <!-- 根据需求设置最大长度 -->
      >
    </div>
  </div>
</div>

在这段代码中,<div style="flex: 0 0 250px;"> 的作用是为其内部的 w-form-input 组件设置一个固定的宽度,并确保该宽度不会随父容器的变化而改变。以下是详细解释:


flex: 0 0 250px; 的含义

flex 是 CSS 的一个简写属性,用于设置 Flex 容器中子元素的伸缩行为。它的语法是:

flex: <flex-grow> <flex-shrink> <flex-basis>;

在你的代码中:

  • flex: 0 0 250px; 表示:
    • flex-grow: 0:该元素不会扩展以填充剩余空间。
    • flex-shrink: 0:该元素不会缩小以适应容器。
    • flex-basis: 250px:该元素的基础宽度为 250px

作用

  1. 固定宽度

    • 通过设置 flex: 0 0 250px;,这个 <div> 的宽度被固定为 250px,无论父容器的宽度如何变化,它的宽度都不会改变。
  2. 防止内容挤压

    • 由于 flex-shrink: 0,即使父容器的宽度不足以容纳所有子元素,这个 <div> 也不会缩小,从而避免内容被挤压。
  3. 布局控制

    • 通过固定宽度,可以更精确地控制布局,确保 w-form-input 的宽度始终为 250px,而不会受到其他元素的影响。

在代码中的具体作用

在你的代码中,<div style="flex: 0 0 250px;"> 包裹了 w-form-input 组件:

<div style="flex: 0 0 250px;">
  <w-form-input
    v-model="form.batchNum"
    label="批次号"
    label-width="120px"
    :operate-type="operateType"
    tip="一般为产品的批次(保质期)代码"
    input-width="100%"
  />
</div>
  • input-width="100%"
    • w-form-inputinput-width 设置为 100%,表示它会填满父容器(即 250px 的宽度)。
  • 固定宽度
    • 由于父容器 <div> 的宽度被固定为 250pxw-form-input 的宽度也会被限制在 250px

为什么需要这样做?

  1. 保持布局一致性

    • 通过固定宽度,可以确保 w-form-input 的宽度不会随内容或其他元素的变化而改变,从而保持布局的一致性。
  2. 避免布局错乱

    • 如果没有固定宽度,w-form-input 可能会因为内容过长或其他元素的影响而改变宽度,导致布局错乱。
  3. 精确控制

    • 通过 flex: 0 0 250px;,可以精确控制 w-form-input 的宽度,使其与其他元素(如 w-form-date-picker)对齐。

总结

<div style="flex: 0 0 250px;"> 的作用是为 w-form-input 组件设置一个固定的宽度(250px),并确保该宽度不会随父容器的变化而改变。这样可以保持布局的一致性,避免内容挤压,并实现精确的布局控制。😊


<template>
  <el-dialog :visible="visible" :before-close="handleTopRightClose" :close-on-click-modal="false"
    :title="`${operateType === 'add' ? '添加' : operateType === 'view' ? '查看' : operateType === 'edit' ? '编辑' : ''}`"
    width="55vw" top="15vh" append-to-body destroy-on-close>
    <div class="ave-form-wrap">
      <div class="ave-form-box">
        <el-form>
          <w-form-select v-model="form.productId" label="关联商品" label-width="120px" :operate-type="operateType"
            :list="productList" option-label="name" option-value="id" tip="产品需提前存在于产品列表中,可搜索并下拉选择" />

          <div style="display: flex; align-items: center;">
            <!-- <w-form-input v-model="form.batchNum" label="批次号" label-width="120px" :operate-type="operateType"
                          tip="一般为产品的批次(保质期)代码" input-width="100px"
            /> -->
            <div style="flex: 0 0 250px;">
              <w-form-input v-model="form.batchNum" label="批次号" label-width="120px" :operate-type="operateType"
                tip="一般为产品的批次(保质期)代码" input-width="100%" />
            </div>
            <!--  新增 产品生产日期和产品到期日期 -->
            <w-form-date-picker v-model="form.productProductionDate" label="生产日期" label-width="120px"
              :operate-type="operateType" :value-format="'yyyy-MM-dd HH:mm:ss'" :type="'datetime'" input-width="195px"
              tip="产品的生产日期" />
            <w-form-date-picker v-model="form.productExpirationDate" label="到期日期" label-width="120px"
              :operate-type="operateType" :value-format="'yyyy-MM-dd HH:mm:ss'" :type="'datetime'" input-width="195px"
              tip="产品对应的过期时间" />
          </div>

          <div style="display: flex; align-items: center;">
            <div style="flex: 0 0 200px;">
              <w-form-input v-model="form.versionNum" label="版本号" label-width="120px" :operate-type="operateType"
                tip="一般为产品的大版本代码" input-width="100%" />
            </div>
            <w-form-date-picker v-model="form.batchListingDate" label="上市日期" label-width="120px"
              :operate-type="operateType" :value-format="'yyyy-MM-dd HH:mm:ss'" :type="'datetime'" input-width="195px"
              tip="该版本产品上市日期" />
            <w-form-date-picker v-model="form.batchOffListingDate" label="退市日期" label-width="120px"
              :operate-type="operateType" :value-format="'yyyy-MM-dd HH:mm:ss'" :type="'datetime'" input-width="195px"
              tip="该版本产品退市日期" />
          </div>

          <w-form-select v-model="form.type" label="版本类型" label-width="120px" :operate-type="operateType"
            :list="[{ label: '假货', value: 0 }, { label: '真货', value: 1 }]" option-label="label" option-value="value"
            tip="必须明确是真货还是假货" input-width="195px" @change="(val) => form.type = val" />
          <w-form-textarea v-model="form.introduction" label="批次版本说明" label-width="120px" :operate-type="operateType"
            :auto-size="{ minRows: 5, maxRows: 8 }" tip="一般备注说明从哪里购入,以及比较明显的特点" />
        </el-form>
      </div>
    </div>
    <div slot="footer" class="form-footer">
      <div class="operateArea">
        <el-button @click="handleFooterClose">
          取 消
        </el-button>
        <el-button v-if="operateType !== 'view'" size="mini" type="primary" @click="handleSubmit">
          提 交
        </el-button>
      </div>
    </div>
  </el-dialog>
</template>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值