新葡亰496net Web前端 jQuery 打造动态渐变按钮 详细图文教程

jQuery 打造动态渐变按钮 详细图文教程



关于作者:刘健超-J.c

图片 1

前端,在路上…
个人主页 ·
我的文章 ·
19 ·
    

图片 2

变形–缩放 scale()

缩放 scale()函数 让元素根据中心原点对对象进行缩放。

缩放 scale 具有三种情况:

1、 scale(X,Y)使元素水平方向和垂直方向同时缩放(也就是X轴和Y轴同时缩放)

图片 3

例如:

div:hover {
  -webkit-transform: scale(1.5,0.5);
  -moz-transform:scale(1.5,0.5)
  transform: scale(1.5,0.5);
}

注意:Y是一个可选参数,如果没有设置Y值,则表示X,Y两个方向的缩放倍数是一样的。

2、scaleX(x)元素仅水平方向缩放(X轴缩放)

图片 4

3、scaleY(y)元素仅垂直方向缩放(Y轴缩放)

图片 5

HTML代码:

<div class="wrapper">
  <div>我将放大1.5倍</div>
</div>

CSS代码:

.wrapper {
  width: 200px;
  height: 200px;
  border:2px dashed red;
  margin: 100px auto;
}
.wrapper div {
  width: 200px;
  height: 200px;
  line-height: 200px;
  background: orange;
  text-align: center;
  color: #fff;
}
.wrapper div:hover {
  opacity: .5;
  -webkit-transform: scale(1.5);
  -moz-transform:scale(1.5)
  transform: scale(1.5);
}

演示结果

图片 6

注意: scale()的取值默认的值为1,当值设置为0.010.99之间的任何值,作用使一个元素缩小;而任何大于或等于1.01的值,作用是让元素放大。

Step2 – HTML/CSS

运动产生的错觉

这段动画的效果类似于观看古老的西洋镜,该装置呈现的是一系列连续的围绕着圆筒的插画。在下面的示例中,我们不使用圆筒,而是在某个元素内部呈现一系列图片。

动画–过渡属性 transition-property

早期在Web中要实现动画效果,都是依赖于JavaScript或Flash来完成。但在CSS3中新增加了一个新的模块transition,它可以通过一些简单的CSS事件来触发元素的外观变化,让效果显得更加细腻。简单点说,就是通过鼠标的单击、获得焦点,被点击或对元素任何改变中触发,并平滑地以动画效果改变CSS的属性值。

在CSS中创建简单的过渡效果可以从以下几个步骤来实现:
第一,在默认样式中声明元素的初始状态样式;
第二,声明过渡元素最终状态样式,比如悬浮状态;
第三,在默认样式中通过添加过渡函数,添加一些不同的样式。

CSS3的过度transition属性是一个复合属性,主要包括以下几个子属性:

  • transition-property:指定过渡或动态模拟的CSS属性

  • transition-duration:指定完成过渡所需的时间

  • transition-timing-function:指定过渡函数

  • transition-delay:指定开始出现的延迟时间

先来看transition-property属性

transition-property用来指定过渡动画的CSS属性名称,而这个过渡属性只有具备一个中点值的属性(需要产生动画的属性)才能具备过渡效果,其对应具有过渡的CSS属性主要有:

图片 7

HTML:

<div></div>

CSS:

div {
  width: 200px;
  height: 200px;
  background-color:red;
  margin: 20px auto;
  -webkit-transition: background-color .5s ease .1s;
  transition: background-color .5s ease .1s;
}
div:hover {
  background-color: orange;
}

演示结果:

鼠标移入

图片 8

鼠标移出

图片 9

特别注意:当“transition-property”属性设置为all时,表示的是所有中点值的属性。

用一个简单的例子来说明这个问题:

假设你的初始状态设置了样式“width”,“height”,“background”,当你在终始状态都改变了这三个属性,那么all代表的就是“width”、“height”和“background”。如果你的终始状态只改变了“width”和“height”时,那么all代表的就是“width”和“height”。

Step1 – Photoshop

“steps()”的其它用法

背景动画精灵(background sprites)仅仅只是 steps
时序函数的用法之一。除此之外该函数还适用于制作任何需要一系列离散步骤的动画。例如,你可以用该函数制作一个摆钟。

动画–过渡函数 transition-timing-function

transition-timing-function属性指的是过渡的“缓动函数”。主要用来指定浏览器的过渡速度,以及过渡期间的操作进展情况,其中要包括以下几种函数:

图片 10

(单击图片可放大)

案例展示:

在hover状态下,让容器从一个正方形慢慢过渡到一个圆形,而整个过渡是先加速再减速,也就是运用ease-in-out函数。

HTML代码:

<div></div>

CSS代码:

div {
  width: 200px;
  height: 200px;
  background: red;
  margin: 20px auto;
  -webkit-transition-property: -webkit-border-radius;
  transition-property: border-radius;
  -webkit-transition-duration: .5s;
  transition-duration: .5s;
  -webkit-transition-timing-function: ease-in-out;
  transition-timing-function: ease-in-out;
  -webkit-transition-delay: .2s;
  transition-delay: .2s;
}
div:hover {
  border-radius: 100%;
}

演示结果

鼠标移入:

图片 11

鼠标移出:

图片 12

Step1 – Photoshop

1. 新建文件

  按钮的尺寸是100px X 80px,但由于我们需要创建一个有两种状态的CSS
sprite背景图,所以我们在Photoshop中创建(Ctrl+N)一个长宽为200px X
160px的图片文件,如下图:

图片 13

2. 创建参考线

  为了使绘制按钮更容易,我们创建参考线,从标尺中拉出参考线,如果你找不到标尺,可以按Ctrl+R显示,如下图:

图片 14

3. 绘制形状

  选择工具面板中的矩形工具,设置圆角半径为10px,在画布上绘制形状,如下图:

图片 15

4. 设置形状样式

  接上图最后一步,双击层,打开图层样式窗口,设置形状的样式,首先选择渐变叠加,设置渐变颜色从#3d3d3d到#8b8b8b,如下图:

图片 16

  然后,选择“内发光”,设置混合模式为“正常”,不透明度为100%,颜色设置为#ffffff,图素大小设置为3像素,如下图:

图片 17

  之后,再选择“描边”,设置大小为1像素,位置为“内部”,颜色为黑色#000000,如下图:

图片 18

5. 添加字体

  输入文本,设置文字相对水平和垂直居中,字体为方正准圆简体,字号36点,加粗平滑,颜色为白色(#FFFFFF),如下图:

图片 19

6. 设置字体样式

  同样的双击文字图层,打开文字图层样式,设置字体样式,点击“投影”,设置混合模式为“正常”,颜色为#3e3e3e,不透明度为100%,角度为90度,距离为1像素,大小为2像素;点击“内阴影”,设置混合模式为“正常”,颜色为#454545,不透明度为75%,角度为90度,距离为1像素,大小为2像素,如下图所示:

图片 20

  至此,我们就完成链接状态下的按钮背景图,效果如下:

图片 21

7. 悬停背景图

  制作鼠标悬停状态下的按钮背景图,把图层放入组内,复制组,移动,并重命名,如下图:

图片 22

8.背景图属性

  修改hover背景图的样式属性,打开背景图的图层样式窗口,选择“描边”,修改边框颜色为#004d77;选择“渐变叠加”,修改渐变从#1671a3到#5baedc,如下图:

 

图片 23

9. 设置字体样式

  打开字体图层样式,选择“投影”,修改投影颜色为#207aad;选择“内阴影”,修改字体颜色为#0d4f74,如下图:

图片 24

10. 图层半透明

  添加图层半透明效果,按以上步骤修改,鼠标悬停背景图如下,最后是再加上一层半透明层,先添加一个200px
X 40px的白色层,置顶并设置白色层的透明度为10%,如下图:

图片 25

  最后,我们完成的CSS sprite背景图如下,您也可以点击下载PSD文件。

图片 26

Step2 – HTML/CSS
  按钮的HTML代码很简单:
<a class=”button”>前端档案</a>
  再通过CSS设置一下背景图片就可以了,CSS代码如下:

复制代码 代码如下:

/*链接按钮样式*/
.button {
width:200px;
height:80px;
display:block;
background:url(bg_button.gif) top no-repeat;
text-indent:-9999px;
}
/*按钮悬停样式*/
.button:hover{
background:url(bg_button.gif) bottom no-repeat;
}

  按照我们前面设计的图片,按钮的长宽为200px X
80px,背景图为黑色按钮。这段CSS就能够实现我们示例中的第一种效果(纯CSS效果)。

Step3 – JavaScript/jQuery

  通过JavaScript,我们可以让按钮更加炫酷一些,我们需要在之前基础上加一个<span>元素,作为鼠标悬停时候显示的背景层,那么HTML会在DOM加载完成后修改成为:

view sourceprint?<a class=”button”><span
class=”hover”>前端档案</span></a>

  <span>元素在鼠标悬停前是全透明的,鼠标经过时,逐渐不透明,以达到渐变的效果,动画过程如下图:

图片 27

通过以上分析,我们可以写出jQuery代码如下,在DOM加载完成后,为按钮链接添加<span>层作为鼠标经过时的背景图,在为<span>元素添加鼠标悬停事件,鼠标经过时,渐变至不透明,鼠标离开时,渐变至全透明。

复制代码 代码如下:

//把文本包含到<span>元素中,再附加到.button中
$(‘.jsbutton,.viewbutton,.downloadbutton’).wrapInner(‘<span
class=”hover”></span>’).css(‘textIndent’,’0′).each(function ()
{
//先设置<span>元素中全透明,再添加鼠标悬停事件
$(‘span.hover’).css(‘opacity’, 0).hover(function () {
$(this).stop().fadeTo(650, 1); //渐变至不透明
}, function () {
$(this).stop().fadeTo(650, 0); //渐变至全透明
});
});

至此,我们完成了JS代码,还要注意一个步骤,CSS修改,见Step4。
Step4 – CSS修改
  在纯CSS效果的示例中,我们是利用:hover伪类来实现sprite图片的切换,当我们使用jQuery后,是引入一个<span>层作为鼠标经过时背景图,所以CSS需要做如下修改:

复制代码 代码如下:

/*之前的按钮悬停样式*/
.button:hover{
background:url(bg_button.gif) bottom no-repeat;
}

修改为

复制代码 代码如下:

/*不需要在设置:hover的样式,而是设置span.hover的样式*/
.button span.hover {
/*注意要使用绝对定位*/
position: absolute;
display: block;
width:200px;
height:80px;
background:url(bg_button.gif) bottom no-repeat;
text-indent:-9999px;
}

总结
  以上我们按4个步骤实现了一个动态渐变按钮,在演示中,我还提供了一个扩展示例,您可以跟着自己实现一个,也可以下载源代码修改定制,当然,您有什么好的提议或者有什么问题,欢迎给我留言。
演示地址

下载地址

Step1 – Photoshop Step2 –
HTML/CSS Step3 – JavaScript(jQuery) Step4 – CSS修改 最终结果如下: Step1

  • Photoshop 1. 新建文件 按钮的尺寸是…

为什么不使用gif?

虽然也可以使用 gif 动画,但在这个案例中并不是很合适。gif
文件的大小通常较大并且帧速率也难以控制。而使用这个方式,我们就可以用 CSS
对这个动画进行停止、倒回以及各种各样的调整。

动画–过渡延迟时间 transition-delay

transition-delay属性transition-duration属性极其类似,不同的是transition-duration是用来设置过渡动画的持续时间,而transition-delay主要用来指定一个动画开始执行的时间,也就是说当改变元素属性值后多长时间开始执行。

有时我们想改变两个或者多个css属性的transition效果时,只要把几个transition的声明串在一起,用逗号(“,”)隔开,然后各自可以有各自不同的延续时间和其时间的速率变换方式。但需要值得注意的一点:第一个时间的值为
transition-duration,第二个为transition-delay。

例如:a{ transition:
background 0.8s ease-in 0.3,color 0.6s ease-out 0.3;}

示例演示:

通过transition属性将一个200px
*200px的橙色容器,在鼠标悬浮状态时,过渡到一个300px *
300px的红色容器。而且整个过渡0.1s后触发,并且整个过渡持续0.28s。

HTML代码:

<div class="wrapper">
  <div>鼠标放到我的身上来</div>
</div>

CSS代码:

.wrapper {
  width: 400px;
  height: 400px;
  margin: 20px auto;
  border: 2px dotted red;
}
.wrapper div {
  width: 200px;
  height: 200px;
  background-color: orange;
  -webkit-transition: all .28s ease-in .1s;
  transition: all .28s ease-in .1s;
}
.wrapper div:hover {
  width: 300px;
  height: 300px;
  background-color: red;
}

演示结果

鼠标移入:

图片 28

鼠标移出:

图片 29

本教程分为以下三步:

标签:

相关文章

发表评论

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

网站地图xml地图