1

锤子官网3D翻转特效banner插件

**每次访问锤子手机官网的页面时,都会欣喜的玩耍一番那个会翻转的banner,感觉科技感十足
这么有趣的效果,自己也很想试一试能否实现,于是就核心的特效做了代码的实现
同时也将代码进行了封装,做成了可以供大家引用的插件
欢迎大家体验,同时提出意见**

html页面代码

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta charset="utf-8"> 
<meta name="viewport" content="width=device-width"> 
<title>tBanner</title> 
</head> 
<body> 
<div class="container"> 
<div class="banner"></div> 
</div> 
<script type="text/javascript" src="../libs/jquery-3.2.1/jquery-3.2.1.min.js"></script> 
<script type="text/javascript" src="./scripts/3dBanner.js"> 
</script> 
<script type="text/javascript"> 
// 调用插件函数,传入参数实现效果 
B({ 
container:".container", 
banner:".banner", 
initDeg: 10, 
url: "../images/img1.jpg", 
con_height: 400 
}); 
</script> 
</body> 
</html>

引入js插件使用说明

//         该插件依赖于jquery
//         使用者需要在页面中书写这样的标签
//          <div class="">
//          <div class=""></div>
//          </div>
//         引入该插件后会得到一个3dBanner方法,可以全局调用
//         方法的参数data 是一个对象
//         下面是参数的说明
//          {
//          container:  容器盒子的类名       字符串
//          banner:    展示banner盒子的类名 字符串
//          initDeg:    最大旋转角度         数值
//          url:        banner背景图路径     字符串
//          con_height: 容器盒子的高度       数值 

//          }

js插件核心代码


        (function(win){

            function fnBanner(data){
                var con_height=data.con_height || 400;
                var ban_height=con_height*0.7;
                var con_padding=con_height*0.15;

                $(data.banner).css({
                height:ban_height+"px",
                width:"80%",
                margin:"0 auto",              
                transition:"transform 0.1s"

                  }).css("background","url("+data.url+") no-repeat center").css(
                  "background-size","contain").css("box-shadow","0 0 15px rgba(0,0,0,0.3)")

                $(data.container).css({height:con_height+"px",
                    padding:con_padding+"px 0",
                    width:"100%",
                    background:"white",
                    border:"1px solid gray",
                    perspective:"1000px"
                }).css("box-sizing","border-box")

            $(data.container).on("mousemove",function(e){
                var offset=$(data.container).offset(); 
                var x=e.pageX-offset.left;  
                var y=e.pageY-offset.top;  

                var centerX=$(data.container).outerWidth()/2;   
                var centerY=$(data.container).outerHeight()/2;

                var distanceX=x-centerX;
                var distanceY=y-centerY;

                var perX=distanceX/centerX;
                var perY=distanceY/centerY;

                var initDeg=data.initDeg || 10;


                $(data.banner).css({
                    transform:'rotateX('+initDeg*-perY+'deg) rotateY('+initDeg*perX+'deg)'
                })

            })

            $(data.container).on("mouseleave",function(){
                $(data.banner).css({
                    transform:''
                })
            })

            console.log("ok");
            }

            win.B=fnBanner;
        })(window);

bibo
9 声望0 粉丝

前端流水线实习生