You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SlickGrid 5.8.1切换SVG展开/折叠图标不显示问题求助

解决SlickGrid 5.8.1折叠/展开SVG图标不显示问题

你的SVG图标不显示的核心原因是CSS mask需要配合背景色才能生效,同时原GIF图的background属性未被覆盖,导致mask遮罩无法正常展示。以下是修复后的完整方案:

修复后的CSS代码

/* 覆盖原GIF背景,确保mask生效 */
.toggle.expand, .toggle.collapse {
  background-color: #333; /* 图标颜色,可根据主题调整,也可用currentColor继承父元素颜色 */
  background-image: none; /* 移除原GIF背景,避免冲突 */
  width: 16px; /* 固定图标尺寸,匹配原GIF大小 */
  height: 16px;
}

.toggle.expand {
  -webkit-mask: url('data:image/svg+xml;utf8,%3Csvg viewBox="0 0 24 24" display="inline-block" height="1em" width="1em" vertical-align="text-bottom" xmlns="http://www.w3.org/2000/svg" %3E%3Cpath fill="currentColor" d="M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M17,11V13H7V11H17Z"/%3E%3C/svg%3E') no-repeat center center;
  mask: url('data:image/svg+xml;utf8,%3Csvg viewBox="0 0 24 24" display="inline-block" height="1em" width="1em" vertical-align="text-bottom" xmlns="http://www.w3.org/2000/svg" %3E%3Cpath fill="currentColor" d="M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M17,11V13H7V11H17Z"/%3E%3C/svg%3E') no-repeat center center;
  -webkit-mask-size: contain;
  mask-size: contain;
}

.toggle.collapse {
  -webkit-mask: url('data:image/svg+xml;utf8,%3Csvg viewBox="0 0 24 24" display="inline-block" height="1em" width="1em" vertical-align="text-bottom" xmlns="http://www.w3.org/2000/svg" %3E%3Cpath fill="currentColor" d="M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M11,7H13V11H17V13H13V17H11V13H7V11H11V7Z"/%3E%3C/svg%3E') no-repeat center center;
  mask: url('data:image/svg+xml;utf8,%3Csvg viewBox="0 0 24 24" display="inline-block" height="1em" width="1em" vertical-align="text-bottom" xmlns="http://www.w3.org/2000/svg" %3E%3Cpath fill="currentColor" d="M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M11,7H13V11H17V13H13V17H11V13H7V11H11V7Z"/%3E%3C/svg%3E') no-repeat center center;
  -webkit-mask-size: contain;
  mask-size: contain;
}

关键修复点说明

  1. 添加背景色:mask是遮罩效果,必须给元素设置background-color才能透出SVG的形状,颜色可根据主题灵活调整。
  2. 移除原背景图:显式设置background-image: none,彻底覆盖原GIF的background属性,避免样式冲突。
  3. 固定元素尺寸:原GIF图标有固定宽高,给.toggle类设置width和height,确保SVG图标有足够空间显示。
  4. 调整mask尺寸:用mask-size: contain替代100% 100%,保证SVG图标按比例完整显示,不会出现拉伸变形。

更简单的替代方案:直接用background显示SVG

如果不想使用mask,也可以直接将SVG作为背景图使用,逻辑更直观:

.toggle.expand {
  background: url('data:image/svg+xml;utf8,%3Csvg viewBox="0 0 24 24" display="inline-block" height="16px" width="16px" xmlns="http://www.w3.org/2000/svg" %3E%3Cpath fill="#333" d="M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M17,11V13H7V11H17Z"/%3E%3C/svg%3E') no-repeat center center;
  width: 16px;
  height: 16px;
}

.toggle.collapse {
  background: url('data:image/svg+xml;utf8,%3Csvg viewBox="0 0 24 24" display="inline-block" height="16px" width="16px" xmlns="http://www.w3.org/2000/svg" %3E%3Cpath fill="#333" d="M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M11,7H13V11H17V13H13V17H11V13H7V11H11V7Z"/%3E%3C/svg%3E') no-repeat center center;
  width: 16px;
  height: 16px;
}

内容的提问来源于stack exchange,提问作者DaveA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 08:39:54