利用前端技术实现随机数字键盘的方法
2018-12-21谭秋平余开朝
谭秋平,余开朝
利用前端技术实现随机数字键盘的方法
谭秋平,余开朝
(昆明理工大学机电工程学院,云南 昆明 650504)
随着互联网技术的发展,各种企业以及个人都相继建立起网站以实现在线沟通和宣传的作用,由此对网页质量的要求也越来越高。网页质量包括网页配色,布局,用户体验度,交互性以及特效等。本文中所展示的随机数字键盘在网页中也有着广泛的应用。如在输入密码时,键盘上每次刷新的数字随机排列顺序能使用户在不同时间输入相同密码点击的按钮位置不同,从而保证了安全性和用户隐私。在HTML、CSS、JavaScript三大前端语言的支持下,本文中的随机数字键盘得以实现。
随机数字键盘;前端;HTML;CSS;JavaScript
0 引言
Web前端开发技术是基于网页制作诞生的一种全新的开发技术,具有浓厚的时代特征,与网页制作技术相比,Web前端开发技术有着显著的差异,前者只会显示静态东西,进入到Web 2.0时代之后,人们对于网页提出了更高的要求,传统网页制作技术开始难以满足人们的需求,而Web前端开发技术得到了普遍性的应用和推广。随着Web技术的不断进步和网页技术普及,各式各样的Web设计将受到越来越多的Web设计师的青睐[1]。随着互联网技术的发展,各种企业以及个人都相继建立起网站以实现在线沟通和宣传的作用,由此对网页质量的要求也越来越高。网页质量包括网页配色,布局,用户体验度,交互性以及特效等。随机数字键盘有数字键盘的基本功能,即点击数字按钮时文本框中出现对应的数字。还有重置键盘数字排布的功能,即点击重置按钮后键盘上的十个数字会以乱序的方式进行重新分布,以体现随机的效果。目前网页中的随机数字键盘大多用于信息安全方面[2-3],比如密码输入。而现有的数字键盘有以下两个问题:一是数字键盘没有重置功能,用户输入密码时每次都点击相同的位置,这样容易形成信息安全隐患;二是可以使用乱序数字键盘输入但没有一键重置键盘数字的功能,用户想重置数字时只能退出输入后重新打开键盘,这无疑降低了用户体验度。本文中展示的数字键盘解决了以上两个问题,使得用户可以使用随机键盘输入数字的同时也可以随时一键重置键盘上的数字分布,即能保护用户信息的安全性,防止隐私泄露,也可以增强用户在网页使用中的交互体验性。
在HTML、CSS、JavaScript三大前端语言的支持下,本文中的随机数字键盘得以实现。其中HTML搭建总体框架,CSS用来控制网页外观的规则,增加网页的多种外观效果,包括透明、阴影等,吸引更多体验用户进行访问[4]。JavaScript则完成实现页面效果的基本算法,JavaScript文件还保证了页面布局文件与算法代码的分离。一直以来Javascript语言已经是前端技术的核心语言。并且,近些年Javascript开发服务器端程序也被企业广泛的应用[5]。通过HTML、CSS以及JavaScript前端三大件的支持,可实现网页中大多数的页面效果,也包括本文中的随机数字键盘的实现。
1 随机数字键盘实现原理
在HTML文件中建立div容器,专门接收随机数字按钮。在生成数字按钮的算法中,先建立一维数组,其中数组元素依次为0到9十个数字,按从小到大的顺序排列。利用for循环和Math.random()方法将数组中的数字随机提取出来并无遗漏地放在新数组中,使得新数组中的元素为0到9十个数字且为乱序排列。再次利用循环新建input元素,并将该元素的样式属性设置为button,新数组中的元素依次设为按钮的value值,最后将新建立好的十个数字按钮作为div的子元素放入容器中,形成最终的随机数字键盘。点击数字按钮后即可将对应数字加到文本框已有的value值之后,实现所有被点击的数字依次出现在文本框中,而将文本框的value值设为空,可实现清除数字的效果。刷新页面时键盘上的数字会重新随机排序,据此可实现重置键盘的效果。
2 随机数字键盘效果概述
该效果从上而下共分为三部分:文本框、清除和重置按钮以及数字键盘。每次打开时键盘上的数字以乱序排列达到随机效果。点击键盘中的任意按钮,文本框中出现相应的数字,继续点击数字按钮后文本框中的数字不会被覆盖并会接着显示在文本框中。点击清除按钮,文本框中的内容会被清除。点击重置按钮,键盘上的数字会被重新分布排列。
3 编程语言介绍
3.1 HTML标准
HTML(Hyper Text Mark-up Language)即超文本标记语言或超文本链接标示语言,它主要用于编写网页,由标记(Tag)与属性(Attribute)所组成,浏览器只要看到HTML标记与属性就能将其解析成网页,所以HTML也可以说是组合成一个文本文件的一系列标签。HTML语言的目的是为了能让所有的用户都能得到一致的信息,不会因硬件、软件、网络基础设施、母语、文化、地理位置等而有任何分别。
3.2 CSS样式
CSS的英文全称是Cascading Style Sheets,中文翻译为“层叠样式表”,简称样式表,它是一种制作网页的便捷技术。它的主要用途如下:可以轻松地控制页面的布局;使页面的字体变得更漂亮,更容易编排,使页面真正赏心悦目;你可以将许多网页的风格格式同时更新,不用再一页一页地修改;以前一些非得通过图片转换实现的功能,现在只要用CSS就可以轻松实现,从而可以更快地下载页面;在几乎所有的浏览器上都可以使用。正是层叠样式表卓越的功能使得它在现在网页设计中得到了广泛的推广与应用。
3.3 JavaScript技术
JavaScript是Web上的一种功能强大的编程语言,用于开发交互式的Web页面。它不仅可以直接应用于HTML文档以获得交互效果或其他动态效果,而且可以运行于服务器端,从而替代传统的CGI程序。JavaScript是一种脚本编写语言,也是一种解释性语言。JavaScript采用小程序段的方式实现编程,与HTML代码结合在一起,通常由浏览器解释执行,提供了一个简易的开发过程。JavaScript技术最为优质的特征在于能够利用很小的程序完成大量任务,不需要对高性能计算机以及Web服务器通道进行应用,而在软件方面则只需要一个浏览器以及字处理软件即可,可以制作出只依靠HTML所无法呈现出的非常优质的动态视觉效应。
4 随机数字键盘具体实现
4.1 HTML布局
本例中HTML布局分为四部分,第一个input标签的类型为text,即为文本框,类名为input,id名为txt。第二和第三个input标签类型均为button按钮。第一个button按钮作用为清除文本框中的内容,类名为clear,按钮上的字为“清除”,点击该按钮后执行clearnum()函数;第二个button按钮作用为重置数字键盘,类名为new,按钮上的字为“重置键盘”,点击该按钮后执行cz()函数。最后一部分为数字键盘分布,设置div容器,通过JavaScript中的算法将随机数字键盘的按钮插入到容器中,div容器的类名为div,id名为div1。
4.2 CSS样式
input{
width: 30px;
height: 30px;
border-radius: 20px;
margin: 2px;
outline: none;
}
.div{
width: 120px;
height: 150px;
padding: 10px;
text-align: center;
background: rgba(180,90,30,0.3);
border: 2px solide orange;
}
.inp{
width: 130px;
height: 20px;
}
.clear,.new{
width: 60px;
font-size: 12px;
}
首先设置input标签的样式,这里的input不仅包含HTML中已经设置的input标签,也包括要插入div容器中数字键盘button所在的input标签。input标签的CSS样式为:宽高均为30 px,用border- radius设置圆角边框,四个角的圆角半径均为20 px,外边距margin为2 px,利用outline: none;清除元素周围的轮廓样式。
其次设置div容器的样式。div容器宽为120 px,高为150 px,内边距为10 px,text-align: center;设置容器中的元素居中显示,在背景颜色的设置中,rgb分别为180、90、30,透明度为0.3,容器的边框属性为粗细2 px,实线且颜色为橙色。
接着对显示数字的文本框进行设置,宽为130 px,高为20 px。
最后设置清除和重置键盘两个按钮,宽为60 px,利用 font-size设置button上的字体大小为12 px。
4.3 JavaScript算法
var txt=document.getElementById('txt');
var div1=document.getElementById('div1');
/*用getElementById()方法返回对拥有指定 id 的第一个对象的引用。定义变量txt、div1,分别用来接收id="txt"以及id="div1"对象的值,即获取文本框的值并赋值给变量txt,获取div容器中的值并赋值给变量div1*/
function getRandom(){
var num=[0,1,2,3,4,5,6,7,8,9];
var rans=[];
for(var i=0;i<10;i++){
var n=Math.floor(Math.random()*(10-i));
rans.push(num[n]);
num.splice(n,1);
}
return rans;
}
/*创建函数,并命名为getRandom(),该函数的作用为生成随机数,并将生成的随机数放在数组中。先定义一个一维数组命名为num,其中的元素依次为0至9十个数字。再定义一个空数组名为rans。利用for循环实现向rans数组中随机插入0至9数字且不重复。具体方法如下, Math.random()*(10-i)为取数字i到10中的任意一数,用Math.floor ()方法对该随机数进行向下取整,并把取得的该随机整数赋值给变量n。num[n]即取得num[]数组中下标为n的值,并用push()方法将该值插入rans数组中,成为数组的新元素。接着用splice()方法,删除num[]数组中值为n的元素,因为在num[]数组中下标值与所对应的元素值相同,num.splice(n,1);删除从下标n开始,长度为1的元素,即删除num[]数组中的n元素。这样可保证每次得到的随机数不会出现重复,共循环10次,即可将0到9十个数字随机且无遗漏地插入rans[]数组中。最后返回rans[]数组。*/
function creatkey(){
var ranarr=getRandom();
var btnarr=[];
for(var i=0;i var btn=document.createElement('input'); btn.setAttribute('type','button'); btn.value=ranarr[i]; btn.onclick=btnclick; btnarr.push(btn); div1.appendChild(btn); } } /*创建函数,并命名为creatKey(),该函数的作用为创建随机数按钮。将getRandom()函数的返回值即rans数组传递给变量ranArr,使得ranArr为新的数组,在定义一个空数组命名为btnArr。利用for循环实现将各个数字button放置在div容器中。具体方法如下,用creatElement()方法建立元素节点,并将返回的Element对象赋值给新定义的变量btn。setAttribute()方法添加指定的属性,并为其赋指定的值。所以btn.setAttribute('type','button');即为btn变量所指的对象添加type属性,并且属性值设为button类型。i为控制for循环中循环次数的变量,在ranArr[i]中i也可作为数组下标,并将ranArr[]数组中对应下标的元素传递给btn对象作为value值。给btn对象添加onclick鼠标点击事件,点击数字按钮时执行btnclick()函数,可完成将点击到的数字添加到文本框。将btn对象用push()方法添加到btnArr[]数组中,最后,用appendChild()方法在div容器中加入新的子节点,即用div1.appendChild(btn)实现将btn对象作为新的子节点插入id="div1"的容器中。for循环共循环10次,即可保证每一个数字所对应的button按钮都可作为子节点添加到div中。例如一次随机按钮添加后HTML代码如下所示: < input type="button" value="1" > < input type="button" value="7" > < input type="button" value="0" > < input type="button" value="2" > < input type="button" value="5" > < input type="button" value="3" > < input type="button" value="6" > < input type="button" value="9" > < input type="button" value="8" > < input type="button" value="4" >
creatkey();
/*执行creatKey()函数*/
function btnclick(){
txt.value+=this.value;
}
/*创建函数,并命名为btnclick(),该函数作用为将点击到的数字按钮对应的值显示在文本框中。txt为用getElementById()方法获取到的文本框对象,文本框中的值即为txt.value。因该函数creatkey()函数中由btn.onclick点击事件执行,所以点击时获取被点按钮对应的value值并且用txt.value+=this.value;实现对文本框的value值添加新值,所点击按钮的数字可以依次显示。*/
function clearnum(){
txt.value='';
}
/*创建函数,并命名为clearnum(),该函数作用为将文本框中的内容清空。即将文本框的值设为空,即txt.value='',可实现清空文本框的效果。*/
function cz(){
window.location.reload();
}
/*创建函数,并命名为cz(),该函数的作用为将数字键盘的按钮重新分布。原理为重新加载页面,刷新页面后即可在上述函数中得到新的随机数组,从而实现键盘上数字按钮的重新分布。用reload()方法实现,即该函数执行window.location.reload();可实现页面重新加载。*/
5 结语
本文使用HTML、CSS、JavaScript前端三大件实现了可随机排列的数字键盘,并且具有清除所选数字的功能。在JavaScript设置的函数中,调用生成随机数的函数来选择数组中的元素,并且插入到新的数组中。将新数组中已经随机排列好的数字逐一放入页面展示键盘的容器中。通过这样的思路实现了数字键盘的随机排列。
随着web前端的发展,人们对网页效果的要求也会越来越高。当前,Web前端开发已经成为研究热点,为了满足不同站点的可用性要求,并且提高产品的用户体验,各种以“用户体验”为向导的团队迅速发展,并且开发团队中的职位分工也更加明确,如交互设计师、用户体验分析师、前端开发工程师、网页设计师等主要设计开发应用的前端。对于Web前端开发者来说,需要掌握的技术也日趋复杂,例如熟悉W3C标准,深刻理解Web语义化、表现与数据分离等;了解后台开发、算法、数据结构等;熟悉页面架构和布局,精通CSS,HTML等网页制作技术,精通Javascript等Web开发技术。随着技术的发展,前端开发技术将会不断完善,HTML5,CSS 4.0等技术将会成为前端开发的主流技术,即使HTML5成为现实,也将会有更多的前端开发技术出现,前端的发展也会出现一个又一个新的高潮。
[1] 臧进进, 鄂海红. 基于响应式Web设计的网页生成系统研究与实现[J]. 软件, 2015, 36(6): 37-41
[2] 王永建, 徐杨, 王迅, 等. 面向平安城市的视频监控前端呼叫设计研究[J]. 软件, 2016, 37(4): 101-106
[3] 曾程胜. 实现Javascript-Delphi高强度加密传输安全[J]. 软件, 2018, 39(1): 173-179
[4] 周芷仪, 陈婷. 浅谈网页中实现图片轮播图效果的方法[J]. 软件, 2018, 39(10): 187-191.
[5] 荣艳冬. 以岗位需求为导向的Javascript课程构建[J]. 软件, 2015, 36(06): 18-20.
[6] 杜涛. CSS技术在网页设计中的应用与优化[J]. 长治学院学报, 2007(05): 35-37.
[7] 张云苑. JavaScript在动态网页设计中的应用[J]. 科技信息, 2007(05): 23-24.
[8] 王晖媛. 浅谈HTML[J]. 计算机光盘软件与应用, 2010, (11): 157-157.
[9] 张萃. Web前端开发技术与优化措施[J]. 中国管理信息化, 2017, 20(22): 153-154.
[10] 袁婷. 浅谈Web前端开发[J]. 无线互联科技, 2017(02): 35-36.
[11] 高梓健. JavaScript技术在网页中的应用分析[J]. 电脑迷, 2018(01): 11.
A Method of Realizing Random Numeric Keypad by Using Front-end technology
TAN Qiu-ping, YU Kai-chao
(College of Mechanical and Electrical Engineering, Kunming University of Science & Technology, Kunming 650500, China)
With the development of Internet technology, all kinds of enterprises and individuals have set up websites to realize online communication and publicity, thus the right implementation of the quality of the web pages is getting higher and higher than ever. Web page quality includes web color matching, layout, user experience, interaction and special effects. The random numeric keypad displayed in this paper is also widely used in web pages. For example, when entering a password, the keyboard every time the number appears in a random order to enable users to enter the same password at different times click on the button position is different, thus ensuring security and user privacy. With the support of HTML, CSS and JavaScript, the random number keyboard in this paper is realized.
Random Numeric Keypad; Front-end; HTML; CSS; JavaScript
TP311.1
A
10.3969/j.issn.1003-6970.2018.12.025
谭秋平(1994-),男,研究生在读,昆明理工大学,主要研究方向:生产及制造系统工程,服务运作系统工程以及企业信息化工程;余开朝(1962-),男,教授,昆明理工大学,主要研究方向:生产及制造系统工程,服务运作系统工程以及企业信息化工程。
谭秋平,余开朝. 利用前端技术实现随机数字键盘的方法[J]. 软件,2018,39(12):107-110