Discourse CSS 中轻松使用 'SVG Icon' 与 'Emoji'

<div data-theme-toc="true"> </div>

你好 :wave:

此主题包含两个主题组件。

Discourse Easy SVG Icon CSS

:warning: 此主题组件可作为模板使用,请在 Github 上分叉或将代码用于您的项目。您可以从 SCSS 中删除图标 SVG 代码,只保留您实际使用的代码……我已将 mixin 文件导入 common.scss 文件,因此您可以在该行下方或单独添加到桌面或移动部分。

该主题组件增加了在 CSS 中维护和轻松编辑 SVG 图标的功能。该组件包含此处找到的所有 SVG 图标:discourse/vendor/assets/svg-icons/fontawesome at main · discourse/discourse · GitHub



如何使用?

固定参数:

$icon-set: brands, regular, solid
$icon-name: 图标名称
$icon-color: 图标颜色(currentColor、十六进制或颜色变量)
$width$height: 添加图标的大小

它看起来像这样:

@include svg-icon($icon-set, $icon-name, $icon-color, $width, $height);

使用 currentColor
这是一个在“Latest”导航栏项之前添加实心火箭图标的示例。

#navigation-bar {
  li.nav-item {
    &_latest {
      a {      
        gap: 0.5em;
        &:before {
          content: "";
          @include svg-icon(solid, rocket, currentColor, 1em, 1em);
        }
      }
    }
  }
}

add-icon-to-latest


使用 var(--gold) 颜色变量
这是一个在“Top”导航栏项之前添加金色实心星形图标的示例。

#navigation-bar {
  li.nav-item {
    &_top {
      a {      
        gap: 0.5em;
        &:before {
          content: "";
          @include svg-icon(regular, star, var(--gold), 1em, 1em);
        }
      }
    }
  }
}

add-star-to-top


我们可以轻松地更改图标集、颜色,甚至在悬停时更改图标等……让我们看看!

现在,当鼠标悬停在按钮上时,我们将常规图标更改为实心图标。

#navigation-bar {
  li.nav-item {
    &_top {
      a {      
        gap: 0.5em;
        &:hover,
        &:focus,
        &.active {
          &:before {
            @include svg-icon(solid, star, currentColor, 1em, 1em);
          }
        }
        &:before {
          content: "";
          @include svg-icon(regular, star, currentColor, 1em, 1em);
        }
      }
    }
  }
}

change-icon-set


Discourse Easy Emoji CSS

:warning: 此主题组件可作为模板使用,请在 Github 上分叉或将代码用于您的项目。我已将 mixin 文件导入 common.scss 文件,因此您可以在该行下方或单独添加到桌面或移动部分。

如何使用?

用法与 SVG 版本类似。

固定参数:

$emoji-set: apple, google, twitter, win10, google_classic, facebook_messenger
$emoji-name: 表情符号名称
$width$height: 添加表情符号的大小

@include emoji($emoji-set, $emoji-name, $width, $height);

这是一个在“Latest”导航栏项之前添加 facebook_messenger rocket 表情符号,在“Top”导航栏项之前添加 twitter star 表情符号的示例。

#navigation-bar {
  li.nav-item {
    &_latest {
      a {      
        gap: 0.5em;
        &:before {
          content: "";
          @include emoji(facebook_messenger, rocket, 1em, 1em);
        }
      }
    }
    &_top {
      a {      
        gap: 0.5em;
        &:before {
          content: "";
          @include emoji(twitter, star, 1em, 1em);
        }
      }
    }
  }
}

Screenshot 2024-03-25 at 5.26.26

13 个赞

早上好,@Don

我一直在热切地关注您的工作,并相信我已经将您所有的创作都应用到了我的论坛中。但是,对于这个特定的项目,我不太确定。自从 discourse 升级以来,我头脑有些混乱,不记得在哪里可以实现这些 CSS 代码了。我已经将您的 GitHub 代码集成到主题中,但似乎没有任何显示。

1 个赞

我认为该主题应该是一个可编辑的基础供您使用:

这可以解释为什么您安装后什么都没有显示,因为模板本身可能几乎没有作用。

1 个赞

这个应该对我们可见吗?

或者

不,因为它是一个远程主题,这意味着您必须从 GitHub 下载它并将其作为 zip 文件上传到您的实例,或者 fork GitHub 存储库并在那里进行更改。

1 个赞

确实,这对我来说是一个全新的概念。但我明白你的意思;每一天都是学习的机会,我感谢你的迅速回复。

2 个赞

@Aaron_Walsh :waving_hand: 你最终成功了吗?你有什么想使用它的特定用例吗?如果你分享一些细节,我可以基于此创建一个单独的主题组件,可以轻松地通过设置进行修改。

早上好,

这项工作本可以成功完成;但是,我现在没有用于编辑的 Windows 笔记本电脑了。取而代之的是,我改用了三星 Galaxy S9 Ultra,我现在觉得这个决定有点令人后悔 :sweat_smile:

存在一种方法,可以通过上传和编辑来使用我的托管服务器 (cPanel) 完成这项任务。然而,我不得不抱歉地指出,您所创作的作品对某些人来说可能很复杂。

因此,如果您愿意,

9e9f0a12fb60537533c141e18e145f7d98eecb9c

这个设计是我所欣赏的,也是我特别喜欢的!

1 个赞

是的,这就是它被归入 Dev 类别的原因,但别担心,我会为此用例创建一个 #theme-component。 :slightly_smiling_face:

3 个赞

抱歉,那是我的疏忽!不过,今后我会更好地了解这一点。

你好 :waving_hand: 这个 Theme component 已经完成了。:white_check_mark:

你太棒了!谢谢!

1 个赞