项目场景:

说起来layui前端框架,做后端开发的也是再熟悉不过了,模块开发,友好的UI界面,对前端后端人员都十分友好,当然,文档和示例也算是相当完备了。但是在开发项目时会遇到这样一种情况,就是想实现一种布局:左边是一个树,带有图标,右边展示表格。但是在layui组件中的树组件并不支持自定义图标,在百度上翻了很多的博客,也没有见到自己比较理想的,因此准备自己来扩展


解决方案:

1、下载layui源码

layui码云地址
克隆源码

 git clone https://gitee.com/sentsin/layui.git


打开layui目录

我们这里只用到src 和examples两个目录

2、分析树组件案列源码

2.1、找到树组件的案列源码,并打开


1、双击打开后,我们可以很明确一件事是,我们的图标是需要放在标题的前面,也就是图中蓝色方框的位置。
2、打开开发者工具,我们可以发现标题都拥有统一的样式layui-tree-txt,而图标就应该放在带有layui-tree-txt样式的span标签中。

2.2、打开树组件的源码


找到layui-tree-txt

可以发现 这里的样式名用变量ELEM_TEXT来保存,因此我们要顺着源码来找ELEM_TEXT

在204行,我们找到了,span标签的生成函数。看源码span标签里面只可能包着的是标题,那么item.title就是标题,那么item就是传进来的对象,这下大致明了了。

return '<span class="'+ ELEM_TEXT + (item.disabled ? ' '+ DISABLED : '') +'">'+ (item.title || item.label || options.text.defaultNodeName) +'</span>';

我们先试试创建一个i标签和item.icon

return '<span class="'+ ELEM_TEXT + (item.disabled ? ' '+ DISABLED : '') +'"><i>'+item.icon+'</i>'+ (item.title || item.label || options.text.defaultNodeName) +'</span>';

修改案例文件,添加icon属性

打开页面tree.html

基本效果已经出来了
完善:
1、没有图标应该不展示,也不应该是undefined
2、现在只是文字,如果是真图标应该用iconfont来实现

3、完善组件扩展

3.1 undefined不展示

这里只是一个判断问题只要存在icon的配置就展示,如果不存在就不展示

return '<span class="'+ ELEM_TEXT + (item.disabled ? ' '+ DISABLED : '') +'"><i>'+(item.icon||'')+'</i>'+ (item.title || item.label || options.text.defaultNodeName) +'</span>';

item.icon||’’,||是有阻断作用的,当item.icon存在时,不会执行后面,当item.icon不存在时,则会执行后面,运行tree.html

3.2 展示图标

iconfont-阿里巴巴矢量图标库
在图标库中添加,图标生成,下载代码

复制代码到examples下面的font目录

修改tree.js

 return '<span class="'+ ELEM_TEXT + (item.disabled ? ' '+ DISABLED : '') +'"><i class="iconfont '+(item.icon||'')+'"></i>'+ (item.title || item.label || options.text.defaultNodeName) +'</span>';

tree.html中引入iconfont.css,修改tree数据

引入图标样式即可,运行tree.html

效果达成,其实这里还是差了一点

扩展图标也就是实现了,不用图标时,只要选择不设置icon属性或者为空就好!

感谢贤心,iconfont

扩展后的树形组件免积分

layui树组件(扩展为带有图标的layui树组件)相关推荐

  1. IconCheckBoxPreference: 一个带有图标的CheckBox preference

    这篇文章原文是在https://gist.github.com/515681.主要是代码,没有其他文字说明,转到这里来,希望对看到的人有用. 下面是用到的xml布局文件. <?xml versi ...

  2. android popupmenu icon,带有图标的PopupMenu

    否则我将实现它: 创建PopUpWindow布局: android:id="@+id/llSortChangePopup" android:layout_width="w ...

  3. DLUX组件扩展下篇-实践

    一.文章目标 1.1目标 随着SDN技术的逐步成熟,大量的传统数通厂家和新型的IT厂家,都投入了一定的人员进行相关的产品技术预研.而ODL作为SDN控制器的主要开源项目,自然也成了多数人学习和搭建模拟 ...

  4. 转:ECharts图表组件之简单关系图:如何轻松实现另类站点地图且扩展节点属性实现点击节点页面跳转...

    站点地图不外乎就是罗列一个网站的层次结构,提炼地讲就是一个关系结构图.那么我们如何巧用ECharts图表组件内的简单关系结构图来实现一个站点的地图结构呢?另外如何点击某个节点的时候实现页面跳转呢? 针 ...

  5. layui选项卡嵌套选项卡_在ProtoPie中使用嵌套组件构建选项卡栏

    layui选项卡嵌套选项卡 One of the powerful features of ProtoPie is the ability to build fully portable and in ...

  6. 千牛包表包下载_带有服务器端处理和VueJS组件的数据表包

    千牛包表包下载 Vue数据表 (Vue Data Table) Data Table package with server-side processing and VueJS components. ...

  7. 省钱之道--图解域域树域林根域的含义

    省钱之道--图解域域树域林根域的含义 标签:域 域林 图解域域树域林根域的含义 域树 根域 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.ht ...

  8. html树状图右侧_树状图及制作方法(Excel 2016/Excel 2013)

    ↑↑↑关注ExcelEasy,让Excel更简单 树状图是一种展示层次结构数据的图表,可以很好的揭示各类别数据的比例关系及类别内数据的组成结构.今天为大家详细介绍一下树状图的制作方法 树状图在Exce ...

  9. CSS/HTML 5简洁带图标的input日期选择器

    CSS/HTML 5简洁带图标的input日期选择器 说明 css代码 html代码 演示效果图 说明 演示效果分辨率为1980x1080分辨率效果 高度可定制修改 纯css代码控制 使用的input ...

最新文章

  1. mysql主从配置读写分离笔记
  2. css3 @keyframes、transform详解与实例
  3. 计算机在生命科学中的发展前景,往生命科学领域发展的职业前景
  4. NVMe SSD是什么?
  5. js事件冒泡和事件委托
  6. 下载nodejs的mysql安装包下载安装_Node.js安装 下载
  7. 公共界面_公共建筑东营市档案馆能耗计量分析系统
  8. lte核心网由哪些设备组成_电气设备安装工程由哪些部分组成?
  9. Verilog 常规数据定义
  10. VS2010-MFC(常用控件:标签控件Tab Control 上)
  11. jdk8安装和环境变量配置
  12. python 更新pip镜像源
  13. Android上使用OkHttp来实现断点下载(续传)
  14. IP,路由器工作原理、MAC,交换机工作原理、CSMA\CD、令牌环网
  15. 关于html中的reset,submit中的按钮不能实现功能的原因
  16. 为防泄密 新加坡政府将断掉公务员的网络连接
  17. mysql SELECT/UPDATE command denied to user 'root'@'localhost' for table 'XXX' 报错1142处理
  18. 好书推荐-——《态度》——吴军老师著
  19. android 符号表情显示乱码,android输入框限制输入法中的表情符号
  20. 关于如何将代码上传到gitee仓库的详细步骤

热门文章

  1. PageOffice打开word时出现Office运行时错误,部分系统文件可能丢失或已损坏.(错误代码:0x80040154)
  2. 当HTC SYNC(91助手)连接不上手机时,怎么办?
  3. 员工被离职后如何预防渣公司的反向操作
  4. 《笨方法学习python3》练习16: Reading and Writing Files: write, seek, readline, truncate, open
  5. 音视频:20.FFmpeg-直播推流到服务器、加滤镜效果
  6. 腾讯十年运维老兵:运维团队的五个“杀手锏”
  7. 微信中看到的好文章如何收藏?不再因为微信软件升级丢失文章。
  8. 确定一个Excel表格的最大行数和最大列数
  9. C++ 中名称冲突之 y1
  10. Windows11任务栏卡死鼠标右键无效解决办法