Layui如何实现在表格中显示自定义的SVG图标

落宇大大_2781

落宇大大_2781

2026-05-07

993人浏览

原创

Layui表格templet中直接写会失效,因默认调用layui.util.escape()将标签转义为文本;解法是改用函数式templet返回未转义HTML,并确保SVG已提前注入DOM或改用更稳定的layui-icon字体图标。

templet里直接写<svg></svg>会失效?原因和解法

svg图标在layui表格单元格中不显示,大概率不是代码写错,而是被layui的dom清理机制过滤掉了。layui的templet默认对返回内容做layui.util.escape()处理,所有<svg></svg>、<use></use>等标签会被转义成纯文本。

解决办法只有一个:改用函数式templet并手动返回未转义的HTML字符串——但必须确保该字符串不含XSS风险字符(如<script></script>)。

  • 写法示例:templet: function(d) { return '<svg class="icon" viewbox="0 0 24 24"><use xlink:href="#icon-download"></use></svg>'; }
  • 不能写成字符串模板:templet: '<svg>...</svg>' —— 这种会被自动escape
  • 如果用了雪碧图(<use></use>),确保<svg></svg>定义已提前注入顶部(比如用document.body.insertAdjacentHTML)
  • 别在templet里动态fetch SVG 内容,异步返回会导致渲染时机错乱,图标闪一下再消失

用layui-icon类替代<svg></svg>更稳吗?

是的,绝大多数场景下更稳。Layui内置的字体图标本质就是CSS + Unicode,不依赖DOM结构,也不怕escape。只要确保layui.css加载完成、font-family没被覆盖,<i class="layui-icon layui-icon-download"></i>就能正常显示。

对比来看:

  • <i></i>图标:体积小、兼容性好、支持font-size/color直接控制、无跨域/加载失败问题
  • <svg></svg>图标:可精确控制路径、支持渐变/动画、但需管理<defs></defs>和xlink:href、容易因路径错误或注入时机不对而空白
  • 如果你的SVG只是单色简单图形(如下载、编辑、删除),优先用layui-icon-xxx;只有需要多色、描边动画、或与设计稿像素级对齐时,才上<svg></svg>

自定义SVG图标集成到layui-icon体系

想让自己的SVG也能用class="layui-icon layui-icon-my-export"调用,就得走字体图标路线——这不是“引入SVG”,而是把SVG编译成字体文件,并挂载到Layui的图标字体栈里。

CSS3 SVG带控件的顶部导航栏代码
CSS3 SVG带控件的顶部导航栏代码

CSS3 SVG带控件的顶部导航栏代码是一款功能强大的带控件的超实用网页顶部导航栏。

下载

关键步骤:

  • 用IcoMoon或Fontello上传你的SVG,导出.woff、.eot等格式字体包
  • 把字体文件放进项目/fonts/目录,在CSS中扩展@font-face,并声明新类名:.layui-icon-my-export:before { content: "\e001"; }
  • 务必加!important覆盖Layui原有font-family声明,否则图标显示为方块
  • 不要删掉原生layui-icon的@font-face,新字体应作为补充,避免破坏已有图标
  • 测试时打开DevTools检查元素computed样式,确认font-family最终生效的是你新增的字体名

移动端SVG图标偏移、缩放失真怎么办

SVG在手机上显示错位或模糊,90%是因为没设viewBox或width/height不匹配。Layui表格单元格默认有padding和line-height,SVG若没明确尺寸,会按默认1em撑开,导致上下留白或裁切。

实操建议:

  • 所有<svg></svg>必须带viewBox="0 0 24 24"(按你源SVG实际画布定)
  • 加内联样式:style="width:18px;height:18px;vertical-align:middle;",vertical-align用来对齐文字基线
  • 禁用max-width: 100%这类全局重置样式,它会让SVG在小屏上被强制压缩变形
  • 如果图标颜色要随文字变(比如color: #1E9FFF),得在<svg></svg>里用fill="currentColor",而不是固定写#333

最易被忽略的一点:表格列宽由Layui自动计算,但SVG本身不参与宽度测量。如果图标太宽,可能挤占文字空间,导致文本换行——这时候宁可缩小SVG尺寸,也不要靠white-space: nowrap硬撑。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

layui

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2443

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

5283

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6330

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

5918

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

843

5

阿里icon
阿里icon

php中文网为大家提供阿里icon教程,阿里icon是指“Iconfont”,是由阿里巴巴矢量图标库提供的一种图标字体,包含了大量的中英文图标和符号。php中文网还为大家带来阿里icon的相关下载资源、相关文章等内容,供大家免费下载使用。

2023.06.15

1214

3

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

2026.10.10

100

15

Kratos框架HTTP与gRPC服务开发教程
Kratos框架HTTP与gRPC服务开发教程

本专题围绕Kratos框架双协议服务开发,涵盖HTTP路由与处理器编写、参数获取、gRPC服务实现与客户端调用、metadata上下文传递、encoding编解码注册、统一响应封装、超时控制与流式响应实现方法。

2026.10.10

40

15

Kratos框架Protobuf接口定义与代码生成合集
Kratos框架Protobuf接口定义与代码生成合集

本专题讲解Kratos框架接口定义体系,涵盖proto编写规范、proto add/client/server生成命令、http注解路由、validate校验、OpenAPI文档生成、跨服务proto复用与兼容性设计。

2026.10.10

20

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ThinkPHP配置开发与CMS后台实战
ThinkPHP配置开发与CMS后台实战

共87课时 | 12.9万人学习

第二十三期_综合实战
第二十三期_综合实战

共89课时 | 11.1万人学习

Layui 快速入门精讲
Layui 快速入门精讲

共5课时 | 1.6万人学习