模拟消息对话框完整版

CSS:

ul,li{list-style: none;padding: 0;margin: 0;}
    .cont{
        width: 527px;
        height: 600px;
        margin:30px auto;
        overflow: hidden;
        border: 1px solid #ccc;
    }
    #div1{
        width:527px;
        height: 499px;
        border-bottom: 1px solid #ccc;
        position: relative;
        overflow-y:scroll;/* 显示纵向滚动条 */
    }
    #ul1>li{
        margin:10px 0;
        position: relative;
        height: auto;
        width: 510px;
        min-height: 50px;
    }
    #ul1>li:after{
        content: ‘.‘;
        display: block;
        height: 0;
        clear: both;
        visibility: hidden;
    }
    .bottom{
        width: 510px;
        height: 100px;
        background: #eee;
        overflow: hidden;
        position: relative;
    }
    .pic1{
        width: 80px;
        height: 80px;
        float: left;
        margin: 10px;
        border-radius:40px;
        /* overflow: hidden; */
        background-image: url(http://h.hiphotos.baidu.com/image/pic/item/7c1ed21b0ef41bd54a40316353da81cb39db3d12.jpg);
        background-position: 0 0;
    }
    .pic2{
        width: 80px;
        height: 80px;
        float: left;
        margin: 10px;
        border-radius:40px;
        /* overflow: hidden; */
        background-image: url(http://h.hiphotos.baidu.com/image/pic/item/7c1ed21b0ef41bd54a40316353da81cb39db3d12.jpg);
        background-position: -200px -200px;
    }
    .fl{float: left;}
    .text1{
        width: 300px;
        height:36px;
        margin: 30px 0px;
        border: 1px solid #ccc;
        overflow: hidden;
    }
    .btn2{
        width: 80px;
        height: 40px;
        line-height: 40px;
        text-align: center;
        margin: 30px 12px;
        border: 1px solid #ccc;
        background: #fff;
        font-size: 18px;
        overflow: hidden;
    }
/* 消息发送出后,消息框的消息内容和头像的样式 */
    #ul1 .pic1{
        width: 100px;
        height: 100px;
        /* position: absolute;
        left: 5px;
        display: inline; */
        border-radius: 50px;
        float: left;
    }
    #ul1 .pic2{
        width: 100px;
        height: 100px;
        /* position: absolute;
        right: 5px;
        display: inline; */
        border-radius: 50px;
        float: right;
    }
    /* #div1 li:last-child{
        max-width: 310px;
        padding: 20px;
        border-radius: 15px;
        line-height: 25px;
        position: absolute;
    } */
    #ul1 span{
        display: block;
        /* float: left; */
        max-width: 300px;
        height: auto;
        padding: 20px;
        margin-top:20px;
        /* margin-left: 20px; */
        border-radius: 15px;
        box-shadow: 0 5px 25px #ccc;
        line-height: 25px;
        word-wrap:break-word;/* 字母换行 */
    }
    #ul1 .msg1{
        float: left;
        margin-left: 15px;
        /* box-shadow: 0 5px 25px #ccc; */
    }
    #ul1 .msg1:before/* ,#ul1 span:before */{
        content: ‘‘;
        border:10px solid transparent;
        border-right-color: #ccc;
        position: absolute;
        left: 115px;
        top: 40px;
    }
    #ul1 .msg2{
        float: right;
        margin-right: 15px;
    }
    #ul1 .msg2:after{
        content: ‘‘;
        border:10px solid transparent;
        border-left-color: #ccc;
        position: absolute;
        right: 115px;
        top: 40px;
    }

HTML:

<div class="cont">
    <div id="div1">
        <ul id="ul1"></ul>
    </div>
    <div class="bottom">
        <div id="btn1">
            <div class="pic1"></div>
        </div>
        <input id="text1" class="fl text1" type="text">
        <input id="btn2" class="fl btn2" type="button" value="发送">
    </div>
</div>

JS:

<script type="text/javascript">
    var oUl=document.getElementById(‘ul1‘);
    var oBtn1=document.getElementById(‘btn1‘);
    var oBtn2=document.getElementById(‘btn2‘);
    var oText1=document.getElementById(‘text1‘);
    var oImg=oBtn1.getElementsByTagName(‘div‘)[0];
    var onOff=true;//设置切换开关

    //头像切换
    oBtn1.onclick=function(){
        if (onOff) {
            oImg.className=‘pic2‘;//点击btn1时,切换图片,切换开关
            onOff=false;
        }
        else{
            oImg.className=‘pic1‘;
            onOff=true;
        };
    }

    function Tab(){
        if (oText1.value==‘‘) {
            alert(‘请输入内容!‘);
        }else{
            oUl.innerHTML=(‘<li>‘+oBtn1.innerHTML+‘<span>‘+oText1.value+‘</span>‘+‘</li>‘ )+oUl.innerHTML;

            for (var i = 0; i < aLi.length; i++) {
                fnEnd(aLi[i]);//调用给li添加样式的函数
            };

            oText1.value=‘‘;//清空输入框的内容
            //alert(1);测试
        };
    }

    //点击发送时
    oBtn2.onclick=function(){
        Tab();
    }

    //给li下的span元素添加样式
    var aLi=oUl.getElementsByTagName(‘li‘);
    function fnEnd(li){
        var aDiv=li.getElementsByTagName(‘div‘)[0];
        var aSpan=li.getElementsByTagName(‘span‘)[0];
        if(aDiv.className==‘pic1‘){
            aSpan.className=‘msg1‘;//alert(1);
        }else{
            aSpan.className=‘msg2‘;
        };
    }

    //键盘事件,按回车键发送消息
    oText1.onkeydown=function(ev){
        var oEvet=ev||event;//兼容性(火狐)
        //回车键的键值:13
        if (oEvet.keyCode==13) {
            Tab();
        };
    }

效果图:

时间: 2024-10-06 17:43:10

模拟消息对话框完整版的相关文章

Spring Boot RabbitMQ 延迟消息实现完整版

概述 曾经去网易面试的时候,面试官问了我一个问题,说 下完订单后,如果用户未支付,需要取消订单,可以怎么做 我当时的回答是,用定时任务扫描DB表即可.面试官不是很满意,提出: 用定时任务无法做到准实时通知,有没有其他办法? 我当时的回答是: 可以用队列,订单下完后,发送一个消息到队列里,并指定过期时间,时间一到,执行回调接口. 面试官听完后,就不再问了.其实我当时的思路是对的,只不过讲的不是很专业而已.专业说法是利用延迟消息. 其实用定时任务,确实有点问题,原本业务系统希望10分钟后,如果订单未

rip路由协议 细节分析及实例配置【完整版】

rip路由协议 细节分析及实例配置[完整版] RIP呢,这是一个比较重要的知识点,所以它的知识覆盖面很广泛:但是呢,我将会对碰到的问题进行一些分析解刨(主要是为了帮助自己理清思维):也希望能够从中发现自己不足的问题,也希望能够找到一些比较冷僻的问题,这样子才会有意思多了.   先上图,这个就是我准备做实验的基本用图了.现在已经按照图上标注的IP将所有基本配置设置好了. 在这个实验中,大多数都是基于ripv1,只有在需要比较的时候才会把版本改成ripv2,然后判断完之后再切换为ripv1: 第一步

网站推广优化教程100条(完整版)

网站推广优化教程100条(完整版)下面介绍新手建站推广完美教程,各位根据自己的实际情况酌情选用: 1.准备个好域名.①.尽量在5位数内,当然也不一定,反正要让用户好记.(看个人):②.尽量用顶级的域名,搜索排名感觉好一点.③.做中文站最好用拼音注册,不要问为什么.看百度(baidu.com)就是很好证明.④.域名的安全性,最好选择有些权威的注册商.⑤.好域名或者说主域名最好注册3年以上,因为百度在扒正规站的毛的时候,会看这些资料,他会觉得你不会很快转行的…… 2.网站空间很重要①.速度打开速度慢

QT学习 之 对话框 (四) 字体对话框、消息对话框、文件对话框、进程对话框(超详细中文注释)

QMessageBox类: 含有Question消息框.Information消息框.Warning消息框和Critical消息框等 通常有两种方式可以来创建标准消息对话框: 一种是采用“基于属性”的API,一种是使用QMessageBox的静态方法. 后者书写容易,但缺少灵活性,针对用户给出的提示的信息不够丰富,并且不能自定义消息对话框里面的按钮提示信息.因此推荐第一种写法. [cpp] view plaincopy <span style="font-size:18px;"&

【甘道夫】Hadoop2.2.0 NN HA详细配置+Client透明性试验【完整版】

引言: 前面转载过一篇团队兄弟[伊利丹]写的NN HA实验记录,我也基于他的环境实验了NN HA对于Client的透明性. 本篇文章记录的是亲自配置NN HA的详细全过程,以及全面测试HA对客户端访问透明性的全过程,希望对大家有帮助. 实验环境: Hadoop2.2.0的4节点集群,ZK节点3个(ZK节点数最好为奇数个),hosts文件和各节点角色分配如下: hosts: 192.168.66.91 master 192.168.66.92 slave1 192.168.66.93 slave2

完整版ANALYTICAL.GRAPHICS.STK.PRO.V6.1

VAPS Simulink v6.3 ANALYTICAL.GRAPHICS.STK.V8.1.1  2CD ANALYTICAL.GRAPHICS.STK.PRO.V6.1(完整版,安装后1.4G)国际航天工业领域顶尖设计分析软件 Lotus Engineering Software产品: Lotus.Base.Engine.Analysis.Tools.v4.02c 1CD(发动机制造前的理论性研究分析工具) Lotus.Concept.Valve.Train.v2.05g 1CD(汽车阀轴

中国移动短信网关错误代码汇总(完整版)

中国移动短信网关错误代码汇总(完整版) 发短信的时候,平台里经常会提示一些不常见的错误网关代码,这里先移动短信网关错误代码先整理出来供大家查询,希望可以帮助到大家,若有的代码没有更新,还请大家跟帖留下,我会及时更新上. 错误码 原因描述 改进建议 MK:0255 未确定的错误原因. 保留. MK:0210 MS错误. 检查被叫手机是否有接收短消息的功能. MK:0209 SIM中没有存储短消息的能力. 检查被叫手机的SIM卡是否不能存储短消息. MK:0208 SIM(Subscriber Id

Alien Skin Exposure v6.x 最新通用完整版汉化补丁

    完整汉化版说明: 我于2014-06-19上传的"Alien Skin Exposure 6.x 通用汉化补丁",有些网友反映预设不能显示中文,调查了一下:预设能显示中文的,操作系统基本上是完整版,精简版.克隆版的系统由于被精简了某些文件,所有不能正常显示.为了这些朋友能正常使用,我把汉化包重新编辑了一下,在几个不同操作系统的电脑上做了实验,全部通过.这次保你满意,祝你成功! Alien Skin Exposure v6.0 是一款专业的PS胶片调色滤镜软件,使用Alien S

微信公众平台开发接口PHP SDK完整版

原文:微信公众平台开发接口PHP SDK完整版 官方提供的SDK只有一个文本消息功能,我们将所有消息的消息类型及事件响应都整理了进来,并且加入日志记录,代码如下: 更新日志: 2013-01-01 版本1.02014-03-15 增加图片.视频.语音的内容回复2014-04-09 增加菜单链接事件2014-04-10 修改文本回复的判定方法2014-05-20 增加高级群发消息通知事件2014-05-26 增加多客服消息及多客服的判定方法2014-05-27 修改自动回复判定方式2014-06-