基于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 hashtable实现代码
Oct 13 Javascript
IE图片缓存document.execCommand(&quot;BackgroundImageCache&quot;,false,true)
Mar 01 Javascript
jquery ajax jsonp跨域调用实例代码
Dec 11 Javascript
jquery显示loading图片直到网页加载完成的方法
Jun 25 Javascript
Jquery中使用show()与hide()方法动画显示和隐藏图片
Oct 08 Javascript
JQuery实现动态操作表格
Jan 11 Javascript
使用ionic播放轮询广告的实现方法(必看)
Apr 24 Javascript
深入理解ES6 Promise 扩展always方法
Sep 26 Javascript
Javascript防止图片拉伸的自适应处理方法
Dec 26 Javascript
vue最简单的前后端交互示例详解
Oct 11 Javascript
微信小程序时间戳转日期的详解
Apr 30 Javascript
countup.js实现数字动态叠加效果
Oct 17 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
用 PHP5 轻松解析 XML
2006/12/04 PHP
使用XDebug调试及单元测试覆盖率分析
2011/01/27 PHP
解析PHP中一些可能会被忽略的问题
2013/06/21 PHP
CI框架中cookie的操作方法分析
2014/12/12 PHP
PHP计算加权平均数的方法
2015/07/16 PHP
php连接sftp的作用以及实例代码
2019/09/23 PHP
javascript 文档的编码问题解决
2009/03/01 Javascript
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
基于JQUERY的多级联动代码
2012/01/24 Javascript
Moment.js 不容错过的超棒Javascript日期处理类库
2012/04/15 Javascript
jquery和javascript中如何将一元素的内容赋给另一元素
2014/01/09 Javascript
jQuery中dom元素上绑定的事件详解
2015/04/24 Javascript
在HTML中插入JavaScript代码的示例
2015/06/03 Javascript
vue使用vue-cli快速创建工程
2017/07/28 Javascript
angularjs中$http异步上传Excel文件方法
2018/02/23 Javascript
nodejs基于express实现文件上传的方法
2018/03/19 NodeJs
Vue-不允许嵌套式的渲染方法
2018/09/13 Javascript
微信小程序实现banner图轮播效果
2020/06/28 Javascript
WebGL学习教程之Three.js学习笔记(第一篇)
2019/04/25 Javascript
微信小程序实现获取用户信息并存入数据库操作示例
2019/05/07 Javascript
js实现无限层级树形数据结构(创新算法)
2020/02/27 Javascript
[05:35]DOTA2英雄梦之声_第13期_拉比克
2014/06/21 DOTA
[01:13:51]TNC vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python相似模块用例
2016/03/04 Python
详解python的几种标准输出重定向方式
2016/08/15 Python
对Python实现简单的API接口实例讲解
2018/12/10 Python
python+openCV利用摄像头实现人员活动检测
2019/06/22 Python
python之列表推导式的用法
2019/11/29 Python
Python __slots__的使用方法
2020/11/15 Python
瑞士香水购物网站:Parfumcity.ch
2017/01/14 全球购物
利物浦足球俱乐部官方商店(美国):Liverpool FC US
2019/10/09 全球购物
机械专业应届生求职信
2013/12/12 职场文书
应届毕业生应聘自荐信范文
2014/02/26 职场文书
社保委托书怎么写
2014/08/02 职场文书
实训报告范文大全
2014/11/04 职场文书