跟我一起学extjs5(06--使用图标字体来美化按钮)

跟我一起学extjs5(06--使用图标字体来美化按钮)

sencha 的例子中,有使用图标字体来美化按钮的例子,这个用起来又方便风格又统一,例如下图:

上面图标字体的使用方法也很简单,只要下载Font Awesome的css和图标文件,放到项目里就可以了。部分图标截图:

Font Awesome的网站为:点击打开链接。进入网站后,先下载Font Awesome 3.0,解压缩后,将css和font目录拷贝到war目录下。

文件拷贝进来以后,需要在index.html中引入css文件。

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">

<title>app</title>

<!-- 引入Font Awesome的css文件 -->
<link type="text/css" rel="stylesheet" href="css/font-awesome.css">

<!-- The line below must be kept intact for Sencha Cmd to build your application -->
<script id="microloader" type="text/javascript" src="bootstrap.js"></script>

</head>
<body></body>
</html>

至此准备工作结束,可以字体文件可以使用了。对于一个Button来说,在其文字前面放一个图标可以使用属性icon,iconCls,对于图标字体来说,可以使用iconCls属性,也可以使用glyph这个属性。我们先来看一段该css之中的设置:

/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
   readers do not read off random characters that represent icons */
.icon-glass:before {
  content: "\f000";
}
.icon-music:before {
  content: "\f001";
}
.icon-search:before {
  content: "\f002";
}
.icon-envelope-alt:before {
  content: "\f003";
}

从其css的描述中可以看出,其命名中就表示了该图标的名称,比如说icon-search是一个搜索的图标,在Button使用的时候,可以这样加入属性:

{
						text : '搜索',
						iconCls : 'icon-search'
					}, {
						text : '设置',
						glyph : 0xf0c9
					}

这二种方式加入的icon会有不同之处:,可以看出来用glyph设置的更好一些。为了找到这个数字,你先要去Font
Awesome
 网站上找到你需要的图标,记下名称,然后打开 css 目录下的 font-awesome.css,从中找到该名称的.class值,然后记下content的值。现在我们对top和bottom中的相应按钮加入图标字体。

Ext.define('app.view.main.region.Top', {

			extend : 'Ext.toolbar.Toolbar',

			alias : 'widget.maintop', // 定义了这个组件的xtype类型为maintop

			items : [{
						xtype : 'image',
						bind : { // 数据绑定到MainModel中data的system.iconUrl
							hidden : '{!system.iconUrl}', // 如果system.iconUrl未设置,则此image不显示
							src : '{system.iconUrl}' // 根据system.iconUrl的设置来加载图片
						}
					}, {
						xtype : 'label',
						bind : {
							text : '{system.name}' // text值绑定到system.name
						},
						style : 'font-size : 20px; color : blue;'
					}, {
						xtype : 'label',
						bind : {
							text : '{system.version}'
						}
					}, '->', {
						text : '菜单',
						glyph : 0xf0c9,
						menu : [{
									text : '工程管理',
									menu : [{
												text : '工程项目'
											}, {
												text : '工程标段'
											}]
								}]
					}, ' ', ' ', {
						text : '主页',
						glyph : 0xf015
					}, {
						text : '帮助',
						glyph : 0xf059
					}, {
						text : '关于',
						glyph : 0xf06a
					}, {
						text : '注销',
						glyph : 0xf011
					}, '->', '->', {
						text : '搜索',
						glyph : 0xf002
					}, {
						text : '设置',
						glyph : 0xf013
					}]

		});
Ext.define('app.view.main.region.Bottom', {

			extend : 'Ext.toolbar.Toolbar',

			alias : 'widget.mainbottom',

			items : [{
						bind : {
							text : '使用单位:{user.company}'
						},
						glyph : 0xf0f7
					}, {
						bind : {
							text : '用户:{user.name}'
						},
						glyph : 0xf007
					}, '->', {
						bind : {
							text : '{service.company}'
						},
						glyph : 0xf059

					}, {
						bind : {
							text : '{service.name}'
						}
					}, {
						bind : {
							text : '{service.phonenumber}'
						},
						glyph : 0xf095
					}, {
						bind : {
							hidden : '{!service.email}', // 绑定值前面加!表示取反,如果有email则不隐藏,如果email未设置,则隐藏
							text : 'eMail:{service.email}'
						},
						glyph : 0xf003
					}, {
						bind : {
							text : '©{service.copyright}'
						}
					}]
		});

在修改了上面的glyph之后,还不能正确的显示图标,必须指定一下字体才行。修改Main.js,在里面加入初始化函数。

	initComponent : function() {
		Ext.setGlyphFontFamily('FontAwesome'); // 设置图标字体文件,只有设置了以后才能用glyph属性
		this.callParent();
	},

经过以上的操作,图标字体就可以正常显示了。具体效果如下:

细节决定成败,虽然加了图标字体的按钮比较好看,但是最好把外框和背景去掉,只有鼠标移上去的时候才显示。下一节我们继续Button创建一个自定义的Button,让他的背景是透明的。

跟我一起学extjs5(06--使用图标字体来美化按钮)

时间: 2024-08-07 00:33:23

跟我一起学extjs5(06--使用图标字体来美化按钮)的相关文章

ExtJs5_使用图标字体来美化按钮

sencha 的例子中,有使用图标字体来美化按钮的例子,这个用起来又方便风格又统一,例如下图: 上面图标字体的使用方法也很简单,只要下载Font Awesome的css和图标文件,放到项目里就可以了.部分图标截图: Font Awesome的网站为:点击打开链接.进入网站后,先下载Font Awesome 3.0,解压缩后,将css和font目录拷贝到war目录下. (Font Awesome最新版本为4.0,网址为:http://fontawesome.io/ ) 文件拷贝进来以后,需要在in

extjs基础 使用图标字体来美化按钮)

下载 Font Awesome 1.拷贝css 和 fonts 到build同级目录 2.需要在index.html中引入css文件 3.在main.js文件中添加 1 initComponent : function() { 2 Ext.setGlyphFontFamily('FontAwesome'); // 设置图标字体文件,只有设置了以后才能用glyph属性 3 this.callParent(); 4 }, 4.在组件中使用 text: '主页', glyph: 0xf015   //

跟我一起学extjs5(05--主界面上加入顶部和底部区域)

跟我一起学extjs5(05--主界面上加入顶部和底部区域) 这一节为主界面加一个顶部区域和底部区域.一个管理系统的界面可以粗分为顶部标题部分.中间数据展示和处理的部分.底部备注和状态部分. 在增加这二个区域之前,我们先在MainModel.js中加入一些数据. Ext.define('app.view.main.MainModel', { extend : 'Ext.app.ViewModel', alias : 'viewmodel.main', data : { name : 'app',

跟我一起学extjs5(14--模块字段和Grid列的定义[1])

跟我一起学extjs5(14--模块字段和Grid列的定义[1]) 这一节加入模块自定义字段,并根据这些字段生成model.然后再定义grid中的分组和列.从这一切开始真正进入到了模块自定义的节奏当中,代码的复杂度和技巧性也大大提高.先从模块字段的自定义开始.先看一下ModuleModel.js中加入的新的定义: /** * 模块的数据模型 */ Ext.define('app.view.module.ModuleModel', { extend : 'Ext.app.ViewModel', a

跟我一起学extjs5(12--模块界面的总体设计)

跟我一起学extjs5(12--模块界面的总体设计) 上一节中设计了一些模块自定义中用到的要素,为了直观起见,这一节先建立一个模块的主界面.看过我 模块管理常规功能自定义系统的设计与实现 博客的人应该会有所了解了.一个模块的主界面是一个Grid,在其上方有个操作按钮的工具条,在左边有导航区域,在右边有一个记录明细的显示区域.下面即是一个例子: 下面我们来搭建这个界面,首先在view中建立目录module,在此目录下建立Module.js,ModuleController.js, moduleMo

跟我一起学extjs5(08--自定义菜单1)

跟我一起学extjs5(08--自定义菜单1) 顶部和底部区域已经作好,在顶部区域有一个菜单的按钮,这一节我们设计一个菜单的数据结构,使其可以展示出不同样式的菜单.由于准备搭建的是一个系统模块自定义的系统,因此菜单也是自定义的,在操作员系统登录的时候,和MainModel中的其他数据一样,将会通过ajax加载要显示的菜单数据,然后生成菜单条或者菜单树.在这个例子中,我只做了二层菜单,要做三层以上的只要稍作修改即可. 下面先来看看菜单数据的定义:在MainModel中,在data属性下定义一个sy

跟我一起学extjs5(29--加入模块和菜单定义[2建立java bean])

跟我一起学extjs5(29--加入模块和菜单定义[2建立java bean]) 对上一节中加入的4个模块在java中建立相应的bean文件. 以上表建立好以后,需要建立java bean文件.在建立之前需要加入几个支持类. 先在com.jfok.server.common中建立包annotation,再在下面加入二个类库,这二个是自定义的注释类.分别用来注释每一个模块的信息和模块中每一字段的信息. package com.jfok.server.common.annotation; impor

跟我一起学extjs5(36--单个模块的设计[4根据菜单建立相应的模块])

跟我一起学extjs5(36--单个模块的设计[4根据菜单建立相应的模块]) 前几节处理好了后台,现在又要处理前台了.首先是要修改菜单的选择事件,在创建一个module的时候将 moduleName参数传递进去. 修改MainController.js中的函数: // 选择了主菜单上的菜单后执行 onMainMenuClick : function(menuitem) { var maincenter = this.getView().down('maincenter'); maincenter

跟我一起学extjs5(17--Grid金额字段单位MVVM方式的选择)

跟我一起学extjs5(17--Grid金额字段单位MVVM方式的选择) 这一节来完成Grid中的金额字段的金额单位的转换.转换旰使用MVVM特性,总体上和控制菜单的几种模式类似.首先在目录app/view/main/menu下建立文件Monetary.js,用于放金额单位的数据和生成菜单的items. /** * 金额单位的管理类 */ Ext.define('app.view.main.menu.Monetary', { statics : { values : null, getAllMo