JavaScript 动态网页实例 —— 图像运动与事件

        除图像显示外,图像运动和对事件的响应也是常见的图像效果。本章介绍图像的运动与图像对事件的响应。其中,图像事件包括:图像的拖动、按钮控制图像的显示、图像感应鼠标等;图像运动包括:图像的滑动、图像的花环效果、图像的流星效果、图像的逐渐变大、图像分块飞行和图像分条飞行。其中,花环效果和流星效果代码中并不包含图像,但缤纷多彩,可给人图像的视觉效果,因此,也在本章进行介绍。

图像拖动

本节给出一段图像拖动的示例代码,运行该程序后,页面出现两幅图像,使用鼠标拖动其中的一幅图像,可以将其在窗口中拖动。

要点

本节代码主要使用了onmouseMove事件和event.button属性,主要功能和用法如下。

  • 当鼠标移动过页面上某个元素时,onmouseMove 事件会被触发。该事件可以调用相应的函数,作为其事件处理函数。函数中的内容可以是任意合法的JavaScript代码。
  • event.button 属性表示鼠标按键。取值为1时表示鼠标左键,取值为2时表示鼠标右键。可以使用“event.button--1”或“event.button-2”判断鼠标的哪个按键被按下。
<script language="JavaScript">
<!--
function moveImage()
{
if(window.event.button!=1){
return;
}
with(window.event.srcElement.style){
//重新设置图像在浏览器中的位置(x、y的坐标)
pixelLeft=window.event.x-236/2-document.all.ImageDiv.offsetLeft;
pixelTop=window.event.y-118/2-document.all.ImageDiv.offsetTop;
}
window.event.returnValue=false;  //取消系统拖动事件
}
//-->
</script>

分析

  • (1)程序首先建立了一个<div>,其中包含两个<img>元素。第二个<img>元素增加了onmouseMove事件,该事件调用函数moveImage(),实现对图像的移动。
  • (2)函数moveImage()的功能是响应onmouseMove 事件,对图像进行移动。在函数中首先使用一个if语句对用户的按键进行判断,如果按下的不是鼠标左键,则不会作出响应。随后,使用一个 with语句,重新设置图像在浏览器中的位置(x、y的坐标)。
  • (3)函数的最后,使用“window.event.returnValue=false;”将事件的返回值置为false,从而取消该事件。

按钮控制

本节给出一段按钮控制图像的示例代码。运行该程序后,页面出现两幅图像,使用鼠标拖动其中的一幅图像,可以将其在窗口中拖动。

要点

本节代码主要使用了onclick事件和image对象的src属性,主要功能和用法如下。

  • 当鼠标左键单击页面上的某个元素时,onclick事件会被触发。该事件可以调用相应的函数,作为其事件处理函数。函数中的内容可以是任意合法的JavaScript代码。onclick是最常用的事件,可应用于大部分可显示元素,在正中还可应用于<applet>和<font>元素。
  • 将一幅图像的名称赋值给image 对象的 src 属性,图像就会被载入到该对象中,因此,可以使用 image 对象来缓存图像,也就是不将该图像下载到屏幕上,而是在需要时可以将其立即显示出来。使用这种方法,可以在 Web 页面中带有图像时节省很多下载时间。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>图像演示</title>
</head>
<body>
<center>
<form name="form1">
<img name="img1" border="0" src="图像拖动2.jpg" width="295" height="224">
<br><br>
<!--通过将按钮的onclick事件绑定在ChangeImage()函数上实现图像变换-->
<input type=button value="改变图像" onclick="ChangeImage()">
</form>
</center>
</body>
<script language=javascript>
<!--
function ChangeImage()
{

document.form1.img1.src="图像拖动1.jpg";  //通过name引用图像的src属性

}
//-->
</script>
</html>

分析

  • (1)程序建立了一个名为form1的<form>表单,其中包含一幅名为imgl 的图像,以及一个值为“改变图像”的按钮,并为按钮添加onclick事件,该事件调用Changelmage( )函数,完成图像的替换。
  • (2)函数Changelmage()非常简单,其功能是改变要显示的图像。通过为“document.form1.imgl.src”重新赋值实现。

感应鼠标

本节给出一段感应鼠标的示例代码,当鼠标移动到图像上时,图像发生变化;当鼠标离开图像时,图像再次发生变化。

要点

本节代码主要使用了onmouseover事件和onmouseout事件,其主要功能和用法如下。

  • HTML 支持对绝大多数元素进行事件绑定,这些绑定通常作为元素的属性使用,例如onclick与 onmouseover,可以使用等号与 JavaScript 进行连接。当与之绑定的对象有事件发生时,就会执行相应的JavaScript代码。
  • onmouseover 事件,当鼠标移动过某个元素时被触发。可应用于大部分可显示元素,在中还有<applet>、<font>,在Netscape Navigator 中还有<ilayer>、<layer>。
  • onmouseout事件,当鼠标移开某个元素(鼠标已不在元素上方)时被触发。可应用于大部分可显示元素,在正中还有<applet>、<font>,在NetscapeNavigator中还有<ilayer>、<layer>。
<script type="text/javascript">
<!--
function preloadImage(url)
{   // 预载图像:URL
  var i = new Image();
  i.src = url;
  return i;
}
if (document.images)
{  // 预载图像:name
  var homeon = preloadImage("感应鼠标2.jpg");
  var homeoff = preloadImage("感应鼠标3.jpg");
  var productson = preloadImage("感应鼠标1.jpg");
  var productsoff = preloadImage("感应鼠标4.jpg");
}
function mouseOn(imgName)
{
  if (document.images)
    document[imgName].src = eval(imgName + "on.src");//鼠标指向时替换图像
}
function mouseOff(imgName)
{
  if (document.images)
    document[imgName].src = eval(imgName + "off.src"); //鼠标离开时再次替换
}
//-->
</script>

分析

  • (1)程序首先建立了两个超级链接,并分别为其添加onmouseover事件(调用mouseOn()函数)和onmouseout事件(调用mouseO()函数)。两个超级链接中分别加入一幅图像,也就是最初载入的图像。
  • (2)函数 mouseOn(imgName)和函数 mouseOf(imgName)完成新图像的载入。分别通过将该图像的 src 属性设置为新的图像实现。

花环效果

本节给出一段花环效果的示例代码。运行该程序后,页面出现一个转动的花环,该花环一边转动,一边在页面内漂移。

要点

本节代码主要使用了 Math 对象的sin(n)方法和cos(n)方法、Style 对象的 glow 属性、Window对象的setTimeout()方法,主要功能和用法如下。

  • Math 对象用于进行属性运算。其属性是数学中一些常见的常数值。在 Math 对象的方法中,除了 random()之外的所有方法都需要一个或几个参数。典型的是三角函数在作为一个参数的值上进行操作,其他参数决定传递的参数中哪一个是最大值或最小值。
  • Math.sin(n)方法和 Math.cos(n)方法用于产生n的正弦值和余弦值。其中的参数n为弧度值。
  • Style 对象的 glow 属性用于为环绕对象内容边缘添加辉光制作发热效果,辉光将出现在对象边界内的内容的最外轮廓之外。假如对象内有文本而无背景和图片,则每个文本字符将会被辉光环绕;假如对象内有背景或图片,则整个对象容器会被辉光环绕;假如对象的子对象定位超出了对象边界,则仅仅在对象容器内的内容会被辉光环绕。
  • Window对象支持一些设置计时器的方法,用于执行特定函数。这些方法包括setTimeout()和clearTimeout( )。
  • setTimeout()方法的功能是设置一个超时,以便在将来的某个时间触发某段代码的运行。基本语法是“timerld=setTimeout(要执行的代码,以毫秒为单位的时间);”。其中,“要执行的代码”可以是一个函数,也可以是其他 JavaScript语句;“以毫秒为单位的时间”指代码执行前需要等待的时间,即超时时间。
  • 可以在超时事件未执行前中止该超时设置,使用Window 对象的 clearTimeout()方法实现。其语法为“clearTimeout(timerld)”。
<script language=&

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

window wsl2的ubuntu如何配置代理获取docker image

最近两天&#xff0c;docker pull一直下不来docker image, 研究了下可以通过代理pull, 我的是window电脑下的linux子系统wsl2, 装的是ubuntu跑docker. # 创建/etc/systemd/system/docker.service.d路径 sudo mkdir -p /etc/systemd/system/docker.service.d # 创建 http-proxy…

借助ChatGPT快速仿写一篇优质论文,无痛仿写、完美创作

大家好&#xff0c;感谢关注。我是七哥&#xff0c;一个在高校里不务正业&#xff0c;折腾学术科研AI实操的学术人。可以添加我&#xff08;yida985&#xff09;交流学术写作或ChatGPT等AI领域相关问题&#xff0c;多多交流&#xff0c;相互成就&#xff0c;共同进步 在学术写…

汽车数据应用构想(三)

上期说的&#xff0c;用数据去拟合停车信息的应用&#xff0c;那么类似的POI信息相关的场景其实都可以实现。今天讲讲用户使用频率也很高的加油/充电场景。 实际应用中&#xff0c;在加油场景中用户关心的通常还是价格。无论是导航还是各种加油APP/小程序&#xff0c;都已经很…

【云岚到家】-day02-1-区域服务后续开发及完善

【云岚到家】-day02-1-区域服务后续开发及完善 1 区域服务后续开发1.1 添加区域服务1.1.1 接口定义1.1.1.1 接口设计1.1.1.2 接口定义-json 1.1.2 接口开发1.1.2.1 mapper1.1.2.2 service1.1.2.3 controller 1.1.3 测试 1.2 修改价格1.2.1 接口定义1.2.1.1 接口设计1.2.1.2 接口…

Git发布正式

一般我们开发都是在测试环境开发&#xff0c;开发完成后再发布到正式环境。 一.分支代码合并到主分支1.首先切换到自己的分支(比如分支叫&#xff1a;dev)git checkout dev2.把本地分支拉取下来git pull 或者 git pull origin dev3.切换到主分支mastergit checkout master4.更新…

地图商家数据怎么查看?揭秘采集软件工作原理!

地图商家数据怎么查看&#xff1f;其实主要就是两种方法&#xff1a; 1. 直接使用地图服务提供的API&#xff1a;大多数地图提供商&#xff08;如Google地图&#xff0c;百度地图等&#xff09;都会提供一些API&#xff0c;通过这些API&#xff0c;可以获取到它们所拥有的商家…

FlashBrowser

本例&#xff1a;windows10 下载FlashBrowser 解决flash失效问题&#xff0c;更换浏览器 https://www.flash.cn/ 下载FlashBrowser浏览器

Uber 提升 Presto 集群稳定性的 GC 调优方法

Presto at Uber Uber 利用开源的 Presto 查询各种数据源&#xff0c;无论是流式还是归档数据。Presto 的多功能性赋予我们做出基于数据的明智商业决策的能力。我们在两个地区运行了大约20个 Presto 集群&#xff0c;总共超过10,000个节点。我们有大约12,000个每周活跃用户&…

数字孪生智慧水利:精准管理与智能决策的新时代

图扑数字孪生技术在智慧水利中的应用&#xff0c;通过虚拟模型与真实水利系统的无缝连接&#xff0c;实现对水资源和水利工程的全面监控和精细管理。实时数据采集与动态模拟提升了水利系统的预测和响应能力&#xff0c;从洪水预警到水质监测&#xff0c;数字孪生助力各项决策更…

Unity 从0开始编写一个技能编辑器_02_Buff系统的生命周期

工作也有一年了&#xff0c;对技能编辑器也有了一些自己的看法&#xff0c;从刚接触时的惊讶&#xff0c;到大量工作时觉得有一些设计的冗余&#xff0c;在到特殊需求的修改&#xff0c;运行效率低时的优化&#xff0c;技能编辑器在我眼中已经不再是神圣不可攀的存在的&#xf…

使用Puppeteer生成echarts图片

Puppeteer简介 Puppeteer 是一个用于控制 Headless Chrome 或 Chromium 浏览器的 Node.js 库。它提供了一个高层次的 API&#xff0c;能够让你以编程方式操作浏览器&#xff0c;从而实现自动化任务&#xff0c;比如生成页面截图和 PDF、抓取网页内容、自动化表单提交、UI 测试…

燃料电池汽车践行者

前言 见《氢燃料电池技术综述》 见《燃料电池工作原理详解》 见《燃料电池发电系统详解》 见《燃料电池电动汽车详解》 见《氢燃料电池汽车行业发展》 现代汽车&#xff08;中国&#xff09; 现代汽车集团&#xff0c;自1998年成立氢燃料电池研发小组以来深耕氢燃料电池技术&am…

Android14 WMS-窗口绘制之relayoutWindow流程(二)-Server端

本文接着如下文章往下讲 Android14 WMS-窗口绘制之relayoutWindow流程(一)-Client端-CSDN博客 然后就到了Server端WMS的核心实现方法relayoutWindow里 WindowManagerService.java - OpenGrok cross reference for /frameworks/base/services/core/java/com/android/server…

【Linux】匿名管道的应用场景 --- 进程池

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 如果文章对…

体素技术在AI绘画中的革新作用

随着人工智能技术的不断进步&#xff0c;AI绘画已经成为艺术创作和视觉设计领域的一大趋势。在众多推动AI绘画发展的技术中&#xff0c;体素技术以其独特的优势&#xff0c;正在逐渐改变着我们对计算机生成图像的认识。本文旨在探讨体素技术在AI绘画中的应用与影响&#xff0c;…

【车载开发系列】MCU选型

【车载开发系列】MCU选型 【车载开发系列】MCU选型 【车载开发系列】MCU选型一. 重要概念二. MCU选型的风险风险1风险2 三. MCU选型要点四. MCU选型维度五. MCU 选型需要考虑的因素1&#xff09;ROM/RAM2&#xff09;速度/主频3&#xff09;分析外设需求4&#xff09;工作电压(…

DNS域名解析服务和bond网卡

DHS域名解析 概述 DNS是域名系统的简称&#xff0c;它的作用就是域名和ip地址之间的映射关系。 在互联网中&#xff0c;ip地址是通信的唯一标识。&#xff08;逻辑地址&#xff09; 访问网站需要一个域名 域名解析的目的就是为了实现访问域名就等于访问ip地址。 在访问域…

【数据结构】前缀树(字典树)汇总

基础 {“a”,“abc”,“bac”,“bbc”,“ca” }的字典树如下图&#xff1a; 最主用的应用&#xff1a;一&#xff0c;字符串编码。二&#xff0c;位运算。 字符串编码 相比利用哈希映射编码&#xff0c;优点如下&#xff1a; 依次查询长度为n的字符串s的前缀时间复杂度是O(…

直接用sql语句来查询和分析excel表,不需要导数据,提供了sql语句自动生成,不会sql也能用

用sql语句来查询excel表&#xff0c;我们需要把excel表格导入到数据库中&#xff0c;然后用数据库的管理工具写sql语句来进行查询。方法有很多&#xff0c;我们不一一描述。 今天我们要说的是直接用sql语句来查询和分析excel表。为什么有这么一个想法呢&#xff1f;程…