2021-01-21
Home / CSS应用 / 通过CSS3实现按钮的动画气泡效果(转载)

通过CSS3实现按钮的动画气泡效果(转载)

有网友问到大智星模板的那两个按钮(预览和下载)是怎么实现的,这里照葫芦画瓢简单说一下。
CSS3有很多漂亮的网页效果,这些效果在CSS3未出现之前,通常需要使用图片、JS甚至flash来实现,自从CSS3出现以后,这一切都变得简单了。

先看一下动画气泡效果》》
下      载 继续说这两个按钮,既不用JS也不用falsh,来实现一带动画气泡效果的按钮。

首先写好HTML:

为按钮添加class类,比如这里使用的button,同时可以添加多个类以实现不同大小和颜色的按钮,例如这样:

<a class="button blue big" href="#">下载文件</a>
<a class="button blue medium" href="#">预览效果</a>
<a class="button small blue rounded" href="#">提交内容</a>

使用不同的类(如 “blue”, “big”, “rounded” )可以定义元素不同的大小颜色和形状,就像下面这样:
20150129115335

开始添加CSS:

可以把CSS代码单独保存为一个.css文件,也可以添加到网站模板的style.css文件中,我们先添加以下CSS代码:

.button{
    font:15px 微软雅黑, Arial, sans-serif;
 
    /* 半透明的文本阴影 */
    text-shadow:1px 1px 0 rgba(255,255,255,0.4);
 
    /* 重置默认的下划线样式 */
    text-decoration:none !important;
    white-space:nowrap;
 
    display:inline-block;
    vertical-align:baseline;
    position:relative;
    cursor:pointer;
    padding:10px 20px;
 
    background-repeat:no-repeat;
 
    /* 当浏览器不支持多背景时 */
 
    background-position:bottom left;
    background-image:url('button_bg.png');
 
    /* 具有多个属性值的 CSS3 背景定位 */
 
    background-position:bottom left, top right, 0 0, 0 0;
    background-clip:border-box;
 
    /* 应用默认边框 8px */
 
    -moz-border-radius:8px;
    -webkit-border-radius:8px;
    border-radius:8px;
 
    /* 按钮内部 */
 
    -moz-box-shadow:0 0 1px #fff inset;
    -webkit-box-shadow:0 0 1px #fff inset;
    box-shadow:0 0 1px #fff inset;
 
    /* 使用CSS3对背景位置进行动画处理 (并不是所有浏览器都支持)*/
 
    -webkit-transition:background-position 1s;
    -moz-transition:background-position 1s;
    -o-transition:background-position 1s;
    transition:background-position 1s;
}
 
.button:hover{
    background-position:top left;
    background-position:top left, bottom right, 0 0, 0 0;
}

接下来我们使用一张带有气泡形状的图片做背景,就是下面这张图:
button_bg

你没看错,上面确实有一张图,但是背景是透明的,不太明显,正因为如此,我们才可以方便的添加其它颜色来显示,现在在CSS文件中添加以下代码:

/* 根据不同的类定义按钮的大小 */
 
.button.big        { font-size:30px;}
.button.medium    { font-size:18px;}
.button.small    { font-size:13px;}
 
/* 下面是很明显的圆角 */
 
.button.rounded{
    -moz-border-radius:4em;
    -webkit-border-radius:4em;
    border-radius:4em;
}

以上的规则指定了按钮的大小和形状,下面开始添加颜色,不同的类定义不同的颜色,下面以蓝色为例:

/* 蓝色按钮 */
 
.blue.button{
    color:#0f4b6d !important;
 
    border:1px solid #84acc3 !important;
 
    /* 回退时的颜色 */
    background-color: #48b5f2;
 
    /* 不同浏览器支持的规则 */
 
    background-image:    url('button_bg.png'), url('button_bg.png'),
                        -moz-radial-gradient(    center bottom, circle,
                                                rgba(89,208,244,1) 0,rgba(89,208,244,0) 100px),
                        -moz-linear-gradient(#4fbbf7, #3faeeb);
 
    background-image:    url('button_bg.png'), url('button_bg.png'),
                        -webkit-gradient(    radial, 50% 100%, 0, 50% 100%, 100,
                                            from(rgba(89,208,244,1)), to(rgba(89,208,244,0))),
                        -webkit-gradient(linear, 0% 0%, 0% 100%, from(#4fbbf7), to(#3faeeb));
}
 
.blue.button:hover{
    background-color:#63c7fe;
 
    background-image:    url('button_bg.png'), url('button_bg.png'),
                        -moz-radial-gradient(    center bottom, circle,
                                           rgba(109,217,250,1) 0,rgba(109,217,250,0) 100px),
                        -moz-linear-gradient(#63c7fe, #58bef7);
 
    background-image:    url('button_bg.png'), url('button_bg.png'),
                        -webkit-gradient(    radial, 50% 100%, 0, 50% 100%, 100,
                                            from(rgba(109,217,250,1)), to(rgba(109,217,250,0))),
                        -webkit-gradient(linear, 0% 0%, 0% 100%, from(#63c7fe), to(#58bef7));
}

以上代码定义了按钮在静止时和有鼠标划过时的状态,其中linear-gradient(线性渐变)和radial-gradient(径向渐变)效果,由于不同核心的浏览器对此属性定义不同,所以分别添加了-webkit-和-moz-前缀,用于支持不同核心的浏览器。

CSS3的出现大大方便了一些网页效果的实现,恰到好处的一点特效,也许就会使你的网页变得非常美观。但是,不可滥用!

2 comments

  1. 好复杂啊!!! 😯

发表评论

邮箱地址不会被公开。 必填项已用*标注