我正在参加「码上掘金挑战赛」详情请看:码上掘金挑战赛来了!
前言
在上个月,我使用纯 css 打造了一个旋转图片展示器,对它感兴趣的小伙伴们可以去我的主页看看这篇文章。这次,经过一个多月的沉淀,我将在此基础上加入一些新属性和新功能,打造出展示器Pro 版,又可称之为属于你心中的 梦中情册。
在展示器Pro 版中,你将能看到这些新增效果:
-
更丝滑的3D旋转
-
更细节的悬停效果
-
更完美的颜色搭配
有了这些的加入,将能完成旋转图片展示器 -> 3D旋转相册的完美蜕变。
代码块和效果展示
效果
实现过程
看完效果展示后,不知各位小伙伴们是否心动于这个相册。接下来就由我来手把手教你打造这个属于你心中的梦中情册。
前期准备
首先我们准备好旋转图片展示器。在这里我简单介绍一下搭建过程,想了解更详细的过程可以参考我之前的文章分享 十分钟时间带你手撸一个会旋转的图片展示器。
准备好一些照片或者图片,将它们放在一个容器里。并且给照片或者图片加上边框,让它更加生动形象。然后通过 transform 属性设置整体为3D效果,通过 animation 属性设置其为无限旋转以及动画。最后通过设置并调整角度以及其他相关属性完善其细节,这样差不多就可以了。
3D旋转
这里再来详细说说3D旋转。3D旋转我们可以分成两部分,一是3D,二是旋转。3D效果通过属性 transform-style: preserve-3d 实现。旋转通过属性 animation: identifier 15s linear infinite 来设置。对于旋转动画的角度,需要用 @keyframes 来制定动画规则。
.wrap{
width: 300px;
height: 200px;
margin: 200px auto;
position: relative;
transform-style: preserve-3d;
transform: rotateX(-16deg);
animation: identifier 15s linear infinite;
}
制定一个名为 identifier 的动画,规定好旋转的角度。from...to... 等价于 0% ~ 100%。通过 rotateX() 方法,元素围绕其 X 轴以给定的度数进行旋转。同理,rotateY() 方法,元素围绕其 Y 轴以给定的度数进行旋转。
@keyframes identifier {
from{
transform: rotateX(-16deg) rotateY(0deg);
}
to{
transform: rotateX(-16deg) rotateY(360deg);
}
}
悬停效果
悬停效果,顾名思义,就是当鼠标移动到某张图上后就会停止旋转。在我的上一篇文章里,便运用到了悬停效果展示。这里可以通过 hover选择器来设置。该选择器用于选择鼠标指针浮动在上面的元素。因为是使动画停止,所以可以用动画的属性 animation-play-state: paused,该属性可以让在运行的 animation动画停止。
.wrap:hover{
animation-play-state: paused;
}
为了增加用户体验,可以在鼠标放上去后添加一些效果,比如设置 cursor: pointer 让鼠标指针形状变为一只手;添加 transition 过渡属性,让变化过程变得更加柔顺自然;添加 filter 属性定义可视效果,比如这里为了更具有复古特色,定义了灰度从 0.8~1 的变化;设置 transform: scale(1.3,1.3) 让变化后的图片放大 1.3 倍。
img{
filter: grayscale(0.8);
cursor: pointer;
transition: all .5s ease;
border: 6px solid white;
box-shadow: 1px 1px 5px #333333;
}
img:hover{
filter: grayscale(0);
transform: scale(1.3,1.3);
}
复古色
所谓复古,就是给背景以及图片添加具有复古特色的颜色。比如对于整体,设置颜色为 background-color: #CDD1C3;对于图片,定义了灰度的变化 filter: grayscale(0.8)/ filter: grayscale(0),这些都具有复古特点,各位小伙伴们可以多多尝试。
body{
padding: 0;
margin: 0;
background-color: #CDD1C3;
}
img{
filter: grayscale(0.8);
}
img:hover{
filter: grayscale(0);
}
最终一览
效果
结语
看完了整体过程,各位小伙伴们对这个 旋转相册 是否跃跃欲试?整体而言实现起来是很容易的,所以跃跃欲试的小伙伴们话就去行动起来,打造一个属于你心中的梦中情册🔥