`
cgs1999
  • 浏览: 536179 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

实现CSS样式文件中图标的可视化

阅读更多
关键词:
  CSS,EasyUI,图标
摘  要:
  本案例主要介绍,使用EasyUI实现CSS样式文件中图标的可视化,方便使用CSS样式文件中的图标。

1、案例描述
  在开发项目过程中,界面使用了EasyUI框架,该框架自带了一些图标,如下图所示。
  
  相关图标样式定义在icon.css文件中,样式内容如下所示:
  .icon-blank{
  	background:url('icons/blank.gif') no-repeat center center;
  }
  .icon-add{
  	background:url('icons/edit_add.png') no-repeat center center;
  }
  ……(篇幅有限,这里省略)
  .icon-mini-refresh{
  	background:url('icons/mini_refresh.png') no-repeat center center;
  }

  上述有二十几个图标,另外,后续项目还会根据需要,增加自定义的图标。在开发时存在一个问题:不知道样式对应的图标是什么样的,需要查看对应的图标文件才能知道,开发时要找到合适的图标可能需要查看所有的图标文件,这样开发比较麻烦,且效率不高。
  那么,能不能使样式文件中的所有图标可视化?这样开发人员可以直观、快速的找到所需要的图标及对应的样式,从而提高开发效率。
  经过一番研究,笔者实现了相关功能,下面我们一起探讨分析和解决的过程。

2、案例分析
2.1 基本思路
  对CSS样式文件的读取和解析,使用Web方式和JavaScript无疑是最方便的,要使JavaScript能够获取到样式文件和样式内容,那么,需要在Web页面中引用样式文件。另外,后续将自定义的图标样式文件引入到页面中,即可方便的查看样式文件中的图标。
  样式文件中,需要区分图标样式和其它的样式,参考EasyUI自带的图标样式文件icon.css,所有图标样式统一以“.icon”作为前缀,通过该前缀来区分图标样式和其它的样式。
  为方便使用,提供查看所有样式图标和查看指定样式文件图标两种功能,相关处理过程如下所示:
  (1)查看所有样式图标的时序图
    
  (2)查看指定样式文件图标的时序图
  

2.2 关键技术点
  1、规约图标的样式,统一图标格式,如:统一增加“.icon”前缀;
  2、获取页面中所有引用的样式文件;
  3、获取指定样式文件中的所有图标样式;

3、解决过程
3.1 获取页面中所有的样式文件
function getStyleSheets() {
  	var data = [];
  	data[data.length] = {id: -1, text: "全部"};
  	for ( var i = 0; i < document.styleSheets.length; i++) {
  		var url = document.styleSheets[i].href;
  		if (url) {
  			data[data.length] = {
  				id: i, 
  				text: url.substr(url.lastIndexOf("/") + 1)
  			};
  		}
  	}
  	return data;
}

  注:返回的数组中,第一个为“全部”,索引值为-1,可通过该值查看所有的图标。

3.2 获取单个样式文件中的所有图标样式
function getIcons(index) {
  	var data = [];
  
  	var styleSheet = document.styleSheets[index];
  
  	var rules;
  	if (styleSheet.cssRules) {
  		rules = styleSheet.cssRules;
  	} else {
  		rules = styleSheet.rules;
  	}
  	for ( var j = 0; j < rules.length; j++) {
  		// 样式中,规约以".icon"开头的即为图标
  		if (rules[j].selectorText.substr(0, 5) == ".icon") {
  			data[data.length] = {
  				id: index + "-" + j, 
  				text: rules[j].selectorText.substr(1),
  				iconCls: rules[j].selectorText.substr(1), 
  				href: (styleSheet.href ? styleSheet.href : "")
  			};
  		}
  	}
  
  	return data;
}

注:参数index为页面中样式文件的索引值,从0开始。

3.3 获取所有样式文件中所有的图标样式
function getAllIcons() {
  	var data = [];
  	for ( var i = 0; i < document.styleSheets.length; i++) {
  		data = $.merge(data, getIcons(i));
  	}
  	return data;
}

注:上面已获取到单个样式文件中的图标样式,那么获取所有的样式文件中的所有图标样式,只须遍历所有的样式文件,然后将结果合并即可。

3.4 使用ComboTree和TreeGrid来展示相关的图标
  $(function() {
  	$("#data-grid").treegrid({
  		idField: "id",
  		treeField: "iconCls",
  		rownumbers: true,
  		striped: true,
  		singleSelect: true,
  		width: 800,
  		height: 500,
  		fitColumns: true,
  		autoRowHeight: true,
  		columns: [[{
  				field: "iconCls", 
  				title: "IconCls", 
  				halign: "center", 
  				width: 60,
  				formatter: function(value, row, index) {
  					return "";
  				}
  			}, {
  				field: "id", 
  				title: "ID", 
  				halign: "center", 
  				width: 60,
  				hidden: true
  			}, {
  				field: "text", 
  				title: "Text", 
  				halign: "center", 
  				width: 100
  			}, {
  				field: "href", 
  				title: "Href", 
  				halign: "center", 
  				width: 200
  			}
  		]]
  	});
  
  	$("#css-list").combotree({
  		data: getStyleSheets(),
  		onClick: function(node) {
  			var id = node.id;
  			var data = id<0 ? getAllIcons() : getIcons(id);
  			$("#data-grid").treegrid("loadData", data);
  		},
  		onLoadSuccess : function(node,data) {
  			$('#css-list').combotree('setValue', -1);
  
  			var data = getAllIcons();
  			$("#data-grid").treegrid("loadData", data);
  		}
  	});
  });

注:这里使用1个ComboTree和1个TreeGrid来实现整个界面,ComboTree用于列出页面中所有的样式文件,并可通过切换样式文件来查看指定样式文件中所包含的图标;而TreeGrid则用于展示图标,方便使用人员直观的查看图标及对应的样式和所在的样式文件地址。

3.5 引入自定义的样式文件
  参考EasyUI的icon.css,编写自定义样式文件myicon.css,添加自定义样式对应的图标,并在页面中引入:
  <link rel="stylesheet" type="text/css" href="static/myicon.css">


4、运行结果
  1、使用ComboTree列出页面中所有样式文件,如下图所示:

  2、查看所有样式图标,如下图所示:
  
  3、查看指定样式文件图标,如下图所示:


5、总结
  综上所述,相关的解决过程和结果,实现了CSS样式文件中图标的可视化,直观展示图标的效果、对应的样式名称以及所属的样式文件,方便了开发使用。上述的解决方案,还可应用于样式文件中其它类型图片或样式效果的可视化,这里就不再赘述。

6、源代码
  下面附件为完整源代码,请将代码解压到任意的Web服务器下,即可访问查看效果。
  (注: 本地直接打开运行会报错,无法查看到效果)
    点击这里下载

7、参考资料
[1] js列举css中所有图标的实现代码
http://dev.128.com/document/32701.html
  
  • 大小: 16.4 KB
  • 大小: 82.5 KB
  • 大小: 61.8 KB
  • 大小: 1.7 KB
  • 大小: 38.8 KB
  • 大小: 23.9 KB
分享到:
评论
1 楼 baukh789 2014-06-26  
受教了。谢谢分享

相关推荐

    Dreamweaver CS6 CSS样式汉化文件

    "Dreamweaver CS6 CSS样式汉化文件"是指将Dreamweaver CS6中与CSS相关的用户界面元素、帮助文档和提示信息等翻译成中文的语言包。 "Resources.dll"是一个动态链接库文件,通常包含应用程序运行时需要的资源,如字符...

    前端,可视化大屏,纯css3+svg动画实现流转动画

    在数据可视化中,SVG常用来绘制流程图、图表和其他矢量图形。开发者可能使用SVG路径(path)元素来绘制线条和形状,结合CSS3动画,使得图形元素在指定路径上流动,呈现出动态流转的效果。 3. **流程图**: 在数据...

    HTML+CSS+JS数据可视化大屏平台模板实例14-车联网

    在大屏可视化设计中,CSS可以用来定制图表的颜色、字体、边框、背景等视觉元素,使其符合品牌风格或特定的视觉需求。此外,CSS还可以用于响应式设计,使大屏在不同设备上都能保持良好的显示效果。 JavaScript是实现...

    CSS可视化炫酷大屏20+.rar

    在CSS可视化中,关键知识点包括: 1. **响应式设计**:大屏幕模板需要适应不同的显示设备和分辨率,因此,响应式设计是必不可少的。使用媒体查询(media queries)可以实现屏幕尺寸变化时样式的变化。 2. **布局...

    powerbi desktpo自定义可视化图标(pbiviz文件可直接导入使用)

    "powerbi desktop自定义可视化图标(pbiviz文件可直接导入使用)"这个标题指出,我们将探讨如何利用.pbiviz文件来实现这一过程。PBIVIZ文件是Power BI自定义视觉对象的打包格式,包含了所有必要的代码和资源,使得...

    基于Vue.js与ECharts的 数据可视化大屏源码

    - .css: CSS样式文件,1个,定义了全局样式。 项目简述:此项目利用Vue.js框架结合vue-echarts插件,打造了一个数据可视化的交互式大屏,适用于各类数据监控与展示场景,实现数据的直观展现与高效分析。

    基于JavaScript的echarts数据可视化大屏设计源码

    6. **images** 文件夹:可能包含了项目中使用的图片资源,如图标、背景图像等,为可视化增加视觉元素。 7. **project** 文件夹:可能包含了项目的其他相关文件,如HTML模板、配置文件等。 在实际应用中,开发者...

    echart图标可视化界面

    ECharts图标可视化界面是一种利用ECharts库创建的交互式数据展示平台,通常用于大数据的可视化分析,便于用户理解和解析复杂的数据信息。ECharts是百度开源的一款JavaScript图表库,支持多种图表类型,如折线图、...

    HTML+CSS+JS数据可视化大屏平台模板实例23-智慧车联网

    JavaScript,作为客户端脚本语言,是实现数据可视化动态交互的核心。在这个实例中,JavaScript库如D3.js、ECharts、Highcharts或者Chart.js可能被用到,这些库提供了丰富的图表类型,如折线图、柱状图、饼图、地图等...

    Dreamweaver CS6 CSS样式表

    3. **进入“CSS样式”面板**:在顶部菜单栏选择“窗口”&gt;“CSS样式”,或者直接点击右侧工具栏中的“CSS样式”图标。 4. **创建新样式**:在“CSS样式”面板中点击“新建CSS规则”按钮(通常是一个加号图标),然后...

    PageNow Vue数据可视化平台:基于SpringBoot的前端源码实现

    - CSS样式文件:36个,定义整体的视觉风格和布局 - HTML模板文件:27个,构成网页的基本结构 - Markdown文档:20个,提供项目相关的说明和帮助 - JSON配置文件:8个,存储配置信息 - SVG图形文件:6个,用于...

    基于Echats的可视化大屏通用大数据可视化展示模版.rar

    【标题】中的“基于Echarts的可视化大屏通用大数据可视化展示模版”表明这是一个使用Echarts库构建的大数据可视化项目,适用于大屏幕展示。Echarts是中国百度公司开发的一个开源JavaScript图表库,支持丰富的数据...

    数据可视化大屏源码(12套).zip

    在数据可视化领域,CSS(Cascading Style Sheets)起着至关重要的作用,它负责定义页面的布局和样式,使得大屏展示既美观又易读。通过深入理解这12套源码,我们可以学习到以下关键知识点: 1. **响应式设计**:在...

    Visual CSS可视化编程.zip

    为此,"Visual CSS可视化编程"应运而生,它提供了一种直观的图形化界面,使得设计者可以通过拖拽和预览的方式来实现CSS的编写,大大降低了门槛。 Visual CSS的核心理念在于可视化,它将复杂的CSS语法转换为易于理解...

    大数据可视化平台Web页面源码,数据可视化网页,HTML

    3. **JavaScript**: 虽然在文件名称列表中没有明确提到JavaScript,但在大数据可视化中,JavaScript通常用于处理动态交互和数据绑定。可能在`js`文件夹内包含JavaScript代码,用于处理数据加载、图表绘制、用户交互...

    非常实用好看的css样式后台模版

    5. **图表库**:集成常见的图表库(如Chart.js、Highcharts等),可以快速生成柱状图、饼图、折线图等,帮助可视化后台数据。 6. **按钮和图标**:提供多种风格的按钮设计,以及常用的图标集,如Font Awesome,增强...

    地图数据可视化看板大屏幕模板,大屏数据可视化动态地图,HTML

    在地图数据可视化中,这通常涉及热力图、点密度图、 choropleth 图等多种图表类型。 5. **数据看板图片**:数据看板是一种交互式的信息展示工具,包含各种图表和指标,用于实时更新和展示关键绩效指标(KPIs)。在...

    html+ECharts大数据可视化大屏html模板.zip

    压缩包中的文件列表虽然没有详细列出,但通常会包含HTML文件、CSS样式表文件(用于控制页面样式和布局)、JavaScript文件(包含ECharts库和自定义脚本)、图片和图标资源等。开发者可以通过编辑这些文件来修改模板,...

    对鸢尾花数据可视化.zip

    在这个项目中,`index.html` 可能引入了JavaScript和CSS文件,以实现交互式的数据可视化图表。 `结果.png` 是项目完成后生成的一个静态图像,它可能展示了数据分析的结果,如不同种类鸢尾花在特征空间中的分布情况...

Global site tag (gtag.js) - Google Analytics