js 自定义类Android吐司提示框
(function(){
var mouseX = 0;
var mouseY = 0;
//定义一个全局toaslist用来存在新建的吐司
var toastLsit = [];
window.Toast = function(content,duration,positon)
{
return new Toast(content,duration,positon);
}
function Toast(content,duration,positon)
{
//显示的内容
this.content = content || "注意";
this.duration = duration || 500;
this.ToastDom = null;
this.ToastDomOpacity = 100;
this.toastTimer = false;
this.toastTimeOut = false;
this.mouseX = mouseX;
this.mouseY = mouseY;
this.zindex = 999;
this.position = positon || "mouse";
this.initToastDom();
this.bindEvent();
this.hiddenToast();
toastLsit.push(this);
}
//绑定事件,缓慢变透明,然后移除,如果鼠标hover透明度又恢复
Toast.prototype.bindEvent = function(){
var _this = this;
this.ToastDom.onselectstart = function(){return false;}
this.ToastDom.onmouseover = function(){
_this.zindex = 999;
_this.ToastDomOpacity = 100;
_this.ToastDom.style.filter = 'alpha(opacity:'+ _this.ToastDomOpacity +')';
_this.ToastDom.style.opacity = _this.ToastDomOpacity/100;
_this.ToastDom.style.zIndex = _this.zIndex;
clearInterval(_this.toastTimer);
clearTimeout(_this.toastTimeOut);
}
this.ToastDom.onmouseout = function(){
_this.hiddenToast();
}
};
Toast.prototype.hiddenToast = function(){
clearTimeout(this.toastTimeOut);
var _this = this;
_this.toastTimeOut = setTimeout(function(){
_this.toastTimer = setInterval(
function(){
_this.ToastDomOpacity --;
_this.zIndex --;
_this.ToastDom.style.zIndex = _this.zIndex;
_this.ToastDom.style.filter = 'alpha(opacity:'+ _this.ToastDomOpacity +')';
_this.ToastDom.style.opacity = _this.ToastDomOpacity/100;
if(_this.ToastDomOpacity <= 0)
{
clearInterval(_this.toastTimer);
document.body.removeChild(_this.ToastDom);
toastLsit.shift();
}
},10);
},800);
}
//初始化布局
Toast.prototype.initToastDom = function(){
//新建一个DIV
this.ToastDom = document.createElement("div");
this.ToastDom.innerHTML = this.content;
//然后给这个元素布局
//这个元素的位置应该是 浏览器的最底部 居中的位置,并且在所有元素的顶部 且不能影响其他元素的布局
this.ToastDom.style.position = "fixed";
//背景色
this.ToastDom .style.backgroundColor = "#000";
this.ToastDom .style.color = "#fff";
this.ToastDom .style.minWidth = "200px";
this.ToastDom .style.textAlign = "center";
this.ToastDom .style.padding = "10px";
this.ToastDom .style.borderRadius = "5px";
this.ToastDom .style.cursor = "pointer";
//只有先上树之后才有具体的宽高
document.body.appendChild(this.ToastDom);
if(this.position == "mouse")
{
this.ToastDom.style.top = this.mouseY + 10 + "px";
this.ToastDom.style.left = this.mouseX + 10 + "px";
}
else if(this.position == "top")
{
this.ToastDom.style.top = "25px";
this.ToastDom.style.left = "50%";
this.ToastDom.style.marginLeft = -(getStyle(this.ToastDom,"width") / 2) +"px";
}
else
{
this.ToastDom.style.bottom = "25px";
this.ToastDom.style.left = "50%";
this.ToastDom.style.marginLeft = -(getStyle(this.ToastDom,"width") / 2) +"px";
}
}
function getStyle(obj,name)
{
if(obj.currentStyle)
{
return parseFloat(obj.currentStyle[name]);
}
else
{
return parseFloat(getComputedStyle(obj)[name]);
}
}
//监听鼠标移动事件
document.onmousemove = function(e){
e = e || window.event;
mouseX = e.pageX;
mouseY = e.pageY;
}
})();
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>模拟手机吐司</title>
<script type="text/javascript" src="js/Toast.js" ></script>
</head>
<body> <input type="text" />
<button>吐司</button> <div style="height:1500px;"> </div>
<script> document.getElementsByTagName("button")[0].onclick = function(){
Toast(document.getElementsByTagName("input")[0].value); } </script>
</body>
</html>
js 自定义类Android吐司提示框的更多相关文章
- Android消息提示框Toast
Android消息提示框Toast Toast是Android中一种简易的消息提示框.和Dialog不一样的是,Toast是没有焦点的,toast提示框不能被用户点击,而且Toast显示的时间有限,t ...
- JS使用cookie实现DIV提示框只显示一次的方法
本文实例讲述了JS使用cookie实现DIV提示框只显示一次的方法.分享给大家供大家参考,具体如下: 这里运用JavaScript的cookie技术,控制网页上的提示DIV只显示一次,也就是当用户是第 ...
- 通过自定义window来实现提示框效果
#import <UIKit/UIKit.h>#import <Foundation/Foundation.h> @interface ZMStatuBarHud : NSOb ...
- JS学习笔记 -- 定时器,提示框的应用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- js实现弹出的提示框只弹出一次
<script type="text/javascript"> var ua = navigator.userAgent.toLowerCase(); if (/iph ...
- Android 退出提示框 代码
转自:http://hi.baidu.com/ittdt/item/d932cf37f486f886c3cf29ea new AlertDialog.Builder(MainEngine.contex ...
- js自定义类和对象及继承
1.工厂方式 <script type="text/javascript"> function createObject(name){ var p = new Obje ...
- js关于移入移出延迟提示框效果处理
html部分 <div id="div1">我是导航君</div> <div id="div2" style="disp ...
- js 自定义类
将近20年前,Javascript诞生的时候,只是一种简单的网页脚本语言.如果你忘了填写用户名,它就跳出一个警告. 如今,它变得几乎无所不能,从前端到后端,有着各种匪夷所思的用途.程序员用它完成越来越 ...
随机推荐
- newcoder 小A的柱状图(单调栈)题解
题目描述 柱状图是有一些宽度相等的矩形下端对齐以后横向排列的图形,但是小A的柱状图却不是一个规范的柱状图,它的每个矩形下端的宽度可以是不相同的一些整数,分别为a[i] 每个矩形的高度是h[i] ,现在 ...
- _spellmod
-- 技能修改 -- 小技巧:可以针对技能进行修改 (进行会对其进行更新,增加技能开关) `comment` 备注 `spellId` 技能ID `reqId`需求ID `dmgMod`伤害倍数 `h ...
- JAVA中的值传递和引用传递问题
这是个老生常谈的问题了,引起过无数争论,但可以说一直没有一个令人满意的回答. 有人总结过: 对象是按引用传递的 Java 应用程序有且仅有的一种参数传递机制,即按值传递 按值传递意味着当将一个参数传递 ...
- 更改ssh,ftp默认端口
1. 更改ssh端口 放置升级openssh之后做此步骤 配置文件/etc/ssh/sshd_config 注释掉Subsystem sftp /usr/libexec/openss ...
- Symbol Vs String
最重要区别 1 symbol存入内存后,始终存在,如果不进行垃圾收集,可能导致内存泄漏. String只会存在于某个创建它的作用域内.即有生命周期的. 2.唯一性. \\进入控制台 >" ...
- 『TensorFlow』滑动平均
滑动平均会为目标变量维护一个影子变量,影子变量不影响原变量的更新维护,但是在测试或者实际预测过程中(非训练时),使用影子变量代替原变量. 1.滑动平均求解对象初始化 ema = tf.train.Ex ...
- Elasticsearch5.5安装部署
一 ES基础知识介绍 Near Reamtime(NRT) Elasticsearch 是一个实时的查询平台,从索引数据开始到索引数据结束几乎是1s的时间 Cluster 集群是一个或多个节点的集合, ...
- 用Eclipse在Weka中嵌入新算法
本文介绍添加一个新算法到Weka集成环境中的过程,并能在GUI中运行并显示其结果.想做到这一点有两种方法,一是用ANT命令生成新的weka.jar(稍后写教程),二是用IDE(Eclipse或NetB ...
- Harbor使用 -- 修改80端口
在公网上,一般情况下都不暴露默认端口,避免被攻击! 以下修改harbor的默认80端口为其他端口! 我这里示例修改为1180端口! 注意:以下步骤都是在harbor目录下操作!!! 1.修改docke ...
- webstorm激活教程
虽然webStorm,phpStorm以及jetbrains系列的很好用,但是每隔一段时间就需要激活一下,这样太费劲了,今天军哥给大家推荐一个永久激活的办法 此教程适用于jetbrains 的所有系列 ...