资讯专栏INFORMATION COLUMN

前端程序员给女朋友做的相册——原生JS

mengbo / 2116人阅读

摘要:今天要分享的是一款特别的焦点图效果,不依赖,全程手写,代码量不大,百行左右,它的特别之处在于可以多维度的切换谁说程序员没有情调拿这个去给女票定制个专属相册吧源码地址下载核心代码

今天要分享的是一款特别的 html5/css3 焦点图效果,不依赖jquery,全程JS 手写,代码量不大,百行左右,它的特别之处在于 可以多维度的切换

谁说程序员没有情调? 拿这个去给女票定制个专属相册吧

源码地址:下载

js核心代码:

window.addEventListener("load",function(){
    figure = document.getElementById("multiSlide");
    topButton       = document.getElementById("top");
    bottomButton    = document.getElementById("bottom");
    leftButton      = document.getElementById("left");
    rightButton     = document.getElementById("right"); 
    
    new Box(-2,2,"images/2689.jpg");
    new Box(-1,2,"images/2690.jpg");
    new Box(0,2,"images/2691.jpg");
    new Box(1,2,"images/2692.jpg");
    new Box(2,2,"images/2693.jpg");
    new Box(3,2,"images/2694.jpg");
    new Box(4,2,"images/2695.jpg");
    new Box(5,2,"images/2696.jpg");
    new Box(2,-2,"images/2697.jpg");
    new Box(2,-1,"images/2698.jpg");
    new Box(2,0,"images/2699.jpg");
    new Box(2,1,"images/2700.jpg");
    new Box(2,2,"images/2701.jpg");
    new Box(2,3,"images/2702.jpg");
    new Box(2,4,"images/2703.jpg");
    new Box(2,5,"images/2704.jpg");
    
    topButton.addEventListener("click", function(){
        if(slidePosY>-3)
            slide("Y",-1);
    });
    bottomButton.addEventListener("click", function(){
        if(slidePosY<4)
            slide("Y",1);
    });
    leftButton.addEventListener("click", function(){
        if(slidePosX>-3)
            slide("X",-1);
    });
    rightButton.addEventListener("click", function(){
        if(slidePosX<4)
            slide("X",1);
    });
});

var unit            = 160;
var registeredBoxes = [];
var slidePosX       = 0;
var slidePosY       = 0;
var Box = function(posX,posY,img){
    this.pos    = {};
    this.pos.X  = posX;
    this.pos.Y  = posY;
    this.img    = img;
    this.init();
}
Box.prototype = {
    init : function(){
        this.DOMElement             = document.createElement("div");
        this.DOMElement.className   = "box";
        this.DOMElement.style.left  = (this.pos.X*unit)-unit+"px";
        this.DOMElement.style.top   = (this.pos.Y*unit)-unit+"px";
        this.DOMElement.setAttribute("data-pos",this.pos.X.toString()+this.pos.Y.toString());
        
        var img = document.createElement("img");
        img.src = this.img;
        
        this.DOMElement.appendChild(img);
        figure.appendChild(this.DOMElement);
        registeredBoxes.push(this);
    },
    setPosition : function(axis,val){
        this.pos[axis] = val;
        if(axis == "X"){
            this.DOMElement.style.left  = (this.pos[axis]*unit)-unit+"px";
        }else if(axis == "Y"){
            this.DOMElement.style.top   = (this.pos[axis]*unit)-unit+"px";
        }
        this.DOMElement.setAttribute("data-pos",this.pos.X.toString()+this.pos.Y.toString());
    }
}

function slide(axis,dir){
    var len = registeredBoxes.length;
    
    if(axis == "Y"){
        for(var i=0; i           
               
                                           
                       
                 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/109705.html

相关文章

  • Canvas绘图在微信小程序中的应用:生成个性化海报

    摘要:解析进到首页其实关键字在本地就随机取完了,在首页中的方法中就通过缓存了要画的元素,比如关键字这里是图片关键字解析语也是图片毕竟微信小程序的不支持字体等等。 一、Canvas应用的背景(个人理解)及基础语法 背景 从2012年开始,微信那个时候用户的积累的量已经非常大了,推出公众号,当然大屏智能手机在那个时候也流行,传统的大众媒体逐步消亡,像微信公众号这样的新媒体盛行。企业的广告投入开始...

    vpants 评论0 收藏0
  • 运营干货 - 开发 - Email - SJR

    摘要:毕老师运营这明显是广告,但为什么要在这里发过去一段时间,由于团队中的各种高富帅人生淫家都在全世界旅游,我们的开发进度比较慢当然之前也一直很慢,因为想要做一个慢产品。 Gradchef · 毕老师运营 这明显是广告,但为什么要在这里发? 过去一段时间,由于团队中的各种高富帅、人生淫家都在全世界旅游,我们的开发进度比较慢(当然之前也一直很慢,因为想要做一个慢产品)。但是,我们一直都在坚...

    PumpkinDylan 评论0 收藏0
  • 程序如何生成海报分享朋友

    摘要:项目需求写完有一段时间了,但是还是想回过来总结一下,一是对项目的回顾优化等,二是对坑的地方做个记录,避免以后遇到类似的问题。需求利用微信强大的社交能力通过小程序达到裂变的目的,拉取新用户。摘要: 小程序开发必备技能啊... 原文:小程序如何生成海报分享朋友圈 作者:小白 Fundebug经授权转载,版权归原作者所有。 项目需求写完有一段时间了,但是还是想回过来总结一下,一是对项目的回顾优...

    lemon 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<