基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用


Posted in Javascript onMay 12, 2016

在前面的一篇随笔基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理,介绍了菜单模块的处理,主要介绍如何动态从数据库里面获取记录并构建菜单列表。其中菜单信息的图标样式,也是从数据库里面获取的,因此要求我们能够动态取得Bootstrap里面的各种图标定义了。本篇主要介绍如何提取Bootstrap的图标信息,存储到数据库里面为我所用。

1、菜单的显示及各种Bootstrap图标

我们从下图可以看到,为了菜单的美观,每个菜单项(这里分了三级菜单)都有一个图标,虽然大小不同,我们利用Bootstrap的图标,都是从Bootstrap图标库里面的内容。

基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用

Bootstrap图标库里面分为了三类内容:

Font Awesome:Bootstrap专用图标字体,Font Awesome 中包含的所有图标都是矢量的,也就可以任意缩放,避免了一个图标做多种尺寸的麻烦。CSS对字体可以设置的样式也同样能够运用到这些图标上了。

如下面是部分Font Awesome 的图标:

基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用

Simple Icons:收集众多网站的Logo,并提供高质量、不同尺寸的png格式图片给广大网友,所有Icon版权归其所属公司。

如下面所示是Simple Icons的部分图标:

基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用

Glyphicons:包括200个符号字体格式图表集合,由Glyphicons提供,Glyphicons Halflings 一般是收费的,但是经过Bootstrap和Glyphicons作者之间的协商,允许开发人员不需要支付费用即可使用。

如下是部分Glyphicons内容:

基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用

利用这几种图标内容,我们引入下面几种样式就可以了。

<link href="/Content/metronic/font-awesome/css/font-awesome.min.css" rel="stylesheet"/>
<link href="/Content/metronic/simple-line-icons/simple-line-icons.min.css" rel="stylesheet"/>
<link href="/Content/metronic/bootstrap/css/bootstrap.min.css" rel="stylesheet"/>

这几种图标,都是支持各种Bootstrap的主题化显示的,如下面几种效果所示。

基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用

基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用

基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用

或者也可以把图标变大一些:

基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用

2、各种Bootstrap的图标的提取

我们通过上面的介绍,估计对这几种Bootstrap的图标有了一定的了解,但是我们如果要能够在菜单编辑里面选择图标,那么我们还是需要把这些信息提取到数据库里面,然后展示出来给我进行选择的,否则无法做到动态配置。

基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用

如上面的编辑界面,对菜单的Web图标提供了动态的选择,那么我们如果数据库里面记录了上面几种图标的集合,那么我们就可以把它在界面进行展示,并可以从中选择合适的图表了。

根据上面的几个样式文件,我们分析一下,如对于font-awesome.min.css的文件内容,它对于图标定义部分如下所示。

基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用

而对于simple-line-icons来说,它的样式定义也差不多,如下所示。

基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用

对于Glyphicons来说,它的样式定义也是很类似的,如下所示。

基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用

根据这几种信息,我们就可以通过正则表达式匹配的方式,把我们所需要的信息提取出来,并存储在数据库里面即可实现图标动态显示和选择的第一步了。

例如,我们定义部分变量和正则表达式来处理这些文件内容:

string regex = "^\\.(?<name>.*?):before\\s*\\{";
      List<string> filePathList = new List<string>()
      {
        "~/Content/themes/metronic/assets/global/plugins/bootstrap/css/bootstrap.css",
        "~/Content/themes/metronic/assets/global/plugins/font-awesome/css/font-awesome.css",
        "~/Content/themes/metronic/assets/global/plugins/simple-line-icons/simple-line-icons.css",
      };

然后通过读取文件内容,并进行匹配记录获取即可提取出来集合内容了。

string content = FileUtil.FileToString(realPath);
  List<string> matchList = CRegex.GetList(content, regex, 1);

最后我们把这些信息保存到数据库表里面即可。

BootstrapIconInfo info = new BootstrapIconInfo()
  {
    DisplayName = item,
    ClassName = prefix + item,
    CreateTime = DateTime.Now,
    SourceType = sourceType,
  };
  BLLFactory<BootstrapIcon>.Instance.Insert(info);

最后记录存储在数据库里面,效果如下所示,里面已经记录我们所需的图标信息了,这样在实际使用的时候,就可以利用各个字段的信息,显示出好看的界面了。

基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用

3、Bootstrap的图标显示和选择

我们通过文件读取并以正则表达式提取出内容,然后保存到数据库后,这些图标信息就可以为我们使用了,可以在页面里面分类显示出来,每类的图标进行分页处理,方便查询,如下所示。

基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用

这部分的显示页面代码和常规的数据显示差不多的,只是不需要表头信息而已,我们来看看页面代码如下所示。

<div class="portlet box green-meadow">
      <div class="portlet-title">
        <div class="caption"> <i class="fa fa-filter"></i>
          图标信息
        </div>
      </div>
      <div class="portlet-body flip-scroll">
        <div>
          <span>每页显示</span>
          <select id="rows" onchange="ChangeRows()">
            <option>50</option>
            <option selected>100</option>
            <option>200</option>
            <option>1000</option>
          </select>
          <span>条记录</span>  
          <span>共有记录:</span><span id='totalCount' class="label label-success">0</span>条,总页数:<span id='totalPageCount' class="label label-success">0</span>页。
        </div>
        <hr />
        <div class="row" style="padding-left:20px">
          <div class="portlet-body" id="grid_body"></div>
          <div class="paging-toolbar">
            <ul id='grid_paging'></ul>
          </div>
        </div>
      </div>
    </div>

其中主要的图标显示内容在上面这部分的HTML里面。

<div class="portlet-body" id="grid_body"></div>

动态获取并生成HTML代码显示在界面上的处理脚本如下所示。

$.getJSON(iconUrl + "&" + condition, function (data) {
        $("#icon_body").html("");
        $.each(data.rows, function (i, item) {
          var tr = "<a href=\"javascript:;\" onclick=\"GetIcon('" + item.ClassName + "')\" class=\"icon-btn\" title=\"" + item.DisplayName + "\">";
          tr += "  <i class=\"" + item.ClassName + " \" style=\"font-size: 2.2em\"></i>";//
          //tr += "<div>" + item.DisplayName + "</div>";
          tr += "</a>";
          $("#icon_body").append(tr);
        });

用户选择对应的图标后,我们可以通过脚本设置Span的样式就可以显示出来我们选中的图标了,如下所示。

$("#i_WebIcon").attr("class", classname);

当然我们选择图标的时候,提供一个弹出的对话框显示分类不同的图标,让用户选择后返回即可。

基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用

这样我们就完成了,从图标文件里面提取不同类型的图表,然后存储在数据库里面,并在页面里面显示出来,可供我们动态选择和设置了。

以上所述是小编给大家介绍的基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用 的相关知识,希望对大家有所帮助,如果大家想了解更多资讯,敬请关注三水点靠木网站!

Javascript 相关文章推荐
JavaScript 动态创建VML的方法
Oct 14 Javascript
JavaScript CSS修改学习第一章 查找位置
Feb 19 Javascript
读jQuery之九 一些瑕疵说明
Jun 21 Javascript
使用Jquery来实现可以输入值的下拉选单 雏型
Dec 06 Javascript
杨氏矩阵查找的JS代码
Mar 21 Javascript
javascript得到当前页的来路即前一页地址的方法
Feb 18 Javascript
javascript实现简单的省市区三级联动
May 14 Javascript
jquery仿百度百科底部浮动导航特效
Aug 08 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
Jun 02 Javascript
VUE中使用MUI方法
Feb 12 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
Aug 08 Javascript
解决Element中el-date-picker组件不回填的情况
Nov 07 Javascript
使用bootstrap3开发响应式网站
May 12 #Javascript
基于BootStrap Metronic开发框架经验小结【三】下拉列表Select2插件的使用
May 12 #Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
May 12 #Javascript
基于BootStrap Metronic开发框架经验小结【二】列表分页处理和插件JSTree的使用
May 12 #Javascript
去除字符串左右两边的空格(实现代码)
May 12 #Javascript
20分钟轻松创建自己的Bootstrap站点
May 12 #Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
May 12 #Javascript
You might like
用PHP实现的随机广告显示代码
2007/06/14 PHP
php 批量替换html标签的实例代码
2013/11/26 PHP
php实现查询功能(数据访问)
2017/05/23 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
BOOM vs RR BO5 第四场 2.14
2021/03/10 DOTA
js 数组的for循环到底应该怎么写?
2010/05/31 Javascript
JavaScript 原型链学习总结
2010/10/29 Javascript
JavaScript实现向右伸出的多级网页菜单效果
2015/08/25 Javascript
jQuery实现三级菜单的代码
2016/05/09 Javascript
温习Javascript基础语法之词法结构
2016/05/31 Javascript
修改js confirm alert 提示框文字的简单实例
2016/06/10 Javascript
AngularJS表达式讲解及示例代码
2016/08/16 Javascript
解决Angular.Js与Django标签冲突的方案
2016/12/20 Javascript
react中Suspense的使用详解
2019/09/01 Javascript
openlayers实现地图测距测面
2020/09/25 Javascript
通过滑动翻页效果实现和移动端click事件问题
2021/01/26 Javascript
[02:23]DOTA2英雄基础教程 幻影长矛手
2013/12/09 DOTA
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
python自动化脚本安装指定版本python环境详解
2017/09/14 Python
用十张图详解TensorFlow数据读取机制(附代码)
2018/02/06 Python
Python序列循环移位的3种方法推荐
2018/04/09 Python
python统计字母、空格、数字等字符个数的实例
2018/06/29 Python
在dataframe两列日期相减并且得到具体的月数实例
2018/07/03 Python
基于python生成器封装的协程类
2019/03/20 Python
python使用requests模块实现爬取电影天堂最新电影信息
2019/04/03 Python
pytorch之Resize()函数具体使用详解
2020/02/27 Python
Django 后台带有字典的列表数据与页面js交互实例
2020/04/03 Python
python中pyplot基础图标函数整理
2020/11/10 Python
HTML5 FormData 方法介绍以及实现文件上传示例
2017/09/12 HTML / CSS
会议接待欢迎词
2014/01/12 职场文书
国际贸易专业自荐信
2014/06/10 职场文书
学校门卫岗位职责范本
2014/06/30 职场文书
单位工作证明
2014/10/07 职场文书
最感人的道歉情书
2015/05/12 职场文书
css3带你实现3D转换效果
2022/02/24 HTML / CSS