6.4 自定义按钮的图标

通过上一节的讲解,笔者不禁要惊叹一下jQuery Mobile设计的精妙了,不过如果按钮图标能够自定义就更好了。由于相对默认图标而言,自定义图标使用会比较复杂,因此这里专门用一节来讲解自定义按钮图标的使用方法。

既然是自定义按钮图标,首先要把图片准备好,为了达到较好的显示效果,尽量使用png格式的图片,现在打开Photoshop绘制一个18×18像素的图标,如图6-10所示。

图6-10 round.png示意图

这里绘制了一个简单的图标,设置图片背景为透明,在图片的中心点有一个大小适中的白色实心圆,将此文件命名为round.png,并保存在jQuery Mobile目录下。之后再准备一个页面,代码如下。

【范例6-4 自定义按钮的图标】

        01   <! DOCTYPE html>                                               <! --声明HTML 5-->
        02
        03    <head>
        04    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        05   <title>自定义图标 </title>                                       <! --标题可不要-->
        06    <meta name="viewport" content="width=device-width, initial-scale=1">
        07    <link rel="stylesheet" href="jquery.mobile.min.css" />
        08    <script src="jquery-2.1.4.min.js"></script>
        09    <script src="jquery.mobile.min.js"></script>
        10    </head>
        11    <body>
        12         <div data-role="page">
        13               <div data-role="header" data-position="fixed">
        14                  <a href="#">返回</a>
        15                  <h1>头部栏</h1>
        16                  <a href="#">设置</a>
        17             </div>
        18               <div data-role="content">
        19                  <! --使用自定义图标round,通过属性data-icon="round"进行定义-->
        20                          <a href="#" data-role="button" data-iconpos="left" data-
    icon="round">自定义图标在左侧显示</a>
        21                          <a href="#" data-role="button" data-iconpos="right" data-
    icon="round">自定义图标在右侧显示</a>
        22                          <a href="#" data-role="button" data-iconpos="top" data-
    icon="round">自定义图标在上方显示</a>
        23                          <a   href="#"   data-role="button"   data-iconpos="bottom"
    data-icon="round">自定义图标在下方显示</a>
        24                          <a   href="#"   data-role="button"   data-iconpos="notext"
    data-icon="round">不显示自定义图标</a>
        25               </div>
        26             <div data-role="footer" data-position="fixed">
        27                    <div data-role="navbar">
        28                          <ul>
        29                       <! --使用自定义图标round,通过属性data-icon="round"进行定义
        30                            <li><a id="chat"href="#"data-icon="round">微信</a></li>
        31                            <li><a  id="email"  href="#"  data-icon="round">通讯录
    </a></li>
        32                            <li><a  id="skull"  href="#"  data-icon="round">找朋友
    </a></li>
        33                            <li><a  id="beer"  href="#"  data-icon="round"> 设置
    </a></li>
        34                          </ul>
        35                    </div><! -- /navbar -->
        36               </div><! -- /footer -->
        37        </div>
        38    </body>
        39    </html>

观察代码可以发现,在data-icon属性中引用了一个之前没有接触过的名称round。通过之前保存的图片名称round.png可以猜测,这样就能将图片作为图标显示了,但是运行后发现结果不是这样的,如图6-11所示。

图6-11 加入的新图标

显然用这种方法为按钮加入新图标是不正确的,因为这样做仅仅是设置了图标的内容,而浏览器还不知道要怎样去寻找round.png,所以要想真正加入自定义图标还需要设置好对应的CSS样式。

在页面中加入一个新的样式,样式名称由图标名与ui-icon组合而成,比如本例中图标名称为round,那么样式名就应设置为ui-icon-round。样式代码如下:

        <style type="text/css">
        .ui-icon-round{  background-image:url(round.png); }<! --背景图片指向刚刚保存的
    round.png
        </style>

保存之后再次运行,得到的结果如图6-12所示。

图6-12 新加入的图标样式得以显示

提示

在自定义图标样式时,一定要保证图标的尺寸为18×18像素,否则jQuery Mobile将只截取图片左上方18×18像素的部分进行显示。