一个炫酷的按钮

2018-06-08  本文已影响0人  singingT

用CSS3实现如图的一个按钮

首先分析一下按钮的结构组成。

这个按钮其实也是一个超链接,因为可以将其全部写在一个a标签中

右边的箭头可以用背景图片来实现

当鼠标滑过按钮里而产生的特效其实是由四条左右上下四条线条组成,这四个线条可以span标签来实现 ,分别出现在按钮的左右上下

演示1.gif
<a href="#" class="button">
    Touch
    <span class="line lineLeft"></span>
    <span class="line lineTop"></span>
    <span class="line lineRight"></span>
    <span class="line lineButtom"></span>
</a>

这时个还没有什么效果


image.png
body{
    background: #000;
}

a{
    text-decoration: none;
    color: #0ff195;
    font-size: 26px;
}

.button{
    display: block;
    width: 180px;
    height: 50px;
    margin: 50px auto;
    padding-left: 30px;
    line-height: 50px;
    border: 2px solid #fff;
    background: url("../image/allow.png") 150px center no-repeat;
}

这时候的效果如下


image.png
.button{
    display: block;
    width: 180px;
    height: 50px;
    margin: 50px auto;
    padding-left: 30px;
    line-height: 50px;
    border: 2px solid #fff;
    background: url("../image/allow.png") 150px center no-repeat;
    /*设置transition属性使背景平滑向右移动*/
    transition: background 0.5s ease;
}

.button:hover{
    background-position: 160px center;
}

这时候效果如下


演示2.gif
.line{
    display: inline-block;
    position: absolute;
    background: rgba(255, 255, 255, 0);
}

上边动画线的初始样式,先让其为红色,好观察变化

.lineLeft{
    width: 10px;
    height: 2px;
    background: #f00;
}
image.png

会发现线并没有与上边界完全重合,因此需要让其住左和住右再分别移动2px,才可以与边界重合

.lineLeft{
    width: 10px;
    height: 2px;
    background: #f00;
    top: -2px;
    left: -2px;
}
image.png

再设置线的动画

  1. 宽度初始为0,最终为210,为上边界一样长
  2. 开始与按钮的距离为按钮的长度,慢慢向按钮靠近
.lineLeft{
    width: 0px;
    height: 2px;
    background: #f00;
    top: -2px;
    left: -210px;
    transition: 3s;
}

.button:hover .lineLeft{
    width: 210px;
    left:-2px;
}
演示3.gif
.lineBottom{
    width: 0px;
    height: 2px;
    background: #f00;
    bottom: -2px;
    right: -210px;
    transition: 3s;
}

.button:hover .lineBottom{
    width: 210px;
    right: -2px;
}
.lineLeft{
    width: 2px;
    height: 0px;
    background: #f00;
    left: -2px;
    bottom: -50px;
    transition: 3s;
}

.button:hover .lineLeft{
    height: 50px;
    bottom: -2px;
}

.lineRight{
    width: 2px;
    height: 0px;
    background: #f00;
    right: -2px;
    top: -50px;
    transition: 3s;
}

.button:hover .lineRight{
    height: 50px;
    top: -2px;
}

最后效果


演示4.gif 演示5.gif
上一篇下一篇

猜你喜欢

热点阅读