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

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

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

实现原理非常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 IEreturn obj.currentStyle[property];} else if (window.getComputedStyle) {//For FireFox and chromepropprop = property.replace(/([A-Z])/g, "-$1");propprop = property.toLowerCase();return document.defaultView.getComputedStyle(obj, null)[property];} else {return null;}
}

转载于:https://www.cnblogs.com/mengfanrong/p/5136762.html

javascript实现的一个信息提示的小功能/相关推荐

  1. 记录基于elementUI一个自定义上传图片的小功能

    哈喽,这里是今天不写bug的平平,00后程序媛本媛,上班写bug下班改bug的平平(Senior)刚刚进入实习阶段,此次记录一下在项目中遇到的一个小问题,自定义上传图片小功能的一些坑~ 首先先跟我一起 ...

  2. 使用HTML+javascript编写了一个生成题库小工具

    因为前段时间学校要准备考试,但是没有题库只有word的试题,我本人更习惯做题不适合背题,然后我就上网找了一下生成题库的软件,没有找到我想要的,所以就自己动手写了一个 HTML代码 插入链接与图片 代码 ...

  3. html打字练习测试代码,javascript写的一个练习打字的小程序

    div {float:right; width:60px; height:50px; background:#FFC000;font-family:黑体;font-size:45px;font-wei ...

  4. javascript实现的一个带下拉框功能的文本框

    我们需要一个可选的下拉框来选取内容,但是但是又有可以自定义输入的需求.对于这种需求,大部分网站使用的都是一个下拉框和一个 input text ,并列或分行给出选择.那么,我们希望它看上去像一个可以输 ...

  5. 使用Android GPS api 实现一个轨迹记录的小功能

    引入 市场上的跑步软件已经是非常多了,如咕咚和悦跑圈还有其他,很多大厂也在涉足这个方面.而最简单的运动跑步,最近几年也因简单,不限场地,运动效果出众备受大众喜欢. 我的这篇文章的内容很多也是从网上学习 ...

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

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

  7. CSS特效十:信息提示框

    今天来讲一个信息提示框,可以在上下左右四个方向展示,先给大家看看效果图(文末有彩蛋!!!): 其中的重点就是一个尖角的展示: 我们可以用CSS 伪元素 ::after 及 content 属性为提示工 ...

  8. iphone 信息提示类

    好久没有来这里.我也转向iphone开发了.呵呵 今天先介绍下一个信息提示类(itoast).一个可以自动消失的alertview类 地址:http://code.google.com/p/toast ...

  9. 【Unity-实现小功能-001】骰子功能

    最近在做飞行棋项目,实现了一个投掷骰子的小功能.其中使用的Uniy自带的物理碰撞产生随机点数的功能. 设计要点: 利用Unity自带的物理系统进行投掷,与周围环境进行碰撞,增加随机性. 利用触发器判断 ...

最新文章

  1. 如何在自动驾驶的视觉感知中检测极端情况?
  2. mysql栏的范围外值,MySQL中各种字段的取值范围-数据库专栏,MySQL
  3. c语言class运行错误,win32 C RegisterClass失败,该如何处理
  4. python3 字符串替换 replace translate re.sub
  5. Vue项目碰到‘webpack-dev-server’不是内部或外部命令,也不是可运行的程序或批处理文件报错...
  6. 不同国家的视力表也不一样!| 今日趣图
  7. [Leetcode][第111题][JAVA][BFS][二叉树的最小深度][BFS][递归]
  8. 阿里星专访丨星罡:因为期待,你需要更出色!
  9. 转:经典面试题:链表的相交与环问题
  10. 【转】将 azw3 格式转换为 mobi 格式并保持原有排版格式
  11. 华为路由器用Linux开发,华为路由交换设备配置综合实验(实验六合一)
  12. java即时通讯源码 IM即时通讯源码 IM源码 安卓苹果原生APP源码 带音视频
  13. 图片和文字对齐的方法
  14. E1000 与 VMXNET3的 区别
  15. Python pandas 空值缺失值(NaN)处理填充替换判断删除含缺失空值数据行
  16. 二分类最优阈值确定_一文搞懂分类算法中常用的评估指标
  17. JS学习手册十五 事件处理
  18. 思科交换机命令大全(二)
  19. WordPress常见问题及其解决方法
  20. 一起学习用Verilog在FPGA上实现CNN----(三)激活层设计

热门文章

  1. PRML-系列一之1.6.1
  2. leetcode —— 16. 最接近的三数之和
  3. ss模型复模态的物理意义及adams复模态振型求解
  4. toj 4601 好老师
  5. I—爆炸的符卡洋洋洒洒(不模不行的DP)
  6. 微信小程序 - 实践- 001-实现一个多TAB的菜单框架
  7. 浙江移动智能语音服务器,接口说明
  8. Mac 加入环境变量
  9. python中try语句_[转]python 里面 try语句
  10. php报内存溢出,php为什么运行了一段时间后才报内存溢出?