jQuery
Решение, как добавить текст из TITLE в атрибут ALT в увеличенную попап картинку плагина FancyBox
Категории: JS jQuery
Решение, как сделать различные маски ввода для текстовых элементов формы с помощью jQuery плагина Masked Input
Категории: jQuery
Решение, как скопировать текст по клику из div в буфер обмена на jQuery
Категории: JS jQuery
Решение, как сделать своё оформление нумерованного списка ol с атрибутом start для редактора с блоками WordPress Gutenberg
Категории: JS HTML / CSS jQuery
Решение, как обернуть ссылки в формат Java Script + span, то есть осуществлять переход по ним, посредством скрипта jQuery
Категории: JS SEO jQuery
Решение, как вывести счётчик отмеченных checkbox и обнуление значений по кнопке «Сбросить» на jQuery
Категории: JS jQuery
Если заполняют форму одинаковыми значениями, скрипт проверит и выдаст предупреждение и не даст отправить форму
Категории: jQuery
(Simple tabs on jQuery)
Простые табы на jQuery
Категории: jQuery
(Live Text Search)
Быстрый поиск по странице или фильтр, без перезагрузки на jQuery
Категории: JS jQuery
(Simple jQuery Accordion)
Простой аккордеон на jQuery
Категории: JS jQuery
(Pop-up window when you visit the website with the delay)
Решение, как показать модальное окно, когда посетитель пришёл на сайт первый раз. Например через 5 минут.
Категории: JS jQuery
(Display a modal before a user leaves your website)
Решение, как показать модальное окно, когда посетитель покидает сайт, то есть наводит курсор на активную вкладку.
Категории: JS jQuery
Категории: JS jQuery
При изменении значения в select, данные из value должны показываться в теге div
Категории: JS jQuery
Решение, как изменить адресную строку браузера без перезагрузки, добавить переменную в конце URL в виде _GET параметра
Категории: JS jQuery
Решение, как отправить данные с вебформы на почту, без перезагрузки страницы, используя jQuery
Категории: JS jQuery Формы
При загрузке jCarousel не всегда подгружаются все пункты нумерации слайдов.
Категории: JS jQuery
Решение, как сделать кнопку «Наверх» с плавным скроллингом к началу страницы на jQuery
Категории: JS jQuery
Решение, как сделать проверку заполнения полей в форме при помощи jQuery плагина
Категории: JS jQuery
Изменение страницы посредством DOM
Update: Более новый материал по этой теме находится по адресу https://learn.javascript.ru/basic-dom-node-properties.
- Создание и добавление элементов
- Добавление в DOM
- Добавление в конкретное место
- Удаление узла DOM
- Пример — показ сообщения
- Создание
- Позиционирование
- Закрытие
- Запуск
- Резюме
Рассмотрим основные способы изменять DOM, вначале — в общих чертах, затем — на конкретном примере из жизни.
Чтобы создать новый элемент — используется метод document.createElement(тип)
.
var newDiv = document.createElement('div')
Тут же можно и проставить свойства и содержание созданному элементу.
var newDiv = document.createElement('div') newDiv.className = 'my-class' newDiv.id = 'my-id' newDiv.style.backgroundColor = 'red' newDiv.innerHTML = 'Привет, мир!'
Добавить новый элемент к детям существующего элемента можно методом appendChild
, который в DOM есть у любого тега.
Код из следующего примера добавляет новые элементы к списку:
<ul> <li>Первый элемент</li> </ul>
Список:
- Первый элемент
// элемент-список UL var list = document.getElementById('list') // новый элемент var li = document.createElement('LI') li.innerHTML = 'Новый элемент списка' // добавление в конец list.appendChild(li)
Метод appendChild
всегда добавляет элемент последним в список детей.
Новый элемент можно добавить не в конец детей, а перед нужным элементом.
Для этого используется метод insertBefore
родительского элемента.
Он работает так же, как и appendChild
, но принимает вторым параметром элемент, перед которым нужно вставлять.
parentElem.insertBefore(newElem, target)
Например, в том же списке добавим элементы перед первым
.
<ul> <li>Первый элемент</li> </ul>
- Первый элемент
// родительский элемент UL var list = document.getElementById('list2') // элемент для вставки перед ним (первый LI) var firstLi = list.getElementsByTagName('LI')[0] // новый элемент var newListElem = document.createElement('LI') newListElem.innerHTML = 'Новый элемент списка' // вставка list.insertBefore(newListElem, firstLi)
Метод insertBefore
позволяет вставлять элемент в любое место, кроме как в конец. А с этим справляется appendChild
. Так что эти методы дополняют друг друга.
Метода insertAfter
нет, но нужную функцию легко написать на основе комбинации insertBefore
и appendChild
.
Чтобы убрать узел из документа — достаточно вызвать метод removeChild
из его родителя.
list.removeChild(elem)
Если родителя нет «на руках», то обычно используют parentNode
. Получается так:
elem.parentNode.removeChild(elem)
Неуклюже, но работает.
Сделаем что-нибудь посложнее.
В качестве реального примера рассмотрим добавление сообщения на страницу.
Чтобы показывалось посередине экрана и было красивее, чем обычный alert.
Сообщение в HTML-варианте (как обычно, можно посмотреть, нажав кнопку):
<style> .my-message { width:300px; height:110px; background-color:#F08080; text-align: center; border: 2px groove black; } .my-message-title { height:20px; font-size:120%; background-color:red; } . my-message-body { padding: 5px; height: 50px; } </style> <div> <div>Заголовок</div> <div>Текст Сообщения</div> <input type="button" value="OK"/> </div>
Как видно — сообщение вложено в DIV фиксированного размера
и состоит из заголовка my-message-title
, тела my-message-body
и кнопки OK, которая нужна, чтобы сообщение закрыть.
Кроме того, добавлено немного простых стилей, чтобы как-то смотрелось.
Показ сообщения состоит из нескольких этапов.
- Создание DOM-элементов для показа сообщения
- Позиционирование на экране
- Запуск функции удаления сообщения по клику на ОК
Для создания сколько-нибудь сложных структур DOM, как правило, используют либо готовые шаблоны и метод cloneNode
, создающий копию узла, либо свойство innerHTML
.
Следующая функция создает сообщение с указанным телом и заголовком.
function createMessage(title, body) { // (1) var container = document.createElement('div') // (2) container.innerHTML = '<div> \ <div>'+title+'</div> \ <div>'+body+'</div> \ <input type="button" value="OK"/> \ </div>' // (3) return container.firstChild }
Как видно, она поступает довольно хитро. Чтобы создать элемент по текстовому шаблону, она сначала создает временный элемент (1), а потом записывает (2) его как innerHTML временного элемента (1). Теперь готовый элемент можно получить и вернуть (3).
Сообщение будем позиционировать абсолютно, в центре по ширине и на 200 пикселов ниже верхней границы экрана.
function positionMessage(elem) { elem.style.position = 'absolute' var scroll = document.documentElement.scrollTop || document.body.scrollTop elem.style.top = scroll + 200 + 'px' elem.style.left = Math.floor(document.body.clientWidth/2) - 150 + 'px' }
Не вдаваясь в тонкости позиционирования — заметим, что для свойства top
200 пикселов прибавляются к текущей вертикальной прокрутке, которую браузер отсчитывает либо от documentElement
либо от body
При установке left
от центра экрана вычитается половина ширины DIV’а с сообщением (у него стоит width:300).
Наконец, следующая функция вешает на кнопку OK функцию, удаляющую элемент с сообщением из DOM.
function addCloseOnClick(messageElem) { var input = messageElem.getElementsByTagName('INPUT')[0] input.onclick = function() { messageElem.parentNode.removeChild(messageElem) } }
Обратите внимание, при получении элемента функции не используют DOM-свойства previousSibling/nextSibling
.
Этому есть две причины. Первая — надежность. Мы можем изменить шаблон сообщения, вставить дополнительный элемент — и ничего не должно сломаться.
Вторая — это наличие текстовых элементов. Свойства previousSibling/nextSibling
будут перечислять их наравне с остальными элементами, и придется их отфильтровывать.
Создадим одну функцию, которая выполняет все необходимые для показа сообщения операции.
function setupMessageButton(title, body) { // создать var messageElem = createMessage(title, body) // позиционировать positionMessage(messageElem) // добавить обработчик на закрытие addCloseOnClick(messageElem) // вставить в документ document. body.appendChild(messageElem) }
Протестировать то, что получилось, нам поможет следующая кнопка:
<input type="button" value="Показать" />
Для этого примера вы можете:
- Скачать файл со стилями
- Скачать файл с javascript
- Посмотреть на отдельной странице все вместе
Вы освоили основные способы изменения DOM, включая:
- Создание элементов
- Вставку элементов в DOM
- Удаление элементов
Кроме того, посмотрели, как это работает, на реальном примере.
Часть 2. Макет | Документация Dash для Python
Это вторая глава учебника Dash.
В предыдущей главе была рассмотрена установка
, а в следующей главе рассматриваются обратные вызовы Dash.
# Запустите это приложение с помощью `python app.py` и # посетите http://127.0.0.1:8050/ в веб-браузере. импорт из тире Dash, html, dcc импортировать plotly. express как px импортировать панд как pd приложение = Тире (__имя__) # предположим, что у вас есть "длинный" фрейм данных # см. https://plotly.com/python/px-arguments/ для получения дополнительных параметров df = pd.DataFrame({ «Фрукты»: [«Яблоки», «Апельсины», «Бананы», «Яблоки», «Апельсины», «Бананы»], «Сумма»: [4, 1, 2, 2, 4, 5], «Город»: [«СФ», «СФ», «СФ», «Монреаль», «Монреаль», «Монреаль»] }) fig = px.bar(df, x="Фрукты", y="Количество", color="Город", barmode="группа") app.layout = html.Div (дети = [ html.h2(дети='Привет Дэш'), html.Div (дети = ''' Dash: платформа веб-приложений для ваших данных. '''), dcc.График( , фигура = рис ) ]) если __name__ == '__main__': app.run_server(отладка=Истина)
Dash: платформа веб-приложений для ваших данных.
$ питон app.py ... Работает на http://127.0.0.1:8050/ (для выхода нажмите CTRL+C)
Посетите http://127. 0.0.1:8050/
в веб-браузере. Вы должны увидеть приложение, похожее на приведенное выше.
Примечание:
- Макет
html.Div
иdcc.Graph
. Модуль HTML-компонентов Dash (
dash.html
)имеет компонент для каждого тега HTML.
Компонентhtml.h2(children='Hello Dash')
создает элемент<h2>Hello Dash<h2>
HTML-элемент в вашем приложении.
3. Не все компоненты представляют собой чистый HTML.
Модуль Dash Core Components (dash.dcc
)
содержит компоненты более высокого уровня, которые являются интерактивными и создаются с помощью
JavaScript, HTML и CSS через библиотеку React.js.Каждый компонент полностью описывается с помощью ключевых слов.
Dash — это декларативный : вы в первую очередь будете описывать свое приложение
с помощью этих атрибутов.- Свойство
детей
является особенным. По соглашению это всегда первый атрибут, что означает, что его можно опустить:html.h2(children='Hello Dash')
совпадает сhtml.h2('Hello Dash')
. Он может содержать строку, число, один компонент или список компонентов. - Шрифты в вашем приложении будут выглядеть немного иначе, чем здесь.
Это приложение использует пользовательскую таблицу стилей CSS и Dash Enterprise Design Kit
для изменения стилей элементов по умолчанию. Вы можете узнать больше о пользовательском CSS в учебнике по CSS
.
Первое изменение
Dash включает «горячую перезагрузку», эта функция активируется по умолчанию,
когда вы запускаете приложение с app.run_server(debug=True)
.
Это означает, что Dash
автоматически обновит ваш браузер, когда вы внесете изменения в свой код.
Попробуйте: измените заголовок «Hello Dash» в своем приложении или измените данные
x
или y
. Ваше приложение должно автоматически обновляться с вашим изменением.
Не нравится горячая перезагрузка? Вы можете отключить это с помощью
app.run_server(dev_tools_hot_reload=False)
.
Подробнее см. в документации Dash Dev Tools
Вопросы? См. обсуждение горячей перезагрузки на форуме сообщества.
Подробнее о компонентах HTML
Компоненты Dash HTML ( dash.html
)
содержит класс компонента для каждого тега HTML, а также аргументы ключевого слова для всех аргументов HTML.
Давайте настроим текст в нашем приложении, изменив встроенные стили компонентов.
Создайте файл с именем app.py
со следующим кодом:
# Запустите это приложение с помощью `python app.py` и # посетите http://127.0.0.1:8050/ в веб-браузере. импорт из тире Dash, dcc, html импортировать plotly.express как px импортировать панд как pd приложение = Тире (__имя__) цвета = { «фон»: «# 111111», 'текст': '#7FDBFF' } # предположим, что у вас есть "длинный" фрейм данных # см. https://plotly.com/python/px-arguments/ для получения дополнительных параметров df = pd.DataFrame({ «Фрукты»: [«Яблоки», «Апельсины», «Бананы», «Яблоки», «Апельсины», «Бананы»], «Сумма»: [4, 1, 2, 2, 4, 5], «Город»: [«СФ», «СФ», «СФ», «Монреаль», «Монреаль», «Монреаль»] }) fig = px.bar(df, x="Фрукты", y="Количество", color="Город", barmode="группа") fig.update_layout( plot_bgcolor = цвета ['фон'], paper_bgcolor = цвета ['фон'], font_color = цвета ['текст'] ) app.layout = html.Div(style={'backgroundColor': colors['background']}, children=[ html.h2( дети = 'Привет, Дэш', стиль = { 'текстовое выравнивание': 'центр', 'цвет': цвета['текст'] } ), html.Div(children='Dash: платформа веб-приложений для ваших данных.', style={ 'текстовое выравнивание': 'центр', 'цвет': цвета['текст'] }), dcc.График( , фигура = рис ) ]) если __name__ == '__main__': app. run_server(отладка=Истина)
Dash: платформа веб-приложений для ваших данных.
В этом примере мы изменили встроенные стили компонентов
html.Div
и html.h2
с помощью свойства style
.
html.h2('Hello Dash', style={'textAlign': 'center', 'color': '#7FDBFF'})
Приведенный выше код отображается в приложении Dash как
<h2>Hello Dash<h2>
.
Есть несколько важных различий между dash.html
и атрибуты HTML:
- Свойство стиля
в HTML представляет собой строку, разделенную точкой с запятой. В Dash,
вы можете просто поставить словарь. - Ключи в словаре в стиле
имеют верблюжий регистр.
Итак, вместоtext-align
этоtextAlign
. - Атрибут класса HTML
— это
className
в Dash. - Дочерний элемент HTML-тега указывается через
дети
ключевое слово
аргумент. По соглашению это всегда первый аргумент , поэтому его часто опускают.
Кроме того, все доступные атрибуты и теги HTML
доступны вам в вашем контексте Python.
Повторно используемые компоненты
Написав нашу разметку на Python, мы можем создавать сложные повторно используемые компоненты, такие как таблицы, без переключения контекстов или языков.
Вот быстрый пример, который генерирует Таблица
из кадра данных
Pandas. Создайте файл с именем app.py
со следующим кодом:
# Запустите это приложение с помощью `python app.py` и # посетите http://127.0.0.1:8050/ в веб-браузере. из тире импортировать тире, html импортировать панд как pd df = pd.read_csv('https://gist.githubusercontent.com/chriddyp/c78bf172206ce24f77d6363a2d754b59/raw/c353e8ef842413cae56ae3920b8fd78468aa4cb2/usa-agricultural-exports-2011.csv') def generate_table (кадр данных, max_rows = 10): вернуть html. Таблица([ html.Thead( html.Tr([html.Th(col) для столбца в dataframe.columns]) ), html.Tbody([ html.Tr([ html.Td(dataframe.iloc[i][col]) для столбца в dataframe.columns ]) для i в диапазоне (min (len (dataframe), max_rows)) ]) ]) приложение = Тире (__имя__) app.layout = html.Div([ html.h5(children='Экспорт сельского хозяйства США (2011)'), сгенерировать_таблицу (df) ]) если __name__ == '__main__': app.run_server(отладка=Истина)
Экспорт сельскохозяйственной продукции США (2011 г.)
Без имени: 0 | состояние | всего экспорта | говядина | свинина | домашняя птица | молочные продукты | фрукты свежие | фруктов процесс | всегофруктов | овощи свежие | овощи процесс | всегоовощей | кукуруза | пшеница | хлопок |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Алабама | 1390,63 | 34,4 | 10,6 | 481,0 | 4,06 | 8. 0 | 17.1 | 25.11 | 5,5 | 8,9 | 14.33 | 34,9 | 70.0 | 317,61 | |
1 | Аляска | 13.31 | 0,2 | 0,1 | 0,19 | 0,6 | 1,0 | 1,56 | |||||||
2 | Аризона | 1463,17 | 71,3 | 17,9 | 105,48 | 19,3 | 41,0 | 60,27 | 147,5 | 239,4 | 386,91 | 7,3 | 48,7 | 423,95 | |
3 | Арканзас | 3586. 02 | 53,2 | 29,4 | 562,9 | 3,53 | 2.2 | 4,7 | 6,88 | 4.4 | 7.1 | 11.45 | 69,5 | 114,5 | 665,44 |
4 | Калифорния | 16472,88 | 228,7 | 11.1 | 225,4 | 929,95 | 2791,8 | 5944,6 | 8736.4 | 803.2 | 1303,5 | 2106,79 | 34,6 | 249,3 | 1064,95 |
5 | Колорадо | 1851,33 | 261,4 | 66,0 | 14,0 | 71,94 | 5,7 | 12. 2 | 17,99 | 45,1 | 73,2 | 118,27 | 183,2 | 400,5 | |
6 | Коннектикут | 259,62 | 1.1 | 0,1 | 6,9 | 9,49 | 4.2 | 8,9 | 13.1 | 4.3 | 6,9 | 11.16 | |||
7 | Делавэр | 282,19 | 0,4 | 0,6 | 114,7 | 2.3 | 0,5 | 1,0 | 1,53 | 7.6 | 12,4 | 20.03 | 26,9 | 22,9 | |
8 | Флорида | 3764,09 | 42,6 | 0,9 | 56,9 | 66,31 | 438,2 | 933. 1 | 1371,36 | 171,9 | 279,0 | 450,86 | 3,5 | 1,8 | 78,24 |
9 | Грузия | 2860,84 | 31,0 | 18,9 | 630,4 | 38,38 | 74,6 | 158,9 | 233,51 | 59,0 | 95,8 | 154,77 | 57,8 | 65,4 | 1154.07 |
Подробнее о визуализации
Модуль Dash Core Components
( dash.dcc
) включает компонент
Graph
.
Graph
визуализирует интерактивные данные с использованием открытой библиотеки
plotly.js JavaScript graphing
. Plotly.js поддерживает более 35 типов диаграмм и отображает диаграммы в формате
как в векторном качестве SVG, так и в высокопроизводительном WebGL.
Аргумент фигура
в компоненте Graph
— это тот же аргумент цифра
, который используется plotly.py
, графической библиотекой Python с открытым исходным кодом Plotly
.
Ознакомьтесь с документацией plotly.py и галереей
, чтобы узнать больше.
Вот пример создания точечной диаграммы из кадра данных
Pandas. Создайте файл с именем app.py
со следующим кодом:
# Запустите это приложение с помощью `python app.py` и # посетите http://127.0.0.1:8050/ в веб-браузере. импорт из тире Dash, dcc, html импортировать plotly.express как px импортировать панд как pd приложение = Тире (__имя__) df = pd.read_csv('https://gist.githubusercontent.com/chriddyp/5d1ea79569ed194d432e56108a04d188/raw/a9f9e8076b837d541398e999dcbac2b2826a81f8/gdp-life-exp-2007.csv') рис = px.scatter(df, x="ВВП на душу населения", y="продолжительность жизни", размер = "население", цвет = "континент", hover_name = "страна", log_x = Истина, size_max = 60) app. layout = html.Div([ dcc.График( , фигура = рис ) ]) если __name__ == '__main__': app.run_server(отладка=Истина)
Эти графики являются интерактивными и адаптивными.
Наведение над точками, чтобы увидеть их значения,
щелкните на элементах легенды, чтобы переключить кривые,
щелкните и перетащите , чтобы увеличить масштаб,
, удерживая нажатой клавишу Shift, и щелкните и перетащите 4, чтобы панорамировать.
Markdown
Хотя Dash предоставляет HTML через HTML-компоненты Dash ( dash.html
), писать свою копию в HTML может быть утомительно. Для написания блоков текста можно использовать компонент
Markdown
в
Основные компоненты Dash ( dash.dcc
). Создайте файл с именем app.py
со следующим кодом:
# Запустите это приложение с помощью `python app.py` и # посетите 0.0.1:8050/">http://127.0.0.1:8050/ в веб-браузере. импорт из тире Dash, html, dcc приложение = Тире (__имя__) markdown_text = ''' ### Тире и уценка Приложения Dash можно писать в Markdown. Dash использует [CommonMark](http://commonmark.org/) Спецификация уценки. Ознакомьтесь с их [60 Second Markdown Tutorial](http://commonmark.org/help/) если это ваше первое знакомство с Markdown! ''' app.layout = html.Div([ dcc.Markdown (дети = markdown_text) ]) если __name__ == '__main__': app.run_server(отладка=Истина)
Dash и Markdown
Приложения Dash можно писать в Markdown.
Dash использует спецификацию CommonMark
Markdown.
Ознакомьтесь с их 60-секундным учебным пособием по уценке
, если это ваше первое знакомство с уценкой!
Основные компоненты
Основные компоненты Dash ( dash.dcc
)
включает набор компонентов более высокого уровня, таких как раскрывающиеся списки, графики, блоки уценки и многое другое.
Как и все компоненты Dash, они описываются полностью декларативно.
Каждый настраиваемый параметр доступен в качестве ключевого аргумента
компонента.
Мы увидим многие из этих компонентов на протяжении всего руководства.
Вы можете просмотреть все доступные компоненты в обзоре
Dash Core Components.
Вот некоторые из доступных компонентов.
Создайте файл с именем app.py
со следующим кодом:
# Запустите это приложение с помощью `python app.py` и # посетите http://127.0.0.1:8050/ в веб-браузере. импорт из тире Dash, html, dcc приложение = Тире (__имя__) app.layout = html.Div([ html.Div (дети = [ html.Ярлык('Выпадающий список'), dcc.Dropdown(['Нью-Йорк', 'Монреаль', 'Сан-Франциско'], 'Монреаль'), html.Бр(), html.Label('Раскрывающийся список с множественным выбором'), dcc.Dropdown(['Нью-Йорк', 'Монреаль', 'Сан-Франциско'], ['Монреаль', 'Сан-Франциско'], мульти = Истина), html. Бр(), html.Label('Радиоэлементы'), dcc.RadioItems(['Нью-Йорк', 'Монреаль', 'Сан-Франциско'], 'Монреаль'), ], style={'padding': 10, 'flex': 1}), html.Div (дети = [ html.Label('Флажки'), dcc.Checklist(['Нью-Йорк', 'Монреаль', 'Сан-Франциско'], ['Монреаль', 'Сан-Франциско'] ), html.Бр(), html.Label('Ввод текста'), dcc.Input (значение = 'MTL', тип = 'текст'), html.Бр(), html.Label('Слайдер'), dcc.Slider( мин=0, макс=9, mark={i: f'Label {i}' if i == 1 else str(i) для i в диапазоне (1, 6)}, значение=5, ), ], style={'padding': 10, 'flex': 1}) ], style={'display': 'flex', 'flex-direction': 'row'}) если __name__ == '__main__': app.run_server(отладка=Истина)
Раскрывающийся список
Раскрывающийся список множественного выбора
Радиоэлементы
Флажки
Ввод текста
Слайдер
Справка
Компоненты Dash являются декларативными: каждый настраиваемый аспект этих 9Компоненты 0004 устанавливаются во время создания экземпляра в качестве аргумента ключевого слова.
Вызовите помощь
в консоли Python на любом из компонентов, чтобы
узнать больше о компоненте и его доступных аргументах.
>>> справка(dcc.Dropdown) Раскрывающийся список классов (dash.development.base_component.Component) | Компонент раскрывающегося списка. | Выпадающий список — это интерактивный выпадающий элемент для выбора одного или нескольких | предметы. | Значения и метки выпадающих элементов указаны в «параметрах». | свойство и выбранный элемент(ы) указываются с помощью свойства `value`. | | Используйте раскрывающийся список, когда у вас есть много вариантов (более 5) или когда вы | ограничено пространством. В противном случае вы можете использовать RadioItems или контрольный список, | которые имеют преимущество показа пользователям всех элементов одновременно. | | Аргументы ключевых слов: | - идентификатор (строка; необязательный) | - className (строка; необязательно) | - disabled (логическое; необязательный): если true, опция отключена. | - multi (логическое; необязательный): если true, пользователь может выбрать несколько значений. | - варианты (список; необязательный) | - заполнитель (строка; необязательный): серый текст по умолчанию, отображаемый, когда не выбран ни один параметр. | - значение (строка | список; необязательно): значение ввода. Если `multi` равно false (по умолчанию) | тогда значение - это просто строка, соответствующая значениям | предоставляется в свойстве `options`. Если `мульти` верно, то | несколько значений могут быть выбраны одновременно, и `значение` | массив элементов со значениями, соответствующими тем, что в | `options` реквизит.
Сводка
Макет
приложения Dash описывает, как выглядит приложение.
Макет
представляет собой иерархическое дерево компонентов. Компоненты HTML
Dash ( dash.html
) предоставляют классы для всех тегов HTML
, а аргументы ключевого слова описывают атрибуты HTML, такие как style
, class
и id
. Основные компоненты Dash ( dash.dcc
) создают компоненты более высокого уровня, такие как элементы управления и графики.