zoukankan      html  css  js  c++  java
  • fontawesome-iconpicker 自定义字体图标选择器

    官网地址:https://farbelous.io/fontawesome-iconpicker/

    头部文件引入

    <!--本地地址-->
            <link href="../css/bootstrap.min.css" rel="stylesheet">
            <link href="./css/font-awesome.min.css" rel="stylesheet">
            <link href="./css/fontawesome-iconpicker.min.css" rel="stylesheet">
    <!--远程地址-->
            <!--<link href="https://netdna.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
            <link href="https://use.fontawesome.com/releases/v5.5.0/css/all.css" rel="stylesheet">
            <link href="https://farbelous.io/fontawesome-iconpicker/dist/css/fontawesome-iconpicker.min.css" rel="stylesheet">-->
            <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
    <!--[if lt IE 9]>
            <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->

    页面样式,可以自定义

    .form-control, .form-group{
        position: relative;
    }
    .form-group{
        text-align: left;
        margin-bottom: 30px;
    }
    .form-group label{
        display:block;
        margin-bottom: 15px;
    }
    .lead iframe{
        display:inline-block;
        vertical-align: middle;
    }
    /* 如果使用远程,请自行调整图标容器宽度*/
    .iconpicker-popover.popover{width:335px;}

    页面布局

    <div class="container" style="text-align: center ; padding-top: 100px;600px">
        <div class="row">
            <div class="col-md-12">
                <div class="form-group">
                    <p>版本使用说明:</p>
                    <p>本地地址使用fontawesome 版本 4.7.0</p>
                    <p>远程地址使用fontawesome 版本 5.0</p>
                </div>
                <div class="form-group">
                    <label>搜索图标</label>
                    <input class="form-control icp icp-auto" data-input-search="true" value="" type="text" />
                </div>
                <div class="form-group">
                    <label>选择图标带按钮</label>
                    <div class="input-group">
                        <input data-placement="bottomRight" class="form-control icp icp-auto" value=""  type="text"/>
                        <span class="input-group-addon"></span>
                    </div>
                </div>
                <div class="form-group">
                    <label>点击下拉按钮显示图标</label>
                    <div class="btn-group">
                        <button data-selected="graduation-cap" type="button" class="icp icp-dd btn btn-default dropdown-toggle iconpicker-component" data-toggle="dropdown">
                            Dropdown  <i class="fa fa-fw"></i>
                            <span class="caret"></span>
                        </button>
                        <div class="dropdown-menu"></div>
                    </div>
                    <div class="btn-group">
                        <button type="button" class="btn btn-primary iconpicker-component"><i class="fa fa-fw fa-heart"></i></button>
                        <button type="button" class="icp icp-dd btn btn-primary dropdown-toggle" data-selected="fa-car" data-toggle="dropdown">
                            <span class="caret"></span>
                            <span class="sr-only">Toggle Dropdown</span>
                        </button>
                        <div class="dropdown-menu"></div>
                    </div>
                    <p class="m-t-10">注意:在下拉列表中,放置由Bootstrap下拉插件控制</p>
                </div>
            </div>
        </div>
    </div>

     引用 js 文件

    <!--本地地址-->
            <script src="../js/jquery.min.js"></script>
            <script src="../js/bootstrap.min.js"></script>
            <script src="./js/fontawesome-iconpicker.js"></script>
    <!--远程地址-->
            <!--<script src="https://code.jquery.com/jquery-2.2.1.min.js"></script>
            <script src="https://netdna.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
            <script src="https://farbelous.io/fontawesome-iconpicker/dist/js/fontawesome-iconpicker.js"></script>-->

     插件调用

    $(function() {
        // 图标可以点击选中 icp-auto 操作图标元素
        $('.icp-auto').iconpicker({
            title: '请选择一个图标',
            //  指定图标
            //icons:['fa-github', 'fa-heart', 'fa-html5', 'fa-css3'],
            // 添加其他图标 加入 bootstrap  glyphicon 字体图标
            icons: $.merge(['glyphicon-home', 'glyphicon-repeat', 'glyphicon-search',
                'glyphicon-arrow-left', 'glyphicon-arrow-right', 'glyphicon-star'], $.iconpicker.defaultOptions.icons),
            fullClassFormatter: function(val){
                if(val.match(/^fa-/)){
                    return 'fa '+val;
                }else{
                    return 'glyphicon '+val;
                }
            },
            component: '.input-group-addon', // 图标存放容器
           /* Placements: inline topLeftCorner topLeft top topRight topRightCorner rightTop right rightBottom bottomRightCorner bottomRight bottom bottomLeft bottomLeftCorner leftBottom left leftTop*/
            placement:'right',  // 图标容器位置
        });
    
        // 图标不可以点击, 绑定 .icp 元素
        // $.iconpicker.batch('.icp', 'destroy');
    
        // 点击下拉按钮显示图标
        $('.btn-group>button').one("click",function(){
            console.log(1);
            $('.icp-dd').iconpicker({
                //title: 'Dropdown with picker',
                //component:'.btn > i'
            });
        }) ;
    });

     全部代码

      1 <!DOCTYPE html>
      2 <html lang="en">
      3     <head>
      4         <meta charset="utf-8">
      5         <title>https://farbelous.io/fontawesome-iconpicker/</title>
      6         <!--本地地址-->
      7         <link href="../css/bootstrap.min.css" rel="stylesheet">
      8         <link href="./css/font-awesome.min.css" rel="stylesheet">
      9         <link href="./css/fontawesome-iconpicker.min.css" rel="stylesheet">
     10         <!--远程地址-->
     11         <!--<link href="https://netdna.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
     12         <link href="https://use.fontawesome.com/releases/v5.5.0/css/all.css" rel="stylesheet">
     13         <link href="https://farbelous.io/fontawesome-iconpicker/dist/css/fontawesome-iconpicker.min.css" rel="stylesheet">-->
     14         <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
     15         <!--[if lt IE 9]>
     16         <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
     17         <![endif]-->
     18         <style>
     19             .form-control, .form-group{
     20                 position: relative;
     21             }
     22             .form-group{
     23                 text-align: left;
     24                 margin-bottom: 30px;
     25             }
     26             .form-group label{
     27                 display:block;
     28                 margin-bottom: 15px;
     29             }
     30             .lead iframe{
     31                 display:inline-block;
     32                 vertical-align: middle;
     33             }
     34             /* 如果使用远程,请自行调整图标容器宽度*/
     35             .iconpicker-popover.popover{width:335px;}
     36         </style>
     37     </head>
     38 
     39     <body>
     40         <div class="container" style="text-align: center ; padding-top: 100px;600px">
     41             <div class="row">
     42                 <div class="col-md-12">
     43                     <div class="form-group">
     44                         <p>版本使用说明:</p>
     45                         <p>本地地址使用fontawesome 版本 4.7.0</p>
     46                         <p>远程地址使用fontawesome 版本 5.0</p>
     47                     </div>
     48                     <div class="form-group">
     49                         <label>搜索图标</label>
     50                         <input class="form-control icp icp-auto" data-input-search="true" value="" type="text" />
     51                     </div>
     52                     <div class="form-group">
     53                         <label>选择图标带按钮</label>
     54                         <div class="input-group">
     55                             <input data-placement="bottomRight" class="form-control icp icp-auto" value=""  type="text"/>
     56                             <span class="input-group-addon"></span>
     57                         </div>
     58                     </div>
     59                     <div class="form-group">
     60                         <label>点击下拉按钮显示图标</label>
     61                         <div class="btn-group">
     62                             <button data-selected="graduation-cap" type="button" class="icp icp-dd btn btn-default dropdown-toggle iconpicker-component" data-toggle="dropdown">
     63                                 Dropdown  <i class="fa fa-fw"></i>
     64                                 <span class="caret"></span>
     65                             </button>
     66                             <div class="dropdown-menu"></div>
     67                         </div>
     68                         <div class="btn-group">
     69                             <button type="button" class="btn btn-primary iconpicker-component"><i class="fa fa-fw fa-heart"></i></button>
     70                             <button type="button" class="icp icp-dd btn btn-primary dropdown-toggle" data-selected="fa-car" data-toggle="dropdown">
     71                                 <span class="caret"></span>
     72                                 <span class="sr-only">Toggle Dropdown</span>
     73                             </button>
     74                             <div class="dropdown-menu"></div>
     75                         </div>
     76                         <p class="m-t-10">注意:在下拉列表中,放置由Bootstrap下拉插件控制</p>
     77                     </div>
     78                 </div>
     79             </div>
     80         </div>
     81         <!--本地地址-->
     82         <script src="../js/jquery.min.js"></script>
     83         <script src="../js/bootstrap.min.js"></script>
     84         <script src="./js/fontawesome-iconpicker.js"></script>
     85         <!--远程地址-->
     86         <!--<script src="https://code.jquery.com/jquery-2.2.1.min.js"></script>
     87         <script src="https://netdna.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
     88         <script src="https://farbelous.io/fontawesome-iconpicker/dist/js/fontawesome-iconpicker.js"></script>-->
     89         <script>
     90             $(function() {
     91                 // 图标可以点击选中 icp-auto 操作图标元素
     92                 $('.icp-auto').iconpicker({
     93                     title: '请选择一个图标',
     94                     //  指定图标
     95                     //icons:['fa-github', 'fa-heart', 'fa-html5', 'fa-css3'],
     96                     // 添加其他图标 加入 bootstrap  glyphicon 字体图标
     97                     icons: $.merge(['glyphicon-home', 'glyphicon-repeat', 'glyphicon-search',
     98                         'glyphicon-arrow-left', 'glyphicon-arrow-right', 'glyphicon-star'], $.iconpicker.defaultOptions.icons),
     99                     fullClassFormatter: function(val){
    100                         if(val.match(/^fa-/)){
    101                             return 'fa '+val;
    102                         }else{
    103                             return 'glyphicon '+val;
    104                         }
    105                     },
    106                     component: '.input-group-addon', // 图标存放容器
    107                    /* Placements: inline topLeftCorner topLeft top topRight topRightCorner rightTop right rightBottom bottomRightCorner bottomRight bottom bottomLeft bottomLeftCorner leftBottom left leftTop*/
    108                     placement:'right',  // 图标容器位置
    109                 });
    110 
    111                 // 图标不可以点击, 绑定 .icp 元素
    112                 // $.iconpicker.batch('.icp', 'destroy');
    113 
    114                 // 点击下拉按钮显示图标
    115                 $('.btn-group>button').one("click",function(){
    116                     console.log(1);
    117                     $('.icp-dd').iconpicker({
    118                         //title: 'Dropdown with picker',
    119                         //component:'.btn > i'
    120                     });
    121                 }) ;
    122             });
    123         </script>
    124     </body>
    125 </html>
    View Code 

    最终效果图

    图标选择器添加 tab 切换多种字体

    修改 fontawesome-iconpicker.js 一下3个地方
    创建 tab 初始元素 

    this._createPopover(); 
    // 创建 Popover 下面,添加 tab 元素面板
    if(this.options.tab && (this.options.tab!='')){
        var glyphicon_active='',layui_active='',fa_active='';
        if(this.options.tab=='glyphicon'){
            glyphicon_active='class="active"';
        }else if(this.options.tab=='layui-icon'){
            layui_active='class="active"';
        }else{
            fa_active='class="active"';
        }
        var  tabHtml=
                "<ul class="nav nav-tabs">
    " +
                    "<li "+fa_active+"><a href="#">fa</a></li>
    " +
                    "<li "+glyphicon_active+"><a href="#">glyphicon</a></li>
    " +
                    "<li "+layui_active+"><a href="#">layui-icon</a></li>
    " +
                "</ul>";
    
        this.popover.find(".popover-content").append(tabHtml);
        this._createTab(this.options.tab);
    } 
    // 创建 Iconpicker  上面
    this._createIconpicker(); 

    字体图标数据 json 形式,可以自定义自己的图标名称对应请求图标文件数据

    {"data":["glyphicon-home", "glyphicon-repeat", "glyphicon-search","glyphicon-arrow-left", "glyphicon-arrow-right", "glyphicon-star"]}

    根据 tab 选项获取字体图标

    // _createPopover 下面 根据tab 选项获取字体图标
    _createTab:function(tab_select){
        // 这个地方添加---  改变 this 指向
        var temp_icon_this=[];
        $.ajaxSettings.async = false;// 同步
        var ajax_success=false;
        var data_file='';
        switch (tab_select) {
            case 'glyphicon':
                data_file="./data/glyphicon.json";
               // this.options.tab='glyphicon';
                break;
            case 'layui-icon':
                data_file="./data/layui-icon.json";
               // this.options.tab='layui-icon';
                break;
            default:
              //  this.options.tab='fa';
                break;
        }
        if(data_file!=''){
            temp_icon_this=this.options.icons
            // 加载ajax 数据 https://www.runoob.com/jquery/ajax-post.html
            $.post(data_file,function(data,status,xhr){
                temp_icon_this=data.data;
                ajax_success=true;
            }).error(function(xhr,status,error){
                console.log('XMLHttpRequest 对象: '+xhr);
                console.log('状态:'+status);
                console.log('错误信息:'+error)
            });
        }
        // 请求成功并且有数据
        if((ajax_success==true) && (temp_icon_this.length>=1)){
            this.options.icons= temp_icon_this;
        }else{
            this.options.icons=c.defaultOptions.icons;
        }
        $.ajaxSettings.async = true;// 异步
        return this.options.icons;
    },
    // _createIconpicker 上面

    添加 tab 点击切换事件

    _bindElementEvents: function() {
        var c = this;
        // 定义 this 指向下面 添加点击 tab 事件
        c.popover.find('.nav-tabs li').each(function(index,ele){
            $(this).click(function () {
                var icon_name=$(this).children().text();
                if(c.options.tab!=icon_name){
                    // 从新载入面板
                    c._createTab($(this).children().text());
                    c.popover.find(".popover-content>.iconpicker").remove();
                    c._createIconpicker();
                    c.options.tab=icon_name;
                    $(this).addClass('active').siblings().removeClass('active');
                }
            });
        });
        // this.getSearchInput() 上面
        this.getSearchInput().on("keyup.iconpicker", function() {
            c.filter(a(this).val().toLowerCase());
        });

    调用示例,自定义图标类型记得 fullClassFormatter 相应的图标标识

    $(function() {
        $('.icp-auto').iconpicker({
            title: '请选择一个图标',
            tab:'layui-icon', //定义tab 选项 glyphicon fa  layui-icon
            //  指定图标
            //icons:['fa-github', 'fa-heart', 'fa-html5', 'fa-css3'],
            // 添加其他图标 加入 bootstrap  glyphicon 字体图标
            /*icons: $.merge(['layui-icon-release','glyphicon-home', 'glyphicon-repeat', 'glyphicon-search',
                'glyphicon-arrow-left', 'glyphicon-arrow-right', 'glyphicon-star'], $.iconpicker.defaultOptions.icons),*/
            fullClassFormatter: function(val){
                if(val.match(/fa-/)){
                    return 'fa '+val;
                }else if(val.match(/glyphicon-/)){
                    return 'glyphicon '+val;
                }else {
                    return 'layui-icon '+val;
                }
            },
            component: '.input-group-addon', // 图标存放容器
           /* Placements: inline topLeftCorner topLeft top topRight topRightCorner rightTop right rightBottom bottomRightCorner bottomRight bottom bottomLeft bottomLeftCorner leftBottom left leftTop*/
            placement:'right',  // 图标容器位置
        });
    });

  • 相关阅读:
    Oracle:解锁scott用户及设置密码
    js生成条形码
    返回头部效果
    密码强度
    事件委托小效果
    圆形导航效果
    进度条效果
    标题跟随效果
    随机抽人小效果
    点击创建效果
  • 原文地址:https://www.cnblogs.com/xuey/p/11394336.html
Copyright © 2011-2022 走看看