Почему некорректно работает line-height в input?

Ссылка скопирована
1 ответ

Есть простой инпут:

<input class="form__input js-email-input" id="email-input" type="email" name="email" placeholder="E-mail" required="">

<input class="form__input js-email-input" id="email-input" type="email" name="email" placeholder="E-mail" required="">

Для него заданы CSS-свойства:

.form__input {   border: 1px solid #AEB1C8;   border-radius: 8px;   padding: 13px;   font-family: 'Montserrat', sans-serif;   font-weight: 400;   font-size: 16px;   line-height: 1;   width: 100%;   background-color: #E6E8F1;   color: #444188;   outline: none; }

.form__input { border: 1px solid #AEB1C8; border-radius: 8px; padding: 13px; font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 16px; line-height: 1; width: 100%; background-color: #E6E8F1; color: #444188; outline: none; }

Свойство line-height работает некорректно. Если я задаю line-height = 16px, то высота самого поля составляет 19px, но если я задам line-height = 18px, то высота инпута уже будет 18px и свойство срабатывает правильно. В чем проблема? Почему я не могу задать line-height = 1? Все значения более 18px срабатывают корректно.

Дополнительно:

Минимальный line-height в текстовых полях 1.15 или типа того. И может отличаться в разных браузерах.
О каком браузере речь у вас, вообще неизвестно.

  • Ankhena, Гугл Хром
  • ymfront, в FF вроде больше минимальный lh, но лень проверять. Потестируйте самостоятельно.
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Павел Админов Ответ

    Проблема с корректным отображением line-height в input возникает из-за того, что большинство браузеров не позволяют изменять line-height внутри input элемента. Это связано с тем, что line-height непосредственно связан с высотой текста внутри элемента, а в случае с input это значение устанавливается браузером и не может быть изменено с помощью CSS.

    Однако, есть несколько способов обойти эту проблему. Один из них - использовать псевдоэлемент ::placeholder для задания line-height. Например, вы можете добавить следующий CSS код:

    input::placeholder {
      line-height: 2;
    }

    input::placeholder { line-height: 2; }

    Еще один способ - использовать псевдоэлемент ::before или ::after для создания эффекта line-height. Например:

    input {
      position: relative;
    }
    input::before {
      content: "";
      display: block;
      height: 10px; /* задайте нужную высоту line-height */
    }

    input { position: relative; } input::before { content: ""; display: block; height: 10px; /* задайте нужную высоту line-height */ }

    Также, вы можете попробовать использовать другие способы стилизации input элемента, например задавать padding или font-size, чтобы добиться нужного отображения текста внутри input.

    Надеюсь, эти способы помогут вам решить проблему с line-height в input элементе. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно