教学项目二十四 JavaScript中光标特效网页设计
【教学内容】
讲解JavaScript中几种光标特效网页设计
【教学目的】
使学生学会设计光标特效网页
【教学重点】
文字特效的处理思想
【教学难点】
理解文字特效的处理方法
【教学方式】
讨论式、案例分析式、练习式相结合
【教学参考】
1.<<JavaScript 入门与提高>> 杨浩著 清华大学出版社
2.<<Internet 网页工场>> Wittime工作室 重庆出版社
3.<<JavaScript从入门到精通>> 电脑报社出版
4.<<JavaScript编程起步>> 人民邮电出版社
【教学过程】
【新课】
案例设计
设计网页,实现图片跟随光标特效。
<html>
<body>
<script language="JavaScript">
var newtop=0
var newleft=0
if (navigator.appVersion.indexOf("MSIE") != -1) {
layerStyleRef="layer.style.";
layerRef="document.all";
styleSwitch=".style";
}
function doMouseMove() {
layerName = 'iit'
eval('var curElement='+layerRef+'["'+layerName+'"]')
eval(layerRef+'["'+layerName+'"]'+styleSwitch+'.visibility="hidden"')
eval('curElement'+styleSwitch+'.visibility="visible"')
eval('newleft=document.body.clientWidth-curElement'+styleSwitch+'.pixelWidth')
eval('newtop=document.body.clientHeight-curElement'+styleSwitch+'.pixelHeight')
eval('height=curElement'+styleSwitch+'.height')
eval('width=curElement'+styleSwitch+'.width')
width=parseInt(width)
height=parseInt(height)
if (event.clientX > (document.body.clientWidth - 5 - width))
{
newleft=document.body.clientWidth + document.body.scrollLeft - 5 - width
}
else
{
newleft=document.body.scrollLeft + event.clientX
}
eval('curElement'+styleSwitch+'.pixelLeft=newleft')
if (event.clientY > (document.body.clientHeight - 5 - height))
{
newtop=document.body.clientHeight + document.body.scrollTop - 5 - height
}
else
{
newtop=document.body.scrollTop + event.clientY
}
eval('curElement'+styleSwitch+'.pixelTop=newtop')
}
document.onmousemove = doMouseMove;
</script>
<script language="javascript">
if (navigator.appVersion.indexOf("MSIE") != -1) {
document.write('<div ID=OuterDiv>')
document.write('<img ID=iit src="rabbit.gif" STYLE="position:absolute;TOP:0pt;LEFT:0pt;Z-INDEX:2;visibility:hidden;">')
document.write('</div>')
}
</script>
</body>
</html>
设计案例:
设计文字跟踪光标效果的特效网页。
程序代码如下:
<html>
<head>
<style>
.spanstyle {
position:absolute;
visibility:visible;
top:-50px;
font-size:10pt;
font-family:Verdana;
font-weight:bold;
color:black;
}
</style>
<script>
var x,y
var step=20
var flag=0
// Your snappy message. Important: the space at the end of the sentence!!!
var message="湖北职院 百年名校 银领人才摇篮"
message=message.split("")
var xpos=new Array()
for (i=0;i<=message.length-1;i++) {
xpos[i]=-50
}
var ypos=new Array()
for (i=0;i<=message.length-1;i++) {
ypos[i]=-50
}
function handlerMM(e){
x = (document.layers) ? e.pageX : document.body.scrollLeft+event.clientX
y = (document.layers) ? e.pageY : document.body.scrollTop+event.clientY
flag=1
}
function makesnake() {
if (flag==1 && document.all) {
for (i=message.length-1; i>=1; i--) {
xpos[i]=xpos[i-1]+step
ypos[i]=ypos[i-1]
}
xpos[0]=x+step
ypos[0]=y
for (i=0; i<message.length-1; i++) {
var thisspan = eval("span"+(i)+".style")
thisspan.posLeft=xpos[i]
thisspan.posTop=ypos[i]
}
}
else if (flag==1 && document.layers) {
for (i=message.length-1; i>=1; i--) {
xpos[i]=xpos[i-1]+step
ypos[i]=ypos[i-1]
}
xpos[0]=x+step
ypos[0]=y
for (i=0; i<message.length-1; i++) {
var thisspan = eval("document.span"+i)
thisspan.left=xpos[i]
thisspan.top=ypos[i]
}
}
var timer=setTimeout("makesnake()",30)
}
</script>
</head>
<body onLoad="makesnake()" style="width:100%;overflow-x:hidden;overflow-y:scroll">
<script language=javascript>
<!-- Beginning of JavaScript -
for (i=0;i<=message.length-1;i++) {
document.write("<span id='span"+i+"' class='spanstyle'>")
document.write(message[i])
document.write("</span>")
}
if (document.layers){
document.captureEvents(Event.MOUSEMOVE);
}
document.onmousemove = handlerMM;
// - End of JavaScript - -->
</script>
</body>
</html>
案例设计三、
设计网页,打开网页后禁止使用鼠标左右键。
程序代码如下:
<html>
<head>
<script language=JavaScript>
function click()
{
if (event.button==1)
{alert("对不起,禁止使用左键");}
if (event.button==2)
{alert("对不起,禁止使用右键");}
}
document.onmousedown=click;
</script>
</head>
</html>
案例设计四、设计网页,计算用户停留时间。
程序代码如下:
<html>
<body onUnload=stay()>
<script language="Javascript">
<!--
pageOpen = new Date();
function stay() {
pageClose = new Date();
minutes = (pageClose.getMinutes() - pageOpen.getMinutes());
seconds = (pageClose.getSeconds() - pageOpen.getSeconds());
time = (seconds + (minutes * 60));
time = (time + " 秒钟");
alert('您在这儿停留了' + time + '.欢迎下次再来!');
}
//-->
</script>
<p>测试停留时间...
</body>
</html>
分析:
pageOpen = new Date();
定义一个新的日期对象,纪录开始浏览页面时间。
function stay()
定义一个函数。
pageClose = new Date();
定义一个新的日期对象,纪录结束浏览页面时间。
minutes = (pageClose.getMinutes() - pageOpen.getMinutes());
“分钟”变量等于结束时间的分钟数减去开始时间的分钟数。
seconds = (pageClose.getSeconds() - pageOpen.getSeconds());
“秒数”变量等于结束时间的秒数数减去开始时间的秒数数。
time = (seconds + (minutes * 60));
时间变量等于“秒数”变量加上“分钟”变量乘以60,即变为以秒纪录。
time = (time + " 秒钟"); alert('您在这儿停留了' + time + '.欢迎下次再来!');
alert()是JavaScript的窗口对象方法,其功能是弹出一个具有OK对话框并显示()中的字符串 ,告诉在此页面停留的时间。
onUnload=stay()
页面卸载的时候,调用stay()函数。
【课后小结】
本节介绍了光标特效的几个实例,要求能够读懂相应的源代码,并能通过修改代码实现用户要求的光标特效。