原生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)

The official account web page update cache, this thing is simple and simple, and it is complicated enough to drink a pot of it. You worked hard to update the official account article, but the user still opened the old version. Who can bear the taste? In this article, let’s take a look at the twists and turns behind this and how to solve this problem gracefully. After reading it, you can easily deal with various caching problems, allowing your users to always experience the freshest content. Let’s talk about the basics first. To put it bluntly, in order to improve access speed, the browser or server stores some static resources (such as pictures, CSS, JS) or page content. Next time you access it, you can directly retrieve it from the cache without having to download it again, and it is naturally fast. But this thing is also a double-edged sword. The new version is online,

The article discusses using HTML5 form validation attributes like required, pattern, min, max, and length limits to validate user input directly in the browser.

This article demonstrates efficient PNG border addition to webpages using CSS. It argues that CSS offers superior performance compared to JavaScript or libraries, detailing how to adjust border width, style, and color for subtle or prominent effect

Article discusses best practices for ensuring HTML5 cross-browser compatibility, focusing on feature detection, progressive enhancement, and testing methods.

The article discusses the HTML <datalist> element, which enhances forms by providing autocomplete suggestions, improving user experience and reducing errors.Character count: 159

The article discusses the HTML <meter> element, used for displaying scalar or fractional values within a range, and its common applications in web development. It differentiates <meter> from <progress> and ex

This article explains the HTML5 <time> element for semantic date/time representation. It emphasizes the importance of the datetime attribute for machine readability (ISO 8601 format) alongside human-readable text, boosting accessibilit

The article discusses the HTML <progress> element, its purpose, styling, and differences from the <meter> element. The main focus is on using <progress> for task completion and <meter> for stati


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

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),
