原生alert的缺点

项目地址: web-style 项目里有css样式和vue组件。目标是快速构建后台系统。有一定自适应的设计。
css
思路:最外层是一个黑色透明撑满全屏幕的div并且是fixed的div.modal-mask。
在mask内部是一个垂直居中的div框大小可以固定。垂直居中方法有几种可选。我选用的是flex。关键性的css代码如下
.modal-mask{
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(55,55,55,.6);
z-index: 100;
display: flex;
align-items: center;
justify-content: center;
}
.modal-confirm{
width: 400px;
box-sizing: border-box;
padding: 30px 40px;
background-color: #fff;
border-radius: 6px;
}
@media only screen and (max-width: 640px) {
.modal-confirm{
width: 100%;
margin: 0 20px;
padding: 10px 20px;
}
}
其中modal-confirm是alert框,有固定的宽度400px 还有padding。 然后我们做了一个小小的自适应。 在小屏上(屏幕宽度小于640px)取消了固定宽度。减少了padding的值,看起来更小巧。
开发vue组件
vue template
首先我希望这个组件功能能像原生的alert事件一样随时随地的方便调用。 不希望每次都new Vue({})一个实例。 所以我做了一些不一样的设计。
<div class="modal-mask" v-show="show">
<div class="modal-confirm">
<h2 class="confirm-header">
<i class="iconfont icon-questioncircle"></i> {{ title }}
</h2>
<div class="confirm-content">
{{ content }}
</div>
<div class="confirm-btns">
<button class="btn" @click="op(1)">取 消</button>
<button class="btn btn-primary" @click="op(2)">确 定</button>
</div>
</div>
</div>
v-show是控制alert组件的显示和隐藏的指令。 {{ }}是vue默认的模版标记。
@click 是绑定click事件的指令
vue data
new Vue({
el: '#V-confirm',
data: {
show: false,
onCancel: false,
onOk: false,
title: '',
content: ''
}
})
vue methods
methods: {
op(type){
this.show = false
if(type == '1'){
if(this.onCancel) this.onCancel()
}else{
if(this.onOk) this.onOk()
}
this.onCancel = false
this.onOk = false
document.body.style.overflow = ''
},
alert(setting){
this.title = setting.title || '标题'
this.content = setting.content || '内容'
this.onOk = setting.onOk || false
this.onCancel = setting.onCancel || false
this.show = true
document.body.style.overflow = 'hidden'
}
}
}
hack代码
var element = document.createElement('div');
element.id = 'V-confirm'
element.innerHTML = template
document.body.appendChild(element)
这一段代码作用是一开始就把vue实例插入到 body 底部,方便直接 alert 调用。
加入一些动画效果
依赖的是vue指令 transition 具体的用法教程 大家去过渡-传送门
.modal-enter, .modal-leave {
opacity: 0;
}
.modal-transition{
transition: all .3s ease;
}
.modal-enter .modal-confirm,
.modal-leave .modal-confirm {
transform: scale(1.1);
}
.modal-transition{
transition: all .3s ease;
}
用法
var setting = {}
setting.title = '你确定删除吗?'
setting.content = '删除不可以恢复...'
setting.onOk = function(){}
setting.onCancel = function(){}
$confirm.alert(setting)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# vue
# alert
# alert组件
# vue.js
# 使用Vue组件实现一个简单弹窗效果
# 很棒的vue弹窗组件
# 关于vue.js弹窗组件的知识点总结
# vue组件之Alert的实现代码
# vue.extend实现alert模态框弹窗组件
# 的是
# 是一个
# 自适应
# 不可以
# 有一定
# 就把
# 几种
# 可选
# 每次都
# 一个小小
# 绑定
# 回调
# 随时随地
# 能像
# 家去
# 大家多多
# 传送门
# 减少了
# 最外层
# 取消了
相关文章:
如何在西部数码注册域名并快速搭建网站?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
,想在网上投简历,哪几个网站比较好?
jQuery 常见小例汇总
广东企业建站网站优化与SEO营销核心策略指南
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
,怎么用自己头像做动态表情包?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何高效利用亚马逊云主机搭建企业网站?
C#如何在一个XML文件中查找并替换文本内容
小型网站制作HTML,*游戏网站怎么搭建?
如何基于云服务器快速搭建网站及云盘系统?
c# 在高并发场景下,委托和接口调用的性能对比
东莞专业制作网站的公司,东莞大学生网的网址是什么?
已有域名如何免费搭建网站?
股票网站制作软件,网上股票怎么开户?
电商平台网站制作流程,电商网站如何制作?
如何在云主机上快速搭建多站点网站?
建站VPS能否同时实现高效与安全翻墙?
建站之星ASP如何实现CMS高效搭建与安全管理?
如何通过建站之星自助学习解决操作问题?
北京制作网站的公司,北京铁路集团官方网站?
如何用好域名打造高点击率的自主建站?
家具网站制作软件,家具厂怎么跑业务?
网站制作的步骤包括,正确网址格式怎么写?
如何通过商城免费建站系统源码自定义网站主题?
太原网站制作公司有哪些,网约车营运证查询官网?
深入理解Android中的xmlns:tools属性
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
北京的网站制作公司有哪些,哪个视频网站最好?
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
如何快速配置高效服务器建站软件?
实现虚拟支付需哪些建站技术支撑?
如何通过万网虚拟主机快速搭建网站?
高端企业智能建站程序:SEO优化与响应式模板定制开发
如何在香港服务器上快速搭建免备案网站?
宁波免费建站如何选择可靠模板与平台?
常州自助建站:操作简便模板丰富,企业个人快速搭建网站
如何用PHP工具快速搭建高效网站?
浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?
完全自定义免费建站平台:主题模板在线生成一站式服务
高性能网站服务器配置指南:安全稳定与高效建站核心方案
在线教育网站制作平台,山西立德教育官网?
如何通过可视化优化提升建站效果?
建站主机选购指南:核心配置与性价比推荐解析
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
*请认真填写需求信息,我们会在24小时内与您取得联系。