开发者社区> 技术小胖子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

JSP页面右下角消息弹框的实现(由下而上)

简介:
+关注继续查看

原文位置:http://blog.csdn.net/gongye1992/article/details/43735133

下面我对这个样式做了一点微调,但是核心代码没有变。

22.png

jsp页面代码为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>  
<%@page import="java.util.*"%>  
<html>  
  <head>  
    <style type="text/css">  
        #winpop { width:350px; height:0px; position:absolute; right:0; bottom:0; border:1px solid grey; margin:0; padding:1px; overflow:hidden; display:none; background:#FFFFFF}  
        #winpop .title { width:100%; height:30px; line-height:200%; background:#7dda1a ; font-weight:bold; text-align:center; font-size:14px;color:white}  
        #winpop .con { width:100%; height:360px; line-height:80px; font-weight:bold; font-size:12px; color:#FF0000; text-decoration:underline; text-align:center}  
        .close { position:absolute; right:4px; top:-1px; color:#FFFFFF; cursor:pointer}  
    </style>  
  </head>  
<%       
    //未读消息unreadList根据实际情况取  
    List<Map> unreadList = new ArrayList<Map>();  
    Map<String,String> map1=new HashMap<String,String>();  
    map1.put("msgId","1");  
    map1.put("msgContent","关于国庆放假的通知");  
    unreadList.add(map1);  
    Map<String,String> map2=new HashMap<String,String>();  
    map2.put("msgId","2");  
    map2.put("msgContent","祝大家国庆快乐!");  
    unreadList.add(map2);  
    int num=unreadList.size();  
%>  
  <body>  
    <script language="javascript" type="text/javascript">  
        window.onload = function tanchuang() { //加载  
            document.getElementById('winpop').style.height = '0px';//要初始化这个高度,虽然CSS里已经初始化了  
            setTimeout("tips_pop()",0);
        }  
        //弹出提示框
        function tips_pop() {  
            var MsgPop = document.getElementById("winpop");//获取窗口这个对象,即ID为winpop的对象  
            var popH = parseInt(MsgPop.style.height);//用parseInt将对象的高度转化为数字,以方便下面比较  
           
            if (popH == 0) { //如果窗口的高度是0  
                MsgPop.style.display = "block";//那么将隐藏的窗口显示出来  
                show = setInterval("changeH('up')"30);//开始以每0.030秒调用函数changeH("up"),即每0.030秒向上移动一次  
            else //否则  
                hide = setInterval("changeH('down')"30);//开始以每0.030秒调用函数changeH("down"),即每0.030秒向下移动一次  
            }  
        
        //变化高度
        function changeH(str) {  
            var MsgPop = document.getElementById("winpop");  
            var popH = parseInt(MsgPop.style.height);  
            if (str == "up") { //如果这个参数是UP  
                if (popH <= 200) { //如果转化为数值的高度小于等于200、这里调整窗口高度 
                    MsgPop.style.height = (popH + 4).toString() + "px";//高度增加4个象素  
                else {  
                    clearInterval(show);//否则就取消这个函数调用,意思就是如果高度超过200象度了,就不再增长了  
                }  
            }  
            if (str == "down") {  
                if (popH >= 4) { //如果这个参数是down  
                    MsgPop.style.height = (popH - 4).toString() + "px";//那么窗口的高度减少4个象素  
                else //否则  
                    clearInterval(hide); //否则就取消这个函数调用,意思就是如果高度小于4个象度的时候,就不再减了  
                    MsgPop.style.display = "none"//因为窗口有边框,所以还是可以看见1~2象素没缩进去,这时候就把DIV隐藏掉  
                }  
            }  
        }  
    </script>  
       
    <%if(num>0){ %>  
        <div id="winpop">  
        <div class="title" >系统信息(<%=num %>)<br>  
        <span class="close" onclick="tips_pop()">关闭</span></div>  
        <%for(int i=0;i<num;i++) { %>  
        <!-- 点击信息标题链接到信息明细,传递信息编号参数 -->  
              <a href="/XXXAction.do?msgId=<%=unreadList.get(i).get("msgId") %>">  
                <%if(String.valueOf(unreadList.get(i).get("msgContent")).length()>16) {%>  
                    <%=String.valueOf(unreadList.get(i).get("msgContent")).substring(0,16)+"..." %>  
                    <%} else{ %>  
                    <%=String.valueOf(unreadList.get(i).get("msgContent")) %>  
                    <%} %>  
              </a><br>  
            <%  
                if(i>=1){//最多显示两条  
                    break;  
                }  
            } %>  
            <center>  
            <!-- 点击查看更多未读消息 -->  
            <a href="/XXXAction.do %>"><font color="red">更多未读消息...</font></a></center>  
        </div>  
        <%} %>  
  </body>  
</html>

总结:本文中采用间隔增加div的高度来达到动画效果(由右下角底部上升),关闭时也是通过间隔减少高度来实现动画。

主要用到了js中的这两个函数

1
2
  var show = setInterval("changeH('up')"30);//开始以每0.030秒调用函数changeH("up"),即每0.030秒向上移动一次  
  clearInterval(show);//否则就取消这个函数调用,意思就是如果高度超过200象度了,就不再增长了







      本文转自建波李 51CTO博客,原文链接:http://blog.51cto.com/jianboli/2073211,如需转载请自行联系原作者



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
文章
问答
文章排行榜
最热
最新
相关课程
更多
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载