如何在带有ruby on rails的伪元素中显示来自svg sprite的图标

Posted

技术标签:

【中文标题】如何在带有ruby on rails的伪元素中显示来自svg sprite的图标【英文标题】:How to display icon from svg sprite in pseudo element with ruby on rails 【发布时间】:2021-10-16 16:52:28 【问题描述】:

我想创建一个类似Home > 的菜单,其中右箭头是 svg sprite 中的图标。我想将> 作为一个伪元素放在css 选择器中,这样我就可以通过添加css 选择器.menu-arrow 使任何菜单都有右箭头。我正在尝试在 ruby​​ on rails 6 中执行此操作,但没有成功。

我尝试将 svg 图标精灵添加为背景内容,但它似乎无法正常工作。

我的 svg 精灵

path to svg sprite: app/assets/images/sprites.svg


<svg aria-hidden="true" style="position: absolute; width: 0; height: 0; overflow: hidden;" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<symbol id="icon-check-solid" viewBox="0 0 32 32">
<path d="M10.869 27.463l-10.4-10.4c-0.625-0.625-0.625-1.638 0-2.263l2.263-2.263c0.625-0.625 1.638-0.625 2.263 0l7.006 7.006 15.006-15.006c0.625-0.625 1.638-0.625 2.263 0l2.263 2.263c0.625 0.625 0.625 1.638 0 2.263l-18.4 18.4c-0.625 0.625-1.638 0.625-2.263-0z"></path>
</symbol>
<symbol id="icon-chevron-down-solid" viewBox="0 0 28 32">
<path d="M12.939 23.842l-12.146-12.146c-0.586-0.586-0.586-1.536 0-2.121l1.417-1.417c0.585-0.585 1.533-0.586 2.119-0.002l9.672 9.626 9.672-9.626c0.586-0.583 1.534-0.582 2.119 0.002l1.417 1.417c0.586 0.586 0.586 1.536 0 2.121l-12.146 12.146c-0.586 0.586-1.536 0.586-2.121 0z"></path>
</symbol>
</defs>
</svg>`

我的 CSS 类


.menu-arrow 
      &::after 
        content: '';
        display: inline-block;
        height: 2rem;
        width: 2rem;
        background-image: asset-url("images/sprites.svg#icon-chevron-down-solid");
        transform: rotate(90deg) scale(1.5);
        fill: var(--color-white);
        color: var(--color-white);
        font-weight: 700;
        border: 1px solid red;
      
    

我该如何进行这项工作?

【问题讨论】:

【参考方案1】:

这个article 表明CSS url 中的#id 引用view 而不是symbol

您当然可以通过 use 将您的 sprite 用作内联 SVG(阴影)DOM 元素,并帮助简化流程 (see this)

特别是对于您的 V 形,您可以使用没有背景的伪元素(两侧的边框带有圆角并旋转 45 度)来实现几乎相同的图形元素。我做了一支笔here 来演示这种方法

【讨论】:

以上是关于如何在带有ruby on rails的伪元素中显示来自svg sprite的图标的主要内容,如果未能解决你的问题,请参考以下文章

在 ruby​​ on rails 中单击时显示元素

如何在 Ruby on Rails 中使用带有 form.select 的 jquery .click() 方法?

如何在 ruby​​ on rails 中访问 rails 助手和嵌入资产 javascript 文件中的 ruby​​?

Ruby on Rails - 如何在 Rails 方法中使用 HTML 坐标?

在 Ruby on Rails 中使用 <%= %> 时如何删除周围的引号 (")?

如何在 ruby​​ on rails 中显示 vimeo 和 youtube 嵌入链接的缩略图?