【Layui】图标选择器 iconPicker 的使用

这篇具有很好参考价值的文章主要介绍了【Layui】图标选择器 iconPicker 的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系统:Win10
JDK:1.8.0_333
IDEA:2022.3.3
SpringBoot:2.7.6
Layui:2.8.4
iconPicker:1.1

1.项目前言

之前在写一个系统的时候,实现了目录管理,可以自定义目录。在该项目中,我使用的前端组件库是 Layui,为了实现目录的图标编辑功能,我选择了 Gitee 上的 Layui-IconPicker 项目,可以直接选择 Layui 自带的图标,可以说相当好用和美观了,不过该项目上次维护还是 4 年前,存在一些问题

  1. 该组件的图标来自于 Layui2.4.1
  2. 该组件选择图标后只能修改图标,不能删除图标

所以为了解决以上两个问题,我对该组件做了一些调整,并对使用方式进行了优化

2.项目目标

  1. 因为 Layui 的版本已经升级到了 2.8.4,所以组件里的图标必须同步升级,不过如果只是升级写死的话,后续还得继续维护,比较麻烦,所以我想是否可以直接读取 Layui 的图标库,这样以后只需要升级更新 Layui 库即可,避免了升级带来的麻烦
  2. 第二个就比较简单了,只需要加一个清除所选图标的图像即可,之前在别的组件中有使用过类似的功能,这里只需要实现功能即可

3.项目实现

3.1 图标读取

我在使用 Layui 库的时候发现,后续的 Layui 用的都是 iconfont 阿里巴巴矢量图标库,我们在 IDEA 中打开 font 下的 iconfont.svg 图片(如下图)
【Layui】图标选择器 iconPicker 的使用,Layui,Layui,iconPicker,iconfont

可以发现我们需要的图标信息都在这里,glyph-name 属性对应的是图标的 font-class,unicode 对应的是 图标的 unicode(这里因为编码原因所以和真实 unicode 编号显示不一致,通过转换可以获取真实的 unicode 码),所以我们只需要读取该 svg 的内容即可(如下图)
【Layui】图标选择器 iconPicker 的使用,Layui,Layui,iconPicker,iconfont
这里我们先通过获取该组件的请求路径,然后拼接获取 layui 的父路径,然后获取 /layui/font/iconfont.svg 的 svg 请求路径作为默认路径,当然也可以通过配置 iconfont.svg 的 url 来代替该默认路径

然后通过 ajax 的方式读取 svg 内容,并根据不同的使用图标的方式,读取对应的属性值作为图标库

fontClass: function () {
	let iconData = [];
	let icons = this.loadSvgData();
	for (let i = 0; i < icons.length; i++) {
		let iconName = icons[i].getAttribute("glyph-name");
		iconData.push("layui-icon-" + iconName);
	}
	return iconData;
}, unicode: function () {
	let iconData = [];
	let icons = this.loadSvgData();
	for (let i = 0; i < icons.length; i++) {
		let unicode = icons[i].getAttribute("unicode");
		iconData.push(unicode);
	}
	return iconData;
},
//加载图标的Svg数据
loadSvgData: function () {
	let svg;
	$.ajax({
		url: svg_url
		, type: 'get'
		, dataType: 'xml'
		, async: false
		, success: function (res) {
			svg = res;
		}
	});
	if (svg != null && svg != undefined && svg != "") {
		return svg.getElementsByTagName("svg")[0].getElementsByTagName("defs")[0].getElementsByTagName("font")[0].getElementsByTagName("glyph");
	} else {
		return null;
	}
}

3.2 图标擦除

图标清除的实现就相对比较简单了,定义一个 i 标签,配置上对应的清除图片,然后实现点击该图片的清除功能

clickClear: function () {
	let item = "#" + CLEAR_ID;
	$(item).on('click', function () {
		let el = $(elem);
		if (isFontClass) {
			$('#' + TITLE_ID).find('.layui-iconPicker-item .layui-icon').html('').attr('class', "layui-icon");
		} else {
			$('#' + TITLE_ID).find('.layui-iconPicker-item .layui-icon').html("");
		}

		$('#' + ICON_BODY).removeClass(selected).addClass(unselect);
		el.val(null).attr('value', null);//清空属性和值
		// 回调
		if (click) {
			click({
				icon: null
			});
		}
	});
	return picker;
}

4.效果展示

4.1 简单使用

如果直接简单使用的话,特别方便,只需要定义一个 input 标签,设置 ID

<input type="text" id="icon1" name="icon" class="layui-input">

然后使用 iconPicker 组件进行渲染即可

iconPicker.render({
	elem: '#icon1',// 图标组件,推荐使用input
});

【Layui】图标选择器 iconPicker 的使用,Layui,Layui,iconPicker,iconfont

4.2 参数配置

有时候可能有些场景下我们需要调整配置,可以根据如下配置参数

iconPicker.render({
	elem: '#icon2',// 图标组件,推荐使用input
	url: '/layui/font/iconfont.svg',// Layui的字体 svg 路径
	type: 'fontClass',// 图标数据类型:fontClass/unicode,推荐fontClass
	page: false,// 是否分页:true/false,推荐且默认分页
	limit: 24,// 每页显示数量,默认16(默认4*4)
	search: false,// 是否开启搜索:true/false,推荐且默认true
	cellWidth: '28%', //每个图标格子的宽度:'43px'或'20%'
	click: function (data) { // 点击回调
		console.log("icon2点击回调" + data);
	},
	success: function (res) {// 渲染成功后的回调
		console.log("icon2渲染成功后的回调" + res);
	}
});

4.3 使用 unicode

如果需要视同 unicode 类型显示图标,只需要配置 type 参数为 unicode 即可

iconPicker.render({
	elem: '#icon3',// 图标组件,推荐使用input
	type: 'unicode'
});

不过在获取图标的 unicode 值时,需要对图标数据进行如下处理

form.on('submit(form3)', function (data) {
	let field = data.field; // 获取表单全部字段值
	field.icon = '&#x' + field.icon.charCodeAt(0).toString(16) + ';';// unicode值处理
	console.log(JSON.stringify(field));// 显示填写结果
	return false; // 阻止默认 form 跳转
});

5.源码地址

Giteehttps://gitee.com/lijinjiang01/LayuiModule
GitHubhttps://github.com/lijinjiang01/LayuiModule文章来源地址https://www.toymoban.com/news/detail-532064.html

到了这里,关于【Layui】图标选择器 iconPicker 的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决uniapp的tabBar使用iconfont图标显示方块

    今天要写个uniapp的移动端项目,底部tabBar需要添加图标,以往都是以图片的形式引入,但是考虑到不同甲方的主题色也不会相同,使用图片的话,后期变换主题色并不友好,所以和UI商量之后,决定使用iconfont阿里巴巴矢量图标库。 想着就是需要简单的引入图标即可,但万万

    2024年02月15日
    浏览(47)
  • 三种方式在HTML使用阿里字体图标--iconfont阿里巴巴矢量图标库

    好久没用到阿里巴巴的图标,突然要用到就发现不会用了,只会导出png格式的图标png了= = 目录 1、字体图标 方法一、本地使用通过类名使用阿里矢量图标 1、把图标添加入库 2、把图标添加到项目  3、下载字体图标 4、使用文件 5、在对应的HTML页面上引入css 6、使用字体图标

    2024年02月16日
    浏览(81)
  • 在uni-app项目中简单使用iconfont字体图标

    1.1 减小打包体积,一些平台如微信小程序等在发布时有体积限制,大量使用静态资源会使得打包体积容易超出限制 1.2 字体图标是矢量的,缩放不失真、模糊 1.3 对比引用多个网络图标,字体图标只需一个css文件即可,因此减少了网络请求次数,同时比下载图片节约流量 2.1

    2024年02月05日
    浏览(57)
  • 微信小程序开发系列(十三)·如何使用iconfont、微信小程序中如何使用字体图标

    目录 1.  如何使用iconfont 2.  微信小程序中如何使用字体图标 3.  背景图的使用         在项目中使用到的小图标,一般由公司设计师进行设计,设计好以后上传到阿里巴巴矢量图标库,然后方便程序员来进行使用。         小程序中的字体图标使用方式与 Web 开发中

    2024年03月20日
    浏览(74)
  • vue中 字体图标引入 - iconfont阿里字体图标库

    官网:iconfont-阿里巴巴矢量图标库 代码应用 中,有许多方法,如何使用该图标库。如,icon单个使用、unicode引用、或 font-class引用(推 )、symbol(svg合集)。本文主讲 font-class 方法。 支持ie8+,及所有浏览器 1. 获得项目下面的 fontclass 代码 加入库 - 选择完所需的图标后,右上

    2024年02月09日
    浏览(66)
  • iconfont 新加图标( 在原有项目的图标库中加入新的图标)

    需求:半路接其他人开发过的项目,由于项目已经生成了一些原有的图标,而我们也没有加入对方的项目组里,只能自己新创建一个项目,再把需要的图标加入项目里,生成对应的iconfont.css 文件,加入到原有的项目里,废话不多说,步骤: 1. 既然用到 iconfont,肯定的先找到

    2023年04月23日
    浏览(34)
  • iconfont-extract: 一个将iconfont图标转化为React组件的工具

    iconfont 提供了海量的图标,同时也方便了前端开发者使用这些图标,只需要添加对应的js、css或者字体文件即可。在我们的项目中使用添加js文件的方式,js文件中都包含了所有的图标,一个项目中通常只会使用其中的一部分,所以加载了很多不需要的图标,iconfont-extract 就是

    2024年02月05日
    浏览(36)
  • vant自定义引入iconfont图标以及字体

    因为vantUI给的图标非常少,为了满足自己的需求,必须自定义图标,这里分享一种vant引入阿里的iconfont矢量图库中的图标的方法 第一步:去阿里矢量库下载图标 点击资源管理—我的项目 —新建项目  在首页搜索需要的图标添加至自己的项目中  第二步:把项目下载到本地,

    2024年02月12日
    浏览(50)
  • Vue3 项目引入阿里 iconfont 图标和字体

    需求: 将 iconfont 阿里图标库的图标与字体引入到我们的 Vue3 + vite + TS 项目中来! 我们使用图标的方式有很多种,比如说直接使用 png、jpg 等图片格式,这是最原始的方式,所以我们这里不过多阐述,它们的优缺点相信大家也知道。 这里我们主要对比阿里图标库提供 3 种图标

    2024年02月03日
    浏览(45)
  • C# WPF 中 外部图标引入iconfont,无法正常显示问题 【小白记录】

    正确的格式,注意字体文件 “xxxx.ttf” 应写为 “#xxxx” 比如我的图标字体在当前项目的 /Assets/Fonts/ 路径下,那么我在MainWindow中引入该图标的话,应该如下面的代码一样。 点击字体文件,然后右键–属性,将生成操作选为Resource(资源)即可

    2024年02月12日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包