【问题标题】:jqGrid Pager Area - Using Font Awesome IconsjqGrid 寻呼机区域 - 使用 Font Awesome 图标
【发布时间】:2012-12-01 12:38:39
【问题描述】:

我想使用 Font Awesome 图标:

<i class="icon-edit"></i>

默认在jqGrid分页区域而不是物理图像。

.navButtonAdd('#vw_ComplaintSearchGridPager', { caption: '', buttonicon: 'ui-icon-disk', title: 'Save Grid Settings', onClickButton: function () { $(this).SaveGridSetting(); } })

有谁知道如何做到这一点?

【问题讨论】:

    标签: jqgrid font-awesome


    【解决方案1】:

    这是一个非常有趣的问题!我之前从未使用过Font Awesome icons,但它似乎是一个非常有趣的项目。

    jqGrid 目前没有对 Font Awesome 图标的直接支持,但我准备了 the simple demo,它展示了如何用 Font Awesome 中的相应图标替换标准的 jQuery UI 导航器图标。

    页面缩放后,与原始导航器图标的区别非常明显。我在导航器下方添加了 400% 缩放显示:

    使用 jQuery UI 图标的原始导航器

    带有 Font Awesome 图标的导航器:

    我使用的代码非常简单。而不是使用

    $grid.jqGrid("navGrid", "#pager", {view: true});
    

    我用过

    $grid.jqGrid("navGrid", "#pager", {editicon: "icon-pencil",
        addicon: "icon-plus", delicon: "icon-trash", searchicon: "icon-search",
        refreshicon: "icon-refresh", viewicon: "icon-file",view: true});
    
    $("#pager .navtable .ui-pg-div>span").removeClass("ui-icon");
    

    我添加了 CSS

    .ui-jqgrid .ui-jqgrid-pager .ui-pg-div>span { margin: 0 5px; font-size: 12px; }
    

    我认为可以将更多的 jQuery UI 图标替换为 Font Awesome 图标,但这并不是很简单。我会更多地考虑这个问题,并会联系 jqGrid 的开发者(Tony Tomov)考虑让 jqGrid 对 Font Awesome 图标更友好,这样就可以非常简单地切换到 Font Awesome 图标。

    更新:我添加了允许顶部替换寻呼机中更多图标的代码:

    var $pager = $grid.closest(".ui-jqgrid").find(".ui-pg-table");
    $pager.find(".ui-pg-button>span.ui-icon-seek-first")
        .removeClass("ui-icon ui-icon-seek-first")
        .addClass("icon-step-backward");
    $pager.find(".ui-pg-button>span.ui-icon-seek-prev")
        .removeClass("ui-icon ui-icon-seek-prev")
        .addClass("icon-backward");
    $pager.find(".ui-pg-button>span.ui-icon-seek-next")
        .removeClass("ui-icon ui-icon-seek-next")
        .addClass("icon-forward");
    $pager.find(".ui-pg-button>span.ui-icon-seek-end")
        .removeClass("ui-icon ui-icon-seek-end")
        .addClass("icon-step-forward");
    

    结果得到以下寻呼机:

    而不是

    更新 2:更改最小化图标的代码看起来更完整了。一开始应该先改变图标

    $grid.closest(".ui-jqgrid")
        .find(".ui-jqgrid-titlebar>.ui-jqgrid-titlebar-close>.ui-icon-circle-triangle-n")
        .removeClass("ui-icon ui-icon-circle-triangle-n")
        .addClass("icon-circle-arrow-down");
    

    然后在每次点击图标后更改它:

    onHeaderClick: function (gridstate) {
        if (gridstate === "visible") {
            $(this.grid.cDiv).find(">.ui-jqgrid-titlebar-close>span")
                .removeClass("icon-circle-arrow-up ui-icon-circle-triangle-n")
                .addClass("icon-circle-arrow-down");
        } else if (gridstate === "hidden") {
            $(this.grid.cDiv).find(">.ui-jqgrid-titlebar-close>span")
                .removeClass("icon-circle-arrow-down ui-icon-circle-triangle-s")
                .addClass("icon-circle-arrow-up");
        }
    }
    

    另外需要添加 CSS

    .ui-jqgrid .ui-jqgrid-titlebar-close>span { margin: 0 3px; font-size: 16px; }
    .ui-jqgrid .ui-jqgrid-titlebar-close { text-decoration: none; }
    

    为了修复排序图标,我使用了代码

    var $sortables = $grid.closest(".ui-jqgrid")
        .find(".ui-jqgrid-htable .ui-jqgrid-labels .ui-jqgrid-sortable span.s-ico");
    $sortables.find(">span.ui-icon-triangle-1-s")
        .removeClass("ui-icon ui-icon-triangle-1-s")
        .addClass("icon-sort-down");
    $sortables.find(">span.ui-icon-triangle-1-n")
        .removeClass("ui-icon ui-icon-triangle-1-n")
        .addClass("icon-sort-up");
    

    和 CSS

    .ui-jqgrid .ui-icon-asc { height: auto; margin-top: 0; }
    .ui-jqgrid .ui-icon-asc, .ui-jqgrid .ui-icon-desc {
        height: auto; margin-top: 0; margin-left: 5px;
    }
    .ui-jqgrid .s-ico>.ui-state-disabled, .s-ico>.ui-state-disabled { padding: 0; }
    

    结果会得到以下结果:

    更新 3:在 the next demo 中可以找到更多将 jQuery UI 图标完全替换为 Font Awesome 图标的功能。

    更新 4The answer 为 Font Awesome 版本 4.x 提供解决方案。

    【讨论】:

    • @PaulBrown:不客气!我将 the feature request 发布到 trirand。
    • @PaulBrown:在我的回答的 UPDATED 3 部分中,我向 Font Awesome 图标添加了更多完全替换 jQuery UI 图标。
    【解决方案2】:

    我想我会为那些感兴趣的人提供一个 CSS 替代答案。我们的一位开发人员实现了一个 JS 选项,该选项在功能上确实有效,但是在正确呈现之前存在延迟(不理想)。

    我们在分页选项中使用了很棒的字体图标,下面是我们的实现方式。

    找到了 jqGrid 用于我们希望自定义的分页图标的四个类,并创建了以下 css 以应用基本字体真棒样式

    .ui-icon-seek-next, .ui-icon-seek-prev, .ui-icon-seek-end, .ui-icon-seek-first
    {
        display: inline-block;
        font-family: FontAwesome;
        font-style: normal;
        font-weight: normal;
        line-height: 1;
        -webkit-font-smoothing: antialiased;
    
    }
    

    然后,只需从 font-family 图标中获取 content 并将它们用作您自己的即可。

    .ui-icon-seek-next:before
    {
        content: "\f105";
    }
    .ui-icon-seek-prev:before
    {
        content: "\f104";
    }
    .ui-icon-seek-end:before
    {
        content: "\f101";
    }
    .ui-icon-seek-first:before
    {
        content: "\f100";
    }
    

    所以整个 CSS 看起来像这样

    .ui-icon-seek-next, .ui-icon-seek-prev, .ui-icon-seek-end, .ui-icon-seek-first
    {
        display: inline-block;
        font-family: FontAwesome;
        font-style: normal;
        font-weight: normal;
        line-height: 1;
        -webkit-font-smoothing: antialiased;
    
    }
    .ui-icon-seek-next:before
    {
        content: "\f105";
    }
    .ui-icon-seek-prev:before
    {
        content: "\f104";
    }
    .ui-icon-seek-end:before
    {
        content: "\f101";
    }
    .ui-icon-seek-first:before
    {
        content: "\f100";
    }
    

    我们的网格上的输出没有 JS 并且没有延迟

    【讨论】:

      【解决方案3】:

      通过查看上面 Oleg 的答案,我做了以下事情来简化事情。 其他 CSS

      .ui-jqgrid .ui-jqgrid-pager .ui-pg-div>span.fntawsm { margin: 0 5px; font-size: 12px; padding-left:2px;padding-right:2px;}
      

      ** padding-left:2px;padding-right:2px;是可选的 这仅适用于没有标题的图标...

      然后开始在 navButtonAdd 中添加 fontawesome 图标

      caption:"", // important for above
      title:"Give any",
      buttonicon:"fntawsm icon-remove"
      buttonicon:"fntawsm icon-eject icon-rotate-90"
      

      etc .. 你也可以使用 font-awesome 的所有额外功能,比如 icon-rotate-XX。 这样我就不必从跨度中删除 ui-icon 类。

      【讨论】:

        【解决方案4】:

        受@afreeland 回答的启发,我在 github 上创建了一个可用的 CSS,它允许您将图标转换为 Font-Awesome 图标。

        在我看来,与@Oleg 描述的jquery 方法相比,它的性能优势很重要。 在我看来,这也是一个非常优雅的解决方案。

        欢迎使用:https://github.com/guylando/ToAF

        注意:您必须将此 ToAF.css 文件样式优先于其他图标样式,以便例如通过将 css 内容复制到文档中的标签中来实现。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-02-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-17
          • 2012-01-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多