Ajax无刷新实现图片切换特效
发布日期:2021-06-30 19:04:02
浏览次数:3
分类:技术文章
本文共 8578 字,大约阅读时间需要 28 分钟。
1.页面cs代码
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using AjaxPro; public partial class _Default : System.Web.UI.Page { protected string displayCategoryID; protected void Page_Load(object sender, EventArgs e) { Utility.RegisterTypeForAjax(typeof(AjaxMethod)); displayCategoryID = "17"; }}
2.html代码 < html xmlns ="http://www.w3.org/1999/xhtml" > < head runat ="server" > < title > Ajax无刷新实现图片切换特效 </ title > < link type ="text/css" href ="css/tree.css" rel ="stylesheet" > < link type ="text/css" href ="css/global.css" rel ="stylesheet" > < script type =text/javascript src =javascript/tree.js ></ script > </ head > < body onload ="PreloadImage('<%=displayCategoryID %>');" > < form id ="form1" runat ="server" > < div id ="photoarea" style ="width: 514px; height: 496px; left: 0px; top: 0px;" > < div id ="photo" style ="left: 5px; top: 9px; height: 432px;" > < img id ="slideShow" src ="images/space.gif" style ="filter:revealTrans(duration=2,transition=23)" > </ div > < div id ="op" align ="left" style ="left: 12px; top: 457px" > < span id ="progress" style ="FONT-SIZE: 20px" ></ span > < img id ="btnPlay" src ="images/play_bw.gif" > < img id ="btnPause" src ="images/pause_bw.gif" > < img id ="btnPrev" src ="images/prev_bw.gif" > < img id ="btnNext" src ="images/next_bw.gif" > </ div > </ div > < SCRIPT type ="text/javascript" > // 定时器 var timeDelay; // 图片自动浏览时的时间间隔 var timeInterval = 4000; // Array对象,存储图片文件的路径 var image; // 当前显示的图片序号 var num; // 当前浏览状态,该状态用于控制4个按钮的状态 var nStatus; // 图片显示区域 var slideShow = el("slideShow"); // 图片信息数据表 var dt; // 预加载图片信息 function PreloadImage(iCategoryID) { // 采用同步调用的方式获取图片的信息 var ds = AjaxMethod.GetPhotoList(iCategoryID).value; // 如果返回了结果 if (ds) { // 判断数据表是否不为空 if (ds.Tables[0].Rows.length > 0) { // 返回的图片信息数据表 dt = ds.Tables[0]; // 用image对象存储图片的文件路径 image = new Array(); // 图片在Photos目录下 for (var i = 0; i < dt.Rows.length; i++) { image.push("Photos/" + dt.Rows[i].photo_path); } // imagePreload对象用于实现图片的预缓存 var imagePreload = new Array(); for (var i = 0;i < image.length;i++) { // 通过新建Image对象,并将其src属性指向图片的URL // 显现图片的预缓存 imagePreload[i] = new Image(); imagePreload[i].src = image[i]; } // 初始化一些变量 num = -1; nStatus = 0x09; // 加载第一张图片 next_image(); } else // 分类下没有图片 { alert("该目录下没有图片!"); } } } // 实现图片切换时的效果 function image_effects() { // Transition的值为0~23之间的随机数,代表24种切换效果 // 具体值与效果之间的对应见MSDN slideShow.filters.revealTrans.Transition = Math.random() * 23; // 应用并播放切换效果 slideShow.filters.revealTrans.apply(); slideShow.filters.revealTrans.play(); } // 切换到上一张图片 function previous_image() { // 图片序号向前移动,如果已经是第一张,则切换到最后一张 num += image.length - 1; num %= image.length; // 图片切换的效果 image_effects(); // 将<img>对象的src属性设置为当前num对应的路径 // 切换图片的显示 slideShow.src = image[num]; // 获取图片的标题、说明信息 getPhotoInfo(); // 设置按钮状态 setBtnStatus(); } // 切换到下一张图片 function next_image() { // 当前图片的序号向后移动,如果已经是最后一张, // 则切换到第一张图片 num++; num %= image.length; // 图片的切换效果 image_effects(); // 将<img>对象的src属性设置为当前num对应的路径 // 切换图片的显示 slideShow.src = image[num]; // 获取图片的标题、说明信息 getPhotoInfo(); // 设置按钮状态 setBtnStatus(); } // 自动浏览图片 function slideshow_automatic() { // 当前图片的序号向后移动,如果已经是最后一张, // 则切换到第一张图片 num++; num %= image.length; // 图片的切换效果 image_effects(); // <img>对象的src属性设置为当前num指定的URL // 切换图片的显示 slideShow.src = image[num]; // 获取图片的标题、说明信息 getPhotoInfo(); // 设置按钮的状态,使播放按钮失效,暂停按钮有效 nStatus &= 0x0E; nStatus |= 0x02; setBtnStatus(); // slideshow_automatic函数每隔一段时间自动执行 timeDelay = setTimeout("slideshow_automatic()", timeInterval); } // 停止自动播放 function pauseSlideShow() { // 清除定时器,不再执行slideshow_automatic函数 clearTimeout(timeDelay); // 设置按钮的状态,使播放按钮有效,暂停按钮失效 nStatus &= 0x0d; nStatus |= 0x01; setBtnStatus(); } // 设置按钮的状态: // 判断的依据是当前是否处于自动播放的状态 // 以及当前显示的图片是否第一张或最后一张图片 function setBtnStatus(bDir) { // 如果是第一张图片 if (num == 0) { // 向前切换图片的按钮失效 nStatus &= 0x0b; } // 如果是最后一张图片 if (num == (image.length - 1)) { // 向后切换图片的按钮失效 nStatus &= 0x07; } // 如果既不是最后一张,也不是第一张图片 if (num != 0 && num !=(image.length - 1)) { // 向前、向后切换图片的按钮均有效 nStatus |= 0x0c; } // 根据nStatus每一位的值确定4个按钮的背景图 el("btnPlay").src = ((nStatus & 0x01) == 0x01) ? "images/play.gif" : "images/play_bw.gif"; el("btnPause").src = ((nStatus & 0x02) == 0x02) ? "images/pause.gif" : "images/pause_bw.gif"; el("btnPrev").src = ((nStatus & 0x04) == 0x04) ? "images/prev.gif" : "images/prev_bw.gif"; el("btnNext").src = ((nStatus & 0x08) == 0x08) ? "images/next.gif" : "images/next_bw.gif"; // 根据nStatus每一位的值确定鼠标移动到4个按钮上方时的形状 el("btnPlay").style.cursor = ((nStatus & 0x01) == 0x01) ? "pointer" : "default"; el("btnPause").style.cursor = ((nStatus & 0x02) == 0x02) ? "pointer" : "default"; el("btnPrev").style.cursor = ((nStatus & 0x04) == 0x04) ? "pointer" : "default"; el("btnNext").style.cursor = ((nStatus & 0x08) == 0x08) ? "pointer" : "default"; // 根据nStatus的每一位确定4个按钮是否具有onclick响应 el("btnPlay").onclick = ((nStatus & 0x01) == 0x01) ? function() {slideshow_automatic();} : function() { return false;}; el("btnPause").onclick = ((nStatus & 0x02) == 0x02) ? function() {pauseSlideShow();} : function() { return false;}; el("btnPrev").onclick = ((nStatus & 0x04) == 0x04) ? function() {previous_image();} : function() { return false;}; el("btnNext").onclick = ((nStatus & 0x08) == 0x08) ? function() {next_image();} : function() { return false;}; // 显示当前图片浏览的进度 el("progress").innerHTML = (num + 1) + " / " + image.length; } // 获取图片的标题、说明信息 function getPhotoInfo() { return; // 图片ID号 var id = dt.Rows[num].id; // 如果存在 if (id) { // 异步调用Ajax方法GetPhotoInfo AjaxMethod.GetPhotoInfo(id, GetPhotoInfo_callback); } } // 回调函数,根据响应的内容显示标题和说明信息 function GetPhotoInfo_callback(response) { // 获取图片的信息 var dt_photo = response.value.Tables[0]; // 如果图片存在 if (dt_photo.Rows.length > 0) { // 显示图片的标题和说明 el("title").innerHTML = dt_photo.Rows[0].photo_title; el("description").innerHTML = dt_photo.Rows[0].photo_description; } } </ SCRIPT > </ form > </ body > </ html >
3.AjaxMethod类 using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.SqlClient; using AjaxPro; /**/ /// <summary>/// Summary description for AjaxMethod/// </summary> public class AjaxMethod { public AjaxMethod() { // // TODO: Add constructor logic here // } public static string ConnectionString = ConfigurationSettings.AppSettings["ConnectionString"].ToString(); GetDataSet#region GetDataSet public static DataSet GetDataSet(string sql) { SqlDataAdapter sda = new SqlDataAdapter(sql, ConnectionString); DataSet ds = new DataSet(); sda.Fill(ds); if (ds != null) return ds; else return null; } #endregion /**//// <summary> /// 获取某个分类下图片的id和photo_path信息 /// </summary> /// <param name="iCategoryID">分类ID号</param> /// <returns>图片信息(id, photo_path)的信息</returns> [AjaxMethod(HttpSessionStateRequirement.ReadWrite)] public static DataSet GetPhotoList(int iCategoryID) { string sql = string.Format("SELECT id, photo_path FROM Photo WHERE photo_category_id = {0}", iCategoryID); return GetDataSet(sql); } /**//// <summary> /// 获取图片信息(标题、说明) /// </summary> /// <param name="id">图片id</param> /// <returns>图片信息</returns> [AjaxMethod(HttpSessionStateRequirement.ReadWrite)] public static DataSet GetPhotoInfo(int id) { string sql = string.Format("SELECT photo_title, photo_description FROM Photo WHERE id = {0}", id); return GetDataSet(sql); } }
4.Web.config <? xml version="1.0" ?> < configuration > < appSettings > < add key ="ConnectionString" value ="Data Source=localhost;user id=sa;password=sa;initial catalog=DB" /> </ appSettings > < connectionStrings /> < system .web > < httpHandlers > < add verb ="POST,GET" path ="ajaxpro/*.ashx" type ="AjaxPro.AjaxHandlerFactory, AjaxPro" /> </ httpHandlers > < compilation debug ="false" /> < authentication mode ="Windows" /> </ system.web > </ configuration >
5.sql脚本 if exists ( select * from dbo.sysobjects where id = object_id (N ' [dbo].[Photo] ' ) and OBJECTPROPERTY (id, N ' IsUserTable ' ) = 1 ) drop table [ dbo ] . [ Photo ] GO CREATE TABLE [ dbo ] . [ Photo ] ( [ id ] [ int ] IDENTITY ( 1 , 1 ) NOT NULL , [ photo_title ] [ varchar ] ( 128 ) COLLATE Chinese_PRC_CI_AS NULL , [ photo_description ] [ text ] COLLATE Chinese_PRC_CI_AS NULL , [ photo_category_id ] [ int ] NULL , [ photo_path ] [ varchar ] ( 255 ) COLLATE Chinese_PRC_CI_AS NULL ) ON [ PRIMARY ] TEXTIMAGE_ON [ PRIMARY ] GO
6.原代码 转载地址:https://linuxstyle.blog.csdn.net/article/details/1534275 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月15日 16时01分02秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
HDU 1592 Half of and a Half(高精度)
2019-04-30
POJ-3304 Segments(计算几何)
2019-04-30
UVA-11538 Chess Queen(数学)
2019-04-30
UVA-11401 Triangle Counting(数学优化)
2019-04-30
Codeforces Round #369 (Div. 2)
2019-04-30
UVA 11426 GCD - Extreme (II)(欧拉函数)
2019-04-30
HDU-2838 Cow Sorting(树状数组)
2019-04-30
POJ-2299 Ultra-QuickSort(树状数组)(离散化)
2019-04-30
基于SSM的兼职论坛系统的设计与实现
2019-04-30
基于java的图书管理系统的设计与实现
2019-04-30
基于java的SSM框架理财管理系统的设计与实现
2019-04-30
基于java的ssm框架就业信息管理系统的设计
2019-04-30
基于java的ssm框架的旅游网站设计与实现
2019-04-30
基于java的SSM框架的流浪猫救助网站的设计与实现
2019-04-30
基于java的SSM框架的教务关系系统的设计与实现
2019-04-30
别再问我什么是A/B测试了!
2019-04-30
如何用同期群分析模型提升留存?(Tableau实战)
2019-04-30
爱了,吹爆这个高颜值的流程图工具!
2019-04-30
一个数据项目
2019-04-30