【问题标题】:JQuery Mobile: data-icon replacing ui-listview and other navbar iconsJQuery Mobile:data-icon 替换 ui-listview 和其他导航栏图标
【发布时间】:2012-10-17 18:48:19
【问题描述】:

我是一个 JQuery Mobile Noob,我一直在尝试寻找答案,但无济于事。我创建了一个带有五个自定义数据图标的 ui-navbar。问题是当我选择五个链接之一时,所选链接左侧的按钮会显示所选图标。此外,ul-listview 元素上的右箭头应该是什么,虽然很难看到,但它也会出现在选定的图标上。必须使用 Firebug 来扩展它以查看是否是选定的数据图标。

这是我在页脚中用于导航栏的代码:

<div data-role="footer">
    <div data-role="navbar" class="nav" data-grid="d">
        <ul>
            <li><a href="#programas" id="programas" data-icon="custom">Programas</a></li>
            <li><a href="#noticias" id="noticias" data-icon="custom">Noticias</a></li>
            <li><a href="#radio" id="radio" data-icon="custom">Radio</a></li>
            <li><a href="#eventos" id="eventos" data-icon="custom">Eventos</a></li>
            <li><a href="#more" id="more" data-icon="custom">More</a></li>
        </ul>
        </div> 
</div>

还有一些 CSS:

.nav .ui-btn .ui-btn-inner {
padding-top: 40px !important;
}
.nav .ui-btn .ui-icon {
width: 45px!important;
height: 35px!important;
margin-left: -24px !important;
box-shadow: none!important;
-moz-box-shadow: none!important;
-webkit-box-shadow: none!important;
-webkit-border-radius: none !important;
border-radius: none !important;
}
#programas .ui-icon {
background-image: url(images/nav.png);
background-position: 0 0;
background-repeat: no-repeat;
}

知道为什么会发生这种情况吗?我认为它必须符合我的风格。

【问题讨论】:

    标签: jquery-mobile


    【解决方案1】:

    不要只使用名称ui-icon,而是使用ui-icon-something,另请参阅有关custom icons的文档

    自定义图标

    要使用自定义图标,请指定具有唯一名称的数据图标值 像 myapp-email 和按钮插件将生成一个类 将 ui-icon- 添加到 data-icon 值并将其应用于按钮: ui-icon-myapp-email。

    然后,您可以在样式表中编写针对 ui-icon-myapp-email 类指定图标背景源。到 保持与其余图标的视觉一致性,创建白色 图标 18x18 像素保存为具有 alpha 透明度的 PNG-8。

    在这个例子中,我们只是指向一个独立的图标图像,但是 您可以轻松地使用图标精灵并指定 而是定位,就像我们在 框架。

    .ui-icon-myapp-email {
        background-image: url("app-icon-email.png");
    }
    

    例子

    <!DOCTYPE html>
    <html>
    <head>
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1">
     <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
     <script src="jquery-1.8.0.min.js"></script>
     <script src="jquery.mobile-1.2.0.min.js"></script>
    
     <style>
      .ui-icon-taifun {
        background-image: url("taifun.png");
      }
    
      .nav .ui-btn .ui-btn-inner {
        padding-top: 40px !important;
      }
    
      .nav .ui-btn .ui-icon-taifun {
        width: 45px!important;
        height: 35px!important;
        margin-left: -24px !important;
        box-shadow: none!important;
        -moz-box-shadow: none!important;
        -webkit-box-shadow: none!important;
        -webkit-border-radius: none !important;
        border-radius: none !important;
      }
    
      #programas .ui-icon-taifun {
        background-image: url(taifun.png);
        background-position: 0 0;
        background-repeat: no-repeat;
      }
     </style>
    
     <title>Test</title>
    </head>
    
    <body>
      <div data-role="page">
        <div data-role="content">
          <div data-role="collapsible" data-collapsed-icon="taifun" data-expanded-icon="taifun" data-inset="false">
            <h2><img src="favicon.ico"> Pets</h2>
            <ul data-role="listview">
              <li><a href="index.html">Canary</a></li>
              <li><a href="index.html">Cat</a></li>
              <li><a href="index.html">Dog</a></li>
            </ul>
           </div><!-- /collapsible -->
           <div data-role="collapsible" data-collapsed-icon="taifun" data-expanded-icon="taifun" data-inset="false">
             <h2><img src="favicon.ico"> Farm animals</h2>
             <ul data-role="listview">
               <li><a href="index.html">Chicken</a></li>
               <li><a href="index.html">Cow</a></li>
               <li><a href="index.html">Duck</a></li>
             </ul>
          </div><!-- /collapsible -->
        </div>
    
      <div data-role="footer">
        <div data-role="navbar" class="nav" data-grid="d">
            <ul>
                <li><a href="#programas" id="programas" data-icon="custom">Programas</a></li>
                <li><a href="#noticias" id="noticias" data-icon="custom">Noticias</a></li>
                <li><a href="#radio" id="radio" data-icon="custom">Radio</a></li>
                <li><a href="#eventos" id="eventos" data-icon="custom">Eventos</a></li>
                <li><a href="#more" id="more" data-icon="custom">More</a></li>
            </ul>
        </div>
      </div>
    
      </div>
    
    </body>
    </html>
    

    截图

    【讨论】:

    • 谢谢,这样的工作。我确实消除了没有出现右箭头的问题,但这并没有完全解决问题。对于初学者,我应该在 Taifun 的示例中提到,您必须将 data-icon= 设置为您将新图标类设置为的任何内容。所以在他的例子中,应该是data-icon="taifun"。但是,仍然存在一个问题,当我单击以转到我的 HTML 中的其他页面之一时,所选内容左侧的图标会获取所选图标的样式。假设我选择 Radio。这是我在该页面上看到的图标:Radio、Radio Radio、Eventos、更多。
    • However, there's still an issue where when I click to go to one of the other pages in my HTML, the icons to the left of whatever is selected get the style of the icon selected. Let's say I select Radio. Here's what icons I get on that page: Radio, Radio Radio, Eventos, More. 这是另一个问题。你能提供更多你的代码吗?
    • 泰丰....抱歉耽搁了。与其在此处发布大量代码,不如在这一点上看到它的实际效果。去link查看页面并点击底部的按钮看看我在说什么。
    • 我建议你准备一个小例子使用jsfiddle.net。您可能想为此打开另一个问题并关闭此问题。
    猜你喜欢
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    • 2023-01-27
    • 1970-01-01
    相关资源
    最近更新 更多