html仿手机界面,javascript新手实例3-仿手机聊天界面(if else运用)

今天给大家一个if else的Javascript小示例,其中我在js文件里写了很多注释,有兴趣的同学自己看注释,另外对于聊天界面的显示方式,我写了两种,大家也可以分别试试:

老规矩,先上图:

bVWL6z?w=289&h=594

html代码

模拟手机短信发送

css代码

body {

background: #000;

}

.phoneBox {

background: url(phoneBg.jpg) no-repeat;

width: 289px;

height: 594px;

margin: 50px auto;

}

.phoneContent {

width: 237px;

height: 370px;

float: left;

overflow-x: hidden;

margin: 87px 0 0 26px;

}

#phoneContrl {

float: left;

margin: 7px 0 0 30px;

}

.emo, #textInput {

height: 32px;

border: 1px solid #ded5e6;

border-radius: 5px;

float: left;

margin-right: 3px;

}

.emo {

width: 31px;

cursor: pointer;

background: url(em1.jpg) no-repeat center;

}

#textInput {

width: 135px;

padding: 0 0 0 5px;

}

#textSet {

height: 32px;

cursor: pointer;

width: 47px;

border: none;

background: #f7f7f7;

font-size: 16px;

line-height: 32px;

text-align: center;

}

.user1, .user2 {

width: 100%;

float: left;

margin: 10px 0;

font-size: 15px;

}

.user1 .userLogo,.user1 .userText,.user2 .userLogo,.user2 .userText {

float: left;

width: 30px;

margin: 0 2px;

}

.user1 .userText, .user2 .userText {

width: auto;

max-width: 165px;

background: #ded6e7;

color: #333;

border-bottom: 2px solid #b4b0b9;

padding: 5px;

border-radius: 5px;

}

.user2 .userLogo,.user2 .userText {

float: right;

}

.user2 .userText {

background: #21c616;

color:#fff;

border-bottom: 2px solid #0c7506;

}

Javascript代码

window.onload = function () {

function luka(element) {

//if (/#/.test(element) == true) 正则也可以匹配,不过正则的效率没有函数高,貌似任何语言都是

if (element.indexOf('#') > -1) {

return document.getElementById(element.replace(/#/,''));

};

if (element.indexOf('.') > -1) {

return document.getElementsByClassName(element.replace(/\./g,''));

};

if (/^[a-zA-Z]+&/.element = true) {

return document.getElementsByTagName(element);

};

};

luka(".emo")[0].onclick = function() {

var _logo = luka(".emo")[0].getAttribute("_logo")

if ( _logo == 1 ){

luka(".emo")[0].setAttribute("style","background:url(em2.jpg) no-repeat center");

luka(".emo")[0].setAttribute("_logo","2");

};

if ( _logo == 2 ){

luka(".emo")[0].setAttribute("style","background:url(em1.jpg) no-repeat center");

luka(".emo")[0].setAttribute("_logo","1");

};

};

luka("#textSet").onclick = function() {

if ( luka("#textInput").value == '') {

alert("还没有输入任何内容");

}

else {

var creatDiv = document.createElement("div")

//这种方式是完全参考gif的效果,但是用户体验不好

if(luka(".emo")[0].getAttribute("_logo") == 1) {

creatDiv.className = "user1"; //id title className 可以用这种方式设置,style能设置,但是无法赋值

luka(".phoneContent")[0].insertBefore(creatDiv,luka(".phoneContent")[0].childNodes[0]);

luka(".user1")[0].innerHTML = '

';

luka(".user1")[0].innerHTML += '

'+ luka("#textInput").value +'
';

};

if(luka(".emo")[0].getAttribute("_logo") == 2) {

creatDiv.className = "user2"; //id title className 可以用这种方式设置,style能设置,但是无法赋值

luka(".phoneContent")[0].insertBefore(creatDiv,luka(".phoneContent")[0].childNodes[0]);

luka(".user2")[0].innerHTML = '

';

luka(".user2")[0].innerHTML += '

'+ luka("#textInput").value +'
';

};

/*

这种写法,实现的就是每次都在上一条消息的下面来显示最新消息,这种体验才是正确的

代码应该可以再优化一下,效果还可以做一下实现内容多的时候,滚动条跟着滚动

_childOneDivNmu,_childTwoDivNmu是为了知道第几个元素,不然每一次都在更新第一个元素

if(luka(".emo")[0].getAttribute("_logo") == 1) {

creatDiv.className = "user1"; //id title className 可以用这种方式设置,style能设置,但是无法赋值

luka(".phoneContent")[0].appendChild(creatDiv);

var childNum = parseInt(luka(".phoneContent")[0].getAttribute("_childOneDivNmu"));

//console.log(childNum);

luka(".phoneContent")[0].setAttribute("_childOneDivNmu",childNum+1);

//var childNum = luka("#");

luka(".user1")[childNum].innerHTML = '

';

luka(".user1")[childNum].innerHTML += '

'+ luka("#textInput").value +'
';

};

if(luka(".emo")[0].getAttribute("_logo") == 2) {

creatDiv.className = "user2"; //id title className 可以用这种方式设置,style能设置,但是无法赋值

luka(".phoneContent")[0].appendChild(creatDiv);

var childNum = parseInt(luka(".phoneContent")[0].getAttribute("_childTwoDivNmu"));

//console.log(childNum);

luka(".phoneContent")[0].setAttribute("_childTwoDivNmu",childNum+1);

//var childNum = luka("#");

luka(".user2")[childNum].innerHTML = '

'

luka(".user2")[childNum].innerHTML += '

'+ luka("#textInput").value +'
'

};*/

};

};

}

知识点

if else的运用,初学在js中使用正则表达式

使用insertBefore把元素插入到某个元素之前

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

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

相关文章

LeetCode 1457. 二叉树中的伪回文路径(位运算+递归)

1. 题目 给你一棵二叉树,每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的,当它满足:路径经过的所有节点值的排列中,存在一个回文序列。 请你返回从根到叶子节点的所有路径中 伪回文 路径的数目。 示例 1&…

LeetCode 837. 新21点(动态规划)

文章目录1. 题目2. 解题2.1 暴力超时2.2 优化1. 题目 爱丽丝参与一个大致基于纸牌游戏 “21点” 规则的游戏,描述如下: 爱丽丝以 0 分开始,并在她的得分少于 K 分时抽取数字。 抽取时,她从 [1, W] 的范围中随机获得一个整数作为…

计算机网络划分的标准,计算机网络基础

1.具有统一的网络体系结构、遵循国际标准化协议的计算机网络在第三代网络出现以前各厂家为了霸占市场采用自己独特的技术并开发了自己的网络体系结构网络无法实现不同厂家设备互连这样就阻碍了大范围网络的发展。后来为了实现网络大范围的发展和不同厂家设备的互连1977年国际标…

大型软件是否占用计算机内存,电脑系统开机内存占用多少正常

原标题:电脑系统开机内存占用多少正常正常情况下有多少启动内存?如果使用2G内存,则Win7在启动时基本上可以达到50%以上,运行点程序肯定会达到80%,这是正常的。如果使用4G内存,则Win7…

LeetCode 1267. 统计参与通信的服务器(计数)

1. 题目 这里有一幅服务器分布图,服务器的位置标识在 m * n 的整数矩阵网格 grid 中,1 表示单元格上有服务器,0 表示没有。 如果两台服务器位于同一行或者同一列,我们就认为它们之间可以进行通信。 请你统计并返回能够与至少一…

Informix IDS 11系统料理(918查验)认证指南,第 4 部分: 功能调优(5)

更新统计信息的调优IDS 使用基于本钱的优化器:当优化器确定盘诘规画时,它为每个可以的规画付与一个本钱,然后选择本钱最低的规画。下面是优化器用于确定每个盘诘规画的本钱的一些要素:与每个文件系统会见相干的 I/O 请求的数目 确…

Yakuake 2.8 beta1

Toy Posted in AppsRSSTrackback Yakuake 这个终端模拟器我们已经批评过,它可以将一些异常不错的下场融入到你的终端体验中。本日,该办法推出了 2.8 beta1 版,新增了皮肤经管、全屏情势、以及可将会话别离到多个终端窗口等功用。- Download Y…

怎样用计算机添加文章标题,计算机论文题目怎么定-易指做帮写网

1.相关理论基础分析1.1宠物救助系统理论阐述在很多区域,猫和狗等小动物均处于一种散养的状态,这样一来就使其成为流浪动物,无家可归,在城市的街道上游走。此外,由于流浪猫狗的繁衍速度较快,壮大流浪动物的群…

LeetCode 390. 消除游戏(类似约瑟夫环,找映射规律)

1. 题目 给定一个从1 到 n 排序的整数列表。 首先,从左到右,从第一个数字开始,每隔一个数字进行删除,直到列表的末尾。 第二步,在剩下的数字中,从右到左,从倒数第一个数字开始,每隔…

四川大学计算机学院挑战杯,“挑战杯”四川大学2018-2019年大学生课外学术科技作品竞赛决赛答辩举行...

3月22日下午,“挑战杯”四川大学2018-2019年大学生课外学术科技作品竞赛决赛答辩在望江基础教学楼A座顺利举行。从校赛报名阶段的263支队伍中脱颖而出的108支团队进行了现场PPT陈述和评委问辨。参赛项目包括科技发明类、自然科学论文类、社会哲学调查报告类作品。评…

LeetCode 519. 随机翻转矩阵(哈希)

1. 题目 题中给出一个 n_rows 行 n_cols 列的二维矩阵,且所有值被初始化为 0。 要求编写一个 flip 函数,均匀随机的将矩阵中的 0 变为 1,并返回该值的位置下标 [row_id,col_id]; 同样编写一个 reset 函数,将所有的值都…

迪士尼手机官方专卖东家京破产

迪士尼手机业务一向都在不时的展开,迪士尼品牌各种周边主题手机掉掉了MM们的喜好。上个月脱手脱手,迪士尼在日本推出了特别版的Android智好手机,并举办了大面积的电视告白推行,昨天迪士尼挪动在东京市中心开放了他们的官方实体专…

通过 .NET Framework 中的 XPath 和 XSLT API 方便地操作 XML 数据

本文假设您熟悉 Visual Basic .NET 下载本文的代码: XPathandXSLT.exe (166KB) 摘要 XPath 是一种正在兴起的通用查询语言。通过 XPath,可以在基于 XML 的数据源中识别和处理一组相关的节点。XPath 提供了一个基础结构,它是 .NET Framewo…

测试网络机顶盒的软件,2018网络机顶盒装机必备的几款系统工具,亲测好用

很多用户都喜欢比较网络机顶盒的配置,可是配置固然重要,如果没有好的日常保护,网络机顶盒受损程度也会很大。高配置的网络机顶盒在长时间使用后,也会出现卡顿,运行变慢等问题。今天给大家介绍几款系统工具,…

测试一体机风扇分贝软件,9款小风扇深度横评,风力、噪音测试加拆解,告诉你谁最值得买...

炎热的夏天又又又来了!虽然现在家里、办公室都有空调,但是当我们刚从暴热的室外进入室内时,空调还是很难让我们快速拥有舒爽温度,很多人都会选择一个台式小风扇作为辅助降温产品。但市面上的风扇品牌繁多,怎么才能选择…

计算机摄像头打不开,电脑摄像头打不开、用不了怎么办(操作简单),这几步你要了解...

有时候我们会遇到在开视频时电脑无法打开摄像头,这有可能是摄像头本身就有问题,也有可能是因为权限设置美没有到位,导致摄像头不能打开。今天咱们来解决一下,电脑摄像头无法打开的问题。工具/材料鲁大师或者360驱动大师等可以修改…

fiddler怎么修改服务器返回数据,基于Fiddler实现修改接口返回数据进行测试

方法介绍与比对在测试的过程中,有的需求是这样的,它需要你修改接口返回的数据,从而检查在客户端手机app内是否显示正确,这也算是一种接口容错测试,接口容错测试属于app性能(专项)测试的其中一种。通过Fiddler我们可以有…

LeetCode 886. 可能的二分法(着色DFS/BFS/拓展并查集)

文章目录1. 题目2. 解题2.1 DFS2.2 BFS2.3 并查集1. 题目 给定一组 N 人(编号为 1, 2, …, N), 我们想把每个人分进任意大小的两组。 每个人都可能不喜欢其他人,那么他们不应该属于同一组。 形式上,如果 dislikes[i…

LeetCode 685. 冗余连接 II(并查集)

1. 题目 在本问题中,有根树指满足以下条件的有向图。该树只有一个根节点,所有其他节点都是该根节点的后继。 每一个节点只有一个父节点,除了根节点没有父节点。 输入一个有向图,该图由一个有着N个节点 (节点值不重复1, 2, …, N…

红黑树的c++完整实现源码

红黑树的c完整实现源码 作者:July、saturnman。时间:二零一一年三月二十九日。出处:http://blog.csdn.net/v_JULY_v。声明:版权所有,侵权必究。------------------------------------------- 前言: 本人…