讲师中心 微信公众号
AI工具推荐 视频效率加速

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

落宇大大_2781

落宇大大_2781

发布时间:2026-05-07 07:03:58

|

993人浏览过

|

来源于php中文网

原创

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

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

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

解决办法只有一个:改用函数式templet并手动返回未转义的HTML字符串——但必须确保该字符串不含XSS风险字符(如<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>),确保<svg>定义已提前注入<body>顶部(比如用document.body.insertAdjacentHTML)
  • 别在templet里动态fetch SVG 内容,异步返回会导致渲染时机错乱,图标闪一下再消失

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

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

对比来看:

  • <i>图标:体积小、兼容性好、支持font-size/color直接控制、无跨域/加载失败问题
  • <svg>图标:可精确控制路径、支持渐变/动画、但需管理<defs>和xlink:href、容易因路径错误或注入时机不对而空白
  • 如果你的SVG只是单色简单图形(如下载、编辑、删除),优先用layui-icon-xxx;只有需要多色、描边动画、或与设计稿像素级对齐时,才上<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>必须带viewBox="0 0 24 24"(按你源SVG实际画布定)
  • 加内联样式:style="width:18px;height:18px;vertical-align:middle;",vertical-align用来对齐文字基线
  • 禁用max-width: 100%这类全局重置样式,它会让SVG在小屏上被强制压缩变形
  • 如果图标颜色要随文字变(比如color: #1E9FFF),得在<svg>里用fill="currentColor",而不是固定写#333

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

热门AI工具

更多
Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

相关专题

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

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

2463

2023.08.11

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

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

5323

2023.10.09

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

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

6370

2024.03.19

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

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

5958

2024.03.22

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

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

843

2024.05.22

阿里icon
阿里icon

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

1214

2023.06.15

Linux 新手先学哪些命令
Linux 新手先学哪些命令

Linux新手命令专题汇集终端基础、文件目录操作、文本查看、软件安装和权限管理等入门文章,帮助按实际任务练习常用命令并建立命令行操作习惯。

0

2026.10.15

MySQL 忘记密码怎么办
MySQL 忘记密码怎么办

MySQL忘记密码专题汇集不同版本与系统下的root密码重置方法,覆盖MySQL 5.7、8.0、Mac、Linux及本地集成环境,并提示恢复权限与重新登录的检查步骤。

0

2026.10.15

Vue.js 中 ref 和 reactive 的区别
Vue.js 中 ref 和 reactive 的区别

Vue.js中ref和reactive的区别专题汇集两种响应式API的定义、访问方式、对象解构、侦听与性能取舍等文章,帮助结合实际状态类型选择合适写法。

0

2026.10.15

热门下载

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

精品课程

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

共87课时 | 12.9万人学习

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

共89课时 | 11.1万人学习

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

共5课时 | 1.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn