Ant Design Modal 中Select组件下拉选项随页面滚动与Select框分离

其实这是官方组件存在的问题,

getPopupContainer 菜单渲染父节点,默认渲染到 body 上。

使用getPopupContainer属性: select组件,Cascader组件

使用getCalendarContainer属性: DatePicker****组件

在antd的每个组件api中都有说明是使用getPopupContainer还是getCalendarContainer

1,getPopupContainer属性的,可以直接使用 getPopupContainer={triggerNode => triggerNode.parentNode}

2,**getCalendarContainer属性的,**默认为 body 上新建 div,可能不需要设置这个属性。如果需要设置可以按照上文中那样设置

使用 getPopupContainer={triggerNode => triggerNode.parentElement} 将下拉弹层渲染节点固定在触发器的父元素中。

举例:
Select

 <a-form-item label="承运商:" :label-col="{ span: 4 }" :wrapper-col="{ span: 20 }">
   <a-select  class="W300" 
      :filterOption="filterOption" 
      allowClear 
      showSearch
      @change="handleChange"
      placeholder="请选择"
      :getPopupContainer="(triggerNode)=>{ return triggerNode.parentNode}"//新增加定位
      v-decorator="['carrierId',{rules: [{ required: true, message: '承运商' }]}]"
    >
     <a-select-option 
        v-for="(item,index) in carrierList" 
        :value="item.companyId"
        :key="index"
     >
        {{item.companyName}}
     </a-select-option>
  </a-select>
 </a-form-item>

auto-complete

<a-auto-complete
                  :getPopupContainer="
                    (triggerNode) => {
                      return triggerNode.parentNode;
                    }
                  "
                  :defaultOpen="false"
                  dropdown-class-name="certain-category-search-dropdown"
                  :dropdown-match-select-width="false"
                  :options="searchData"
                  :loading="searching"
                  @focus="costNameFocus(itemInput[item.dataIndex].value)"
                  v-model:value="itemInput[item.dataIndex].value"
                  @select="selectChange(itemInput[item.dataIndex], itemInput['cost_name_standard'])"
                  @search="searchChange"
                ></a-auto-complete>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值