@IvanSokalskiy Предполагается, что кто-то использует Bootstrap. Не каждый, кто сталкивается с этим, будет использовать Bootstrap!
Барри Майкл Дойл
Ответы:
394
Сайт, на который вы ссылаетесь, использует комбинацию трюков CSS, чтобы осуществить это. Во-первых, он использует background-image для <input>элемента. Затем, чтобы переместить курсор, он использует padding-left.
хорошее дополнение к этому ответу. иногда то есть дает проблемы, и это хороший способ решить одну из них. работал для меня, хотя с пролетом вместо этого.
Росс
Хороший способ добавить более сложные структуры внутри входов!
Понедельник,
@jonhue, я бы не советовал, если вы все еще живете в предыдущем десятилетии и нуждаетесь в поддержке IE6. Даже тогда я бы не назвал это "чистым".
Harpo
@harpo Как бы вы включили ссылки внутри входов тогда?
Я поддерживаю text-indent, потому что padding-left увеличит ширину поля и будет переполнен из родительского элемента.
Константин
1
почему вы вставили стиль вместо #icon css?
Уильям Джадд
@WylliamJudd Это только для демонстрации :)
Rust
почему вы использовали идентификатор вместо класса?
Маджид Саваланпур
9
Простой и легкий способ разместить Icon внутри ввода - использовать CSS-свойство position, как показано в коде ниже. Примечание: я упростил код для ясности.
Создайте контейнер, окружающий вход и значок.
Установите положение контейнера как относительное
Установите значок как абсолютное положение. Это позволит расположить значок относительно окружающего контейнера.
Используйте верхнюю, левую, нижнюю, правую стороны, чтобы разместить значок в контейнере.
Установите отступ внутри ввода, чтобы текст не перекрывал значок.
Чисто и просто, да. Вы также должны удалить входную границу с помощью input { border: none; }и добавить границу, чтобы #input-container { border: 1px solid #000; }она выглядела так, как будто изображение находится внутри и фактически является частью ввода.
Марио Вернер
1
@MarioWerner он вставил изображение в поле ввода, не нужно делать взломы границ, в этом вся прелесть. Я собираюсь использовать эту идею.
input.valid {border-color:#28a745;padding-right:30px;background-image:url('https://www.stephenwadechryslerdodgejeep.com/wp-content/plugins/pm-motors-plugin/modules/vehicle_save/images/check.png');background-repeat: no-repeat;background-size:20px20px;background-position: right center;}
У меня была такая ситуация. Это не сработало из-за background: #ebebeb;. Я хотел поместить фон в поле ввода, и это свойство постоянно отображалось в верхней части фонового изображения, и я не мог видеть изображение! Таким образом, я переместил backgroundсобственность, чтобы быть выше background-imageсобственности, и это работало.
Это очень старое, и я надеюсь, что, возможно, вы узнали более года назад, но backgroundэто сокращенное имя свойства, которое вы используете для одновременного покрытия всех свойств фона: background: [color] [image url] [repeat] [position]и именно поэтому ваш цвет перезаписывает все. Вы также можете оставить его на месте и переименовать собственность вbackground-color
borbulon
@borbulon да, ты прав. почти всегда лучше использовать сокращенное имя свойства, полностью согласен с этим. Но цель этого поста состоит в том, чтобы указать, что порядок свойств иногда имеет значение, и эти «маленькие» правила CSS могут сильно расстраивать, особенно для новичков в разработке.
Фанта
1
Полностью согласен, но точка зрения остается неизменной: backgroundэто сокращенное имя свойства. Лучшим решением было бы не использовать сокращение, а использовать background-colorсвойство color (при условии, что вы хотите и цвет, и изображение).
Ответы:
Сайт, на который вы ссылаетесь, использует комбинацию трюков CSS, чтобы осуществить это. Во-первых, он использует background-image для
<input>
элемента. Затем, чтобы переместить курсор, он используетpadding-left
.Другими словами, у них есть эти два правила CSS:
источник
Решения CSS, опубликованные другими, являются лучшим способом для достижения этой цели.
Если это должно вызвать у вас какие-либо проблемы (читайте IE6), вы также можете использовать ввод без полей внутри div.
Не такой «чистый», но должен работать на старых браузерах.
источник
Решение без фоновых изображений:
источник
Вы можете попробовать это:
источник
Я считаю, что это лучшее и самое чистое решение. Использование text-indent для
input
элементаCSS:
HTML:
источник
Простой и легкий способ разместить Icon внутри ввода - использовать CSS-свойство position, как показано в коде ниже. Примечание: я упростил код для ясности.
источник
input { border: none; }
и добавить границу, чтобы#input-container { border: 1px solid #000; }
она выглядела так, как будто изображение находится внутри и фактически является частью ввода.Добавьте вышеупомянутые теги в свой CSS-файл и используйте указанный класс.
источник
Это работает для меня:
источник
Вы можете попробовать это: Bootstrap-4 Beta
https://www.codeply.com/go/W25zyByhec
источник
Просто используйте свойство background в вашем CSS.
источник
У меня была такая ситуация. Это не сработало из-за
background: #ebebeb;
. Я хотел поместить фон в поле ввода, и это свойство постоянно отображалось в верхней части фонового изображения, и я не мог видеть изображение! Таким образом, я переместилbackground
собственность, чтобы быть вышеbackground-image
собственности, и это работало.Решение для моего случая было:
Просто говоря,
border
,padding
иtext-align
свойства не важны для решения. Я просто скопировал свой оригинальный код.источник
background
это сокращенное имя свойства, которое вы используете для одновременного покрытия всех свойств фона:background: [color] [image url] [repeat] [position]
и именно поэтому ваш цвет перезаписывает все. Вы также можете оставить его на месте и переименовать собственность вbackground-color
background
это сокращенное имя свойства. Лучшим решением было бы не использовать сокращение, а использоватьbackground-color
свойство color (при условии, что вы хотите и цвет, и изображение).Использование с font-icon
ИЛИ
источник
используйте этот класс CSS для ввода в начале, затем настройте соответственно:
источник
Например, вы можете использовать это: метка со скрытым вводом (значок присутствует).
источник
Это работает для меня для более или менее стандартных форм:
источник