Простое использование SVG-иконок и эмодзи в CSS для Discourse

Привет :wave:

Эта тема содержит два компонента темы.

Discourse Easy SVG Icon CSS

:warning: Этот компонент темы работает как шаблон; пожалуйста, форкните его на GitHub или используйте код в своем проекте. Вы можете удалить коды SVG иконок из SCSS и оставить только те, которые вы действительно используете… Я импортировал файл mixin в файл common.scss, поэтому вы можете добавить свой код ниже этой строки или отдельно в раздел для рабочего стола или мобильного устройства.

Компонент темы добавляет возможность сохранять SVG-иконки поддерживаемыми и легко редактируемыми в вашем CSS. Компонент содержит все SVG-иконки, найденные здесь: discourse/vendor/assets/svg-icons/fontawesome at main · discourse/discourse · GitHub



Как использовать?

Параметры:

$icon-set: brands, regular, solid
$icon-name: название иконки
$icon-color: цвет иконки (currentColor, hex или переменная цвета)
$width и $height: размер добавляемой иконки

Это выглядит так:

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

Использование currentColor
Вот пример добавления твердой иконки ракеты перед элементом навигационной панели Последние.

#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)
Вот пример добавления обычной иконки золотой звезды перед элементом навигационной панели Лучшие.

#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);

Вот пример добавления эмодзи rocket из набора facebook_messenger перед элементом Последние и эмодзи star из набора twitter перед элементом Лучшие навигационной панели.

#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

Доброе утро, @Don,

Я с большим интересом слежу за вашей работой и, как мне кажется, внедрил все ваши творения на свой форум. Однако с этим конкретным элементом я не уверен. После обновления Discourse я запутался и не могу вспомнить, куда именно нужно вставить эти CSS-коды. Я интегрировал ваш код с GitHub в тему, но ничего не отображается.

По-моему, эта тема должна служить редактируемой основой для вашей работы:

Это объясняет, почему при установке ничего не появилось: шаблон сам по себе, скорее всего, ничего не делает.

Разве это не должно быть видно нам?

или

Нет, так как это удалённая тема, что означает: вам нужно либо скачать её с GitHub и загрузить как ZIP-архив на ваш экземпляр, либо форкнуть репозиторий GitHub и внести изменения там.

Действительно, для меня это совершенно новая концепция. Однако я понимаю вашу точку зрения: каждый день — это возможность учиться, и я ценю быстрый ответ.

Привет, @Aaron_Walsh :waving_hand: У тебя наконец-то всё получилось? Есть ли какой-то конкретный сценарий использования, для которого ты хочешь это применить? Если ты поделится деталями, я могу создать отдельный компонент темы на основе этого, который будет легко настраиваться через параметры.

Доброе утро,

Идея была бы успешной; однако у меня больше нет ноутбука на Windows для редактирования. Вместо этого я перешёл на использование Samsung Galaxy S9 Ultra, о чём сейчас немного жалею :sweat_smile:.

Существует способ выполнить эту задачу с помощью моего хостинг-сервера (cPanel) через загрузку и редактирование. Тем не менее, вынужден извиниться, но работа, которую вы создали, может оказаться сложной для некоторых пользователей.

Поэтому, если вы не против,

9e9f0a12fb60537533c141e18e145f7d98eecb9c

Этот дизайн вызывает у меня особое восхищение, и именно он мне особенно нравится!

Да, именно поэтому это размещено в категории Development, но не волнуйтесь — я создам #theme-component для этого случая. :slightly_smiling_face:

Приношу извинения, это была моя ошибка! Однако в дальнейшем я буду лучше осведомлён об этом.

Привет :waving_hand: Этот #theme-component завершен. :white_check_mark:

Вы просто супер! Спасибо!