视口中的中心弹出框
Center Popover in Viewport
我应该如何将 React Material-UI 弹出窗口居中?
我的应用程序基于 Next.js 框架构建,该框架基于 React。 (我在下面包含了我 package.json 的完整依赖项。)
我有一个在单击时打开 Popover 的元素:
<Popover
id="video-popover"
open={Boolean(video)}
onClose={this.handleClose}
anchorOrigin={{
vertical: 'center',
horizontal: 'center'
}}
transformOrigin={{
vertical: 'center',
horizontal: 'center'
}}
>
<video controls autoPlay src={`/static/${video}`}>
Your browser does not support the
<code>video</code> element.
</video>
</Popover>
我想让视频在视图中居中。
通常我会设置 Popover 元素的 anchorEl 属性 并且 Popover 将以该锚元素为中心。但是,我应该使用什么元素在视口中居中?
如果不是很明显,onClick 处理程序只是将 state.video 设置为要播放的视频的文件名。 onClose 处理程序将 state.video 设置为 null。如果您需要我上传更多 JSX 代码,请告诉我,但我很确定它与 Popover 在视口上的居中无关。
这是我的依赖项:
"dependencies": {
"@material-ui/core": "^3.6.2",
"next": "^7.0.2",
"react": "^16.6.3",
"react-dom": "^16.6.3",
"react-icons": "^3.2.2"
},
你可以在它后面做一个全屏弹出层,就像模式通常有的那样。制作一个宽度为 100vw 高度为 100vh 的固定位置 div。然后将其用作锚元素。您必须根据需要隐藏和显示它。
还有另一种方法:
Popove 已经有一个 Div
位置 fixed
的元素包含了 popover 内容,所以我们可以直接给它样式,并将 anchorReference
设置为 none
.
import React from 'react';
import {
makeStyles,
Popover,
} from '@material-ui/core';
const useStyles = makeStyles (theme => ({
popoverRoot: {
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
},
}));
const CenteredPopOver = ({open}) => {
const classes = useStyles();
return (
<Popover
open
anchorReference={"none"}
classes={{
root: classes.popoverRoot,
}}
>
// what ever should be in the popover
<div>I am in the center</div>
</Popover>
)
}
我应该如何将 React Material-UI 弹出窗口居中?
我的应用程序基于 Next.js 框架构建,该框架基于 React。 (我在下面包含了我 package.json 的完整依赖项。)
我有一个在单击时打开 Popover 的元素:
<Popover
id="video-popover"
open={Boolean(video)}
onClose={this.handleClose}
anchorOrigin={{
vertical: 'center',
horizontal: 'center'
}}
transformOrigin={{
vertical: 'center',
horizontal: 'center'
}}
>
<video controls autoPlay src={`/static/${video}`}>
Your browser does not support the
<code>video</code> element.
</video>
</Popover>
我想让视频在视图中居中。
通常我会设置 Popover 元素的 anchorEl 属性 并且 Popover 将以该锚元素为中心。但是,我应该使用什么元素在视口中居中?
如果不是很明显,onClick 处理程序只是将 state.video 设置为要播放的视频的文件名。 onClose 处理程序将 state.video 设置为 null。如果您需要我上传更多 JSX 代码,请告诉我,但我很确定它与 Popover 在视口上的居中无关。
这是我的依赖项:
"dependencies": {
"@material-ui/core": "^3.6.2",
"next": "^7.0.2",
"react": "^16.6.3",
"react-dom": "^16.6.3",
"react-icons": "^3.2.2"
},
你可以在它后面做一个全屏弹出层,就像模式通常有的那样。制作一个宽度为 100vw 高度为 100vh 的固定位置 div。然后将其用作锚元素。您必须根据需要隐藏和显示它。
还有另一种方法:
Popove 已经有一个 Div
位置 fixed
的元素包含了 popover 内容,所以我们可以直接给它样式,并将 anchorReference
设置为 none
.
import React from 'react';
import {
makeStyles,
Popover,
} from '@material-ui/core';
const useStyles = makeStyles (theme => ({
popoverRoot: {
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
},
}));
const CenteredPopOver = ({open}) => {
const classes = useStyles();
return (
<Popover
open
anchorReference={"none"}
classes={{
root: classes.popoverRoot,
}}
>
// what ever should be in the popover
<div>I am in the center</div>
</Popover>
)
}