Как удалить CSS «Отступы шрифта» в полях ввода с высотой строки?

Я создал простое поле ввода:

<style>
    input {
        padding: 0;
        margin: 0;
    }
</style>
<input type = "text" placeholder = "Test">

Я хотел бы удалить «заполнение шрифта» (которое я пометил оранжевым). Я пытался манипулировать им с помощью высоты строки, но в моем случае я смог только увеличить «заполнение шрифта», а не уменьшить его. У кого-нибудь есть решение, как его уменьшить?

Поле ввода должно выглядеть так:

попробуйте ввести этот текст ÂÊjpq_ и вы поймете зачем нужен этот пробел

Temani Afif 11.12.2020 12:54

Спасибо за ваш ответ. Да, я знаю это. Однако в моем случае это поле ввода позволяет использовать только текст, так что это не имеет большого значения. Этот случай не вызовет. :)

Lars Flieger 11.12.2020 13:02

но ÂÊjpq_ ЕСТЬ текст, а j, p, q - основные строчные буквы...

Laurent S. 11.12.2020 13:04

Правда жаль, что моя область очень особенная. Только абв-азбука :D

Lars Flieger 11.12.2020 13:17
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
4
547
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы можете сделать это, зафиксировав высоту ввода. Но это сработает только в том случае, если у вас нет букв, которые выпрыгивают из базовой линии (j, y, g...). Если появится одна из этих букв, вам нужно будет настроить/увеличить высоту ввода с помощью Javascript.

Обратите внимание: я бы этого не сделал, но это решение вашего вопроса: D. Также вам понадобится код Javascript

input{
  font-size: 100px;
  padding: 0;
  height: 70px;
  margin-bottom: 100px;
}
<input type = "text" placeholder = "Test">
<input type = "text" placeholder = "Tesyt">

Спасибо! Я именно это и искал :)

Lars Flieger 11.12.2020 13:16

Вы также можете попробовать обернуть ввод внутри метки inline-flex. align-items и overflow могут помочь:

возможный пример:

label input {
  font-size: 1em;
  border: none;
  background: none; 
  color: green;
}

label {
  height: 0.72em;
  display: inline-flex;
  border: inset 1px #555;
}

label,
input {
  font-size: 25px;
  vertical-align: middle;
}
<label><input value = "Test clipped 123456"></label> <input value = "Test aside">

Привет @G-Cyrillus. Ваш ответ потрясающий. Я также ответил на этот вопрос, но ваш код точен. Я определенно оцениваю его :) Если у вас есть время, посмотрите мой ответ и предложите улучшения. Спасибо :)

Imran Rafiq Rather 11.12.2020 13:27

Я попробовал и придумал следующий трюк, используя чистый CSS: Это требует некоторых настроек в соответствии с требованиями.

body{
  position:relative;
}
input{
  border:none;
  position:absolute;
  outline:none;
  top:0;
  left:0;
  height:29px;
  width:200px;
  background:none;
  z-index:3;
}

label{
    display: block;
    height: 10px;
    width: 200px;
    border: 1px solid gray;
    position: absolute;
    left: 0;
    top: 9px;
    z-index: 3;
}
<!DOCTYPE html>
<html>
<head>
  <meta charset = "utf-8">
  <meta name = "viewport" content = "width=device-width">
  <title>JS Bin</title>
</head>
<body>
  <label for = "mytext"></label>
  <input type = "text" id = "mytext" value = "WE ARE HERE">
</body>
</html>

привет, визуальное выглядит хорошо для меня, может быть, top:-0.1em или около того, чтобы немного компенсировать ввод сверху. метка может быть в position:relative вместо absolute, чтобы оставаться в потоке. input также может быть прямым дочерним элементом label, так что не беспокойтесь о том, чтобы сфокусировать ввод;)

G-Cyrillus 11.12.2020 16:40

Большое спасибо за ответ и дельные советы :)

Imran Rafiq Rather 11.12.2020 17:25

Другие вопросы по теме