这是一款非常时尚的Material Design风格组合按钮变形动画特效。这个特效中有左右两个按钮,点击其中一个按钮后,两个按钮会向中间移动,被点击的按钮覆盖没有被点击的按钮,并以平滑的方式扩展为一个矩形的对话框。
使用方法
HTML结构
这个特效的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>
CSS样式
在该按钮特效中,按钮都设置为左浮动,这样使它们并排排列在一起。
.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
必须必按钮的要高,这样它们才不会被按钮遮挡住。
JAVASCRIPT
当某个按钮被点击之后,jQuery代码中首先找出是哪个按钮被点击了。然后根据减少offset().left
值以及.innerWidth() / 2
一半的屏幕刻度值来将两个按钮向中间移动。没有被选择的按钮被设置了一个transition-delay
值,使它延迟一些时间在移动。
当过渡动画结束的时候,开始将按钮的尺寸缩放到内容窗口的大小尺寸。这是通过内容窗口的.innerWidth()
除以按钮的.innerWidth()
来实现。这个值是用于transform: scale(x)
的值。在高度上也使用相同的手法来进行处理。
具体的实现代码请参考下载文件。