【ant】处理Ant Design 3.24.3版本Popover在父元素fixed的情况下跟随滚动条改变位置的问题

本文介绍了一种解决fixed定位下Popover组件显示问题的方法。通过设置getPopupContainer属性指向触发元素的父节点,确保Popover正确渲染在其触发元素附近。文章提供了具体的React实现代码示例。

背景:

1.fixed定位的底部

2.点击按钮,Popover 的visible设置为true

解决方案:

使用 getPopupContainer={triggerNode => triggerNode.parentNode}

render(){
        return (
            <Popover
                     visible={this.state.visible}
                     placement={this.props.placement}
                     getPopupContainer={triggerNode => triggerNode.parentNode}
                     onVisibleChange={this.handleClickChange}
                     content={<div style={{width:'250px'}}>
                         <p>确定从选品池中删除所有选中的商品?</p>
                         <div className="text-right margin-top-26">
                             <Button onClick={this.hide}>取消</Button>
                             <Button className="margin-left-16" type="primary" onClick={this.delete.bind(this)}>确认</Button>
                         </div>
                     </div>}
                     trigger="click">
                {this.props.children}
            </Popover>
        )
    }

在Vue 3项目中改变Ant Design的`a-popover`组件样式,可采用以下几种方法: ### 全局样式覆盖 在全局样式文件(如`styles.css` 或 `styles.scss`)里,运用CSS选择器覆盖`a-popover`的默认样式。由于Ant Design使用了CSS类名,可通过查找对应的类名来修改样式。 ```css /* styles.css */ .ant-popover { /* 修改弹出框的背景颜色 */ background-color: #f0f0f0; } .ant-popover-title { /* 修改弹出框标题的字体颜色 */ color: #333; } .ant-popover-content { /* 修改弹出框内容的字体大小 */ font-size: 14px; } ``` 在`main.ts`或者`main.js`中引入该样式文件: ```typescript // main.ts import &#39;./styles.css&#39;; ``` ### 局部样式作用域 若仅需在某个组件里修改`a-popover`的样式,可在组件的`<style>`标签中使用`scoped`属性,同时借助深度选择器(`::v-deep` 或 `/deep/`)来穿透作用域。 ```vue <template> <a-popover title="标题" content="内容"> <template #trigger> <button>触发按钮</button> </template> </a-popover> </template> <script setup lang="ts"> // 组件逻辑 </script> <style scoped> ::v-deep .ant-popover { background-color: #f0f0f0; } ::v-deep .ant-popover-title { color: #333; } ::v-deep .ant-popover-content { font-size: 14px; } </style> ``` ### 内联样式 在使用`a-popover`组件时,可通过`:style`绑定内联样式,直接为组件添加样式。 ```vue <template> <a-popover title="标题" content="内容" :style="{ backgroundColor: &#39;#f0f0f0&#39; }" > <template #trigger> <button>触发按钮</button> </template> </a-popover> </template> <script setup lang="ts"> // 组件逻辑 </script> ``` ### 自定义类名 借助`a-popover`组件的`class`属性,添加自定义类名,然后在样式文件中定义该类名的样式。 ```vue <template> <a-popover title="标题" content="内容" class="custom-popover" > <template #trigger> <button>触发按钮</button> </template> </a-popover> </template> <script setup lang="ts"> // 组件逻辑 </script> <style scoped> .custom-popover { background-color: #f0f0f0; } .custom-popover .ant-popover-title { color: #333; } .custom-popover .ant-popover-content { font-size: 14px; } </style> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值