Потрясающе, тип ввода 'отправить'

151

Кажется, нет класса для ввода типа 'submit' в font-awesome. Можно ли использовать некоторый класс от шрифта - удивительный для ввода кнопки? Я добавил иконки ко всем кнопкам (которые фактически связаны с классом "btn" из twitter-bootstrap) в моих приложениях, но не может добавлять значки в "input type submit".

Или, как использовать этот код:

input#image-button{
    background: #ccc url('icon.png') no-repeat top left;
    padding-left: 16px;
    height: 16px;
}

HTML:

<input type="submit" id="image-button">Text</input>

(который я взял из HTML: как сделать кнопку отправки с текстом + изображение в ней?) с шрифтом-awesome?

Теги:
font-awesome
twitter-bootstrap-rails

7 ответов

260
Лучший ответ

используйте кнопку type = "submit" вместо ввода

<button type="submit" class="btn btn-success">
    <i class="fa fa-arrow-circle-right fa-lg"></i> Next
</button>

для шрифта Awesome 3.2.0 use

<button type="submit" class="btn btn-success">
    <i class="icon-circle-arrow-right icon-large"></i> Next
</button>
  • 0
    Потрясающие! Работает как положено. Еще нужно несколько шагов, чтобы адаптировать это для simple_form или создать помощника, но это относительно просто.
  • 17
    Также следует учитывать различия между <button type=submit> и <input type=submit> : stackoverflow.com/questions/3543615/…
Показать ещё 5 комментариев
60

HTML

Так как элемент <input> отображает только значение атрибута value, мы должны манипулировать им только:

<input type="submit" class="btn fa-input" value="&#xf043; Input">

Я использую объект &#xf043; здесь, что соответствует U + F043, символу шрифта Awesome шрифта.

CSS

Затем мы должны стилизовать его для использования шрифта:

.fa-input {
  font-family: FontAwesome, 'Helvetica Neue', Helvetica, Arial, sans-serif;
}

Что даст нам символ оттенка в шрифте Awesome, а другой текст в соответствующем шрифте.

Однако этот элемент управления не будет идеальным для пикселя, поэтому вам может потребоваться настроить его самостоятельно.

  • 0
    Спасибо за ответ, он работает, но я не могу использовать этот подход, потому что шрифт влияет на весь текст значения. Я также использую 'icon-large' в других кнопках ... Для тех, кто попробует это, коды шрифтов здесь: github.com/FortAwesome/Font-Awesome/blob/master/sass/…
  • 0
    Я думаю, что это все, что мы можем сделать здесь. Лично я предлагаю вам оставить <input> sw / o иконку.
Показать ещё 4 комментария
41

Вы можете использовать шрифт awesome utf cheatsheet

<input type="submit" class="btn btn-success" value="&#xf011; Login"/>

вот ссылка для cheatsheet http://fortawesome.github.io/Font-Awesome/cheatsheet/

  • 2
    Это сделало мой день! Спасибо .. Для других пользователей, пожалуйста, обратите внимание на предложение: скопируйте и вставьте значки ( не Unicode ) прямо с этой страницы в ваш дизайн, т.е. скопируйте реальный значок, и он будет работать
  • 17
    <input type="button" class="fa" value="&#xf011; Login"/> без начальной загрузки используйте fa-класс, чтобы заставить его работать
Показать ещё 2 комментария
10

Ну, технически невозможно получить :before и :after псевдоэлементы на элементах input

Из W3C:

12.1: перед и: после псевдоэлементов

Авторы определяют стиль и расположение сгенерированного контента с помощью: before и: после псевдоэлементов. Как показывают их имена,: before и: после псевдоэлементов укажите местоположение содержимого до и после содержимого дерева элементов. Контент' свойство в сочетании с этими псевдоэлементами указывает, что вставлены.


Итак, у меня был проект, в котором я подавал кнопки в виде тегов input, и по какой-то причине другие разработчики запретили мне использовать теги <button> вместо обычных кнопок ввода ввода, поэтому я придумал другой решение, обертывание кнопок внутри span, установленных на position: relative;, а затем абсолютно позиционирование значка с помощью :after псевдо.

Примечание. Демо-скрипт использует код содержимого для FontAwesome 3.2.1, поэтому вам может потребоваться изменить значение свойства content.

HTML

<span><input type="submit" value="Send" class="btn btn-default" /></span>

CSS

input[type="submit"] {
    margin: 10px;
    padding-right: 30px;
}

span {
    position: relative;
}

span:after {
    font-family: FontAwesome;
    content: "\f004"; /* Value may need to be changed in newer version of font awesome*/
    font-size: 13px;
    position: absolute;
    right: 20px;
    top: 1px;
    pointer-events: none;
}

Демо

Теперь здесь все самоочевидно, об одном свойстве, т.е. pointer-events: none;, я использовал это, потому что при наведении указателя на :after псевдогенерированный контент ваша кнопка не будет нажимать, поэтому используйте значение none заставит действие клика пройти через это содержимое.

Из Mozilla Developer Network:

В дополнение к тому, что элемент не является объектом мыши события, значение none указывает, что событие мыши переходит "через" элемент и объект цели, находящийся под этим элементом.

Наведите на экран шрифт/значок сердца Демо и посмотрите, что произойдет, если вы НЕ используете pointer-events: none;

  • 1
    Хотя это очень классное решение, у него есть один большой недостаток: указатель-события: ни один не поддерживается IE <11 ( caniuse.com/#feat=pointer-events ). Причина в том, что свойство pointer-events было создано для элементов SVG (векторная графика), и технически оно не указано в спецификации W3C для других элементов HTML (пока что wiki.csswg.org/spec/css4-ui#pointer-events ), хотя все современные браузеры, кроме IE <11, поддерживают его.
5

Вы можете использовать классы кнопок btn-link и btn-xs с типом submit, который сделает небольшую невидимую кнопку со значком внутри нее. Пример:

<button class="btn btn-link btn-xs" type="submit" name="action" value="delete">
    <i class="fa fa-times text-danger"></i>
</button>
3

Также возможно, как это

<button type="submit" class="icon-search icon-large"></button>
0

С несколькими отправками, когда вам нужно значение выбранного отправления, это можно сделать довольно легко. Просто создайте скрытое поле в своей форме и измените его значение в зависимости от того, какая кнопка нажата. Например, в форме, скажем, у вас есть:

<input type="hidden" id="Clicked" name="Clicked" value="" />
<button type="submit" class="btn btn-success ClickCheck" id="Create"> <i class="fa fa-file-pdf-o"> Create Bill</i></button>
<button type="submit" class="btn btn-success ClickCheck" id="Reset"> <i class="fa fa-times"> Reset</i></button>
<button type="submit" class="btn btn-success ClickCheck" id="StoreData"> <i class="fa fa-archive"> Save</i></button>

Использование jQuery:

<script type="text/javascript">
    $(document).ready(function()
    {
        $('.ClickCheck').click(function()
        {
            var ButtonID = $(this).attr('id');
            $('#Clicked').val(ButtonID);
        });
    });
</script>

Затем вы можете получить значение кнопки, нажатой в переменной post "Clicked"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню