手写弹框组件

文章目录

  • 手写弹框组件
  • 前言
  • 一、Element-UI的弹框
  • 二、如何自己手写?

前言

首先,分析一下Element-UI的对话框,点击,会弹出一个对话框。对话框由具体的弹框内容、关闭或确认按钮、外围的遮罩层组成。首先,先看下elmentui的用法:

一、Element-UI的弹框

el-dialog组件里面可进行配置

<el-dialogv-model="dialogVisible"title="Tips"width="30%":before-close="handleClose"><span>This is a message</span><template #footer><span class="dialog-footer"><el-button @click="dialogVisible = false">Cancel</el-button><el-button type="primary" @click="dialogVisible = false">Confirm</el-button></span></template></el-dialog>

效果:

二、如何自己手写?

1、dom实现:
外面的div实现遮罩层,里面的div是具体的内容

<div class="el_dialog"><div class="el_dialog__content"><slot/></div>
</div>

css:

.el_dialog {position: fixed;width: 100%;height: 100%;background-color: rgba(0, 0, 0, 0.5);display: flex;flex-direction: column;justify-content: center;align-items: center;margin: 0;padding: 0;}.el_dialog__content {width: v-bind(width1);height: 400px;background-color: white;display: flex;flex-direction: column;justify-content: center;align-items: center;}

2、弹框类的组件都需要直接渲染在body标签下面。因为弹框类组件都是绝对定位,如果在组件内部渲染,组件的css属性会影响弹框组件的渲染样式(可以尝试下,比如会出现浮动等),为了避免这种问题的出现,弹窗组件Dialog、Notification都需要渲染在body内部。
怎么渲染呢?可以使用vue3自带的Teleport,可以很方便地渲染到body上:

<template><teleportto="body"><div class="el_dialog"><div class="el_dialog__content" :style="DialogStyle"><slot/></div></div></teleport>
</template>

3、为了使样式可以可配置,可以在使用组件时传入一个对象,这个对象里面包含了样式,然后在组件中绑定这个样式:

<template><teleportto="body"><div class="el_dialog"><div class="el_dialog__content" :style="DialogStyle"><slot/></div></div></teleport>
</template>
<script>
export default {name:'Dialog',props: {DialogStyle: {type: Object,default: function () {return {width: '800px',height: '400px','background-color': 'white',display: 'flex','flex-direction': 'column','justify-content': 'center','align-items': 'center'};},},}
}
</script>

实现效果:

弹框组件到此结束,全部代码可以从这下载https://github.com/LisaNcu/myElementUI.git

Element-UI源码学习——弹框组件相关推荐

  1. 从 Element UI 源码的构建流程看前端 UI 库设计

    引言 由于业务需要,近期团队要搞一套自己的UI组件库,框架方面还是Vue.而业界已经有比较成熟的一些UI库了,比如ElementUI.AntDesign.Vant等. 结合框架Vue,我们选择在Ele ...

  2. element 源码学习一 Button 组件

    父组件 test.vue <template><div class="war"><el-button type="primary" ...

  3. 修改element UI的select下拉框组件右边的小箭头(使用自定义图片)

    i.el-select__caret {/*很关键:将默认的select选择框样式清除*/ appearance:none;-moz-appearance:none;-webkit-appearanc ...

  4. element UI实现el-dialog(弹框)可拖拽功能(网上借鉴)

    话不多说,直入主题 1.第一步,先封装可拖拽代码,我在这把文件命名为el-dragDialog,可放在utils文件下,如下 el-dragDialog文件下有两个js文件,分别是drag.js和in ...

  5. Vue源码学习 - 组件化一 createComponent

    Vue源码学习 - 组件化一 createComponent 组件化 createComponent 构造子类构造函数 安装组件钩子函数 实例化 VNode 总结 学习内容和文章内容来自 黄轶老师 黄 ...

  6. 深入学习jquery源码之高德地图组件的使用

    深入学习jquery源码之高德地图组件的使用 高德地图组件是一类高度模块化的LBS服务组件,开发者通过调用相应标签便可轻松实现诸如在地图上标注点.查找附近poi.公交/驾车线路规划等功能.该类组件仅针 ...

  7. 开源中国源码学习UI篇(一)之FragmentTabHost的使用分析

    最近在有意读开源中国的源码来提升Android开发能力,开通博客来提升一下自己的积极性- -我参考的是开源中国2.2版,完整源码地址为http://git.oschina.net/oschina/an ...

  8. Vue源码学习 - 组件化(三) 合并配置

    Vue源码学习 - 组件化(三) 合并配置 合并配置 外部调用场景 组件场景 总结 学习内容和文章内容来自 黄轶老师 黄轶老师的慕课网视频教程地址:<Vue.js2.0 源码揭秘>. 黄轶 ...

  9. 开源中国源码学习UI篇(二)之NavigationDrawer+Fragment的使用分析

    前文链接:开源中国源码学习UI篇(一)之FragmentTabHost的使用分析 开源中国2.2版,完整源码地址为:http://git.oschina.net/oschina/android-app ...

最新文章

  1. 已知2个整形数据a,b.不使用if,?:以及其他任何条件判断的语法,找出a跟b中数据的大者。
  2. 量化网络训练--Towards Effective Low-bitwidth Convolutional Neural Networks
  3. 反汇编教程及汇编命令详解(一)
  4. conlleval_[转载]CRF++的使用总结
  5. nginx重定向到其他url方法_高级开发必须掌握Nginx之四,if、set、return
  6. XML、集合、JSP综合练习
  7. no instance(s) of type variable(s) X exist so that DataSource<X> conforms to DataStream<Order>
  8. 在Entity Framework 4.0中使用 Repository 和 Unit of Work 模式
  9. Angularjs编写KindEditor,UEidtor指令
  10. C# 对文本文件的几种读写方法
  11. 一、annotation
  12. 浅谈微信公众平台和微信开放平台的区别
  13. java对象赋值优雅写法_JavaScript优雅写法及骚操作
  14. Tallest buildings/skyscrapers in the world
  15. 第二本书:疯狂人类进化史20190620
  16. android测试版微信7.0下载地址,微信8.0.6手机测试版本
  17. 业绩堪忧,上市曲折,友宝梦醒港股?
  18. C#数字转字母,ASCII码转换
  19. 自然语言处理NLP简介
  20. hdwiki的php架构,关于HDWiki的安装踩坑

热门文章

  1. 计算机应用基础的重点知识,《计算机应用基础知识》重点总结
  2. python做项目看板_一个好用的看板工具
  3. 不务正业,捣鼓了一个破网站,全过程记录
  4. Postman 开发团队共享接口协作调试
  5. 不知道照片如何拼图?这3个方法能帮上你
  6. 新一代企业级安全OneDNS
  7. 服务器bios界面usb无线网卡,BIOS怎么开启无线网卡
  8. 乐学python视频资源_铁乐学python_day04-作业
  9. 用java画菱形_【风马一族_Java】使用java,画出任意大小的菱形
  10. 又拍云叶靖:OpenResty 在又拍云存储中的应用