制作Gmail式按钮

一个月前,Gmail重新设计了所有按钮。

原来的按钮是这样的。


新设计的按钮是这样的。


事实上,不仅是Gmail,Google公司很多其他项目都在使用后一种风格的按钮。

比如Google Site


再比如Picasa


这种按钮设计最大的特点,就是完全不使用背景图片,是纯粹的HTML+CSS。同时,它也不使用任何表单元素,目的是在不同浏览器下,争取视觉效果的最大统一。

Google的工程师、设计者Douglas Bowman最近写了篇文章,介绍了设计思路。但是,他最后没有给出代码,只是说:

To see the final code we ended up using in Gmail and Reader, you'll have to reverse engineer the button code in one of those products.

如果你想看我们在Gmail和Google Reader中使用的最终代码,你必须自己对按钮代码进行反向工程。

我对这个很有兴趣,昨天晚上就真的去做反向工程了。由于Gmail的CSS文件都是被压缩过的,简直无法读,不过好在按钮部分还没有被压缩,因此还算顺利,就把代码提取出来了。

下面我就来介绍,如何制作Gmail式的按钮。使用的全部都是Gmail中的实际代码。

请先看我制作的一个范例页面


第一步,按钮的HTML代码如下:

<div class="goog-imageless-button goog-inline-block">
<div class="goog-inline-block goog-imageless-button-outer-box">
<div class="goog-inline-block goog-imageless-button-inner-box">
<div class="goog-imageless-button-pos">
<div class="goog-imageless-button-top-shadow"> </div>
<div class="goog-imageless-button-content">Button</div>
</div>
</div>
</div>
</div>

每个按钮都是一个四层的盒状结构,共包含6个div区块。

第二步,将button.css文件加入样式表。

@import url("button.css");

这个时候,按钮就应该可以正常显示了。

第三步,做一些修饰工作。

你可以根据按钮的不同情况,为前面HTML代码中第1个div区块,添加相应的class。

i. 如果一个按钮是主按钮,那么添加"goog-imageless-button-primary"。

ii. 如果一个按钮不允许用户使用,那么添加"goog-imageless-button-disabled"。

iii. 如果好几个按钮组成一个"按钮组",就像范例中的Example 3,那么最左边的按钮添加"goog-imageless-button-collapse-right",最右边的按钮添加"goog-imageless-button-collapse-left",中间的按钮则是同时添加这两个class。

iv. 如果一个按钮保持选中状态,那么添加"goog-imageless-button-checked"。

第四步,用Javascript加入动作代码。我使用的库是jQuery

i. 加入鼠标悬停效果。

  $(".goog-imageless-button").hover(
function(){
if(!$(this).hasClass("goog-imageless-button-disabled")){
$(this).addClass("goog-imageless-button-hover");
}
},
function(){
if(!$(this).hasClass("goog-imageless-button-disabled")){
$(this).removeClass("goog-imageless-button-hover");
}
}
);

ii. 加入鼠标点击的效果。

  $(".goog-imageless-button").mousedown(
function(){
if(!$(this).hasClass("goog-imageless-button-disabled")){
$(this).addClass("goog-imageless-button-checked");
}
}
).mouseup(
function(){
if(!$(this).hasClass("goog-imageless-button-disabled")){
$(this).removeClass("goog-imageless-button-checked");
}
}
);

iii. 加入focus和blur事件的代码。

$(".goog-imageless-button").focus(function(){$(this).addClass("goog-imageless-button-focused")});

$(".goog-imageless-button").blur(function(){$(this).removeClass("goog-imageless-button-focused")});

到了这一步,就算基本完成了。以后只要再针对按钮的click或submit事件,写入相应代码与服务器端互动,就可以了。

最后,说一点我的看法。

虽然这种按钮的视觉效果比较理想,有很多设计上的优点,但是局限性也很大。一方面,它需要大量的冗余代码,与语义网的原则相违背;另一方面,它太依赖Javascript和桌面环境,一旦用户使用移动设备或不支持Javascript的浏览器上网,那么整张网页的就完全失效了。所以,除非你开发的是针对桌面浏览器的互联网应用程序,否则还是不要使用上面的设计方法,而是用Douglas Bowman提供的一种比较简化的形式(需要背景图片)。

(完)

时间: 2024-11-02 02:26:24

制作Gmail式按钮的相关文章

Photoshop精彩实例:制作网页式电子相册!

大家可能都常听到电子相册的说法.其实Photoshop就已经提供了制作网页式电子相册的功能.如果要作为网页使用,只需在Photoshop的菜单选择"文件-存储为Web所用格式",然后在"优化"中设置保存的格式,或者选择"四联",在其中选择一个Photoshop自动为你生成的Web图像文件. 另外,我们还可以将自己电脑中的所有照片制作成Web相册,Photoshop会自动为你生成一个带有链接的网页文件,从而可以让你的亲人.朋友通过网络欣赏你的照片.

Painter制作马赛克式装饰画教程

给各位Painter软件的使用者们来详细的解析分享一下制作马赛克式装饰画的教程. 教程分享: 马赛克(Mosaics)是一种传统的建筑装饰技法,从中世纪开始便流行于世界各地.特别是在一些古老的教堂壁画,门窗和房顶上.现在我们使用马赛克最多的是在墙面和地板,用它拼成各式的图案作为装饰.在Painter中,我们可以自己画出喜欢的图案,这种亲手画的装饰画装在相框中,放在床头或是钉在墙上,会起到更好的装饰效果. 家里面的小孩子和老人,还有一些业余画画的朋友们,不要怕画的不好看,全家出动一起动手画一幅马赛

Illustrator制作球型按钮效果教程

给各位Illustrator软件的使用者们来详细的解析分享一下制作球型按钮效果的教程. 教程分享: 1. 双击Ellipse Tool(椭圆工具)在画布上点一下,.会跳出一个Ellipse的设置对话框,分别在将宽度和高度设定为205mm,按OK按钮.   2.将边框颜色关闭,并打开Window>Gradient(快捷键为F9),使用linear直线渐变.渐变角度为-90.   3.按CTRL+C拷贝,再按CTRL+F或者选择Edit>Paste in Front复制.打开Window>T

Illustrator制作布料效果按钮图标教程

给各位Illustrator软件的使用者们来详细的解析分享一下制作布料效果按钮图标的教程. 教程分享:             好了,以上的信息就是小编给各位Illustrator的这一款软件的使用者们带来的详细的制作布料效果按钮图标的教程解析分享的全部内容了,各位使用者们现在看到这里了是非常的清楚了制作方法了吧,那么大家就快去按照小编的教程自己去制作下布料效果的按钮图标吧.

Illustrator简单制作抽出式小标签教程分享

给各位Illustrator软件的使用者们来详细的解析分享一下简单制作抽出式小标签的教程. 技巧分享:   好了,以上的信息就是小编给各位Illustrator的这一款软件的使用者们带来的详细的简单制作抽出式小标签的教程解析分享的全部内容了,各位看到这里的使用者们,小编相信大家现在看到这里是非常的清楚了制作方法了吧,那么大家就快去按照小编上面的教程自己去制作一下吧.

Android自定义View之圆形进度条式按钮_Android

介绍 今天上班的时候有个哥们问我怎么去实现一个按钮式的进度条,先来看看他需要实现的效果图. 和普通的圆形进度条类似,只是中间的地方有两个状态表示,未开始,暂停状态.而且他说圆形进度的功能已经实现了.那么我们只需要对中间的两个状态做处理就行了. 先来看看实现的效果图: 上面说了我们只需要处理中间状态的变化就可以了,对于进度的处理直接使用了弘洋文章中实现: http://blog.csdn.net/lmj623565791/article/details/43371299 下面开始具体实现. 具体实

Painter制作马赛克式的装饰画教程

给各位Painter软件的使用者们来详细的解析分享一下制作马赛克式的装饰画的教程. 教程分享: 构图:一张颜色鲜艳并且自己喜欢的画.   1.初识工具.为了方便绘画,Painter中自带了克隆功能,一张很普通的图片,通过克隆绘画可以得到许多不同风格的个性作品.现在我们就开始初步接触马赛克.首先,在'画布'菜单下选择'制作马赛克'命令(图1),制作马赛克的前提是要在工具栏中选择笔刷,在图层面版中选择画布层(图2).   (图1)   (图2) 2.掌握工具.接下来我们开始了解它里面的一些选项和效果

Android自定义View之圆形进度条式按钮

介绍 今天上班的时候有个哥们问我怎么去实现一个按钮式的进度条,先来看看他需要实现的效果图. 和普通的圆形进度条类似,只是中间的地方有两个状态表示,未开始,暂停状态.而且他说圆形进度的功能已经实现了.那么我们只需要对中间的两个状态做处理就行了. 先来看看实现的效果图: 上面说了我们只需要处理中间状态的变化就可以了,对于进度的处理直接使用了弘洋文章中实现: http://blog.csdn.net/lmj623565791/article/details/43371299 下面开始具体实现. 具体实

认识响应式图标,如何制作响应式图标

文章描述:说实话,第一次听到"响应式图标"我也觉得怪怪的,正如不久之前,人们为了让图标字体更适合不同设备,而更改它们的大小一样,但是这一想法却让响应式设计以及图标设计有了长足的进步.那么今天,我们就来八一八,这到底什么个什么玩意儿. 说实话,第一次听到"响应式图标"我也觉得怪怪的,正如不久之前,人们为了让图标字体更适合不同设备,而更改它们的大小一样,但是这一想法却让响应式设计以及图标设计有了长足的进步.那么今天,我们就来八一八,这到底什么个什么玩意儿. 他是什么?