4

image.png

modal框的dom与<div id='root'>同级别,因此不能以user-manage为父元素定义样式,以.modal定义样式会污染其他模块的模态框,(下拉框选项的级别也与root同级),即:

// F12观察组件展开dom结构
<div id='app'>
    <div id='root'>
        <section id='user-manage'>
           页面内容:搜索行列表等
        </section>
    </div>
    <div id='modal'>
        <Modal>
          模态框内容
          label='角色分配' <Select>下拉框</Select>
        </Modal>
    </div>
    
    <div class='select-dropdown~~~~'>
        下拉框选项内容
    </div>
</div>

解决方案:使用getContainer和getPopupContainer将模态框,挂在到指定id,select-dropdown挂载到其父元素下面

// 好
<Modal getContainer={() => document.getElementById('user-manage')}>

// 更好更简洁,实测有效
<Modal getContainer={false}>

// 不好
<Select getPopupContainer={() =>document.getElementById('user-manage')}>

// 好:永远在角色分配下面,相对固定
<Select mode='multiple' getPopupContainer={e => e.parentNode}>
// F12观察组件展开dom结构
<div id='app'>
    <div id='root'>
        <seletion>
           页面内容:搜索行列表等~~~~
           <div id='modal'>
            <Modal>
              模态框内容
              label='角色分配' <Select>下拉框</Select>
               <div class='select-dropdown'>
                   下拉框选项内容
               </div>
            </Modal>
        </seletion>
    </div>
</div>

小知识点:select-dropdown样式排版

// dom结构:
<xxx class='ant-select-dropdown-menu-item-group'>
    <div>喷涂检测组</div>
    <ul>
        <li>业务组管理</li>
        <li>数据组管理员</li>
        <li>模型管理员</li>
        <li>普通人员</li>
    </ul>
</xxx>
<xxx class='ant-select-dropdown-menu-item-group'>
    <div>挂网填浆检测组</div>
    <ul>
        <li>业务组管理</li>
        <li>数据组管理员</li>
        <li>模型管理员</li>
        <li>普通人员</li>
    </ul>
</xxx>

1.4个li如何一行2个:

#user-manage #modal .select-dropdown ul li{  
  display: inline;  
  float: left;  
}

2.排除最后一个元素,不给下border样式

#user-manage #modal .select-dropdown .ant-select-dropdown-menu-item-group:not(:last-of-type){  
  border-bottom: 0.5px #CFD8DF solid;  
}

云端的日子
66 声望1 粉丝