自己使用react写一个弹框组件(1)

最近在自己做一个晓得websocket项目,首页需要一个登录的页面,这个登录页面是一个弹框。以前使用弹框总是用现成的组件,比如antd的ui库里边的Modal, 这种使用起来也非常的方便,但是,今天想自己实现一个弹框组件。

难点

要写一个弹框,有以下难点

  • 蒙层, 弹框显示的时候需要将后面的dom元素隐藏。
  • 弹框内容dom化, 作为一个组件,灵活是必须的,首先需要将内容可定制
  • 动画, 弹框的入场和离场等动效。
  • 组件间的通信以及解耦, 确认和取消的回调,以及在dom分层上实现与父组件隔离

1.动画

    我觉得动画是最难的,首先react组件不像之前对于Jquery式的过程式开发,如果是jquery,通过id拿到dom节点实例,之后通过修改这个节点的style和class,就能达到效果。同样的,react也可以这样开发,通过refs去拿实例节点。通过修改class去达到实现动画的目的,这两种开发方式是都可行的。
    但是,react是状态态是开发,听前辈们说,这种开发框架的本意是通过修改state的状态来达到控制页面的dom元素。如果使用refs去拿实例节点去显式的去修改,那还不如用jquery方便好写。
     那么我们可以将classname作为一个state,使用定时器,延时控制classname的改变。

2. 动画的使用

https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Transitions/Using_CSS_transitions

transform

CSS transform属性允许你旋转,缩放,倾斜或平移给定元素。这是通过修改CSS视觉格式化模型的坐标空间来实现的。

这里常用的几个属性就是: scale, rotate, translate, 分别对应缩放, 旋转和平移,后缀加上x或者y就是朝它们的x或者y轴做操作,

rotateX(10deg);
translate3D(12deg, 13deg, 14deg)
scaleY(10deg)

后缀3D和2D分别作3D和2D动画,但是要注意:

Internet Explorer 10、Firefox、Opera 支持 transform 属性。
Internet Explorer 9 支持替代的 -ms-transform 属性(仅适用于 2D 转换)。
Safari 和 Chrome 支持替代的 -webkit-transform 属性(3D 和 2D 转换)。
Opera 只支持 2D 转换。

transition

Transitions可以为一个元素在不同状态之间切换的时候定义不同的过渡效果。比如在不同的伪元素之间切换,它是一个简写的属性,用于设置四个过渡属性:transition-property(过渡的类型)、transition-duration(过渡的持续时间)、transition-timing-function(过渡速度效果的速度曲线)、transition-delay(规定过渡从何时开始),一般设置只设置前两个属性, 后面两个很少用,涉及到极为高深的数学。示例:

{
  width:100px;
  height:100px;
  background:blue;
  transition:width 2s;
  -moz-transition:width 2s; /* Firefox 4 */
  -webkit-transition:width 2s; /* Safari and Chrome */
  -o-transition:width 2s; /* Opera */
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,450评论 1 45
  • 十八岁,既是成年的时候,又是青春的黄金时段。在那样的日子,又会是怎样的一片天空? ...
    非儿_dd75阅读 270评论 0 1
  • 人,生来便是行者,永远在路上。 生命,永远是旅途,一直朝前走,直到终点。 人生,就...
    德米的海岛阅读 869评论 0 3
  • 女儿的中学可能要在寄宿制的学校进行了。学校考察时,我最关心的不是教学设计,升学率和丰富多彩的活动,而是“安...
    军师姐姐阅读 389评论 2 1
  • 心动的一瞬间 ——致海螺们的一封信 亲爱的小海螺和大海螺们,周末好! 这个星期,我们的周末作业中有一篇写作,主题是...
    石子雨阅读 300评论 0 0