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


Posted in Javascript onApril 25, 2010

本教程分为以下三步:

Step1 - Photoshop

Step2 - HTML/CSS

Step3 - JavaScript(jQuery)

Step4 - CSS修改

 

最终结果如下:

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

Step1 - Photoshop

1. 新建文件

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

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

2. 创建参考线

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

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

3. 绘制形状

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

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

4. 设置形状样式

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

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

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

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

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

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

5. 添加字体

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

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

6. 设置字体样式

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

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

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

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

7. 悬停背景图

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

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

8.背景图属性

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

 

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

9. 设置字体样式

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

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

10. 图层半透明

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

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

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

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


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

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

通过以上分析,我们可以写出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个步骤实现了一个动态渐变按钮,在演示中,我还提供了一个扩展示例,您可以跟着自己实现一个,也可以下载源代码修改定制,当然,您有什么好的提议或者有什么问题,欢迎给我留言。
演示地址 http://demo.3water.com/js/gcb_download/gradual-change-button.html
下载地址 http://demo.3water.com/js/gcb_download/gcb_download.rar

Javascript 相关文章推荐
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
Dec 20 Javascript
获取内联和链接中的样式(js代码)
Apr 11 Javascript
jquery 倒计时效果实现秒杀思路
Sep 11 Javascript
jquery $(this).attr $(this).val方法使用介绍
Oct 08 Javascript
浏览器缩放检测的js代码
Sep 28 Javascript
javacript使用break内层跳出外层循环分析
Jan 12 Javascript
Html5 js实现手风琴效果
Apr 17 Javascript
JavaScript仿微信打飞机游戏
Jul 05 Javascript
详解使用nvm安装node.js
Jul 18 Javascript
vue-cli如何引入bootstrap工具的方法
Oct 19 Javascript
JS实现的ajax和同源策略(实例讲解)
Dec 01 Javascript
vuex存储复杂参数(如对象数组等)刷新数据丢失的解决方法
Nov 05 Javascript
javascript之学会吝啬 精简代码
Apr 25 #Javascript
一些相见恨晚的 JavaScript 技巧
Apr 25 #Javascript
Javascript 中的 &amp;&amp; 和 || 使用小结
Apr 25 #Javascript
js 禁用只读文本框获得焦点时的退格键
Apr 25 #Javascript
js 内存释放问题
Apr 25 #Javascript
JavaScript 对象链式操作测试代码
Apr 25 #Javascript
网页上的Javascript编辑器和代码格式化
Apr 25 #Javascript
You might like
PHP+APACHE实现用户论证的方法
2006/10/09 PHP
一些常用的php简单命令代码集锦
2007/09/24 PHP
PHP Cookie学习笔记
2016/08/23 PHP
DWZ+ThinkPHP开发时遇到的问题分析
2016/12/12 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
2019/10/04 PHP
JavaScript中Math对象使用说明
2008/01/16 Javascript
打造基于jQuery的高性能TreeView(asp.net)
2011/02/23 Javascript
JS将秒换成时分秒实现代码
2013/09/03 Javascript
js中单引号与双引号冲突问题解决方法
2013/10/04 Javascript
js验证IP及子网掩码的合法性有效性示例
2014/04/30 Javascript
分享28款免费实用的 JQuery 图片和内容滑块插件
2014/12/15 Javascript
JavaScript对象反射用法实例
2015/04/17 Javascript
纯js实现瀑布流布局及ajax动态新增数据
2016/04/07 Javascript
关于 jQuery Easyui异步加载tree的问题解析
2016/12/06 Javascript
JavaScript学习笔记--常用的互动方法
2016/12/07 Javascript
JS对象是否拥有某属性如何判断
2017/02/03 Javascript
vue-cli初始化项目中使用less的方法
2018/08/09 Javascript
详解50行代码,Node爬虫练手项目
2019/04/22 Javascript
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
[02:15]2014DOTA2国际邀请赛 赛后退役选手回顾
2014/08/01 DOTA
使用python获取CPU和内存信息的思路与实现(linux系统)
2014/01/03 Python
Python验证码识别的方法
2015/07/10 Python
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
对Python3之进程池与回调函数的实例详解
2019/01/22 Python
python多线程分块读取文件
2019/08/29 Python
numpy 返回函数的上三角矩阵实例
2019/11/25 Python
Python实现病毒仿真器的方法示例(附demo)
2020/02/19 Python
Python通用唯一标识符uuid模块使用案例
2020/09/10 Python
美国领先的奢侈手表在线零售商:WatchMaxx
2017/12/17 全球购物
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
个人贷款承诺书
2014/03/28 职场文书
档案保密承诺书
2014/06/03 职场文书
班组长安全工作职责
2014/07/15 职场文书
2015年度电厂个人工作总结
2015/05/13 职场文书
Django+Nginx+uWSGI 定时任务的实现方法
2022/01/22 Python
为什么MySQL8新特性会修改自增主键属性
2022/04/18 MySQL