原生html封装组件,手把手教你用原生Javascript封装一个Dialog组件

本文手把手教你如何使用原生JavaScript封装一个Dialog组件,详细介绍了组件的结构、样式、方法以及动画实现,包括显示、隐藏、事件绑定等功能,并给出了实例调用和效果展示。
摘要由CSDN通过智能技术生成

下来玩玩

分析

对外暴露的方法

show(options) 显示dialog

options 参数

title 标题,默认为“”,不显示标题

content 主内容,默认为"兄弟,你好像忘记传content的值了"

skin 皮肤,默认为"",其实就是给dialog添加一个你的类名,方便重置样式

btns 按钮组,默认为[‘确认’],可选[‘xx’,‘xx’],只取前两个作为有效值,第一个为confirm,第二个为cancel

confirm 点击confirm按钮的回调,如确认

cancel 点击cancel按钮的回调,如取消

shadeClose 是否开启点击遮罩关闭,默认true

animation 过渡动画,默认为1,可选0和2,注意这里的动画是指内容区的动画,最外层是固定为0

hide() 关闭dialog

过渡动画

用css3的animation,具体看下面的css

先写好布局、样式(后面会移植到Javascript生成DOM)

html

消息提示
兄弟,你好像忘记传content的值了
取消
确认

css

body,

html {

font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;

}

.dialog-wrapper {

position: fixed;

display: flex;

justify-content: center;

align-items: center;

top: 0;

left: 0;

width: 100vw;

height: 100vh;

background-color: rgba(49, 49, 49, 0.5);

color: #313131;

font-size: 10px;

-webkit-tap-highlight-color: transparent;

}

.dialog-wrapper.fadeIn {

animation: fadeIn .2s ease;

}

.dialog-wrapper.fadeOut {

animation: fadeOut .2s ease forwards;

}

.dialog-wrapper .dialog {

position: relative;

width: 85vw;

max-width: 30em;

border-radius: .4em;

background-color: #

封装一个dialog组件可以分为以下几个步骤: 1. 设计组件API:包括输入参数和输出结果。例如,输入参数可能包括标题、内容、按钮等信息;输出结果可能包括用户的选择、关闭事件等信息。 2. 编写组件逻辑:根据设计好的API,编写组件的业务逻辑,包括渲染组件、处理用户输入等。 3. 添加样式:为组件添加必要的样式,使其能够呈现出设计好的外观。 4. 测试和调试:测试组件的功能是否符合API设计,调试组件中可能存在的问题。 5. 文档化:为组件编写文档,包括组件的使用方法、输入参数和输出结果等。 下面是一个简单的dialog组件的示例代码: ``` // Dialog组件的API interface DialogProps { title: string; content: string; onConfirm?: () => void; onCancel?: () => void; } // Dialog组件 const Dialog: React.FC<DialogProps> = ({ title, content, onConfirm, onCancel }) => { return ( <div className="dialog"> <h2>{title}</h2> <p>{content}</p> <div className="buttons"> <button onClick={onConfirm}>确认</button> <button onClick={onCancel}>取消</button> </div> </div> ); }; // 使用Dialog组件 const App: React.FC = () => { const handleConfirm = () => { console.log("确认"); }; const handleCancel = () => { console.log("取消"); }; return ( <div className="app"> <Dialog title="提示" content="确定要删除吗?" onConfirm={handleConfirm} onCancel={handleCancel} /> </div> ); }; ``` 在上面的示例中,我们定义了Dialog组件的API,包括title、content、onConfirm和onCancel等输入参数。然后,我们编写了Dialog组件的业务逻辑,包括渲染组件、处理用户输入等。最后,我们在App组件中使用Dialog组件,提供了相应的输入参数和回调函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值