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,一经查实,立即删除!

相关文章

Android开发环境搭建

刚刚接触Android,发现学的java都忘得差不多了~~分享一下android开发环境的搭建。 1.准备: 1)java sdk1.6 http://www.oracle.com/technetwork/java/javase/downloads/index.html 2)android sdk-windows http://developer.android.com/sdk/index.html 3)…

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

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

傅立叶变换计算机网络,中南大学 计算机网络与信号处理考试卷

计算机网络复习习题1一.选择题1、采用全双工工作,数据的传输方向为:()A.双向B。单向C。双向,但不能同时传输D。都不对2、BSC规程采用的成帧方式为()A.字节记数法B。使用字符填充的首尾定界符法C&#xff0c…

LeetCode 1458. 两个子序列的最大点积(动态规划,类似编辑距离)

1. 题目 给你两个数组 nums1 和 nums2 。 请你返回 nums1 和 nums2 中两个长度相同的 非空 子序列的最大点积。 数组的非空子序列是通过删除原数组中某些元素(可能一个也不删除)后剩余数字组成的序列,但不能改变数字间相对顺序。 比方说&a…

编译html成qch,在应用程序编译过程中运行qcollectiongenerator

我一直在研究一个名为RoboJournal的程序很长一段时间。下一版本包含完整的文档;每当用户按F1或单击RoboJournal程序中的帮助项目时,帮助文件将显示在Qt助手中(比简单地打开浏览器窗口以获得一些联机文档更加方便)。在应用程序编译过程中运行qcollectiongenerator在其…

LeetCode 826. 安排工作以达到最大收益(map)

1. 题目 有一些工作:difficulty[i] 表示第i个工作的难度,profit[i]表示第i个工作的收益。 现在我们有一些工人。worker[i]是第i个工人的能力,即该工人只能完成难度小于等于worker[i]的工作。 每一个工人都最多只能安排一个工作&#xff0c…

Unparsed aapt error(s)! Check the console for output

现象:eclipse项目上有红叉,却找不到哪个文件有错。 eclipse中有“problems”的窗口,一般和“console”并列,上面会找到红叉叉的问题所在(Unparsed aapt error(s)! Check the console for output") 原因…

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

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

sql 查看Oralce 数据库连接状态

select sid,serial#,username,program,machine,status from v$session order by username转载于:https://www.cnblogs.com/xinlang/archive/2011/02/28/1966819.html

LeetCode 793. 阶乘函数后K个零(二分查找)

1. 题目 f(x) 是 x! 末尾是0的数量。(回想一下 x! 1 * 2 * 3 * ... * x,且0! 1) 例如, f(3) 0 ,因为3! 6的末尾没有0;而 f(11) 2 ,因为11! 39916800末端有2个0。给定 K,找出多…

海量数据库解决方案2011030101

【摘抄】索引的真正意义:索引是优化器在制定执行计划时,为了寻找最优化的路径而使用的战略要素。类型:B-Tree索引位图索引(Bitmap)B-Tree聚簇索引哈希聚簇索引反向键索引位图连接索引基于自定义函数的索引B-Tree索引最主要的特征就是不论表中…

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

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

LeetCode 399. 除法求值(图的DFS搜索)

1. 题目 给出方程式 A / B k, 其中 A 和 B 均为用字符串表示的变量, k 是一个浮点型数字。 根据已知方程式求解问题,并返回计算结果。如果结果不存在,则返回 -1.0。 示例 : 给定 a / b 2.0, b / c 3.0 问题: a / c ?, b / a ?, a / …

vbs调用WebService -- 使用xmlhttp

具体调用的代码: 向指定的文件写入文本, 并指定是否是添加内容 Function Z_WriteFile(sFileName, sText, bAppend)Dim fs, fso, iomodeif bAppend True Theniomode 8 ForAppendingelseiomode 2 ForWritingend ifset fs CreateObject(…

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

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

LeetCode 990. 等式方程的可满足性(并查集)

1. 题目 给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为 4,并采用两种不同的形式之一:"ab" 或 "a!b"。 在这里,a 和 b 是小写字母(不一定不同&#xf…

breakcontinue

break 在循环语句的循环体中,用来提前结束当前循环体,执行循环体后面的语句。 continue 跳过循环体中continue后面尚未执行的语句,直接进行下一次是否执行循环的判定。即只结束本次循环。转载于:https://www.cnblogs.com/happykakeru/archive…

司爱侠计算机英语教程第五版翻译,计算机英语教程 教学课件 作者 司爱侠 张强华 参考译文.doc...

附录1 参考译文Unit 1PC的基本部件1.处理器处理器是计算机的大脑。它也被称为微处理器或CPU。它解释从其它设备接收的全部指令,并执行这些指令,如让打印机打印。一般来讲,处理器的速度越快,计算机通常能够执行指令和任…

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

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

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

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