聊一下心得: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
<强> 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照片墙效果