//什么状况。CSDN的排版怎么这么多状况,还是本人太次?调整几次都没弄好。最后一遍了……

最近由于公司业务问题。须要做一些面向公众的平台,于是对UI要求会高一点,

对于传统的alert的这样的方式来提示用户操作错误显然会非常影响客户体验。于是做了一个小功能,来替代原本的alert。话不啰嗦,先上效果图。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDU3MTkxMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

实现原理非常easy。利用js生成一个div。然后在须要提示的时候从top:0,的地方開始运动,运动到屏幕中间的时候等待一秒钟再往上隐没,连续点击多次的话就上第一个图一样。会有些重叠。在提示用户错误操作方面的体验还是能够。以下就放上源代码:

调用起来也非常方便,引入后调用showTip(内容)方法就可以,本例中用了多层渐变。可是在IE8 的时候显示仅仅有单层颜色,稍显单调。(注:后面几个方法是本例依赖的运动框架,为方面调用才一起放上来了)

/**
* Created by zhou on 2014-12-09.
*/
function showTip(content){
var left = parseInt((document.body.clientWidth - 300)/2);
var top = parseInt((document.body.clientHeight - 50)/2);
var tipDiv = document.createElement("div");
tipDiv.className = "tip";
tipDiv.innerHTML = content; if(!document.head){//IE8 不支持style.innerHTML的写法,所以。假设浏览器是IE8能够採用js赋属性的方法处理
//document.head的写法不兼容IE8下面产品,所以这样的写法能够获取IE版本号是否在8下面,
tipDiv.style.width = "300px";
tipDiv.style.height = "50px";
tipDiv.style.border = "1px solid blue";
tipDiv.style.lineHeight = "50px";
tipDiv.style.textAlign = "center";
tipDiv.style.zIndex = "9999";
tipDiv.style.position="absolute";
tipDiv.style.top = 0;
tipDiv.style.left = left +"px";
tipDiv.style.backgroundColor = "#A793FF"; tipDiv.style.filter="progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#3d69ff,endColorStr=white);}"; }else{
//将属性写到CSS样式的优点在于:当某个属性在多个浏览器中兼容不一样的时候不用依据写js逻辑代码。
var styleStr = ".tip{ width: 300px; height: 50px; border:1px solid blue; line-height: 50px;text-align: center;"+
"z-index: 9999; top:0; left:"+left+"px;filter:alpha(opacity=0); opacity:0.5;position: absolute;"+
"background-color: #3d69ff; background: -webkit-linear-gradient(top, #3d69ff, #a793ff,#a793ff,#cac2ff,white);"+
"background: -moz-linear-gradient(top, #3d69ff ,#a793ff,#a793ff,#cac2ff,white);"+
"background: -ms-linear-gradient(top, #3d69ff, #a793ff,#a793ff,#cac2ff,white);"+
"background: linear-gradient(top, #3d69ff, #a793ff,#a793ff, #cac2ff,white); "+
"filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#3d69ff,endColorStr=white);} ";
var style = document.createElement("style");
style.innerHTML = styleStr;
document.head.appendChild(style);
}
document.body.appendChild(tipDiv);
doMove(tipDiv,{top:top,opacity:100},function(){
setTimeout(function(){
doMove(tipDiv,{top:0,opacity:0},function(){
//运动到top为0 的时候要注意将该组件删除。否则会造成大量垃圾,占用资源
tipDiv.parentNode.removeChild(tipDiv);
});
},1000);
});
}
function doMove(obj, oTarget, fn) {
if (obj.timer) {
clearInterval(obj.timer);
}
obj.timer = setInterval(function () {
Move(obj, oTarget, fn)
}, 10)
} function Move(obj, oTarget, fn) {
var iCur = 0;
var arr = "";
var bStop = true;
for (arr in oTarget) {
if (arr == "opacity") {
//解决Google chrome不兼容问题(Google获取opacity会出现一些误差,透明度无法达到指定数值)
var temp = parseFloat(getStyle(obj, 'opacity')) * 100;
iCur = temp<oTarget[arr]?Math.ceil(temp):Math.floor(temp);
} else {
iCur = parseInt(getStyle(obj, arr));
}
if (isNaN(iCur)) {
iCur = 0;
}
var speed = (oTarget[arr] - iCur) / 40;
speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
if (oTarget[arr] != iCur) {
bStop = false;
}
if (arr == "opacity") {
obj.style.filter = "alpha(opacity:" + (iCur + speed) + ")";
obj.style.opacity = (iCur + speed) / 100;
} else {
obj.style[arr] = iCur + speed + "px";
}
}
if (bStop) {
clearInterval(obj.timer);
obj.timer = null;
if (fn) {
fn();
}
}
}
function getStyle(obj, property) {
if (obj.currentStyle) {//For IE
return obj.currentStyle[property];
} else if (window.getComputedStyle) {//For FireFox and chrome
propprop = property.replace(/([A-Z])/g, "-$1");
propprop = property.toLowerCase();
return document.defaultView.getComputedStyle(obj, null)[property];
} else {
return null;
}
}

javascript实现的一个信息提示的小功能/的更多相关文章

  1. 最近写了一个红包雨的小功能,但感觉自己的js还有很多地方可以提高,望大神们可以帮忙指点一二

    js部分 'use strict'; function RedEnvelope(options){ if(this === window){ return new RedEnvelope(option ...

  2. [js插件]分享一个文章内容信息提示插件Colortip

    引用 项目中需要一个信息提示的功能,就上网找了一个插件,发现colortip实现比较简单,就定了这个插件. 实现过程 官网:http://tutorialzine.com/2010/07/colort ...

  3. jQuery信息提示工具jquery.poshytip (转载)

    转载地址:http://www.helloweba.com/view-blog-123.html Poshy Tip是一款非常友好的信息提示工具,它基于jQuery,当鼠标滑向链接时,会出现一个信息提 ...

  4. 一款jQuery打造的滚动条在底部滑出信息提示层

    一款jQuery打造的滚动条在底部滑出信息提示层, 当滚动鼠标滚轮,或者滚动条往下拉的时候,在右下角,弹出一个信息提示框. 有一点仿的是一个插件工具,就是网页中大家都长用到的友荐. 这款特效算一款简单 ...

  5. 【云开发】10分钟零基础学会做一个快递查询微信小程序,快速掌握微信小程序开发技能(轮播图、API请求)

    大家好,我叫小秃僧 这次分享的是10分钟零基础学会做一个快递查询微信小程序,快速掌握开发微信小程序技能. 这篇文章偏基础,特别适合还没有开发过微信小程序的童鞋,一些概念和逻辑我会讲细一点,尽可能用图说 ...

  6. 仿网易邮箱5.0(四):信息提示插件(tips.js)

    信息提示插件,在平常的开发中也是经常乃至的一个插件,像是一些辅助信息的提示,如:加载成功.提交信息成功或失败等等.这个插件在163邮箱中用在切换标签时提示加载状态. 下面我们先来分析一下这个小插件需要 ...

  7. ASP.NET div信息提示框显示几秒后隐藏

    今天在旧系统中,用户要求,要把一个javascript alert的信息提示,改为Div tag来显示,它在显示时,仅显示几秒,然后隐藏,这样无需用户去点击alert信息框的确定或是关闭铵钮. 下面I ...

  8. 学习EXTJS6(4)基本功能-信息提示框组件

    1.使用组件,主要配置表现形式有二种(是否可以说参数) 用逗号分隔的传统参数列表方式: <script type="text/javascript"> Ext.onRe ...

  9. 用25行JavaScript语句实现一个简单的编译器

    原文:https://www.iteye.com/news/32680 译者注:即使对于专业程序员来说,构造一个编译器也是颇具挑战性的任务,本文将会引导你抽丝剥茧,一探究竟! 我已经写了几篇与编程语言 ...

随机推荐

  1. 为什么EXE文件出现了不该出现的“盾牌”

    下载了一个小程序,它的功能并不需要管理员权限.但是在Win7下面它的图标上出现了一个“小盾牌”,这意味着运行它需要提升权限……果然,双击时弹出了UAC对话框.用二进制编辑器打开这个EXE,发现它没有内 ...

  2. ThinkPhp学习07

    原文:ThinkPhp学习07 简单CRUD操作 public function show() { $m=M('User'); // $arr=$m->find(2); //查找id=2的数据, ...

  3. 修改Tabhost样式和字体大小和居中显示

    有时候我们的tabhost并不需要贴图,所以这个时候就必须把文字居中显示和设置大小了,代码如下 setContentView(R.layout.home_vzo_tabhost);          ...

  4. Java线程状态及Thread类中的主要方法

    要想实现多线程,就必须在主线程中创建新的线程对象. 不论什么线程一般具有5种状态,即创建,就绪,执行,堵塞,终止. 创建状态: 在程序中用构造方法创建了一个线程对象后,新的线程对象便处于新建状态,此时 ...

  5. cURL安装和使用笔记

    0.前言     cURL是一个利用URL语法在命令行下工作的文件传输工具.它支持文件上传和下载,所以是综合传输工具,但习惯称cURL为下载工具.cURL还包含了用于程序开发的libcurl.cURL ...

  6. HDU 2444 The Accomodation of Students(推断是否是二分图)

    题目链接 题意:n个学生,m对关系,每一对互相认识的能住一个房间.问否把这些学生分成两组,要求每组的学生都互不认识.求最多须要多少个房间. 能否分成两组?也就是说推断是不是二分图,推断二分图的办法,用 ...

  7. opencv 训练自己的分类器汇总

    原地址:http://www.cnblogs.com/zengqs/archive/2009/02/12/1389208.html OpenCV训练分类器 OpenCV训练分类器 一.简介 目标检测方 ...

  8. 实现Runnable接口和扩展Thread使用场景

    在上篇博文:java学习笔记-Thread中我们知道创建子线程的两个方式:实现Runnable接口和扩展Thread. 扩展Thread类和实现Runnable接口的使用场景: Thread类定义了派 ...

  9. Cocos2d-x 3.1.1 Lua实例-AccelerometerTest(重力加速计)

    Cocos2d-x 3.1.1 Lua实例-AccelerometerTest(重力加速计) 本篇博客介绍Cocos2d-x的第一个实例--重力加速计測试.效果图(注:这里无法模拟重力感应): --[ ...

  10. win8 远程桌面 你得凭证不工作

    今天在在登录azure远程桌面时,一直提示你的凭证不工作, 按照网上各种教程都不行, 后来发现在win8中用户名结构中,需要加上本机电脑名比如:“win8\administrator”.