zoukankan      html  css  js  c++  java
  • 【JeeSite】区域和菜单管理

    /**
     * 区域Entity
     * @author ThinkGem
     * @version 2013-05-15
     */
    public class Area extends TreeEntity<Area> {
    
        private static final long serialVersionUID = 1L;
    //    private Area parent;    // 父级编号
    //    private String parentIds; // 所有父级编号
        private String code;     // 区域编码
    //    private String name;     // 区域名称
    //    private Integer sort;        // 排序
        private String type;     // 区域类型(1:国家;2:省份、直辖市;3:地市;4:区县)
    View Code

    area 对象的属性 parent 和 parentIds 放在父类TreeEntity<T> 中,

    /**
     * 数据Entity类
     * @author ThinkGem
     * @version 2014-05-16
     */
    public abstract class TreeEntity<T> extends DataEntity<T> {
    
        private static final long serialVersionUID = 1L;
    
        protected T parent;    // 父级编号
        protected String parentIds; // 所有父级编号
        protected String name;     // 机构名称
        protected Integer sort;        // 排序
    View Code

    public class AreaService extends TreeService<AreaDao, Area>   在TreeService中设计了更新parentIds(注意要更新子节点的parentIds,不能光更新新增的节点的parentIds)。还放了一个预留接口preUpdateChild

    /**
     * Copyright &copy; 2012-2016 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
     */
    package com.thinkgem.jeesite.common.service;
    
    import java.util.List;
    
    import org.springframework.transaction.annotation.Transactional;
    
    import com.thinkgem.jeesite.common.persistence.TreeDao;
    import com.thinkgem.jeesite.common.persistence.TreeEntity;
    import com.thinkgem.jeesite.common.utils.Reflections;
    import com.thinkgem.jeesite.common.utils.StringUtils;
    
    /**
     * Service基类
     * @author ThinkGem
     * @version 2014-05-16
     */
    @Transactional(readOnly = true)
    public abstract class TreeService<D extends TreeDao<T>, T extends TreeEntity<T>> extends CrudService<D, T> {
        
        @Transactional(readOnly = false)
        public void save(T entity) {
            
            @SuppressWarnings("unchecked")
            Class<T> entityClass = Reflections.getClassGenricType(getClass(), 1);
            
            // 如果没有设置父节点,则代表为跟节点,有则获取父节点实体
            if (entity.getParent() == null || StringUtils.isBlank(entity.getParentId()) 
                    || "0".equals(entity.getParentId())){
                entity.setParent(null);
            }else{
                entity.setParent(super.get(entity.getParentId()));
            }
            if (entity.getParent() == null){
                T parentEntity = null;
                try {
                    parentEntity = entityClass.getConstructor(String.class).newInstance("0");
                } catch (Exception e) {
                    throw new ServiceException(e);
                }
                entity.setParent(parentEntity);
                entity.getParent().setParentIds(StringUtils.EMPTY);
            }
            
            // 获取修改前的parentIds,用于更新子节点的parentIds
            String oldParentIds = entity.getParentIds(); 
            
            // 设置新的父节点串
            entity.setParentIds(entity.getParent().getParentIds()+entity.getParent().getId()+",");
            
            // 保存或更新实体
            super.save(entity);
            
            // 更新子节点 parentIds
            T o = null;
            try {
                o = entityClass.newInstance();
            } catch (Exception e) {
                throw new ServiceException(e);
            }
            o.setParentIds("%,"+entity.getId()+",%");
            List<T> list = dao.findByParentIdsLike(o);
            for (T e : list){
                if (e.getParentIds() != null && oldParentIds != null){
                    e.setParentIds(e.getParentIds().replace(oldParentIds, entity.getParentIds()));
                    preUpdateChild(entity, e);
                    dao.updateParentIds(e);
                }
            }
            
        }
        
        /**
         * 预留接口,用户更新子节前调用
         * @param childEntity
         */
        protected void preUpdateChild(T entity, T childEntity) {
            
        }
    
    }
    View Code

    treeTable 的使用:

    <%@ page contentType="text/html;charset=UTF-8" %>
    <%@ include file="/WEB-INF/views/include/taglib.jsp"%>
    <html>
    <head>
        <title>区域管理</title>
        <meta name="decorator" content="default"/>
        <%@include file="/WEB-INF/views/include/treetable.jsp" %>
        <script type="text/javascript">
            $(document).ready(function() {
                var tpl = $("#treeTableTpl").html().replace(/(//<!--)|(//-->)/g,"");
                var data = ${fns:toJson(list)}, rootId = "0";
                addRow("#treeTableList", tpl, data, rootId, true);
                $("#treeTable").treeTable({expandLevel : 5});
            });
            function addRow(list, tpl, data, pid, root){
                for (var i=0; i<data.length; i++){
                    var row = data[i];
                    if ((${fns:jsGetVal('row.parentId')}) == pid){
                        $(list).append(Mustache.render(tpl, {
                            dict: {
                                type: getDictLabel(${fns:toJson(fns:getDictList('sys_area_type'))}, row.type)
                            }, pid: (root?0:pid), row: row
                        }));
                        addRow(list, tpl, data, row.id);
                    }
                }
            }
        </script>
    </head>
    <body>
        <ul class="nav nav-tabs">
            <li class="active"><a href="${ctx}/sys/area/">区域列表</a></li>
            <shiro:hasPermission name="sys:area:edit"><li><a href="${ctx}/sys/area/form">区域添加</a></li></shiro:hasPermission>
        </ul>
        <sys:message content="${message}"/>
        <table id="treeTable" class="table table-striped table-bordered table-condensed">
            <thead><tr><th>区域名称</th><th>区域编码</th><th>区域类型</th><th>备注</th><shiro:hasPermission name="sys:area:edit"><th>操作</th></shiro:hasPermission></tr></thead>
            <tbody id="treeTableList"></tbody>
        </table>
        <script type="text/template" id="treeTableTpl">
            <tr id="{{row.id}}" pId="{{pid}}">
                <td><a href="${ctx}/sys/area/form?id={{row.id}}">{{row.name}}</a></td>
                <td>{{row.code}}</td>
                <td>{{dict.type}}</td>
                <td>{{row.remarks}}</td>
                <shiro:hasPermission name="sys:area:edit"><td>
                    <a href="${ctx}/sys/area/form?id={{row.id}}">修改</a>
                    <a href="${ctx}/sys/area/delete?id={{row.id}}" onclick="return confirmx('要删除该区域及所有子区域项吗?', this.href)">删除</a>
                    <a href="${ctx}/sys/area/form?parent.id={{row.id}}">添加下级区域</a> 
                </td></shiro:hasPermission>
            </tr>
        </script>
    </body>
    </html>
    View Code

    上面的比较复杂不容易理解可以参考下面的

    <%@ page contentType="text/html;charset=UTF-8" %>
    <%@ include file="/WEB-INF/views/include/taglib.jsp"%>
    <html>
    <head>
        <title>菜单管理</title>
        <meta name="decorator" content="default"/>
        <%@include file="/WEB-INF/views/include/treetable.jsp" %>
        <script type="text/javascript">
            $(document).ready(function() {
                $("#treeTable").treeTable({expandLevel : 3}).show();
            });
            function updateSort() {
                loading('正在提交,请稍等...');
                $("#listForm").attr("action", "${ctx}/sys/menu/updateSort");
                $("#listForm").submit();
            }
        </script>
    </head>
    <body>
        <ul class="nav nav-tabs">
            <li class="active"><a href="${ctx}/sys/menu/">菜单列表</a></li>
            <shiro:hasPermission name="sys:menu:edit"><li><a href="${ctx}/sys/menu/form">菜单添加</a></li></shiro:hasPermission>
        </ul>
        <sys:message content="${message}"/>
        <form id="listForm" method="post">
            <table id="treeTable" class="table table-striped table-bordered table-condensed hide">
                <thead><tr><th>名称</th><th>链接</th><th style="text-align:center;">排序</th><th>可见</th><th>权限标识</th><shiro:hasPermission name="sys:menu:edit"><th>操作</th></shiro:hasPermission></tr></thead>
                <tbody><c:forEach items="${list}" var="menu">
                    <tr id="${menu.id}" pId="${menu.parent.id ne '1'?menu.parent.id:'0'}">
                        <td nowrap><i class="icon-${not empty menu.icon?menu.icon:' hide'}"></i><a href="${ctx}/sys/menu/form?id=${menu.id}">${menu.name}</a></td>
                        <td title="${menu.href}">${fns:abbr(menu.href,30)}</td>
                        <td style="text-align:center;">
                            <shiro:hasPermission name="sys:menu:edit">
                                <input type="hidden" name="ids" value="${menu.id}"/>
                                <input name="sorts" type="text" value="${menu.sort}" style="50px;margin:0;padding:0;text-align:center;">
                            </shiro:hasPermission><shiro:lacksPermission name="sys:menu:edit">
                                ${menu.sort}
                            </shiro:lacksPermission>
                        </td>
                        <td>${menu.isShow eq '1'?'显示':'隐藏'}</td>
                        <td title="${menu.permission}">${fns:abbr(menu.permission,30)}</td>
                        <shiro:hasPermission name="sys:menu:edit"><td nowrap>
                            <a href="${ctx}/sys/menu/form?id=${menu.id}">修改</a>
                            <a href="${ctx}/sys/menu/delete?id=${menu.id}" onclick="return confirmx('要删除该菜单及所有子菜单项吗?', this.href)">删除</a>
                            <a href="${ctx}/sys/menu/form?parent.id=${menu.id}">添加下级菜单</a> 
                        </td></shiro:hasPermission>
                    </tr>
                </c:forEach></tbody>
            </table>
            <shiro:hasPermission name="sys:menu:edit"><div class="form-actions pagination-left">
                <input id="btnSubmit" class="btn btn-primary" type="button" value="保存排序" onclick="updateSort();"/>
            </div></shiro:hasPermission>
         </form>
    </body>
    </html>
    View Code

    排序的批量更新方法不错。

    <input type="hidden" name="ids" value="${menu.id}"/>
     <input name="sorts" type="text" value="${menu.sort}" >

    /**
         * 批量修改菜单排序
         */
        @RequiresPermissions("sys:menu:edit")
        @RequestMapping(value = "updateSort")
        public String updateSort(String[] ids, Integer[] sorts, RedirectAttributes redirectAttributes) {
            if(Global.isDemoMode()){
                addMessage(redirectAttributes, "演示模式,不允许操作!");
                return "redirect:" + adminPath + "/sys/menu/";
            }
            for (int i = 0; i < ids.length; i++) {
                Menu menu = new Menu(ids[i]);
                menu.setSort(sorts[i]);
                systemService.updateMenuSort(menu);
            }
            addMessage(redirectAttributes, "保存菜单排序成功!");
            return "redirect:" + adminPath + "/sys/menu/";
        }
    View Code

     

     <sys:treeselect id="menu" name="parent.id" value="${menu.parent.id}" labelName="parent.name" labelValue="${menu.parent.name}"
                        title="菜单" url="/sys/menu/treeData" extId="${menu.id}" cssClass="required"/>
    
    
    
    点击tag标签 ,跳到 treeselect.tag , 点击确定按钮调用里面的JS方法,跳
    iframe:${ctx}/tag/treeselect?url="+encodeURIComponent("${url}"), 转到如下JSP页面。里面有复杂的JS。
    
    <%@ page contentType="text/html;charset=UTF-8" %>
    <%@ include file="/WEB-INF/views/include/taglib.jsp"%>
    <html>
    <head>
        <title>数据选择</title>
        <meta name="decorator" content="blank"/>
        <%@include file="/WEB-INF/views/include/treeview.jsp" %>
        <script type="text/javascript">
            var key, lastValue = "", nodeList = [], type = getQueryString("type", "${url}");
            var tree, setting = {view:{selectedMulti:false,dblClickExpand:false},check:{enable:"${checked}",nocheckInherit:true},
                    async:{enable:(type==3),url:"${ctx}/sys/user/treeData",autoParam:["id=officeId"]},
                    data:{simpleData:{enable:true}},callback:{<%--
                        beforeClick: function(treeId, treeNode){
                            if("${checked}" == "true"){
                                //tree.checkNode(treeNode, !node.checked, true, true);
                                tree.expandNode(treeNode, true, false, false);
                            }
                        }, --%>
                        onClick:function(event, treeId, treeNode){
                            tree.expandNode(treeNode);
                        },onCheck: function(e, treeId, treeNode){
                            var nodes = tree.getCheckedNodes(true);
                            for (var i=0, l=nodes.length; i<l; i++) {
                                tree.expandNode(nodes[i], true, false, false);
                            }
                            return false;
                        },onAsyncSuccess: function(event, treeId, treeNode, msg){
                            var nodes = tree.getNodesByParam("pId", treeNode.id, null);
                            for (var i=0, l=nodes.length; i<l; i++) {
                                try{tree.checkNode(nodes[i], treeNode.checked, true);}catch(e){}
                                //tree.selectNode(nodes[i], false);
                            }
                            selectCheckNode();
                        },onDblClick: function(){//<c:if test="${!checked}">
                            top.$.jBox.getBox().find("button[value='ok']").trigger("click");
                            //$("input[type='text']", top.mainFrame.document).focus();//</c:if>
                        }
                    }
                };
            function expandNodes(nodes) {
                if (!nodes) return;
                for (var i=0, l=nodes.length; i<l; i++) {
                    tree.expandNode(nodes[i], true, false, false);
                    if (nodes[i].isParent && nodes[i].zAsync) {
                        expandNodes(nodes[i].children);
                    }
                }
            }
            $(document).ready(function(){
                $.get("${ctx}${url}${fn:indexOf(url,'?')==-1?'?':'&'}&extId=${extId}&isAll=${isAll}&module=${module}&t="
                        + new Date().getTime(), function(zNodes){
                    // 初始化树结构
                    tree = $.fn.zTree.init($("#tree"), setting, zNodes);
                    
                    // 默认展开一级节点
                    var nodes = tree.getNodesByParam("level", 0);
                    for(var i=0; i<nodes.length; i++) {
                        tree.expandNode(nodes[i], true, false, false);
                    }
                    //异步加载子节点(加载用户)
                    var nodesOne = tree.getNodesByParam("isParent", true);
                    for(var j=0; j<nodesOne.length; j++) {
                        tree.reAsyncChildNodes(nodesOne[j],"!refresh",true);
                    }
                    selectCheckNode();
                });
                key = $("#key");
                key.bind("focus", focusKey).bind("blur", blurKey).bind("change cut input propertychange", searchNode);
                key.bind('keydown', function (e){if(e.which == 13){searchNode();}});
                setTimeout("search();", "300");
            });
            
            // 默认选择节点
            function selectCheckNode(){
                var ids = "${selectIds}".split(",");
                for(var i=0; i<ids.length; i++) {
                    var node = tree.getNodeByParam("id", (type==3?"u_":"")+ids[i]);
                    if("${checked}" == "true"){
                        try{tree.checkNode(node, true, true);}catch(e){}
                        tree.selectNode(node, false);
                    }else{
                        tree.selectNode(node, true);
                    }
                }
            }
              function focusKey(e) {
                if (key.hasClass("empty")) {
                    key.removeClass("empty");
                }
            }
            function blurKey(e) {
                if (key.get(0).value === "") {
                    key.addClass("empty");
                }
                searchNode(e);
            }
            
            //搜索节点
            function searchNode() {
                // 取得输入的关键字的值
                var value = $.trim(key.get(0).value);
                
                // 按名字查询
                var keyType = "name";<%--
                if (key.hasClass("empty")) {
                    value = "";
                }--%>
                
                // 如果和上次一次,就退出不查了。
                if (lastValue === value) {
                    return;
                }
                
                // 保存最后一次
                lastValue = value;
                
                var nodes = tree.getNodes();
                // 如果要查空字串,就退出不查了。
                if (value == "") {
                    showAllNode(nodes);
                    return;
                }
                hideAllNode(nodes);
                nodeList = tree.getNodesByParamFuzzy(keyType, value);
                updateNodes(nodeList);
            }
            
            //隐藏所有节点
            function hideAllNode(nodes){            
                nodes = tree.transformToArray(nodes);
                for(var i=nodes.length-1; i>=0; i--) {
                    tree.hideNode(nodes[i]);
                }
            }
            
            //显示所有节点
            function showAllNode(nodes){            
                nodes = tree.transformToArray(nodes);
                for(var i=nodes.length-1; i>=0; i--) {
                    /* if(!nodes[i].isParent){
                        tree.showNode(nodes[i]);
                    }else{ */
                        if(nodes[i].getParentNode()!=null){
                            tree.expandNode(nodes[i],false,false,false,false);
                        }else{
                            tree.expandNode(nodes[i],true,true,false,false);
                        }
                        tree.showNode(nodes[i]);
                        showAllNode(nodes[i].children);
                    /* } */
                }
            }
            
            //更新节点状态
            function updateNodes(nodeList) {
                tree.showNodes(nodeList);
                for(var i=0, l=nodeList.length; i<l; i++) {
                    
                    //展开当前节点的父节点
                    tree.showNode(nodeList[i].getParentNode()); 
                    //tree.expandNode(nodeList[i].getParentNode(), true, false, false);
                    //显示展开符合条件节点的父节点
                    while(nodeList[i].getParentNode()!=null){
                        tree.expandNode(nodeList[i].getParentNode(), true, false, false);
                        nodeList[i] = nodeList[i].getParentNode();
                        tree.showNode(nodeList[i].getParentNode());
                    }
                    //显示根节点
                    tree.showNode(nodeList[i].getParentNode());
                    //展开根节点
                    tree.expandNode(nodeList[i].getParentNode(), true, false, false);
                }
            }
            
            // 开始搜索
            function search() {
                $("#search").slideToggle(200);
                $("#txt").toggle();
                $("#key").focus();
            }
            
        </script>
    </head>
    <body>
        <div style="position:absolute;right:8px;top:5px;cursor:pointer;" onclick="search();">
            <i class="icon-search"></i><label id="txt">搜索</label>
        </div>
        <div id="search" class="form-search hide" style="padding:10px 0 0 13px;">
            <label for="key" class="control-label" style="padding:5px 5px 3px 0;">关键字:</label>
            <input type="text" class="empty" id="key" name="key" maxlength="50" style="110px;">
            <button class="btn" id="btn" onclick="searchNode()">搜索</button>
        </div>
        <div id="tree" class="ztree" style="padding:15px 20px;"></div>
    </body>
    View Code

        <form:radiobuttons path="isShow" items="${fns:getDictList('show_hide')}" itemLabel="label" itemValue="value" htmlEscape="false" class="required"/>
    
    使用springMVC 表单form:radiobuttons
    fns.tld 自定义标签 ,获取获取字典对象列表
    View Code

     

    <div class="control-group">
                <label class="control-label">图标:</label>
                <div class="controls">
                    <sys:iconselect id="icon" name="icon" value="${menu.icon}"/>
                </div>
            </div>
    
    
    
    点击跳入tag标签,加载如下url , 跳到tagiconselect.jsp
    top.$.jBox.open("iframe:${ctx}/tag/iconselect?value="+$("#${id}").val(), "选择图标",
    
    <%@ page contentType="text/html;charset=UTF-8" %>
    <%@ include file="/WEB-INF/views/include/taglib.jsp"%>
    <html>
    <head>
        <title>图标选择</title>
        <meta name="decorator" content="blank"/>
        <style type="text/css">
            .page-header {clear:both;margin:0 20px;padding-top:20px;}
            .the-icons {padding:25px 10px 15px;list-style:none;}
            .the-icons li {float:left;width:22%;line-height:25px;margin:2px 5px;cursor:pointer;}
            .the-icons i {margin:1px 5px;font-size:16px;} .the-icons li:hover {background-color:#efefef;}
            .the-icons li.active {background-color:#0088CC;color:#ffffff;}
            .the-icons li:hover i{font-size:20px;}
        </style>
        <script type="text/javascript">
            $(document).ready(function(){
                $("#icons li").click(function(){
                    $("#icons li").removeClass("active");
                    $("#icons li i").removeClass("icon-white");
                    $(this).addClass("active");
                    $(this).children("i").addClass("icon-white");
                    $("#icon").val($(this).text());
                });
                $("#icons li").each(function(){
                    if ($(this).text()=="${value}"){
                        $(this).click();
                    }
                });
                $("#icons li").dblclick(function(){
                    top.$.jBox.getBox().find("button[value='ok']").trigger("click");
                });
            });
        </script>
    </head>
    <body>
    <input type="hidden" id="icon" value="${value}" />
    <div id="icons">
            
            <h2 class="page-header"> Web 应用的图标</h2>
            
            <ul class="the-icons">
              <li><i class="icon-adjust"></i> icon-adjust</li>
              <li><i class="icon-asterisk"></i> icon-asterisk</li>
              <li><i class="icon-ban-circle"></i> icon-ban-circle</li>
              <li><i class="icon-bar-chart"></i> icon-bar-chart</li>
              <li><i class="icon-barcode"></i> icon-barcode</li>
              <li><i class="icon-beaker"></i> icon-beaker</li>
              <li><i class="icon-beer"></i> icon-beer</li>
              <li><i class="icon-bell"></i> icon-bell</li>
              <li><i class="icon-bell-alt"></i> icon-bell-alt</li>
              <li><i class="icon-bolt"></i> icon-bolt</li>
              <li><i class="icon-book"></i> icon-book</li>
              <li><i class="icon-bookmark"></i> icon-bookmark</li>
              <li><i class="icon-bookmark-empty"></i> icon-bookmark-empty</li>
              <li><i class="icon-briefcase"></i> icon-briefcase</li>
              <li><i class="icon-bullhorn"></i> icon-bullhorn</li>
              <li><i class="icon-calendar"></i> icon-calendar</li>
              <li><i class="icon-camera"></i> icon-camera</li>
              <li><i class="icon-camera-retro"></i> icon-camera-retro</li>
              <li><i class="icon-certificate"></i> icon-certificate</li>
              <li><i class="icon-check"></i> icon-check</li>
              <li><i class="icon-check-empty"></i> icon-check-empty</li>
              <li><i class="icon-circle"></i> icon-circle</li>
              <li><i class="icon-circle-blank"></i> icon-circle-blank</li>
              <li><i class="icon-cloud"></i> icon-cloud</li>
              <li><i class="icon-cloud-download"></i> icon-cloud-download</li>
              <li><i class="icon-cloud-upload"></i> icon-cloud-upload</li>
              <li><i class="icon-coffee"></i> icon-coffee</li>
              <li><i class="icon-cog"></i> icon-cog</li>
              <li><i class="icon-cogs"></i> icon-cogs</li>
              <li><i class="icon-comment"></i> icon-comment</li>
              <li><i class="icon-comment-alt"></i> icon-comment-alt</li>
              <li><i class="icon-comments"></i> icon-comments</li>
              <li><i class="icon-comments-alt"></i> icon-comments-alt</li>
              <li><i class="icon-credit-card"></i> icon-credit-card</li>
              <li><i class="icon-dashboard"></i> icon-dashboard</li>
              <li><i class="icon-desktop"></i> icon-desktop</li>
              <li><i class="icon-download"></i> icon-download</li>
              <li><i class="icon-download-alt"></i> icon-download-alt</li>
            
    
              <li><i class="icon-edit"></i> icon-edit</li>
              <li><i class="icon-envelope"></i> icon-envelope</li>
              <li><i class="icon-envelope-alt"></i> icon-envelope-alt</li>
              <li><i class="icon-exchange"></i> icon-exchange</li>
              <li><i class="icon-exclamation-sign"></i> icon-exclamation-sign</li>
              <li><i class="icon-external-link"></i> icon-external-link</li>
              <li><i class="icon-eye-close"></i> icon-eye-close</li>
              <li><i class="icon-eye-open"></i> icon-eye-open</li>
              <li><i class="icon-facetime-video"></i> icon-facetime-video</li>
              <li><i class="icon-fighter-jet"></i> icon-fighter-jet</li>
              <li><i class="icon-film"></i> icon-film</li>
              <li><i class="icon-filter"></i> icon-filter</li>
              <li><i class="icon-fire"></i> icon-fire</li>
              <li><i class="icon-flag"></i> icon-flag</li>
              <li><i class="icon-folder-close"></i> icon-folder-close</li>
              <li><i class="icon-folder-open"></i> icon-folder-open</li>
              <li><i class="icon-folder-close-alt"></i> icon-folder-close-alt</li>
              <li><i class="icon-folder-open-alt"></i> icon-folder-open-alt</li>
              <li><i class="icon-food"></i> icon-food</li>
              <li><i class="icon-gift"></i> icon-gift</li>
              <li><i class="icon-glass"></i> icon-glass</li>
              <li><i class="icon-globe"></i> icon-globe</li>
              <li><i class="icon-group"></i> icon-group</li>
              <li><i class="icon-hdd"></i> icon-hdd</li>
              <li><i class="icon-headphones"></i> icon-headphones</li>
              <li><i class="icon-heart"></i> icon-heart</li>
              <li><i class="icon-heart-empty"></i> icon-heart-empty</li>
              <li><i class="icon-home"></i> icon-home</li>
              <li><i class="icon-inbox"></i> icon-inbox</li>
              <li><i class="icon-info-sign"></i> icon-info-sign</li>
              <li><i class="icon-key"></i> icon-key</li>
              <li><i class="icon-leaf"></i> icon-leaf</li>
              <li><i class="icon-laptop"></i> icon-laptop</li>
              <li><i class="icon-legal"></i> icon-legal</li>
              <li><i class="icon-lemon"></i> icon-lemon</li>
              <li><i class="icon-lightbulb"></i> icon-lightbulb</li>
              <li><i class="icon-lock"></i> icon-lock</li>
              <li><i class="icon-unlock"></i> icon-unlock</li>
            
    
              <li><i class="icon-magic"></i> icon-magic</li>
              <li><i class="icon-magnet"></i> icon-magnet</li>
              <li><i class="icon-map-marker"></i> icon-map-marker</li>
              <li><i class="icon-minus"></i> icon-minus</li>
              <li><i class="icon-minus-sign"></i> icon-minus-sign</li>
              <li><i class="icon-mobile-phone"></i> icon-mobile-phone</li>
              <li><i class="icon-money"></i> icon-money</li>
              <li><i class="icon-move"></i> icon-move</li>
              <li><i class="icon-music"></i> icon-music</li>
              <li><i class="icon-off"></i> icon-off</li>
              <li><i class="icon-ok"></i> icon-ok</li>
              <li><i class="icon-ok-circle"></i> icon-ok-circle</li>
              <li><i class="icon-ok-sign"></i> icon-ok-sign</li>
              <li><i class="icon-pencil"></i> icon-pencil</li>
              <li><i class="icon-picture"></i> icon-picture</li>
              <li><i class="icon-plane"></i> icon-plane</li>
              <li><i class="icon-plus"></i> icon-plus</li>
              <li><i class="icon-plus-sign"></i> icon-plus-sign</li>
              <li><i class="icon-print"></i> icon-print</li>
              <li><i class="icon-pushpin"></i> icon-pushpin</li>
              <li><i class="icon-qrcode"></i> icon-qrcode</li>
              <li><i class="icon-question-sign"></i> icon-question-sign</li>
              <li><i class="icon-quote-left"></i> icon-quote-left</li>
              <li><i class="icon-quote-right"></i> icon-quote-right</li>
              <li><i class="icon-random"></i> icon-random</li>
              <li><i class="icon-refresh"></i> icon-refresh</li>
              <li><i class="icon-remove"></i> icon-remove</li>
              <li><i class="icon-remove-circle"></i> icon-remove-circle</li>
              <li><i class="icon-remove-sign"></i> icon-remove-sign</li>
              <li><i class="icon-reorder"></i> icon-reorder</li>
              <li><i class="icon-reply"></i> icon-reply</li>
              <li><i class="icon-resize-horizontal"></i> icon-resize-horizontal</li>
              <li><i class="icon-resize-vertical"></i> icon-resize-vertical</li>
              <li><i class="icon-retweet"></i> icon-retweet</li>
              <li><i class="icon-road"></i> icon-road</li>
              <li><i class="icon-rss"></i> icon-rss</li>
              <li><i class="icon-screenshot"></i> icon-screenshot</li>
              <li><i class="icon-search"></i> icon-search</li>
            
    
              <li><i class="icon-share"></i> icon-share</li>
              <li><i class="icon-share-alt"></i> icon-share-alt</li>
              <li><i class="icon-shopping-cart"></i> icon-shopping-cart</li>
              <li><i class="icon-signal"></i> icon-signal</li>
              <li><i class="icon-signin"></i> icon-signin</li>
              <li><i class="icon-signout"></i> icon-signout</li>
              <li><i class="icon-sitemap"></i> icon-sitemap</li>
              <li><i class="icon-sort"></i> icon-sort</li>
              <li><i class="icon-sort-down"></i> icon-sort-down</li>
              <li><i class="icon-sort-up"></i> icon-sort-up</li>
              <li><i class="icon-spinner"></i> icon-spinner</li>
              <li><i class="icon-star"></i> icon-star</li>
              <li><i class="icon-star-empty"></i> icon-star-empty</li>
              <li><i class="icon-star-half"></i> icon-star-half</li>
              <li><i class="icon-tablet"></i> icon-tablet</li>
              <li><i class="icon-tag"></i> icon-tag</li>
              <li><i class="icon-tags"></i> icon-tags</li>
              <li><i class="icon-tasks"></i> icon-tasks</li>
              <li><i class="icon-thumbs-down"></i> icon-thumbs-down</li>
              <li><i class="icon-thumbs-up"></i> icon-thumbs-up</li>
              <li><i class="icon-time"></i> icon-time</li>
              <li><i class="icon-tint"></i> icon-tint</li>
              <li><i class="icon-trash"></i> icon-trash</li>
              <li><i class="icon-trophy"></i> icon-trophy</li>
              <li><i class="icon-truck"></i> icon-truck</li>
              <li><i class="icon-umbrella"></i> icon-umbrella</li>
              <li><i class="icon-upload"></i> icon-upload</li>
              <li><i class="icon-upload-alt"></i> icon-upload-alt</li>
              <li><i class="icon-user"></i> icon-user</li>
              <li><i class="icon-user-md"></i> icon-user-md</li>
              <li><i class="icon-volume-off"></i> icon-volume-off</li>
              <li><i class="icon-volume-down"></i> icon-volume-down</li>
              <li><i class="icon-volume-up"></i> icon-volume-up</li>
              <li><i class="icon-warning-sign"></i> icon-warning-sign</li>
              <li><i class="icon-wrench"></i> icon-wrench</li>
              <li><i class="icon-zoom-in"></i> icon-zoom-in</li>
              <li><i class="icon-zoom-out"></i> icon-zoom-out</li>
            </ul>
        
          
            <h2 class="page-header">文本编辑器图标</h2>
          
            <ul class="the-icons">
              <li><i class="icon-file"></i> icon-file</li>
              <li><i class="icon-file-alt"></i> icon-file-alt</li>
              <li><i class="icon-cut"></i> icon-cut</li>
              <li><i class="icon-copy"></i> icon-copy</li>
              <li><i class="icon-paste"></i> icon-paste</li>
              <li><i class="icon-save"></i> icon-save</li>
              <li><i class="icon-undo"></i> icon-undo</li>
              <li><i class="icon-repeat"></i> icon-repeat</li>
            
    
              <li><i class="icon-text-height"></i> icon-text-height</li>
              <li><i class="icon-text-width"></i> icon-text-width</li>
              <li><i class="icon-align-left"></i> icon-align-left</li>
              <li><i class="icon-align-center"></i> icon-align-center</li>
              <li><i class="icon-align-right"></i> icon-align-right</li>
              <li><i class="icon-align-justify"></i> icon-align-justify</li>
              <li><i class="icon-indent-left"></i> icon-indent-left</li>
              <li><i class="icon-indent-right"></i> icon-indent-right</li>
            
    
              <li><i class="icon-font"></i> icon-font</li>
              <li><i class="icon-bold"></i> icon-bold</li>
              <li><i class="icon-italic"></i> icon-italic</li>
              <li><i class="icon-strikethrough"></i> icon-strikethrough</li>
              <li><i class="icon-underline"></i> icon-underline</li>
              <li><i class="icon-link"></i> icon-link</li>
              <li><i class="icon-paper-clip"></i> icon-paper-clip</li>
              <li><i class="icon-columns"></i> icon-columns</li>
            
    
              <li><i class="icon-table"></i> icon-table</li>
              <li><i class="icon-th-large"></i> icon-th-large</li>
              <li><i class="icon-th"></i> icon-th</li>
              <li><i class="icon-th-list"></i> icon-th-list</li>
              <li><i class="icon-list"></i> icon-list</li>
              <li><i class="icon-list-ol"></i> icon-list-ol</li>
              <li><i class="icon-list-ul"></i> icon-list-ul</li>
              <li><i class="icon-list-alt"></i> icon-list-alt</li>
            </ul>
        
            <h2 class="page-header">指示方向的图标</h2>
          
            <ul class="the-icons">
              <li><i class="icon-angle-left"></i> icon-angle-left</li>
              <li><i class="icon-angle-right"></i> icon-angle-right</li>
              <li><i class="icon-angle-up"></i> icon-angle-up</li>
              <li><i class="icon-angle-down"></i> icon-angle-down</li>
              <li><i class="icon-arrow-down"></i> icon-arrow-down</li>
              <li><i class="icon-arrow-left"></i> icon-arrow-left</li>
              <li><i class="icon-arrow-right"></i> icon-arrow-right</li>
              <li><i class="icon-arrow-up"></i> icon-arrow-up</li>
            
    
              <li><i class="icon-caret-down"></i> icon-caret-down</li>
              <li><i class="icon-caret-left"></i> icon-caret-left</li>
              <li><i class="icon-caret-right"></i> icon-caret-right</li>
              <li><i class="icon-caret-up"></i> icon-caret-up</li>
              <li><i class="icon-chevron-down"></i> icon-chevron-down</li>
              <li><i class="icon-chevron-left"></i> icon-chevron-left</li>
              <li><i class="icon-chevron-right"></i> icon-chevron-right</li>
              <li><i class="icon-chevron-up"></i> icon-chevron-up</li>
            
    
              <li><i class="icon-circle-arrow-down"></i> icon-circle-arrow-down</li>
              <li><i class="icon-circle-arrow-left"></i> icon-circle-arrow-left</li>
              <li><i class="icon-circle-arrow-right"></i> icon-circle-arrow-right</li>
              <li><i class="icon-circle-arrow-up"></i> icon-circle-arrow-up</li>
              <li><i class="icon-double-angle-left"></i> icon-double-angle-left</li>
              <li><i class="icon-double-angle-right"></i> icon-double-angle-right</li>
              <li><i class="icon-double-angle-up"></i> icon-double-angle-up</li>
              <li><i class="icon-double-angle-down"></i> icon-double-angle-down</li>
            
    
              <li><i class="icon-hand-down"></i> icon-hand-down</li>
              <li><i class="icon-hand-left"></i> icon-hand-left</li>
              <li><i class="icon-hand-right"></i> icon-hand-right</li>
              <li><i class="icon-hand-up"></i> icon-hand-up</li>
              <li><i class="icon-circle"></i> icon-circle</li>
              <li><i class="icon-circle-blank"></i> icon-circle-blank</li>
            </ul>
          
        
            <h2 class="page-header">视频播放器图标</h2>
          
            <ul class="the-icons">
              <li><i class="icon-play-circle"></i> icon-play-circle</li>
              <li><i class="icon-play"></i> icon-play</li>
              <li><i class="icon-pause"></i> icon-pause</li>
              <li><i class="icon-stop"></i> icon-stop</li>
            
    
              <li><i class="icon-step-backward"></i> icon-step-backward</li>
              <li><i class="icon-fast-backward"></i> icon-fast-backward</li>
              <li><i class="icon-backward"></i> icon-backward</li>
              <li><i class="icon-forward"></i> icon-forward</li>
            
    
              <li><i class="icon-fast-forward"></i> icon-fast-forward</li>
              <li><i class="icon-step-forward"></i> icon-step-forward</li>
              <li><i class="icon-eject"></i> icon-eject</li>
            
    
              <li><i class="icon-fullscreen"></i> icon-fullscreen</li>
              <li><i class="icon-resize-full"></i> icon-resize-full</li>
              <li><i class="icon-resize-small"></i> icon-resize-small</li>
            </ul>
        
        
            <h2 class="page-header">SNS图标</h2>
          
            <ul class="the-icons">
              <li><i class="icon-phone"></i> icon-phone</li>
              <li><i class="icon-phone-sign"></i> icon-phone-sign</li>
              <li><i class="icon-facebook"></i> icon-facebook</li>
              <li><i class="icon-facebook-sign"></i> icon-facebook-sign</li>
            
    
              <li><i class="icon-twitter"></i> icon-twitter</li>
              <li><i class="icon-twitter-sign"></i> icon-twitter-sign</li>
              <li><i class="icon-github"></i> icon-github</li>
              <li><i class="icon-github-alt"></i> icon-github-alt</li>
            
    
              <li><i class="icon-github-sign"></i> icon-github-sign</li>
              <li><i class="icon-linkedin"></i> icon-linkedin</li>
              <li><i class="icon-linkedin-sign"></i> icon-linkedin-sign</li>
              <li><i class="icon-pinterest"></i> icon-pinterest</li>
            
    
              <li><i class="icon-pinterest-sign"></i> icon-pinterest-sign</li>
              <li><i class="icon-google-plus"></i> icon-google-plus</li>
              <li><i class="icon-google-plus-sign"></i> icon-google-plus-sign</li>
              <li><i class="icon-sign-blank"></i> icon-sign-blank</li>
            </ul>
          
          
            <h2 class="page-header">医疗图标</h2>
          
            <ul class="the-icons">
              <li><i class="icon-ambulance"></i> icon-ambulance</li>
              <li><i class="icon-beaker"></i> icon-beaker</li>
            
    
              <li><i class="icon-h-sign"></i> icon-h-sign</li>
              <li><i class="icon-hospital"></i> icon-hospital</li>
            
    
              <li><i class="icon-medkit"></i> icon-medkit</li>
              <li><i class="icon-plus-sign-alt"></i> icon-plus-sign-alt</li>
            
    
              <li><i class="icon-stethoscope"></i> icon-stethoscope</li>
              <li><i class="icon-user-md"></i> icon-user-md</li>
            </ul>
        <br/><br/>
    </div>
    </body>
    View Code
  • 相关阅读:
    day09_request&response学习笔记
    为什么浏览器User-agent(浏览器类型)总是有Mozilla字样?
    无效类字符串:ProgID: Excel.Application
    django2.0升级日记
    Kali Linux信息收集工具
    Kali Linux 工具使用中文说明书
    人手一份核武器
    五大常用算法【转发】
    ACCA AI来袭会议笔记
    2017 Gartner数据科学魔力象限出炉,16位上榜公司花落谁家?
  • 原文地址:https://www.cnblogs.com/skyislimit/p/6757531.html
Copyright © 2011-2022 走看看