vue一步步实现alert功能。_html/css_WEB-ITnose
原生alert的缺点
-
会阻塞一切操作,影响用户体验
-
很多浏览器会默认静止alert,例如微信。
-
原生alert框样式丑陋。
demo地址: 用力点我
项目地址: 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 id="i-class-iconfont-icon-questioncircle-i-title"> <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: '' } })
-
show 是控制显示隐藏的标记。
-
onCancel onOk 是点击取消或者确定时候触发的回调。
-
title content 是alert显示的文本。
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' } } }
alert(setting) 方法是控制显示alert组件的方法。接受一个object的参数配置。
op(type) 方法是点击取消和确定按钮的时候触发的时候。
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)

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

HTML is suitable for beginners because it is simple and easy to learn and can quickly see results. 1) The learning curve of HTML is smooth and easy to get started. 2) Just master the basic tags to start creating web pages. 3) High flexibility and can be used in combination with CSS and JavaScript. 4) Rich learning resources and modern tools support the learning process.

HTML defines the web structure, CSS is responsible for style and layout, and JavaScript gives dynamic interaction. The three perform their duties in web development and jointly build a colorful website.

WebdevelopmentreliesonHTML,CSS,andJavaScript:1)HTMLstructurescontent,2)CSSstylesit,and3)JavaScriptaddsinteractivity,formingthebasisofmodernwebexperiences.

GiteePages static website deployment failed: 404 error troubleshooting and resolution when using Gitee...

AnexampleofastartingtaginHTMLis,whichbeginsaparagraph.StartingtagsareessentialinHTMLastheyinitiateelements,definetheirtypes,andarecrucialforstructuringwebpagesandconstructingtheDOM.

To achieve the effect of scattering and enlarging the surrounding images after clicking on the image, many web designs need to achieve an interactive effect: click on a certain image to make the surrounding...

HTML, CSS and JavaScript are the three pillars of web development. 1. HTML defines the web page structure and uses tags such as, etc. 2. CSS controls the web page style, using selectors and attributes such as color, font-size, etc. 3. JavaScript realizes dynamic effects and interaction, through event monitoring and DOM operations.

The Y-axis position adaptive algorithm for web annotation function This article will explore how to implement annotation functions similar to Word documents, especially how to deal with the interval between annotations...
