基于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绘制各种图表,其实绘制图表本身代码很简单,但是由于需求很多,有大量的图形需要绘制,所以就不得不复制粘贴大量重复(默认配置等等)的代码,所以,后来抽空自己基 ...
随机推荐
- java基础---数组的排序算法(3)
一.排序的基本概念 排序:将一个数据元素集合或序列重新排列成按一个数据元素某个数据项值有序的序列 稳定排序:排序前和排序后相同元素的位置关系与初始序列位置一致(针对重复元素来说,相对位置不变) 不稳定 ...
- Python - r'', b'', u'', f'' 的含义
字符串前加 f(重点!敲黑板!) 作用:相当于 format() 函数 name = "帅哥" age = 12 print(f"my name is {name},ag ...
- asp.net 网页图片URL
"upload/"+Eval("kemu")+"/"+Eval("tx")+".jpg" " ...
- python 异常获取方法
import sys #第1:print(6/0) #直接运行该命令,出现异常,程序终止 #异常提示: '''Traceback (most recent call last): File " ...
- 案例分享:Qt+Arm基于RV1126平台的内窥镜软硬整套解决方案(实时影像、冻结、拍照、录像、背光调整、硬件光源调整,其他产品也可使用该平台,如视频监控,物联网产品等等)
自研产品系列方案 1. 基于瑞芯微的 RV1126 芯片平台: 2. 外接 USB 摄像头(OV9734. OV6946.OV2740 等 UVC 模块)作为图像输入源: 3. 可通过 LED ...
- Python爬虫下载酷狗音乐
目录 1.Python下载酷狗音乐 1.1.前期准备 1.2.分析 1.2.1.第一步 1.2.2.第二步 1.2.3.第三步 1.2.4.第四步 1.3.代码实现 1.4.运行结果 1.Python ...
- Scala学习——模式匹配
scala模式匹配 1.基础match case(类似java里switch case,但功能强大些) object MatchApp { def main(args: Array[String]): ...
- Hive——join的使用
Hive--join的使用 hive中常用的join有:inner join.left join .right join .full join.left semi join.cross join.mu ...
- 解决 Github 打不开或打开很慢的问题
解决 Github 打不开或打开很慢的问题 方法一 一.确定 github 网站的 ip 打开网址:http://github.com.ipaddress.com/ 192.30.253.112 gi ...
- 前端基础div(六)
实例 文档中的一个部分会显示为绿色: <div style="color:#00FF00"> <h3>This is a header</h3> ...