Значение и применение
HTML тег <button> используется для размещения кнопки. Внутри тега <button> вы можете разместить как отформатированный текст, так и изображение. Это основная разница между этим элементом и кнопками, созданными с использованием тега <input> (c атрибутом type = “button”).
Всегда указывайте для тега <button> тип атрибута type = “button” если элемент используется в качестве обычной кнопки. Если вы используете тег <button> внутри HTML формы, то вы можете столкнуться с тем, что старые версии браузеров могут представить различные значения при отправке формы. Рекомендуется в этом случае использовать элемент <input> для отправки HTML форм.
Disabled state
Make buttons look inactive by adding the boolean attribute to any element.
Primary button
Button
Disabled buttons using the element behave a bit different:
- s don’t support the attribute, so you must add the class to make it visually appear disabled.
- Some future-friendly styles are included to disable all on anchor buttons. In browsers which support that property, you won’t see the disabled cursor at all.
- Disabled buttons should include the attribute to indicate the state of the element to assistive technologies.
Link functionality caveat
The class uses to try to disable the link functionality of s, but that CSS property is not yet standardized. In addition, even in browsers that do support , keyboard navigation remains unaffected, meaning that sighted keyboard users and users of assistive technologies will still be able to activate these links. So to be safe, add a attribute on these links (to prevent them from receiving keyboard focus) and use custom JavaScript to disable their functionality.
Выравнивание кнопки по левому или правому краю
Способы выравнивания кнопки по левому или правому краю в Bootstrap 3 и 4 показаны в нижеприведенных примерах.
<!-- Bootstrap 3 --> <!-- 1 Способ --> <!-- Оборачивание кнопки с помощью элемента, например, div (который должен отображаться в документе как блочный) и добления к нему класса text-left или text-right --> <!-- Выравнивание кнопки по левому краю --> <div class="text-left"> <button type="button" class="btn btn-primary">Текст кнопки</button> </div> <!-- Выравнивание кнопки по правому краю --> <div class="text-right"> <button type="button" class="btn btn-primary">Текст кнопки</button> </div> <!-- 2 Способ --> <!-- Изменение типа отображения кнопки на блочный и добавления к ней CSS margin-left: auto или margin-right: auto. --> <!-- Выравнивание кнопки по левому краю --> <button type="button" class="btn btn-primary" style="display: block; margin-right: auto;">Текст кнопки</button> <!-- Выравнивание кнопки по правому краю --> <button type="button" class="btn btn-primary" style="display: block; margin-left: auto;">Текст кнопки</button>
<!-- Bootstrap 4 --> <!-- 1 Способ --> <!-- Оборачивание кнопки с помощью элемента, например, div (который должен отображаться в документе как блочный) и добления к нему класса text-left или text-right --> <!-- Выравнивание кнопки по левому краю --> <div class="text-left"> <button type="button" class="btn btn-primary">Текст кнопки</button> </div> <!-- Выравнивание кнопки по правому краю --> <div class="text-right"> <button type="button" class="btn btn-primary">Текст кнопки</button> </div> <!-- 2 Способ --> <!-- Изменение типа отображения кнопки на блочный и добавления к ней CSS margin-left: auto или margin-right: auto. В Bootstrap 4 это можно выполнить с помощью классов d-block, mr-auto и ml-auto --> <!-- Выравнивание кнопки по левому краю --> <button type="button" class="btn btn-primary d-block mr-auto">Текст кнопки</button> <!-- Выравнивание кнопки по правому краю --> <button type="button" class="btn btn-primary d-block ml-auto">Текст кнопки</button>
Button plugin
Do more with buttons. Control button states or create groups of buttons for more components like toolbars.
Toggle states
Add to toggle a button’s state. If you’re pre-toggling a button, you must manually add the class and to the .
Single toggle
Checkbox and radio buttons
Bootstrap’s styles can be applied to other elements, such as s, to provide checkbox or radio style button toggling. Add to a containing those modified buttons to enable their toggling behavior via JavaScript and add to style the s within your buttons. Note that you can create single input-powered buttons or groups of them.
The checked state for these buttons is only updated via event on the button. If you use another method to update the input—e.g., with or by manually applying the input’s property—you’ll need to toggle on the manually.
Note that pre-checked buttons require you to manually add the class to the input’s .
Checked
Active
Radio
Radio
Methods
Method | Description |
---|---|
Toggles push state. Gives the button the appearance that it has been activated. | |
Destroys an element’s button. |
События
Чтобы реагировать на нажатие кнопки, необходимо прикрепить прослушиватель событий к объекту Button:
button.setOnAction(new EventHandler() { @Override public void handle(ActionEvent actionEvent) { //... do something in here. } });
Вот как выглядит присоединение слушателя события щелчка с помощью лямбда-выражения Java:
button.setOnAction(actionEvent -> { //... do something in here. });
Наконец, давайте посмотрим на полный пример, который изменяет текст метки при нажатии кнопки:
package com.jenkov.javafx.controls; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.layout.HBox; import javafx.stage.Stage; public class ButtonExperiments extends Application { @Override public void start(Stage primaryStage) throws Exception { primaryStage.setTitle("HBox Experiment 1"); Label label = new Label("Not clicked"); Button button = new Button("Click"); button.setOnAction(value -> { label.setText("Clicked!"); }); HBox hbox = new HBox(button, label); Scene scene = new Scene(hbox, 200, 100); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { Application.launch(args); } }
Отключенное состояние
Сделайте кнопки неактивными, добавив логический атрибут к любому элементу. Отключенные кнопки применяются к, предотвращая срабатывание состояния наведения и активного состояния.
Primary button
Button
Отключенные кнопки, использующие элемент, ведут себя немного иначе:
- не поддерживают атрибут, поэтому вы должны добавить класс, чтобы он визуально казался отключенным.
- Включены некоторые удобные для будущего стили, чтобы отключить все кнопки привязки. В браузерах, которые поддерживают это свойство, вы вообще не увидите отключенный курсор.
- Отключенные кнопки должны включать атрибут, указывающий состояние элемента для вспомогательных технологий.
Warning о функциональности ссылок
Класс использует , чтобы попытаться отключить функциональность линии связи с, но это свойство CSS еще не стандартизированы. Кроме того, даже в поддерживаемых браузерах навигация с помощью клавиатуры остается неизменной, а это означает, что зрячие пользователи клавиатуры и пользователи вспомогательных технологий по-прежнему смогут активировать эти ссылки. Чтобы быть в безопасности, добавьте атрибут к этим Linkм (чтобы они не получали фокус клавиатуры) и используйте собственный JavaScript, чтобы отключить их функциональность.
Examples
Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control.
Primary
Secondary
Success
Danger
Warning
Info
Light
Dark
Link
Conveying meaning to assistive technologies
Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the class.
Как создать кнопку с иконкой
1 вариант.
<style> /* CSS */ .btn-rounded { border-radius: 19px; padding-top: 3px; padding-bottom: 3px; padding-left: 3px; } </style> ... <!-- HTML --> <button type="button" class="btn btn-primary btn-rounded"><i class="fas fa-map text-primary rounded-circle bg-white mr-1" style="padding: 7px 6px;"></i> Map</button>
2 вариант.
<style> /* CSS */ .btn-icon { padding-top: 0; padding-bottom: 0; } .btn > .icon { position: relative; left: -.75rem; display: inline-block; padding: .375rem .75rem; background: rgba(0, 0, 0, 0.15); border-radius: .25rem 0 0 .25rem; } </style> ... <!-- HTML --> <button type="button" class="btn btn-secondary btn-icon"> <span class="icon"><i class="fas fa-download"></i></span>Download </button>
3 вариант.
<!-- HTML --> <button type="button" class="btn btn-secondary"> Download <i class="fas fa-download"></i> </button>
CSS-стили
Вы можете стилизовать кнопку, используя стили CSS. Элемент управления Button поддерживает следующие стили CSS:
-fx-border-width -fx-border-color -fx-background-color -fx-font-size -fx-text-fill
Вот пример установки цвета фона кнопки на красный:
Button button = new Button("My Button"); button.setStyle("-fx-background-color: #ff0000; ");
Этот пример устанавливает стиль непосредственно для кнопки с помощью метода setStyle(), но вы также можете стилизовать кнопку с помощью таблиц стилей.
Вот пример, который создает 4 разных кнопки. На каждой установлен стиль CSS.
package com.jenkov.javafx.controls; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.HBox; import javafx.stage.Stage; import java.io.FileInputStream; import java.io.FileNotFoundException; public class ButtonExperiments extends Application { @Override public void start(Stage primaryStage) throws Exception { primaryStage.setTitle("Button Experiment 1"); Button button1 = new Button("Button 1"); Button button2 = new Button("Button 2"); Button button3 = new Button("Button 3"); Button button4 = new Button("Button 4"); button1.setStyle("-fx-border-color: #ff0000; -fx-border-width: 5px;"); button2.setStyle("-fx-background-color: #00ff00"); button3.setStyle("-fx-font-size: 2em; "); button4.setStyle("-fx-text-fill: #0000ff"); HBox hbox = new HBox(button1, button2, button3, button4); Scene scene = new Scene(hbox, 400, 100); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { Application.launch(args); } }
Вот скриншот 4 кнопок JavaFX с их стилем CSS:
Первая кнопка имеет свойства CSS -fx-border-width и -fx-border-color. Это приводит к появлению красной рамки шириной 5 пикселей.
Вторая имеет свойство CSS -fx-background-color. Это приводит к зеленому цвету фона.
Третья имеет свойство CSS -fx-font-size. В результате получается кнопка с текстом, который в 2 раза больше обычного.
Четвертая имеет набор CSS-свойств -fx-text-fill. Это приводит к кнопке с синим цветом текста.
Вы можете объединить стили CSS для кнопки, просто установив для нее несколько свойств CSS, как это сделала первая кнопка в приведенном выше примере.
Размер
Класс Button содержит набор методов, которые вы можете использовать для установки размера кнопки:
button.setMinWidth() button.setMaxWidth() button.setPrefWidth() button.setMinHeight() button.setMaxHeight() button.setPrefHeight() button.setMinSize() button.setMaxSize() button.setPrefSize()
- Методы setMinWidth() и setMaxWidth() устанавливают минимальную и максимальную ширину, которую должна иметь кнопка.
- Метод setPrefWidth() устанавливает предпочтительную ширину кнопки. Когда есть достаточно места для отображения кнопки в ее предпочтительной ширине, JavaFX сделает это. Если нет, уменьшит размер кнопки, пока она не достигнет минимальной ширины.
- Методы setMinHeight() и setMaxHeight() устанавливают минимальную и максимальную высоту, которую должна иметь кнопка.
- Метод setPrefHeight() устанавливает предпочтительную высоту кнопки. Когда есть достаточно места для отображения кнопки в ее предпочтительной высоте, JavaFX сделает это. Если нет, уменьшит размер, пока она не достигнет минимальной высоты.
- Методы setMinSize(), setMaxSize() и setPrefSize() устанавливают ширину и высоту кнопки за один вызов. Таким образом, эти методы принимают параметры ширины и высоты:
button.setMaxSize(100, 200);
эквивалентно:
button.setMaxWidth(100); button.setMaxHeight(200);
Вот скриншот двух кнопок. Первая имеет размер по умолчанию, рассчитанный по ее тексту кнопки и компоненту макета, внутри которого она вложена. Вторая имеет предпочтительную ширину 200 и высоту 48, установленную на ней:
Пример использования
<!DOCTYPE html> <html> <head> <title>Тег <button></title> </head> <body> <button type = "button" name = "button1" style = "width: 80px; height:50px;"> <b>Кнопка 1</b> </button><br><br> <button type = "button" name = "button2" style = "width: 80px; height:50px"> <img src = "../../images/top2.png" alt = "up" width = "40" height = "40"> </button><br><br> <button type = "button" name = "button3" style = "width: 80px; height:50px;"> <i>Кнопка 3</i> </button><br><br> </body> </html>
В данном примере мы разместили 3 кнопки, которым задали уникальные имена атрибутом name и с использованием внутренних CSS стилей указали ширину (width) размером 80 пикселей и высоту (height) размером 50 пикселей:
Текст внутри первой кнопки мы отформатировали жирным начертанием (тег )
Обратите внимание, что текст, который мы поместили внутри тега отображается на самой кнопке.
Внутри второй кнопки элементом мы разместили *.png изображение (с прозрачным задним фоном). Атрибутом alt мы задали альтернативный текст для изображения, для того случая если оно по каким-то причинам не будет загружено (обязательный атрибут), относительный путь к изображению мы задали атрибутом src (обязательный атрибут), атрибутами width (ширина) и height (высота) задали размеры изображения равными 40 на 40 пикселей
Обратите внимание, что в атрибутах, которые задают размер не требуется указывать единицы измерения в отличии от CSS стилей, по той причине, что атрибутами можно указать значение только в пикселях.
Текст внутри третьей кнопки мы отформатировали курсивным начертанием (тег ).
Результат нашего примера:
Пример использования тега <button> (кнопкa в HTML).
В следующем примере рассмотрено применение атрибутов, которые позволяют не производить проверку данных на корректность, введенных пользователем и задать браузеру, где показать ответ, полученный после отправки формы.
<!DOCTYPE html> <html> <head> <title>Использование атрибутов formnovalidate и formtarget HTML тега <button></title> </head> <body> <form id = "myForm"> <input type = "text" name = "ulogin" placeholder = "Ваше имя"><br> <!-- определяем элемент управления для текстовой информации --> <textarea name = "uquestion" cols = "35" rows = "5" placeholder = "Ваш вопрос"></textarea><br> <button formtarget = _blank formnovalidate>Отправить</button> <!-- определяем кнопку для отправки формы --> </form> </body> </html>
В данном примере внутри формы мы создали два элемента <input>, предназначенные для ввода текстовой информации и ввода пароля, и кнопку (HTML тег <button>), предназначенную для отправки формы (тип кнопки submit по умолчанию). Кроме того, атрибутом formtarget со значением “_blank” указали, что при передаче формы ответ будет отображен в новой вкладке, а логическим атрибутом formnovalidate указали, что проверка данных на корректность, введенных пользователем в форму не производится.
Результат нашего примера:
Пример использования атрибутов formnovalidate и formtarget HTML тега <button>.
Атрибуты
Атрибут | Значение | Описание |
---|---|---|
autofocus | autofocus | Логический атрибут, который указывает, что кнопка должна автоматически получить фокус при загрузке страницы. |
disabled | disabled | Является логическим атрибутом и указывает, что кнопка должна быть отключена (недоступна для взаимодействия с пользователем). |
form | form_id | Задает форму (элемент <form>) к которой кнопка принадлежит. В качестве значения должен выступать идентификатор формы (id) в этом же документе. |
formaction | URL | Указывает URL файла, который будет обрабатывать (контролировать) входную информацию после отправки формы (только для <button type = “submit” >). |
formenctype | application/x-www-form-urlencodedmultipart/form-datatext/plain | Определяет, как данные формы должны быть закодированы при передаче на сервер (только для <button type = “submit” >). |
formmethod | getpost | Определяет, какой метод HTTP использовать при отправке данных формы (только для <button type = “submit” >). |
formnovalidate | formnovalidate | Указывает, что проверка данных на корректность, введенных пользователем в форму не производится (только для <button type = “submit” >). |
formtarget | _blank_self_parent_topframename | Задаёт браузеру, где показать ответ, полученный после отправки формы (вкладка, текущее окно, или фрейм). По умолчанию установлено значение _self – отображает ответ в текущем окне. Используется только для <button type = “submit” >. |
name | name | Задает имя для кнопки, которое передается при отправке формы. |
type | buttonresetsubmit | Указывает тип кнопки. Значение по умолчанию submit. |
value | text | Определяет начальное значение для кнопки. |
Текст
Есть два способа установить текст кнопки:
- передать текст конструктору Button;
- вызвать метод setText() для экземпляра Button. Это можно сделать после создания экземпляра Button. Таким образом, его можно использовать для изменения текста кнопки, которая уже видна. Вот пример:
button.setText("Click me if you dare!");
Обтекание текстом кнопки
Элемент управления Button поддерживает перенос текста текста кнопки. Под переносом текста подразумевается, что если текст слишком длинный для отображения в одной строке внутри кнопки, текст разбивается на несколько строк.
Вы включаете перенос текста в экземпляре Button с помощью метода setWrapText(). Он принимает один логический параметр. Если вы передаете значение true в setWrapText(), тогда вы включаете перенос текста. Если false, отключаете. Вот пример:
button.setWrapText(true);
Вот снимок экрана с двумя кнопками JavaFX, для одной из которых включена функция переноса текста: