React全局浮窗、对话框
下面代码是组件源码:
import React, {Component} from 'react'
import {createPortal} from 'react-dom'
import styles from './modal.css'
export default class Modal extends Component {
constructor(props) {
super(props)
const doc = window.document
this.node = doc.createElement('div')
doc.body.appendChild(this.node)
this.state = {visible: this.props.visible}
}
componentWillReceiveProps(nextProps) {
if (this.props.visible !== nextProps.visible) {
this.setState({visible: nextProps.visible})
}
}
componentWillUnmount() {
if (this.node) {
window.document.body.removeChild(this.node)
}
}
render() {
return createPortal(
this.state.visible &&
<div className={styles.modal}>
<div className={styles.mask}/>
<div className={styles.content}>
</div>
</div>, this.node
)
}
}
下面是组件所用的CSS:
/*@import '../_css/config';*/
.modal {
position: fixed;
display: flex;
align-items: center; /*竖直居中 垂直居中*/
justify-content: center; /*水平居中*/
left:;
top:;
bottom:;
right:;
width: 100%;
height: 100%;
z-index:;
}
.mask {
background-color: rgba(0, 0, 0, .2);
position: fixed;
left:;
top:;
width: 100%;
height: 100%;
z-index:;
}
.content{
position: fixed;
width: 500px;
height: 300px;
background: #ffffff;
z-index:;
border-radius:5px;
}
下面是如何使用:
import Modal from "../dialog/modal.jsx";
class MenuBar extends React.Component {
constructor(props) {
super(props);
this.state = {
isShowing: false
}
}
render() {
return (<div className={styles.userP} onClick={this.cloudFileBtnClick}>
<Modal visible={this.state.isShowing}/>
</div>
)
}
React全局浮窗、对话框的更多相关文章
- Android 浮窗开发之窗口层级
很多人都知道如何去实现一个简单的浮窗,但是却很少有人去深入的研究背后的流程机制,由于项目中浮窗交互比较复杂,遇到了些坑查看了很多资料,故总结浮窗涉及到的知识点: 窗口层级关系(浮窗是如何"浮 ...
- Qt 鼠标悬浮按钮上出现浮窗效果
操作: 鼠标hover于Btn(or other widget),在指定位置显示想要的widget(或其他控件窗口) 方法:重载以下几个api void paintEvent(QPaintEvent ...
- Android6.0 源码修改之 仿IOS添加全屏可拖拽浮窗返回按钮
前言 之前写过屏蔽系统导航栏功能的文章,具体可看Android6.0 源码修改之屏蔽导航栏虚拟按键(Home和RecentAPP)/动态显示和隐藏NavigationBar 在某些特殊定制的版本中要求 ...
- echart自定义浮窗 增加点击事件
一:情景 做一个柱状图,需要在柱状图显示lable,并且浮窗上每个条目可以被点击或者跳转. 我使用的做图插件是echarts,但是echart的浮窗是图片,而且不可以被点击,不能识别html,而且这个 ...
- react全局的公共组件-------弹框 (Alert)
最近研究react,发现写一个组件很容易,但是要写一个全局的好像有点麻烦.不能像VUE一样,直接在原型上面扩展,注册全局组件 下面实现一个弹框,只需要引入之后,直接调用方法即可,不需要写入组件 给出我 ...
- 【C#/WPF】用System.Timers.Timer计时器做浮窗广告
需求:鼠标静止一段时间后,显示浮窗广告. 思路:界面XAML写好一个专门显示浮窗广告的Canvas,先设为不可见Visibility=”Collapsed”,然后用System.Timers.Time ...
- 【WPF】使用Popup控件做浮窗/提示框
需求:当鼠标移入某个区域时,弹出一个浮窗,以便用户进行下一步操作. 效果如下图: 当鼠标移入左上角的[多选显示]框内,出现下面的浮窗(悬浮在原UI之上).当在浮窗外点击鼠标左键时,隐藏该浮窗. 由于该 ...
- 浮窗WindowManager view返回和Home按键事件监听
出于功能需求,需要在所有的view之上显示浮窗,于是需要在WindowManager的View上处理返回键的响应, mFloatingWindowView = layoutInflater.infla ...
- jQuery浮窗图片到页面中间的代码兼容移动端
jQuery浮窗图片到页面中间的代码兼容移动端 <!doctype html> <html> <head> <meta charset="utf-8 ...
随机推荐
- topthink/think-swoole 扩展包的使用 之 Task
本想自己适配的,奈何keng貌似不少,所以果断选择官方提供的包来适配233... 默认条件:thinkphp5.1.*版本下,且安装了swoole扩展 主要演示:task 任务的投递 友情提示:在sw ...
- c++存储区域
来自:https://www.cnblogs.com/simonote/articles/3146038.html 在C++中,内存分成5个区,他们分别是堆.栈.自由存储区.全局/静态存储区和常量存储 ...
- python 开启http服务并下载文件
Python <= 2.3python -c "import SimpleHTTPServer as s; s.test();" 8000 Python >= 2.4p ...
- [排错] VO对象和POJO对象的关系
这或许是一个很蠢的笔记吧...... 这次项目中, 作为一个新人, 没少被这两个概念虐得死去活来的, 现在特别做一次记录, 关于它们二者之间在项目中的应用. 在这里呢, 就不再赘述 VO(view o ...
- WebApi如何接收前台传递过来的数组
var ids = ["111", "222", "333"];$.ajax({ url: host + '/User/deleteByID ...
- springboot#配置https
1.准备证书 2.1 springboot 1.x配置 2.2 springboot 2.x配置 1.准备证书: keytool -genkeypair -alias tomcat -keyalg R ...
- 图解Mybatis框架原理及使用
1.前言 努力学习完ssm框架之后,终于也成功的把三大框架的使用以及配置文件细节忘得一干二净.为了努力捡起来以及方便今后的复习,决定写一篇博客记录一下. 本博客的所有分析都是在持久层接口以及接口中的方 ...
- JVM性能调优指南
1.JVM的参数类型 1.1 标准参数:在各jdk版本中较稳定 -help -server -client -version -showversion -cp -classpath 1.2 X参数 1 ...
- P1079 延迟的回文数
P1079 延迟的回文数 转跳点:
- Service IP 原理【转】
Service Cluster IP 是一个虚拟 IP,是由 Kubernetes 节点上的 iptables 规则管理的. 可以通过 iptables-save 命令打印出当前节点的 iptable ...