我的相册程序

演示地址: http://www.yaohaixiao.com/code/albums/index.html

代码:
  1. /**
  2.  * Album.js 
  3.  * @author Yaohaixiao <haixiao_yao@yahoo.com.cn>
  4.  * @version 1.0.1.1 Beta
  5.  * @copyright (c) 2008 Yaohaixiao, All Right Reserved.
  6.  */
  7. if (JSEasy.isUndefined(Album)) {
  8.     var Album = {
  9.         imagesArray: [],
  10.         loadingShardow: JSEasy.Builder.Node("div", {
  11.             id: "album-loadingshardow"
  12.         }),
  13.         loadingImage: JSEasy.Builder.Node("img", {
  14.             id: "album-loading",
  15.             src: "img/loading.gif",
  16.             alt: "loading"
  17.         }),
  18.         Shardow: JSEasy.Builder.Node("div", {
  19.             id: "album-shardow"
  20.         }),
  21.         Window: JSEasy.Builder.Node("div", {
  22.             id: "album-window"
  23.         }),
  24.         TitleBar: JSEasy.Builder.Node("div", {
  25.             id: "album-titlebar"
  26.         }),
  27.         Title: JSEasy.Builder.Node("h2"),
  28.         CloseBar: JSEasy.Builder.Node("div", {
  29.             id: "album-closebar"
  30.         }),
  31.         ActiveImage: JSEasy.Builder.Node("img", {
  32.             id: "album-activeimage"
  33.         }),
  34.         LoadingImage: JSEasy.Builder.Node("img", {
  35.             id: "album-loadingimage"
  36.         }),
  37.         InfoBar: JSEasy.Builder.Node("p", {
  38.             id: "album-infobar"
  39.         }),
  40.         StatusBar: JSEasy.Builder.Node("div", {
  41.             id: "album-statusbar"
  42.         }),
  43.         ControlBar: JSEasy.Builder.Node("div", {
  44.             id: "album-controls"
  45.         }),
  46.         FirstBtn: JSEasy.Builder.Node("img", {
  47.             id: "album-first",
  48.             src: "img/icon/resultset_first.png",
  49.             alt: "第一张"
  50.         }),
  51.         PreviousBtn: JSEasy.Builder.Node("img", {
  52.             id: "album-previous",
  53.             src: "img/icon/resultset_previous.png",
  54.             alt: "上一张"
  55.         }),
  56.         IndexInfoBar: JSEasy.Builder.Node("p", {
  57.             id: "album-indexinfo"
  58.         }),
  59.         NextBtn: JSEasy.Builder.Node("img", {
  60.             id: "album-next",
  61.             src: "img/icon/resultset_next.png",
  62.             alt: "下一张"
  63.         }),
  64.         LastBtn: JSEasy.Builder.Node("img", {
  65.             id: "album-last",
  66.             src: "img/icon/resultset_last.png",
  67.             alt: "最后一张"
  68.         }),
  69.         Name: "我的JSEasy相册"
  70.     };
  71. }   
  72. Album.Unit = {
  73.     init: function(){
  74.         if (!document.getElementsByTagName) {
  75.             return false;
  76.         }
  77.         
  78.         var cTags = JSEasy.getElementsByClassName("albumbox""a", document);
  79.         for (var i = 0; i < cTags.length; i++) {
  80.             Album.imagesArray.push([cTags[i], 0]);
  81.         }
  82.         
  83.         var albumCSS = JSEasy.Builder.Node("link", {
  84.             rel: "stylesheet",
  85.             type: "text/css",
  86.             id: "albumCSS",
  87.             media: "all",
  88.             href: "css/album.css"
  89.         });
  90.         var docHead = document.getElementsByTagName("head")[0];
  91.         docHead.appendChild(albumCSS);
  92.         
  93.         for (var j = 0; j < Album.imagesArray.length; j++) {
  94.             Album.imagesArray[j][0].setAttribute("ren", j);
  95.             Album.imagesArray[j][0].onclick = this.Start;
  96.         }
  97.     },
  98.     Start: function(){
  99.         JSEasy.setStyle(Album.Shardow, {
  100.             height: (JSEasy.getDocumentSize()[1] + 30) + "px"
  101.         });
  102.         document.body.appendChild(Album.Shardow);
  103.         JSEasy.Builder.Slider.Opacity(Album.Shardow, 40);
  104.         
  105.         var path = this.href;
  106.         var alt = this.title;
  107.         var index = parseInt(this.getAttribute("ren"));
  108.         
  109.         Album.Title.innerHTML = Album.Name;
  110.         Album.TitleBar.appendChild(Album.Title);
  111.         JSEasy.Builder.Attributes(Album.CloseBar, {
  112.             title: "关闭窗口"
  113.         });
  114.         Album.TitleBar.appendChild(Album.CloseBar);
  115.         Album.Window.appendChild(Album.TitleBar);
  116.         
  117.         JSEasy.Builder.Attributes(Album.ActiveImage, {
  118.             src: path,
  119.             alt: alt,
  120.             ren: index
  121.         });
  122.         Album.Window.appendChild(Album.ActiveImage);
  123.         
  124.         Album.InfoBar.innerHTML = alt;
  125.         JSEasy.Builder.Slider.Opacity(Album.InfoBar, 70);
  126.         Album.Window.appendChild(Album.InfoBar);
  127.         
  128.         Album.ControlBar.appendChild(Album.FirstBtn);
  129.         Album.ControlBar.appendChild(Album.PreviousBtn);
  130.         Album.IndexInfoBar.innerHTML = JSEasy.stringBuffer((index + 1) + " / " + Album.imagesArray.length);
  131.         Album.ControlBar.appendChild(Album.IndexInfoBar);
  132.         Album.ControlBar.appendChild(Album.NextBtn);
  133.         Album.ControlBar.appendChild(Album.LastBtn);
  134.         Album.StatusBar.appendChild(Album.ControlBar);
  135.         Album.Window.appendChild(Album.StatusBar);
  136.         
  137.         document.body.appendChild(Album.Window);
  138.         Album.Unit.PerLoading();
  139.         
  140.         Album.CloseBar.onmouseover = function(){
  141.             this.style.background = "transparent url(img/tool-sprites.gif) -15px 0 no-repeat";
  142.         }
  143.         Album.CloseBar.onmouseout = function(){
  144.             this.style.background = "transparent url(img/tool-sprites.gif) 0 0 no-repeat";
  145.         }
  146.         
  147.         Album.CloseBar.onclick = Album.Unit.End;
  148.         Album.Shardow.onclick = Album.Unit.End;
  149.         
  150.         Album.FirstBtn.onclick = Album.Unit._First;
  151.         Album.PreviousBtn.onclick = Album.Unit._Previous;
  152.         Album.NextBtn.onclick = Album.Unit._Next;
  153.         Album.LastBtn.onclick = Album.Unit._Last;
  154.         return false;
  155.     },
  156.     _First: function(){
  157.         if (parseInt(Album.ActiveImage.getAttribute("ren")) > 0) {
  158.             Album.Unit.ChangeImage(0);
  159.         }
  160.     },
  161.     _Previous: function(){
  162.         if (parseInt(Album.ActiveImage.getAttribute("ren")) > 0) {
  163.             Album.Unit.ChangeImage((parseInt(Album.ActiveImage.getAttribute("ren")) - 1));
  164.         }
  165.     },
  166.     _Next: function(){
  167.         if (parseInt(Album.ActiveImage.getAttribute("ren")) < (Album.imagesArray.length - 1)) {
  168.             Album.Unit.ChangeImage((parseInt(Album.ActiveImage.getAttribute("ren")) + 1));
  169.         }
  170.     },
  171.     _Last: function(){
  172.         if (parseInt(Album.ActiveImage.getAttribute("ren")) < (Album.imagesArray.length - 1)) {
  173.             Album.Unit.ChangeImage((Album.imagesArray.length - 1));
  174.         }
  175.     },
  176.     ChangeImage: function(index){
  177.         var imgAlt = Album.imagesArray[index][0].getAttribute("title");
  178.         var imgPath = Album.imagesArray[index][0].getAttribute("href");
  179.         
  180.         JSEasy.Builder.Attributes(Album.ActiveImage, {
  181.             src: imgPath,
  182.             alt: imgAlt,
  183.             ren: index
  184.         });
  185.         
  186.         Album.InfoBar.innerHTML = imgAlt;
  187.         Album.IndexInfoBar.innerHTML = JSEasy.stringBuffer((index + 1), " / ", Album.imagesArray.length);
  188.         
  189.         Album.Unit.PerLoading();
  190.     },
  191.     PerLoading: function(){
  192.         var iVisited = Album.imagesArray[parseInt(Album.ActiveImage.getAttribute("ren"))][1];
  193.         if (iVisited == 0) {
  194.             Album.Unit.Loading.show();
  195.         }
  196.         
  197.         var tempImg = new Image();
  198.         tempImg.src = Album.ActiveImage.getAttribute("src");
  199.         
  200.         if (tempImg.complete) {
  201.             Album.Unit.FixPosition.call(tempImg);
  202.         }
  203.         else {
  204.             tempImg.onload = function(){
  205.                 Album.Unit.FixPosition.call(tempImg);
  206.             }
  207.         }
  208.     },
  209.     Loading: {
  210.         show: function(){
  211.             JSEasy.Builder.Slider.Opacity(Album.loadingShardow, 40);
  212.             Album.Window.appendChild(Album.loadingShardow);
  213.             Album.Window.appendChild(Album.loadingImage);
  214.         },
  215.         
  216.         hide: function(){
  217.             var loadingshardow = $("album-loadingshardow");
  218.             var loading = $("album-loading");
  219.             if (loading) {
  220.                 Album.Window.removeChild(loadingshardow);
  221.                 Album.Window.removeChild(loading);
  222.             }
  223.         }
  224.     },
  225.     FixPosition: function(){
  226.         var actWidth = this.width;
  227.         var actHeight = this.height;
  228.         var actIndex = parseInt(Album.ActiveImage.getAttribute("ren"));
  229.         var yScroll = JSEasy.getScroll()[1];
  230.         var winHeight = JSEasy.getWindowSize()[1];
  231.         var actTop = actHeight > winHeight ? "0" : JSEasy.stringBuffer((yScroll + ((winHeight - (actHeight + 6))/2)) + "px");
  232.         var actLeft = JSEasy.stringBuffer("-" + (actWidth/ 2 + 3), "px");
  233.         
  234.         JSEasy.setStyle(Album.ActiveImage, {
  235.             width: actWidth + "px",
  236.             height: actHeight + "px"
  237.         });
  238.         JSEasy.setStyle(Album.Window, {
  239.             width: actWidth + "px",
  240.             height: actHeight + "px",
  241.             marginTop:"0",
  242.             top: actTop,
  243.             marginLeft: actLeft,
  244.             display: "block"
  245.         });
  246.         Album.Unit.Loading.hide();
  247.         
  248.         if (Album.imagesArray[actIndex][1] == 0) {
  249.             Album.imagesArray[actIndex][1] = 1;
  250.         }
  251.     },
  252.     End: function(){
  253.         document.body.removeChild(Album.Shardow);
  254.         document.body.removeChild(Album.Window);
  255.     }
  256. };

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值