html — Почему один из пунктов меню переносится на другую строку
Имеется стандартное такая меню с подпунктами:
body { text-align: center; font-family: cursive; margin: 0; padding: 0; } a { text-decoration: none; } li { list-style: none; display: inline; } .drop_menu { opacity: 0; } .list_menu:hover .drop_menu { opacity: 1; }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>ааа</title> <link rel="stylesheet" href="main.css"> </head> <body> <header> <nav> <ul> <li><a href="#">Главная</a></li> <li><a href="#">Смотреть</a> <ul> <li><a href="#" target="_blank">Фильмы</a></li> <li><a href="#" target="_blank">Мультфильмы</a></li> <li><a href="#" target="_blank">Сериалы</a></li> <li><a href="#" target="_blank">Трейлеры</a></li> </ul> </li> <li><a href="#">Контакты</a> <ul> <li><a href="" target="_blank">Илья</a></li> <li><a href="">Артем</a></li> <li><a href="" target="_blank">Женя</a></li> </ul> </li> </ul> </nav> </header> </body> </html>
Почему в итоге получается все «пирамидой», а не в линию?
- html
- css
Потому что ваш «скрытый ul» изначально имеет display: block;
и из-за себя переносит себя и последующие элементы на новую строку.
Вы можете использовать для него, например position: absolute;
body { text-align: center; font-family: cursive; margin: 0; padding: 0; } a { text-decoration: none; } li { list-style: none; display: inline; } .drop_menu { opacity: 0; position: absolute; } .list_menu:hover .drop_menu { opacity: 1; }
<header> <nav> <ul> <li><a href="#">Главная</a></li> <li><a href="#">Смотреть</a> <ul> <li><a href="#" target="_blank">Фильмы</a></li> <li><a href="#" target="_blank">Мультфильмы</a></li> <li><a href="#" target="_blank">Сериалы</a></li> <li><a href="#" target="_blank">Трейлеры</a></li> </ul> </li> <li><a href="#">Контакты</a> <ul> <li><a href="" target="_blank">Илья</a></li> <li><a href="">Артем</a></li> <li><a href="" target="_blank">Женя</a></li> </ul> </li> </ul> </nav> </header>
Зарегистрируйтесь или войдите
Регистрация через Google
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
Почта
Необходима, но никому не показывается
Отправить без регистрации
Почта
Необходима, но никому не показывается
Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки
Группа списков.
![](/800/600/http/cf.ppt-online.org/files/slide/n/NCf3248RoOHJiKqlzUPma5jYpLvgcwheIyuZAb/slide-10.jpg)
Группы списков — это гибкий и мощный компонент для отображения контента. Измените и расширьте их так, чтобы поддерживать практически любой контент внутри.
Базовые примеры
Самая простая группа списков – это неупорядоченный список из элементов нужных классов. Создавайте на этой основе свою разметку и свой CSS, если нужно.
- Cras justo odio
- Dapibus ac facilisis in
- Morbi leo risus
- Porta ac consectetur ac
- Vestibulum at eros
<ul> <li>Cras justo odio</li> <li>Dapibus ac facilisis in</li> <li>Morbi leo risus</li> <li>Porta ac consectetur ac</li> <li>Vestibulum at eros</li> </ul>
Активные элементы
Добавьте в .
класс list-group-item
.active
для обозначения текущего активного выбора.
- Cras justo odio
- Dapibus ac facilisis in
- Morbi leo risus
- Porta ac consectetur ac
- Vestibulum at eros
<ul> <li>Cras justo odio</li> <li>Dapibus ac facilisis in</li> <li>Morbi leo risus</li> <li>Porta ac consectetur ac</li> <li>Vestibulum at eros</li> </ul>
Неактивные элементы
Добавьте класс .disabled
к элементу класса .list-group-item
для придания последнему вида «неактивного». Заметьте, что некоторые элементы класса .disabled
также потребуют JavaScript для полной деактивации их событий клика (например, ссылки).
- Cras justo odio
- Dapibus ac facilisis in
- Morbi leo risus
- Porta ac consectetur ac
- Vestibulum at eros
<ul> <li>Cras justo odio</li> <li>Dapibus ac facilisis in</li> <li>Morbi leo risus</li> <li>Porta ac consectetur ac</li> <li>Vestibulum at eros</li> </ul>
Используйте <a>
или <button>
для создания элементов группы списка с возможностью возложить на них некое действие – с наличием «ховера» (наведения), неактивных и активных состояний – добавляя в них .
. Мы разделяем эти псевдоклассы для уверенности в том, что группы списков, созданные из не-интерактивных элементов (как list-group-item-action
<li>
или <div>
), не будут позволять поддержку касания или клика.
Удостоверьтесь, что не используете стандартные классы .btn
в описанном выше случае.
Cras justo odio Dapibus ac facilisis in Morbi leo risus Porta ac consectetur ac Vestibulum at eros
<div> <a href="#"> Cras justo odio </a> <a href="#">Dapibus ac facilisis in</a> <a href="#">Morbi leo risus</a> <a href="#">Porta ac consectetur ac</a> <a href="#">Vestibulum at eros</a> </div>
В <button>
вы можете также использовать атрибут disabled
вместо класса .
. К сожалению, disabled
<a>
не поддерживают отключенный атрибут.
<div> <button type="button"> Cras justo odio </button> <button type="button">Dapibus ac facilisis in</button> <button type="button">Morbi leo risus</button> <button type="button">Porta ac consectetur ac</button> <button type="button" disabled>Vestibulum at eros</button> </div>
Смывание
Добавьте класс .list-group-flush
чтобы удалить некоторые границы и закругленные углы, а также чтобы отображать элементы группы списка от края до края в родительском контейнере (например, в карточках).
- Cras justo odio
- Dapibus ac facilisis in
- Morbi leo risus
- Porta ac consectetur ac
- Vestibulum at eros
<ul> <li>Cras justo odio</li> <li>Dapibus ac facilisis in</li> <li>Morbi leo risus</li> <li>Porta ac consectetur ac</li> <li>Vestibulum at eros</li> </ul>
Горизонтальный
Добавьте .
, чтобы изменить расположение элементов группы списков с вертикального на горизонтальное для всех точек останова. Или же выберите адаптивный вариант list-group-horizontal
.list-group-horizontal-{sm|md|lg|xl}
, чтобы сделать группу списков горизонтальной, начиная с min-width
точки останова. В настоящее время горизонтальные группы списков не могут быть объединены с группами списков смывания.
ProTip: Хотите, чтобы элементы списка равной ширины были горизонтальными? Добавьте .flex-fill
к каждому элементу группы списков.
- Cras justo odio
- Dapibus ac facilisis in
- Morbi leo risus
<ul> <li>Cras justo odio</li> <li>Dapibus ac facilisis in</li> <li>Morbi leo risus</li> </ul>
- Cras justo odio
- Dapibus ac facilisis in
- Morbi leo risus
<ul> <li>Cras justo odio</li> <li>Dapibus ac facilisis in</li> <li>Morbi leo risus</li> </ul>
- Cras justo odio
- Dapibus ac facilisis in
- Morbi leo risus
<ul> <li>Cras justo odio</li> <li>Dapibus ac facilisis in</li> <li>Morbi leo risus</li> </ul>
- Cras justo odio
- Dapibus ac facilisis in
- Morbi leo risus
<ul> <li>Cras justo odio</li> <li>Dapibus ac facilisis in</li> <li>Morbi leo risus</li> </ul>
- Cras justo odio
- Dapibus ac facilisis in
- Morbi leo risus
<ul> <li>Cras justo odio</li> <li>Dapibus ac facilisis in</li> <li>Morbi leo risus</li> </ul>
Контекстуальные классы
Используйте их для стилизации элементов списка и придания им оттенков смысла с помощью цвета и фона.
- Dapibus ac facilisis in
- Элемент основной группы списков
- Дополнительный элемент группы списков
- Элемент группы списка успешных действий
- Элемент группы списка опасности
- Элемент группы списка предупреждений
- Элемент группы списка информации
- Элемент группы с легким списком
- Элемент группы темных списков
<ul> <li>Dapibus ac facilisis in</li> <li>Элемент основной группы списков</li> <li>Дополнительный элемент группы списков</li> <li>Элемент группы списка успешных действий</li> <li>Элемент группы списка опасности</li> <li>Элемент группы списка предупреждений</li> <li>Элемент группы списка информации</li> <li>Элемент группы с легким списком</li> <li>Элемент группы темных списков</li> </ul>
Контекстуальные классы также работают с классом .
. Отметим наличие дополнения стилей «ховера» (наведения), которых нет в предыдущем примере. Активное состояние list-group-item-action
.active
также поддерживается, применяйте его для индикации активного выбора в элементе контекстуальной группы списка.
Dapibus ac facilisis in Элемент основной группы списков Дополнительный элемент группы списков Элемент группы списка успешных действий Элемент группы списка опасности Элемент группы списка предупреждений Элемент группы списка информации Элемент группы с легким списком Элемент группы темных списков
<div> <a href="#">Dapibus ac facilisis in</a> <a href="#">Элемент основной группы списков</a> <a href="#">Дополнительный элемент группы списков</a> <a href="#">Элемент группы списка успешных действий</a> <a href="#">Элемент группы списка опасности</a> <a href="#">Элемент группы списка предупреждений</a> <a href="#">Элемент группы списка информации</a> <a href="#">Элемент группы с легким списком</a> <a href="#">Элемент группы темных списков</a> </div>
Использование вспомогательных технологий
Использование цвета как дополнительного инструмента информативности доступно только в визуальной сфере, что ограничивает пользователей вспомогательных технологий, например, программ для чтения текста с экрана. Удостоверьтесь, что информация, обозначенная цветом, также доступна из самого контента (т.е. в тексте) или содержится в альтернативных средствах – таких как дополнительный скрытый в классе
.sr-only
текст.
Со значками
Добавляйте значки в любой элемент группы списков для показа счетчиков, активности и т.п. с помощью утилит.
- Cras justo odio 14
- Dapibus ac facilisis in 2
- Morbi leo risus 1
<ul> <li> Cras justo odio <span>14</span> </li> <li> Dapibus ac facilisis in <span>2</span> </li> <li> Morbi leo risus <span>1</span> </li> </ul>
Стандартное содержимое
Добавьте почти любой код HTML с помощью утилит флексбокса, даже для групп списков со ссылками, как в примере ниже.
List group item heading
3 days agoDonec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.
Donec id elit non mi porta.
List group item heading
3 days agoDonec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.
Donec id elit non mi porta.
List group item heading
3 days agoDonec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.
Donec id elit non mi porta.<div> <a href="#"> <div> <h5>List group item heading</h5> <small>3 days ago</small> </div> <p>Donec id elit non mi porta gravida at eget metus.Maecenas sed diam eget risus varius blandit.</p> <small>Donec id elit non mi porta.</small> </a> <a href="#"> <div> <h5>List group item heading</h5> <small>3 days ago</small> </div> <p>Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p> <small>Donec id elit non mi porta.</small> </a> <a href="#"> <div> <h5>List group item heading</h5> <small>3 days ago</small> </div> <p>Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p> <small>Donec id elit non mi porta.</small> </a> </div>
Поведение JavaScript
Используйте плагин вкладок JavaScript – индивидуальный или через bootstrap.
— для расширения группы списков и создания панелей содержимого с возможностью навигации через TAB. js
Home Profile Messages Settings
Velit aute mollit ipsum ad dolor consectetur nulla officia culpa adipisicing exercitation fugiat tempor. Voluptate deserunt sit sunt nisi aliqua fugiat proident ea ut. Mollit voluptate reprehenderit occaecat nisi ad non minim tempor sunt voluptate consectetur exercitation id ut nulla. Ea et fugiat aliquip nostrud sunt incididunt consectetur culpa aliquip eiusmod dolor. Anim ad Lorem aliqua in cupidatat nisi enim eu nostrud do aliquip veniam minim.
Cupidatat quis ad sint excepteur laborum in esse qui. Et excepteur consectetur ex nisi eu do cillum ad laborum. Mollit et eu officia dolore sunt Lorem culpa qui commodo velit ex amet id ex. Officia anim incididunt laboris deserunt anim aute dolor incididunt veniam aute dolore do exercitation. Dolor nisi culpa ex ad irure in elit eu dolore. Ad laboris ipsum reprehenderit irure non commodo enim culpa commodo veniam incididunt veniam ad.
Ut ut do pariatur aliquip aliqua aliquip exercitation do nostrud commodo reprehenderit aute ipsum voluptate. Irure Lorem et laboris nostrud amet cupidatat cupidatat anim do ut velit mollit consequat enim tempor. Consectetur est minim nostrud nostrud consectetur irure labore voluptate irure. Ipsum id Lorem sit sint voluptate est pariatur eu ad cupidatat et deserunt culpa sit eiusmod deserunt. Consectetur et fugiat anim do eiusmod aliquip nulla laborum elit adipisicing pariatur cillum.
Irure enim occaecat labore sit qui aliquip reprehenderit amet velit. Deserunt ullamco ex elit nostrud ut dolore nisi officia magna sit occaecat laboris sunt dolor. Nisi eu minim cillum occaecat aute est cupidatat aliqua labore aute occaecat ea aliquip sunt amet. Aute mollit dolor ut exercitation irure commodo non amet consectetur quis amet culpa. Quis ullamco nisi amet qui aute irure eu. Magna labore dolor quis ex labore id nostrud deserunt dolor eiusmod eu pariatur culpa mollit in irure.
<div> <div> <div role="tablist"> <a data-toggle="list" href="#list-home" role="tab" aria-controls="home">Home</a> <a data-toggle="list" href="#list-profile" role="tab" aria-controls="profile">Profile</a> <a data-toggle="list" href="#list-messages" role="tab" aria-controls="messages">Messages</a> <a data-toggle="list" href="#list-settings" role="tab" aria-controls="settings">Settings</a> </div> </div> <div> <div> <div role="tabpanel" aria-labelledby="list-home-list">...</div> <div role="tabpanel" aria-labelledby="list-profile-list">...</div> <div role="tabpanel" aria-labelledby="list-messages-list">...</div> <div role="tabpanel" aria-labelledby="list-settings-list">...</div> </div> </div> </div>
Используя атрибуты
Вы можете активировать навигацию в группе списка без JavaScript, а просто добавив data-toggle="list"
в элемент. Используйте эти атрибуты в
.list-group-item
.
<!-- List group --> <div role="tablist"> <a data-toggle="list" href="#home" role="tab">Home</a> <a data-toggle="list" href="#profile" role="tab">Profile</a> <a data-toggle="list" href="#messages" role="tab">Messages</a> <a data-toggle="list" href="#settings" role="tab">Settings</a> </div> <!-- Tab panes --> <div> <div role="tabpanel">...</div> <div role="tabpanel">...</div> <div role="tabpanel">...</div> <div role="tabpanel">...</div> </div>
Через JavaScript
Задействуйте навигацию через TAB через JavaScript (каждый элемент списка надо активировать отдельно):
$('#myList a').on('click', function (e) { e.preventDefault() $(this).tab('show') })
Вы можете активировать отдельный элемент списка несколькими способами:
$('#myList a[href="#profile"]').tab('show') // Select tab by name $('#myList a:first-child').tab('show') // Select first tab $('#myList a:last-child').tab('show') // Select last tab $('#myList a:nth-child(3)').tab('show') // Select third tab
Эффект угасания
Чтобы заставить панель вкладок постепенно появиться, добавьте класс .fade
в каждый элемент класса .tab-pane
. На первой панели вкладки также должно быть выставлено значение .show
, чтобы сделать начальное содержимое видимым.
<div> <div role="tabpanel">...</div> <div role="tabpanel">...</div> <div role="tabpanel">...</div> <div role="tabpanel">...</div> </div>
Методы
$().
![](/800/600/http/otvet.imgsmail.ru/download/30894350_0c9fbb38a9d01d1c24842b68d8d634cb_800.jpg)
Активирует элемент списка и контейнер содержимого. Вкладка должна иметь или data-target
, или href
«нацеленный» на «узел контейнера» в DOM.
<div role="tablist"> <a data-toggle="list" href="#home" role="tab">Home</a> <a data-toggle="list" href="#profile" role="tab">Profile</a> <a data-toggle="list" href="#messages" role="tab">Messages</a> <a data-toggle="list" href="#settings" role="tab">Settings</a> </div> <div> <div role="tabpanel">...</div> <div role="tabpanel">...</div> <div role="tabpanel">...</div> <div role="tabpanel">...</div> </div> <script> $(function () { $('#myList a:last-child').tab('show') }) </script>
.tab(‘show’)
Выбирает данный элемент списка и показывает связанные с ним панели. Любой другой элемент списка, который был ранее выбран, становится «невыбранным», а связанные с ним панели – скрытыми. Возвращается к функции-вызову до того, как показалась панель вкладки (например, до события
shown.bs.tab
).
$('#someListItem').tab('show')
События
При показе новой вкладки события запускаются в таком порядке:
hide.bs.tab
(на текущей активной вкладке)show.bs.tab
(на вкладке, которая вот-вот покажется)hidden.bs.tab
(на предыдущей активной вкладке, такое же, как для событияhide.bs.tab
)shown.bs.tab
(на вкладке, только что ставшей активной и только что ставшей показанной, такое же, как для событияshow.bs.tab
)
Если ни одна вкладка еще не была активной, события hide.bs.tab
и hidden.bs.tab
не произойдут.
Тип события | Описание |
---|---|
show.bs.tab | Используйте события event.target и event.relatedTarget для «нацеливания» на соответственно на активную и предыдущую активную (если она доступна) вкладки. |
shown.bs.tab | Это событие наступает при показе вкладки, после того, как она показана. Используйте события event.target и event.relatedTarget для «нацеливания» соответственно на активную и предыдущую активную (если она доступна) вкладки. |
hide.bs.tab | Это событие наступает, когда вот-вот покажется новая вкладка (и предыдущая, т.о., вот-вот скроется). Используйте события event.target и event.relatedTarget для «нацеливания» соответственно на активную текущую вкладку и ту, которая вот-вот откроется. |
hidden.![]() |
Это событие наступает, когда показана новая вкладка (и предыдущая активная, т.о., скрылась). Используйте события event.target и event.relatedTarget для «нацеливания» соответственно на предыдущую активную и новую активную вкладки. |
$('a[data-toggle="list"]').on('shown.bs.tab', function (e) { e.target // newly activated tab e.relatedTarget // previous active tab })
R Преобразование списка в строку с примерами
- Автор сообщения: Naveen (NNK)
- Категория сообщения: R Программирование
- Последнее изменение сообщения: 7 февраля 2023 г.
![](/800/600/http/fuzeservers.ru/wp-content/uploads/6/1/a/61a42e8beb57d36dc4dc36942e63f20c.jpeg)
Следующие методы используются для преобразования элементов из списка в строку в программировании на R.
- Преобразование с помощью paste()
- Преобразование с помощью toString()
Учебники по Python Pandas для начинающих…
Включите JavaScript
Учебники по Python Pandas для начинающих
List to String
Функцию paste()
в R можно использовать для преобразования или объединения списка элементов в строку путем разделения каждого элемента разделителем. Чтобы отделить строковые элементы от единого списка с помощью свернуть
параметр с разделителем. А чтобы отделить элементы из нескольких списков, используйте параметр sep
. Давайте создадим список, используя комбинированную функцию list().
1.1 Синтаксис
# синтаксис вставки() вставить(…, sep = " ", свернуть = NULL)
...
– один или несколько входных объектов для объединения.
сен
– символ для разделения значений между несколькими векторами. Чтобы использовать параметр sep
, вы должны использовать несколько векторов в качестве входных данных.
свернуть
– символ для разделения значений в векторе
1.2 Пример
В следующем примере все значения из списка преобразуются в одну строку со значениями, разделенными пробелом.
# Преобразование списка в строку li <- list('A','B','C','D','E','F') вставить (li, свернуть = ' ') # Выход [1] «А Б В Г Д Е Ф»
2. Использование toString() для преобразования списка в строку
Функцию toString() можно использовать для преобразования элементов из списка в строку символов, но эта функция по умолчанию добавляет разделитель-запятую между элементами.
# Использование toString() toString (ли) # Выход #[1] "А, Б, В, Г, Е, Ж"
6.
![](/800/600/http/i.stack.imgur.com/V5mEs.jpg)
Кроме того, вы также можете использовать функцию do.call()
для использования функции paste() для преобразования элементов списка в строку. Используйте , сверните
, чтобы разделить строку в списке разделителем.
# используя do.call() do.call (вставить, с (ли, свернуть = "")) # Выход [1] «А Б В Г Д Е Ф»
7. stri_paste() для объединения элементов
Используйте stri_paste() 9Функция 0035 из пакета
stringi
для объединения векторных элементов в строки в R. Эта функция также принимает параметр Collar
для разделения строк по символам. Чтобы использовать этот пакет, сначала установите пакет r и загрузите его с помощью функции library()
. Итак, чтобы преобразовать список в строку, я буду использовать unlist() для преобразования списка в вектор, а затем использовать вектор с помощью stri_paste(). Хотя использование этого метода не является рекомендуемым вариантом, но все же хотелось бы осветить его, поскольку его можно использовать при необходимости.
# Загрузить строку библиотека ('строки') stri_paste (удалить список (li), свернуть = '')
8. Полный пример
Ниже приведен полный пример преобразования списка в строку в R. Вы можете загрузить этот пример из Github R Programming Examples Project.
#Преобразовать список элементов в строку Примеры # Преобразование списка в строку li <- list('A','B','C','D','E','F') вставить (li, свернуть = ' ') # Использование toString() toString (ли) # используя do.call() do.call (вставить, с (ли, свернуть = "")) # Загрузить строку библиотека ('строки') stri_paste (удалить список (li), свернуть = '')
9. Заключение
В этой статье я объяснил различные способы преобразования списка элементов в строку символов в R с помощью таких функций, как past(), toString() и stri_paste().
Статьи по теме
- Объясните вектор символов в R?
- Как получить длину вектора в R?
- Добавить или добавить элемент к вектору в R?
- Как удалить NA из вектора?
- Как создать вектор в R?
- Как создать кадр данных из векторов?
- Как создать пустой вектор в R?
- Создать вектор символов в R?
- Как преобразовать вектор в список в R?
- Как преобразовать список в вектор в R?
- Как соединить вектор в R?
- Объединить элементы вектора в строку в R?
- Как создать подмножество вектора в R?
- Как сортировать вектор в R?
- Как удалить значения из вектора R?
- Как удалить дубликаты из вектора в R?
Каталожные номера
- https://www.
rdocumentation.org/packages/base/versions/3.6.2/topics/paste
Теги: r-lists
SparkByExamples.com — это Big Data и Spark страница сообщества примеров, все примеры просты и легки для понимания и хорошо протестированы в нашей среде разработки Подробнее ..
Как создать список (Html msg) из строки списка — Узнайте
FFFluoride 1
-- У меня есть строка списка ["Привет пока", "???????"]
Я хотел бы преобразовать это в Html msg
.
Это потому, что я хочу использовать функцию li
, которая принимает список (Html msg)
.
Как мне получить список (Html msg)
из строки списка
, которую я могу использовать в качестве текста.
ИлоСофиеп 2
Привет и добро пожаловать в Elm!
Для таких вопросов было бы здорово, если бы вы могли указать, что вы пробовали до сих пор. Вы куда-нибудь попали? С какими ошибками вы столкнулись?
Таким образом, ответы, которые вы получите, не просто предоставят вам готовое решение. Вместо этого мы можем помочь вам улучшить ваш код и, например. объясните, чего вам не хватило, чтобы заставить его работать самостоятельно.
1 Нравится
FFФтор 3
В основном я делаю программу, которая хранит контрольный список в виде дерева узлов, и каждый узел имеет текст и массив дочерних узлов.
У меня есть функция, которая берет потомков узла и собирает список строк.
Я хочу отобразить его как список (Html msg)
для использования в li
.
Надеюсь, это дало вам краткое изложение того, что я пытаюсь сделать.
Карстен_Кониг 4
Основной способ создать список HTML msg
из списка HTML
с помощью List.map
.
Вы упомянули, что хотите взять их в li
(я предполагаю, что вам нужен один li
на строку
здесь), поэтому (имея li
внутри ul
) вы обычно увидите что-то вроде
itemToLi : MyItemType -> HTML-сообщение пунктТоли пункт = Х.ли [] [ .... ] ... H.ul[] (items |> List.map itemToLi)
в вашем случае это будет работать, так как ваши элементы String
itemToLi : Строка -> HTML-сообщение пунктТоли пункт = H.li [] [ Элемент H.text ] ... H.ul[] (items |> List.map itemToLi)
обратите внимание, что здесь будет сказано: itemToLi
— это функция от вашего типа элемента до any msg
— что может быть в порядке и указывает на то, что эта функция работает в очень широком смысле.
Но обычно вам нужен конкретный тип Msg
, и может быть озадачивающим, когда вы видите Msg
против msg
в ошибках.
Поэтому я предлагаю использовать
itemToLi : String -> HTML Msg пунктТоли пункт = H.li [] [ Элемент H.text ]
, пока вы не узнаете почему, и что вам лучше будет msg
.
1 Нравится
FFФтор 5
Я немного сбит с толку, увидев это.
Пожалуйста, объясните мне оператор ::
и использование H
. Чего я серьезно не понимаю.
Редактировать: теперь, когда я думаю об этом, я не знаю, как я буду представлять дерево узлов переменного размера.
Карстен_Кониг 6
мой плохой - слишком много Haskell последние несколько дней (в Haskell это ::
вместо :
) - один момент я исправляю это
Вы можете увидеть H.li
, H.text
, … довольно часто, потому что многие из нас не любят импортировать множество функций из модуля и вместо этого использовать квалифицированный импорт:
импортировать Html как H (HTML) ... Х.див [] [...]
то же самое с import Html.Events as Ev
и import Html.Attributes as Attr
(псевдоним H
, Ev
и Attr
, вероятно, отличается для разных людей - мне это нравится
экспонирование (HTML)
потому что H.
выглядит некрасиво HTML
FFFluoride 7
Еще одно. В чем разница между:
Html Msg
и
HTML-сообщение
Атлеви 8
Msg (верхний регистр) относится к Msg вашего приложения… у вас, вероятно, есть что-то вроде:
type Msg
= Buttonpressed
| SomeOtherMsg
Итак, когда ваш тип говорит, что он возвращает HTML Msg, у него могут быть кнопки, которые запускают эти сообщения.
Если ваша функция просмотра возвращает HTML-сообщение, которое совпадает с Html someLowercasename, Html x, Html независимо от того…
Это просто переменная типа, может быть любым типом сообщения.