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>

 

转载于:https://www.cnblogs.com/potatog/p/9184701.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/353480.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习Lucene

我目前正在与一个团队合作&#xff0c;开始一个基于Lucene的新项目。 虽然大多数时候我会争论使用Solr还是Elasticsearch而不是简单的Lucene&#xff0c;但这是一个有意识的决定。 在这篇文章中&#xff0c;我正在整理一些学习Lucene的资源–希望您对他们有所帮助&#xff0c;或…

MATLAB递归程序的调试方法

MATLAB具有和VC类似的调试功能&#xff0c;各功能的按钮图标和VC也很相似&#xff0c;基本可以使用VC的调试思想。MATLAB自己的特点&#xff1a;一. 查看中间变量。1. 在调试状态下&#xff0c;鼠标放在变量上就可以显示变量的基本信息。2. 在调试状态下&#xff0c;在命令行输…

DHCP服务(dhcpd)

DHCP动态分配主机地址&#xff08;Dynamic Host Configuration Protocol&#xff09; 动态主机配置协议&#xff08;DHCP&#xff09;是一种基于UDP协议且仅限于在局域网内部使用的网络协议&#xff0c;主要用于大型的局域网环境或者存在较多移动办公设备的局域网环境中&#x…

最健康的睡眠时间究竟是多少?

我每天都睡足8个小时&#xff0c;怎么还是这么困啊&#xff1f;”很多男性朋友都有这样的疑问。不是说每天8个小时的睡眠是最健康的&#xff0c;为什么那些一天睡5、6个小时的人看上去反而更生龙活虎、精力充沛呢&#xff1f; 怪8小时不如6小时的精神 睡眠不足会导致精力不济、…

Matlab Compiler路径

Matlab Compiler run-time找了半天就在自己的安装目录下D:\Program Files\MATLAB\R2011b\toolbox\compiler\deploy\win32\MCRInstaller.ex

EF context.SaveChanges()特点

EF context.SaveChanges()特点1 一次连接保存多条数据&#xff08;工作单元模式&#xff09;&#xff1b;2 内部通过事务来执行&#xff0c;如果一条数据保存失败&#xff0c;执行回滚操作&#xff1b;3 延时加载var userListfrom u in context.UserInfo select u;foreach(var …

spring aop示例_Spring Profile模式示例

spring aop示例最近&#xff0c;我们介绍了Spring Profiles的概念。 此概念是针对不同部署环境的轻松配置区分符。 直接的用例&#xff08;已提出&#xff09;是对相关的类进行注释&#xff0c;以便Spring根据活动的配置文件加载适当的类。 但是&#xff0c;这种方法可能并不…

如何提高学习效率?

学习效率 目录 介绍如何提高规律展开介绍如何提高规律展开编辑本段介绍 学习效率对中学生的重要性无须在此多言。提高孩子的学习效率是每个老师的心愿&#xff0c;更是学生及其家长的追求目标。学习兴趣、学习能力和学习效率三者是和谐统一的辩证关系&#xff0c;将这三项标准严…

基于Matlab/Simulink不平衡电网工况下级联H桥光伏并网逆变器仿真模型

本次更新的内容为级联H桥光伏并网逆变器相关的控制&#xff0c;后面会针对储能系统在级联H桥拓扑上的应用进行分享。由于传统发电造成的环境污染问题和光伏电池板价格持续创新低&#xff0c;太阳能从众多种类的可再生能源中拔地而起&#xff0c;因而光伏逆变器成为国内外学者和…

MATLAB格式化字符串

sprintf(%s City %d Quarter,str,i);

“速课小龙”项目冲刺3

第三天 日期&#xff1a;2018/6/15 一.今日完成任务情况及遇到的问题 姓名完成情况遇到的问题解决方法邓旭 通过对昨天的知识进行再学习&#xff0c;已经能进行文件上传。并且开始着手于出题模块。 今天着手只是模型的基础层搭建&#xff0c;所以难度相对较少。未有问题解决陈逸…

Java和Lagom的CQRS

我很高兴在Chicago Java User Group上进行了讨论&#xff0c;并讨论了Lagom如何实现CQRS&#xff08;命令查询责任隔离模式&#xff09;。 值得庆幸的是&#xff0c;有一个录音&#xff0c;我还把这些幻灯片发布在slideshare上 。 抽象&#xff1a; 一旦应用程序变得相当复杂…

matlab字符串处理

matlab字符串处理 %字符串处理 a= a;b=b b;c=cccc;m= length(a);%获取字符串长度 str = [str1,str2];%无缝连接两个字符串 d=strcat(a,c);%连接两个字符串,每个字符串最右边的空格被裁切 e=strvcat(a,b,m);%连接多行字符串,每行长度可不等,自动把非最长字符串最右边补空…

一天最好学习时间

一天中各个时段的学习状态k 时间状态适合做的事情 6、 7点机体休息完毕并进入如兴奋状态&#xff0c;肝脏已将体内的毒素全部排净&#xff0c;头脑清醒&#xff0c;大脑记忆力强。 第一次最佳记忆期8、9点 神经兴奋性提高&#xff0c;记忆仍保持最佳状态&#xff0c;心…

PAT 之 A+B和C

时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard 题目描述 给定区间 [-2的31次方, 2的31次方] 内的3个整数 A、B 和 C&#xff0c;请判断 AB 是否大于 C。 输入描述 输入第1行给出正整数T(<10)&#xff0c;是测试用例的个数。随后给出T组测试用例…

使用Spring boot,Thymeleaf,AngularJS从零开始构建新的Web应用程序-第2部分

在本系列博客中&#xff0c;我们将使用Springboot&#xff0c;Angular等构建完整的Web应用程序。 在上一个博客中&#xff0c;我们与Thymeleaf建立了基本的登录页面。 在此博客中&#xff0c;我们将介绍bower &#xff0c;它用于管理前端依赖项&#xff0c;例如CSS&#xff0c…

MATLAB字符串和ASCII码的转换

字符串转ASCII码&#xff1a;abs&#xff0c;如&#xff1a;abs(a);abs(what);ASCII码转字符串&#xff1a;char&#xff0c;如&#xff1a;char(97);char([97,98,99]);

怎么样开会才有效果?

SAP项目实施过程中&#xff0c;难免不了要开不少的会议&#xff0c;无论是最前期的选型&#xff0c;还是商谈&#xff0c;乃至后面上线评审都免不了将很多项目干系人聚在一起就出现的问题或大家关心的问题摆在台面上做探讨。但只要你开过大会议你就会知道很多时候开会纯粹是为了…

一天中的最佳学习时间

一天中的最佳学习时间   一个人在一天的不同时期&#xff0c;大脑活动的效率是不同的&#xff0c;学习时间的最佳选择应该是一天中大脑最清醒的时侯。   生理学家研究认为&#xff0c;一天之内有4个学习的高效期。如果你使用得当&#xff0c;可以轻松自如地掌握、消化、巩…

MATLAB字符串数组中查找指定子串

1. strfindFind one string within another Syntaxk strfind(str, pattern)&#xff1b; k strfind(cellstr, pattern)&#xff1b;2. 如果使用的cell并且比较麻烦&#xff0c;可以自己写查找函数id zeros(0,1); for i1:size(txt,1)if strcmp(txt{i},str)id(end1) i;end en…