14 ответов:
Без Bootstrap:
мы перейдем к Bootstrap через секунду, но вот основные концепции CSS в игре, чтобы сделать это самостоятельно. Как борода хищника указывает, вы можете сделать это с помощью CSS абсолютно располагать иконки внутри элемента input. Затем добавьте отступы с обеих сторон, чтобы текст не перекрывался со значком.
Итак, для следующего HTML:
<div class="inner-addon left-addon"> <i class="glyphicon glyphicon-user"></i> <input type="text" class="form-control" /> </div>вы можете использовать следующие CSS слева и справа выравнивание символов:
/* enable absolute positioning */ .inner-addon { position: relative; } /* style icon */ .inner-addon .glyphicon { position: absolute; padding: 10px; pointer-events: none; } /* align icon */ .left-addon .glyphicon { left: 0px;} .right-addon .glyphicon { right: 0px;} /* add padding */ .left-addon input { padding-left: 30px; } .right-addon input { padding-right: 30px; }демо в Plunker
Примечание: это предполагает, что вы используете технологии glyphicons, но работает одинаково хорошо с font-awesome.
Для FA, просто замените.glyphiconС.fa
С Bootstrap:
как буфера указывает, это может быть выполнено изначально в Bootstrap с помощью состояния проверки с дополнительными значками. Это делается путем предоставления
.form-groupэлемент класс.has-feedbackи значок класса.form-control-feedback.самый простой пример будет что-то вроде этого:
<div class="form-group has-feedback"> <label class="control-label">Username</label> <input type="text" class="form-control" placeholder="Username" /> <i class="glyphicon glyphicon-user form-control-feedback"></i> </div>плюсы:
- включает в себя поддержку различных типов форм (основные, горизонтальные, встроенные)
- включает в себя поддержку различных размеров управления (по умолчанию, Маленький, Большой)
минусы:
- не включает поддержку левый выравнивание иконок
чтобы преодолеть минусы, я собрал это запрос с изменениями для поддержки левых выровненных значков. Поскольку это относительно большое изменение, оно было отложено до будущего релиза, но если вам нужны эти функции , вот простая реализация руководство:
только эти изменения формы в CSS (также встроенный через скрытый фрагмент стека внизу)
*менее: кроме того, если вы здание через менее, вот форма меняется меньшепотом, все, что вам нужно сделать, это добавить класс
.has-feedback-leftна любой группе, которая имеет класс.has-feedbackдля того, чтобы выровнять значок слева.С тех пор существует множество возможных конфигураций html для разных типов форм, разных размеров элементов управления, разных наборов значков и разных видимостей меток.я создал тестовую страницу, которая показывает правильный набор HTML для каждой перестановки вместе с живой демонстрацией.
вот демо в Plunker
П. С.предложение фризи добавлять
pointer-events: none;была добавлено в bootstrapне нашел то, что искал? Попробуйте эти похожие вопросы:
- добавить значок Twitter Bootstrap в поле ввода
- поместите значок поиска рядом с текстовым полем bootstrap
добавление CSS для левого выравнивания иконок обратной связи
.has-feedback .form-control { padding-right: 34px; } .has-feedback .form-control.input-sm, .has-feedback.form-group-sm .form-control { padding-right: 30px; } .has-feedback .form-control.input-lg, .has-feedback.form-group-lg .form-control { padding-right: 46px; } .has-feedback-left .form-control { padding-right: 12px; padding-left: 34px; } .has-feedback-left .form-control.input-sm, .has-feedback-left.form-group-sm .form-control { padding-left: 30px; } .has-feedback-left .form-control.input-lg, .has-feedback-left.form-group-lg .form-control { padding-left: 46px; } .has-feedback-left .form-control-feedback { left: 0; } .form-control-feedback { line-height: 34px !important; } .input-sm + .form-control-feedback, .form-horizontal .form-group-sm .form-control-feedback { width: 30px; height: 30px; line-height: 30px !important; } .input-lg + .form-control-feedback, .form-horizontal .form-group-lg .form-control-feedback { width: 46px; height: 46px; line-height: 46px !important; } .has-feedback label.sr-only ~ .form-control-feedback, .has-feedback label.sr-only ~ div .form-control-feedback { top: 0; } @media (min-width: 768px) { .form-inline .inline-feedback { position: relative; display: inline-block; } .form-inline .has-feedback .form-control-feedback { top: 0; } } .form-horizontal .has-feedback-left .form-control-feedback { left: 15px; }
на официальный метод. Не требуется пользовательский CSS:
<form class="form-inline" role="form"> <div class="form-group has-success has-feedback"> <label class="control-label" for="inputSuccess4"></label> <input type="text" class="form-control" id="inputSuccess4"> <span class="glyphicon glyphicon-user form-control-feedback"></span> </div> </form>DEMO:http://jsfiddle.net/LS2Ek/1/
эта демонстрация основана на примере в Bootstrap docs. Прокрутите вниз до "с дополнительными значками:" здесь http://getbootstrap.com/css/#forms-control-validation
вот CSS-единственная альтернатива. Я настроил это для поля поиска, чтобы получить эффект, подобный Firefox (и сотни других приложений.)
HTML
<div class="col-md-4"> <input class="form-control" type="search" /> <span class="glyphicon glyphicon-search"></span> </div>CSS
.form-control { padding-right: 30px; } .form-control + .glyphicon { position: absolute; right: 0; padding: 8px 27px; }
вот как я это сделал, используя только по умолчанию bootstrap CSS v3.3. 1:
<div class="form-group"> <label class="control-label">Start:</label> <div class="input-group"> <input type="text" class="form-control" aria-describedby="start-date"> <span class="input-group-addon" id="start-date"><span class="glyphicon glyphicon-calendar"></span></span> </div> </div>и вот как это выглядит:
этот "чит"будет работать с побочным эффектом, что класс glyphicon изменит шрифт для управления вводом.
<input class="form-control glyphicon" type="search" placeholder=""/>если вы хотите избавиться от побочного эффекта, вы можете удалить класс "glyphicon" и добавить следующий CSS (возможно, есть лучший способ стилизовать псевдо-элемент заполнителя, и я тестировал только на Chrome).
.form-control[type="search"]::-webkit-input-placeholder:first-letter { font-family:"Glyphicons Halflings"; } .form-control[type="search"]:-moz-placeholder:first-letter { font-family:"Glyphicons Halflings"; } .form-control[type="search"]::-moz-placeholder:first-letter { font-family:"Glyphicons Halflings"; } .form-control[type="search"]:-ms-input-placeholder:first-letter { font-family:"Glyphicons Halflings"; }возможно, даже чище решение:
CSS
.form-control.glyphicon { font-family:inherit; } .form-control.glyphicon::-webkit-input-placeholder:first-letter { font-family:"Glyphicons Halflings"; } .form-control.glyphicon:-moz-placeholder:first-letter { font-family:"Glyphicons Halflings"; } .form-control.glyphicon::-moz-placeholder:first-letter { font-family:"Glyphicons Halflings"; } .form-control.glyphicon:-ms-input-placeholder:first-letter { font-family:"Glyphicons Halflings"; }HTML
<input class="form-control glyphicon" type="search" placeholder=" search" /> <input class="form-control glyphicon" type="text" placeholder=" username" /> <input class="form-control glyphicon" type="password" placeholder=" password" />
Это можно сделать с помощью классов из официального bootstrap 3.x версия, без каких-либо пользовательских css.
использовать
input-group-addonдо тега input, внутриinput-groupзатем используйте любой из глифов, вот код<form> <div class="form-group"> <div class="col-xs-5"> <div class="input-group"> <span class="input-group-addon transparent"><span class="glyphicon glyphicon-user"></span></span> <input class="form-control left-border-none" placeholder="User Name" type="text" name="username"> </div> </div> </div> </form>вот вывод
чтобы настроить его дополнительно добавить пару строк custuom css для вашего собственного обычая.css-файл (при необходимости отрегулируйте заполнение)
.transparent { background-color: transparent !important; box-shadow: inset 0px 1px 0 rgba(0,0,0,.075); } .left-border-none { border-left:none !important; box-shadow: inset 0px 1px 0 rgba(0,0,0,.075); }сделав фон
input-group-addonпрозрачный и делает левый градиент входного тега равным нулю вход будет иметь бесшовный внешний вид. Вот настроенный выходвот jsbin пример
Это позволит решить пользовательские проблемы css перекрытия с ярлыками, выравнивания при использовании input-lg и сосредоточиться на проблеме вкладки.
вот решение без начальной загрузки, которое упрощает вашу разметку, вставляя представление изображения глификона непосредственно в CSS с помощью кодировки URI base64.
input { border:solid 1px #ddd; } input.search { padding-left:20px; background-repeat: no-repeat; background-position-y: 1px; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADbSURBVDhP5ZI9C4MwEIb7//+BEDgICA6C4OQgBJy6dRIEB6EgCNkEJ4e3iT2oHzH9wHbpAwfyJvfkJDnhYH4kHDVKlSAigSAQoCiBKjVGXvaxFXZnxBQYkSlBICII+22K4jM63rbHSthCSdsskVX9Y6KxR5XJSSpVy6GbpbBKp6aw0BzM0ShCe1iKihMXC6EuQtMQwukzPFu3fFd4+C+/cimUNxy6WQkNnmdzL3NYPfDmLVuhZf2wZYz80qDkKX1St3CXAfVMqq4cz3hTaGEpmctxDPmB0M/fCYEbAwZYyVKYcroAAAAASUVORK5CYII=); }<input class="search">
Если вы используете Fontawesome можно сделать так :
<input type="text" style="font-family:Arial, FontAwesome" placeholder="" />результат
полный список unicode можно найти в полный шрифт Awesome 4.6.3 icon reference
вот еще один способ сделать это, поместив glyphicon с помощью
:beforeпсевдо элемент в CSS.рабочая демонстрация в jsFiddle
для этого HTML:
<form class="form form-horizontal col-xs-12"> <div class="form-group"> <div class="col-xs-7"> <span class="usericon"> <input class="form-control" id="name" placeholder="Username" /> </span> </div> </div> </form>используйте этот CSS (Bootstrap 3.X и WebKit-совместимые браузеры)
.usericon input { padding-left:25px; } .usericon:before { height: 100%; width: 25px; display: -webkit-box; -webkit-box-pack: center; -webkit-box-align: center; position: absolute; content: "\e008"; font-family: 'Glyphicons Halflings'; pointer-events: none; }как сказал @Frizi, мы должны добавить
pointer-events: none;чтобы курсор не мешал фокусу ввода. Все остальные правила CSS предназначены для центрирования и добавление правильного интервала.результат:
input { border:solid 1px #ddd; } input.search { padding-left:20px; background-repeat: no-repeat; background-position-y: 1px; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADbSURBVDhP5ZI9C4MwEIb7//+BEDgICA6C4OQgBJy6dRIEB6EgCNkEJ4e3iT2oHzH9wHbpAwfyJvfkJDnhYH4kHDVKlSAigSAQoCiBKjVGXvaxFXZnxBQYkSlBICII+22K4jM63rbHSthCSdsskVX9Y6KxR5XJSSpVy6GbpbBKp6aw0BzM0ShCe1iKihMXC6EuQtMQwukzPFu3fFd4+C+/cimUNxy6WQkNnmdzL3NYPfDmLVuhZf2wZYz80qDkKX1St3CXAfVMqq4cz3hTaGEpmctxDPmB0M/fCYEbAwZYyVKYcroAAAAASUVORK5CYII=); }<input class="search">
вы можете использовать его Unicode HTML
так, чтобы добавить значок пользователя, просто добавьте
до , или где вы хотите его.вы можете проверить эту шпаргалку.
пример:
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <input type="text" class="form-control" placeholder=" placeholder..." style="font-family: 'Glyphicons Halflings', Arial"> <input type="text" class="form-control" value=" value..." style="font-family: 'Glyphicons Halflings', Arial"> <input type="submit" class="btn btn-primary" value=" submit-button" style="font-family: 'Glyphicons Halflings', Arial">не забудьте установить шрифт вход в Glyphicon, используя следующий код:
font-family: 'Glyphicons Halflings', Arial, где Ариал шрифт обычного текста вход.
Если вам посчастливилось использовать только современные браузеры: попробуйте css transform translate. Это не требует оберток и может быть настроено таким образом, чтобы вы могли разрешить больше интервалов для ввода[type=number] для размещения входного счетчика или переместить его влево от ручки.
@import url("//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css"); .is-invalid { height: 30px; box-sizing: border-box; } .is-invalid-x { font-size:27px; vertical-align:middle; color: red; top: initial; transform: translateX(-100%); } <h1>Tasty Field Validation Icons using only css transform</h1> <label>I am just a poor boy nobody loves me</label> <input class="is-invalid"><span class="glyphicon glyphicon-exclamation-sign is-invalid-x"></span>
вы должны быть в состоянии сделать это с существующими классов начальной загрузки и немного нестандартный стиль.
<form> <div class="input-prepend"> <span class="add-on"> <i class="icon-user"></i> </span> <input class="span2" id="prependedInput" type="text" placeholder="Username" style="background-color: #eeeeee;border-left: #eeeeee;"> </div>Edit на значок ссылаются через
icon-userкласса. Этот ответ был написан во время Bootstrap версии 2. Вы можете увидеть ссылку на следующей странице:http://getbootstrap.com/2.3.2/base-css.html#images










Comments