js实现3 d照片墙效果

  

聊一下心得:CSS写得好,真的可以省很多js代码哈,写起来也简单很多,所以要好好掌握js哈,所以这里也提供了CSS代码,如果您觉得您的CSS写得不错,可以直接看js代码哦

  

<>强效果:

  

1,点击视图开始进入照片墙

  

2,只有一张图片是在中间显示,其他图片在中间的图片两侧随机排序,并且随机旋转一定的角度,层级也是随机的哦

  

3点击上面的导航条,可以让对应的图片在中间显示

  

4点击中间的图片该照片翻转,显示背面(照片的描述信息)

  

<>强实现过程:

  

1,用数据生成结构(模拟的数据,此处不再提供)

  

2,对所有图片进行排序

  

3,计算两侧图片的随机范围

  

4,控制图片翻转

  

5,控制导航按钮切换图片

  

6,遮罩层动画实现

  

<强> HTML代码:

        & lt; body>   & lt; div类=皃hoto_wall”比;   & lt; div类="照片"比;   & lt; !——每张图片的最外层,用来控制图片的旋转和位移——比;   & lt; div类=" photo_i前面" id=" photo_ {{id}}”在   & lt; !——内层用来控制图片的3 d翻转——比;   & lt; div类=皃hoto_3d”比;   & lt; !——每个照片的正面——比;   & lt; div class=" photo_side photo_front”比;   & lt; p> & lt; img {{src}}={{img}}“祝辞& lt;/p>   & lt; h4>{{标题}}& lt;/h4>   & lt;/div>   & lt; !——每个照片的反面——比;   & lt; div class=" photo_side photo_back”比;   & lt; p class=" desc”在{{desc}} & lt;/p>   & lt;/div>   & lt;/div>   & lt;/div>   {{分裂}}      & lt;/div>   & lt; div类=耙跤啊北?   & lt; div类="开始"祝辞开始View
  & lt;/div>   & lt;/div>   & lt;/body>      

<强> CSS代码:

     /*最外层样式*/.photo_wall {   宽度:100%;   身高:600 px;   位置:相对;   背景:url(. ./一/bg.jpg)没有重演中心中心;   background-size:封面;   溢出:隐藏;   }/*照片区域的样式*/.photo {   位置:绝对的;   左:0;   上图:0;   宽度:100%;   高度:100%;   z - index: 1;   透明度:0;   过渡:1;   }/*每个照片的样式*/.photo .photo_i。.photo_3d,照片。照片.photo_side {   宽度:336 px;   身高:392 px;   位置:绝对的;   左:0;   上图:0;   }      .photo .photo_i {   过渡:800毫秒;   角度:750 px;   左:50%;   上图:50%;   变换:翻译(-50%,-50%)规模(5)旋转(0);   }      .photo .photo_3d {   过渡:500毫秒;   传输格式:preserve-3d;   transform-origin: 0 50%;   }/*正面和反面的公共样式*/.photo .photo_side {   border - radius: 6 px;   背景:# fff;   填充:26 px 24 px;   box-sizing: border-box;   backface-visibility:隐藏;   }/*照片的正面样式*/.photo .photo_front {   变换:rotateY (0);   }   .photo .photo_front p {   宽度:286 px;   身高:286 px;   边界:2 px固体# d8536d;   溢出:隐藏;   显示:flex;/*对齐项目:中心;*/}   .photo .photo_front p img {   宽度:100%;   align-self:中心;   }   .photo .photo_front h4 {   宽度:166 px;   高度:44 px;   背景:# d8536d;   border - radius: 0 0 6 px 6 px;   保证金:0汽车;   text-align:中心;   字体:16 px/44 px Arial;   颜色:# fff;   }/*照片的反面样式*/.photo .photo_back {   变换:rotateY(-180度);   }      .photo .photo_back .desc {   字体大小:14 px;   行高:20 px;   颜色:# d8536d;   }   .photo .photo_back一个{   颜色:# d8356d;   }/*照片的居中样式*/.photo .center {   z - index: 9999;   左:50%;   上图:50%;   变换:翻译(-50%,-50%)规模(1)旋转(0);   }/*照片正面的类*/.photo .front .photo_3d {   变换:translateX rotateY (0) (0);   }/*照片反面的属性*/.photo .back .photo_3d {   变换:translateX (100%) rotateY(-180度);   }/*导航栏的样式*/.nav {   位置:绝对的;   左:0;   上图:0;   z - index: 888;   宽度:100%;   身高:200 px;   padding-top: 10 px;   box-sizing: border-box;   text-align:中心;   背景:-webkit-linear-gradient(顶部,rgba(0, 0, 0, 0。5)、透明);   }      @font-face {   字体类型:“icont”;   src: url(. ./字体/iconfont.woff)格式(“woff”);   }      .nav .nav_i {   显示:inline-block;   宽度:30 px;   高度:30 px;   这个特性:50%;   背景:rgba (255255255 5);   字体类型:“icont”;   text-align:中心;   行高:30 px;   颜色:rgba (255255255 0);   光标:指针;   变换:规模(5);   过渡:500毫秒;   }      .nav .active {   颜色:rgba (255255255 1);   变换:量表(。9)rotateY (0);   }      .nav .back {   变换:量表(8)rotateY(-180度);   }/*遮罩层*/.photo_wall .shade {   位置:绝对的;   左:0;   上图:0;   z - index: 2;   宽度:100%;   高度:100%;   背景:rgba(255255255 .7美元);   显示:flex;   justify-content:中心;   对齐项目:中心;   }   .photo_wall hide {   过渡:1;   透明度:0;   变换:规模(0)rotateY(360度);   }   .photo_wall .shade .start {   宽度:200 px;   高度:60 px;   边界:2 px固体# d8536d;   border - radius: 10 px;   背景:rgba (248229227 5);   text-align:中心;   字体:22 px/60 px Arial;   光标:指针;   }

js实现3 d照片墙效果