Material ui popover如何锚定到另一个元素(与事件目标不同)

reactjs

1个回答

写回答

林薏

2025-07-09 18:00

+ 关注

Java
Java

Material UI Popover组件是一个非常实用的工具,它能够帮助我们在网页中创建弹出式窗口。在默认情况下,Popover会锚定到触发事件的目标元素上,但有时候我们可能需要将Popover锚定到一个与事件目标不同的元素上。在本文中,我们将介绍如何使用Material UI Popover将弹出窗口锚定到另一个元素上,并提供一个案例代码来帮助读者更好地理解。

案例代码:

Javascript

import React from 'react';

import Button from '@material-ui/core/Button';

import Popover from '@material-ui/core/Popover';

const Example = () => {

const [anchorEl, setAnchorEl] = React.useState(null);

const handleClick = (event) => {

setAnchorEl(event.currentTarget);

};

const handleClose = () => {

setAnchorEl(null);

};

const open = Boolean(anchorEl);

const id = open ? 'popover' : undefined;

return (

<div>

<Button aria-describedby={id} variant="contAIned" color="primary" onClick={handleClick}>

Open Popover

</Button>

<Popover</p> id={id}

open={open}

anchorEl={anchorEl}

onClose={handleClose}

anchorOrigin={{

vertical: 'bottom',

horizontal: 'center',

}}

transformOrigin={{

vertical: 'top',

horizontal: 'center',

}}

>

<div style={{ padding: 20 }}>

<h3>Popover Content</h3>

This is the content of the popover.

</div>

</Popover>

</div>

);

};

export default Example;

在上面的案例代码中,我们使用了Material UI的Button和Popover组件来创建一个简单的示例。当点击按钮时,Popover会出现在按钮的下方。现在,我们将介绍如何将Popover锚定到另一个元素上。

使用另一个元素作为锚点

要将Popover锚定到另一个元素上,我们需要通过设置anchorEl属性来指定锚点元素。在上面的例子中,我们使用event.currentTarget来获取触发事件的目标元素,但我们也可以将其替换为其他元素。

例如,我们可以创建一个新的锚点元素:

Javascript

const anchorElement = document.getElementById('anchor-element');

然后,我们将anchorEl属性设置为这个新的锚点元素:

Javascript

<Popover</p> ...

anchorEl={anchorElement}

...

>

这样,Popover就会锚定到这个新的元素上,而不是触发事件的目标元素。

在本文中,我们介绍了如何使用Material UI Popover将弹出窗口锚定到另一个元素上。通过设置anchorEl属性,我们可以将Popover锚定到我们想要的任何元素上,而不仅仅是触发事件的目标元素。这为我们提供了更大的灵活性,使我们能够根据实际需求设计和定位弹出窗口。

希望本文能够帮助读者更好地理解如何使用Material UI Popover组件,并能够在自己的项目中灵活运用。如果你有任何问题或疑惑,可以参考Material UI官方文档或在社区中寻求帮助。祝你在使用Popover时取得好的效果!

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号