Не удаётся добавить пробел рядом с эмодзи внутри тегов <kbd>

<kbd>:blue_square: любой текст</kbd>

Отобразится так же, как:

<kbd>:blue_square:любой текст</kbd>

:blue_square: любой текст

Между эмодзи и текстом нет видимого пробела, хотя в HTML-коде пробел присутствует.

Является ли это ограничением тега <kbd>? Есть ли элегантный способ исправить это, или нам следует полагаться на «костыли», такие как &nbsp; или и т. д.?

<kbd>:blue_square:&nbsp;любой текст</kbd>

:blue_square: любой текст

<kbd>:blue_square:ㅤлюбой текст</kbd>

:blue_square:ㅤлюбой текст

Скорее всего, это display: inline-flex;, применяемый к тегам KBD, что заставляет элементы располагаться ближе друг к другу.

Возможно, здесь есть обходной путь через CSS, но я не уверен.

1 лайк

Одно из решений — добавить некоторые значения для свойства white-space, например pre-wrap, но это вызовет проблемы, если внутри <kbd> будет более одного переноса строки.

image

Станет выглядеть так:

image


Альтернативный вариант — автоматически добавлять левые и/или правые отступы для эмодзи, если он не является первым или последним элементом.

В текущем состоянии:

image

image

С добавлением этого CSS:

kbd {
    // текущие правила
    img {
        margin: 0 .5em;
        &:first-child {
            margin-left: 0;
        }
        &:last-child {
            margin-right: 0;
        }
    }
}

image

image

Будут ли такие принудительные отступы приемлемы? Это выглядит лучше и повышает читаемость, но пользователю будет невозможно избежать отступа между эмодзи и некоторым текстом (что касается меня, я был бы рад, так как считаю принудительный отступ преимуществом).

2 лайка

Не уверен насчёт этого, посмотрим, что подумают @Designers. В идеале мы могли бы просто научить inline-flex быть более… гибким.

3 лайка

Думаю, для этого можно использовать свойство gap? Проблема в том, что переход kbd на flexbox убрал естественные отступы между элементами внутри:

kbd {
  gap: 0.5em;
}

даёт:

Screenshot 2022-12-08 at 1.06.10 PM

Это добавит отступы между любыми HTML-элементами внутри тега KBD и не потребует исключений для первого или последнего дочернего элемента.

3 лайка

Я только что объединил это:

4 лайка

Отлично, спасибо! :+1:

Кстати, я не знал про свойство gap, всегда полезно чему-то научиться.

3 лайка