这是一款非常时尚的 Material Design 风格组合按钮变形动画特效。这个特效中有左右两个按钮,点击其中一个按钮后,两个按钮会向中间移动,被点击的按钮覆盖没有被点击的按钮,并以平滑的方式扩展为一个矩形的对话框。
这个特效的 HTML 结构非常简单。使用一个容器 div.buttons-ctn 来包裹两个按钮。div.button__content 分别是两个按钮的对应内容,在相应按钮被点击的时候才会出现。
<div class="buttons-ctn">
<a href="#" class="button button--left"><span>Left</span></a>
<a href="#" class="button button--right"><span>Right</span></a>
</div>
<div class="button__content button__content--left">
<h2>You chose left!</h2>
<a href="#">Signup for nothing here</a>
</div>
<div class="button__content button__content--right">
<h2>You chose right!</h2>
<a href="#">Signup for nothing here</a>
</div>
在该按钮特效中,按钮都设置为左浮动,这样使它们并排排列在一起。
.button {
will-change: transform;
position: relative;
float: left;
display: inline-block;
padding: 20px;
width: 140px;
text-align: center;
line-height: normal;
-webkit-transition: all 0.35s cubic-bezier(0.175, 0.885, 0.32, 1.275);
transition: all 0.35s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
按钮对应的窗口内容被居中定位,默认是隐藏的。这些窗口变为可见状态时通过使用 jQuery 代码来为它添加.button__content--active class 实现的。
.button__content {
display: block;
position: absolute;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
padding: 60px 20px;
text-align: center;
width: 600px;
visibility: hidden;
opacity: 0;
z-index: 10;
color: white;
}
.button__content--active {
opacity: 1;
visibility: visible;
}
在 CSS 代码中需要注意的是 z-index 值的设置。弹出的窗口的 z-index 必须必按钮的要高,这样它们才不会被按钮遮挡住。
当某个按钮被点击之后,jQuery 代码中首先找出是哪个按钮被点击了。然后根据减少 offset().left 值以及.innerWidth() / 2 一半的屏幕刻度值来将两个按钮向中间移动。没有被选择的按钮被设置了一个 transition-delay 值,使它延迟一些时间在移动。当过渡动画结束的时候,开始将按钮的尺寸缩放到内容窗口的大小尺寸。这是通过内容窗口的.innerWidth()除以按钮的.innerWidth()来实现。这个值是用于 transform: scale(x)的值。在高度上也使用相同的手法来进行处理。具体的实现代码请参考下载文件。
演示地址 | 下载地址 |
专业提供WordPress主题安装、深度汉化、加速优化等各类网站建设服务,详询在线客服!