基于taro封装底下浮动弹窗组件
先看效果图:

jsx:
import Taro, { Component } from '@tarojs/taro'
import { View, Image } from '@tarojs/components'
import closeImg from '../../images/icons/close.png'
import './FloatLayout.scss'
interface IProps {
isOpened: boolean,
onClose: Function,
title: string,
}
class FloatLayout extends Component<IProps, {}> {
state = {
}
handleClose () {
this.props.onClose()
}
render () {
const {isOpened, title} = this.props
return (
<View className={isOpened ? "float-layout active" : "float-layout"}>
<View className='float-layout__overlay' onClick={this.handleClose.bind(this)}></View>
<View className='float-layout__container layout'>
<View className='layout-header xmg-border-b'>
{title}
<Image src={closeImg} className='close-img'/>
</View>
<View className='layout-body'>
{this.props.children}
</View>
</View>
</View>
)
}
}
export { FloatLayout }
scss:
.flolayout {
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
visibility: hidden;
z-index: 810;
transition: visibility 300ms cubic-bezier(0.36, 0.66, 0.04, 1);
&.active {
visibility: visible;
.flolayout__overlay {
opacity: 1;
}
.flolayout__container {
transform: translate3d(0, 0, 0);
}
}
}
.flolayout__overlay {
top: 0;
left: 0;
width: 100%;
height: 100%;
position: absolute;
background-color: rgba(0, 0, 0, 0.3);
opacity: 0;
transition: opacity 150ms ease-in;
}
.flolayout__container {
position: absolute;
bottom: 0;
width: 100%;
min-height: 600px;
max-height: 950px;
background-color: #fff;
border-radius: 32px 32px 0px 0px;
transform: translate3d(0, 100%, 0);
transition: -webkit-transform 300ms cubic-bezier(0.36, 0.66, 0.04, 1);
transition: transform 300ms cubic-bezier(0.36, 0.66, 0.04, 1);
transition: transform 300ms cubic-bezier(0.36, 0.66, 0.04, 1),
-webkit-transform 300ms cubic-bezier(0.36, 0.66, 0.04, 1);
}
.flolayout .layout-header {
position: relative;
padding: 30px 0;
text-align: center;
.close-img {
position: absolute;
right: 28px;
top: 36px;
width: 36px;
height: 36px;
}
}
.flolayout .layout-header__title {
overflow: hidden;
-o-text-overflow: ellipsis;
text-overflow: ellipsis;
white-space: nowrap;
color: #333;
font-size: 32px;
display: block;
padding-right: 80px;
}
.flolayout .layout-header__icon {
line-height: 1;
position: absolute;
top: 50%;
right: 18px;
padding: 10px;
transform: translate(0, -50%);
}
.flolayout .layout-body {
font-size: 28px;
padding: 20px;
height: 602px;
}
.flolayout .layout-body__content {
position: relative;
height: 500px;
overflow-y: scroll;
}
组件必须传三个参数,
isOpened: boolean, //控制显示
onClose: Function, //处理关闭弹窗逻辑
title: string //标题
基于taro封装底下浮动弹窗组件的更多相关文章
- 基于 React 封装的高德地图组件,帮助你轻松的接入地图到 React 项目中。
react-amap 这是一个基于 React 封装的高德地图组件,帮助你轻松的接入地图到 React 项目中. 文档实例预览: Github Web | Gitee Web 特性 ️ 自动加载高德地 ...
- taro-script 0.4 发布,基于Taro v3的js解释器组件
taro-script Github地址 基于Taro v3开发,支持多端小程序动态加载远程 JavaScript 脚本并执行,支持 ES5 语法 最近更新内容 新增useScriptContext获 ...
- 基于ElementUI封装Excel数据导入组件
由于前端项目使用的是Vue-cli3.0 + TypeScript的架构,所以该组件也是基于ts语法封装的,组件的完整代码如下: <template> <div id="m ...
- 基于element-ui封装一个Table模板组件
大家在做后台管理系统的时候,写的最多的可能就是表格页面了,一般分三部分:搜索功能区.表格内容区和分页器区.一般这些功能都是使用第三方组件库实现,比如说element-ui,或者vuetify.这两个组 ...
- Vue.js(24)之 弹窗组件封装
同事封装了一个弹窗组件,觉得还不错,直接拿来用了: gif图展示: 弹框组件代码: <template> <transition name="confirm-fade&qu ...
- 基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件
目录 1. 前言 2. 关于vue-simple-uploader 3. 基于vue-simple-uploader封装全局上传组件 4. 文件上传流程概览 5. 文件分片 6. MD5的计算过程 7 ...
- 基于JQ的自定义弹窗组件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 封装React AntD的dialog弹窗组件
前一段时间分享了基于vue和element所封装的弹窗组件(封装Vue Element的dialog弹窗组件),今天就来分享一个基于react和antD所封装的弹窗组件,反正所使用的技术还是那个技术, ...
- 基于highcharts封装的组件-demo&源码
前段时间做的项目中需要用到highcharts绘制各种图表,其实绘制图表本身代码很简单,但是由于需求很多,有大量的图形需要绘制,所以就不得不复制粘贴大量重复(默认配置等等)的代码,所以,后来抽空自己基 ...
随机推荐
- MySQL | Xtrabackup 安装
rpm方式安装 # xtrabackup 2.4.8 安装包 wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup- ...
- echarts堆叠柱状图在最上面的柱子显示总和
需求 柱子需设置barMinHeight 在堆叠柱状图的最上面显示当前堆叠的总和 直接上代码吧 需要注意:设置barMinHeight时为了让0不显示,只能将0设置为null; 设置为null的柱子l ...
- CentOS 8 已经不再支持,Rocky Linux 才是未来
2020年12月8日,红帽公司宣布,他们将停止开发CentOS,而在此之前CentOS一直作为红帽企业Linux的生产型分支及下游版本,此后他们将转而开发该操作系统的一个更新的上游开发变种,即 &qu ...
- Python单元测试框架unittest之生成测试报告(HTMLTestRunner)
前言 批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的. unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLT ...
- SDN开发环境搭建以及Mininet编程
一.实验内容 搭建如下网络拓扑,并熟悉相关指令. 二.搭建开发环境 2.1 开发环境搭建 2.1.1下载ubuntu镜像文件 镜像下载地址 https://www.ubuntu.com/downl ...
- Vue全局弹窗:一次注册,全局可弹
Vue全局弹窗 今天来搞一个全局弹窗,不用每个文件都引入,只在main.js里作为全局原型引入就好了 先新建弹窗组件 toast.vue <template></template&g ...
- [刘阳Java]_什么是EasyUI_第1讲
jQuery EasyUI在Java后台开发中用得还是比较多.当然客观来讲虽然前端技术的发展,很多后台界面设计都植入了前端技术的框架.但是这篇文章我个人觉得也不会妨碍我们对jQuery EasyUI的 ...
- 论文阅读:hector_slam: A Flexible and Scalable SLAM System with Full 3D Motion Estimation.
参考:<A Flexible and Scalable SLAM System with Full 3D Motion Estimation.> 该论文是ROS中hector_mappin ...
- 如何反编译Python写的exe到py
参考链接: https://blog.csdn.net/qq_44198436/article/details/97314626?depth_1-utm_source=distribute.pc_re ...
- ts 学习笔记 - 类
目录 类 类的概念 类的用法 属性和方法 类的继承 存取器 静态属性 Typescript 中的用法 抽象类 类的类型 类与接口 类实现接口 接口继承接口 接口继承类 混合类型 类 类的概念 类 (c ...