Почему у кнопок только с иконками есть этот текст ​?
Интересно, для чего он нужен, так как он сбивает мою стилизацию кнопок только с иконками ![]()
Вы можете прочитать описание от pmusaraj, объясняющее причины, в этом PR:
Это добавляет единый размер для текстовых полей ввода, выпадающих списков и кнопок во всём приложении. Это важно, поскольку эти элементы часто используются вместе в формах, и наличие разных вычисленных высот вызывает множество проблем с макетом.
Связанный код:
Похоже, есть более надёжный способ достичь того же эффекта без использования ZeroWidthSpace
Возможно, вы правы! Это PR от 2021 года. В 2024 году и позже может существовать современный способ обеспечения согласованности.
Да, мы уже рассматривали этот вопрос (и, вероятно, вернёмся к нему), но, к сожалению, даже такое простое решение, как добавление min-height ко всем кнопкам, внесёт слишком много изменений в существующие темы.
Почему минимальная высота? Не могли бы кнопки иметь базовые отступы и шрифт, включая межстрочный интервал, соответствующие размеру выпадающих списков и полей ввода?
Я думаю, что мы движемся к состоянию, где всё будет более стандартизировано, и это станет возможным, но высота строки может варьироваться в зависимости от шрифта… поэтому любое решение по умолчанию может привести к несогласованным высотам, как только тема сменит шрифт.
Символ нулевой ширины пробела гарантирует, что даже при изменениях высоты строки и шрифта кнопки без текста будут вести себя аналогично кнопкам с текстом (иными словами, высота строки символа нулевой ширины влияет на высоту кнопки так же, как и у кнопок с текстом).
Разве использование единого шрифта для всех элементов не обеспечивает одинаковую высоту строки, тем самым исключая различия в высоте строк разных шрифтов?
Нет, потому что высота кнопок без текста не зависит от line-height, а у кнопок с текстом зависит, поэтому возникает несоответствие между кнопками с текстом и без него.
Может быть, высоту иконки не стоит привязывать к высоте строки шрифта? Я представляю себе функцию @function, которая принимает детали/токен шрифта и применяет высоту строки к высоте иконки.
Да. Единица измерения lh в CSS хорошо поддерживается в современных браузерах, поэтому применение текущего межстрочного интервала к элементу сейчас довольно просто.
Но, конечно, я не знаю о сложностях внесения изменений без нарушения работы существующих тем.