Раскрывающиеся блоки для подсказок или дополнительной информации
Здравствуйте уважаемые начинающие веб мастера.
Очень часто возникает необходимость разместить на странице подсказку или дополнительную информацию к какому либо слову, словосочетанию или абзацу.
Делать это открытым текстом не всегда удобно, так как возможно будет теряться основная нить статьи, поэтому в таком случае лучше будет применить скрытый текст открывающийся по клику мыши.
Объектом для клика может быть выделенная часть текста или кнопка «Справка» размещёная в удобном месте.
Дополнительная информация будет открываться под выделенной частью текста отдельным абзацем, при этом весь остальной контент будет сдвигаться в низ, освобождая место для вкладки.
При повторном клике на выделенный текст или кнопку, вкладка с подсказкой закроется.
Примеры:
1. Выделенная часть текста.
Бла-бла-бла-бла-бла Справка бла-бла-бла-бла-бла
Бла-бла-бла-бла-бла-бла-Бла-бла-бла-бла-бла-бла Бла-бла-бла-бла-бла-бла-Бла-бла-бла-бла-бла-бла Бла-бла-бла-бла-бла-бла-Бла-бла-бла-бла-бла-бла
Код:
Html
<div>Бла-бла-бла-бла-бла-бла <input type="checkbox"/>
<span>
Бла-бла-бла-бла-бла-бла-Бла-бла-бла-бла-бла-бла
Бла-бла-бла-бла-бла-бла-Бла-бла-бла-бла-бла-бла
</span>
<div>
Css
.
reference {
display: none;
}
.reference ~ .story {
display: none;
}
.reference + label {
font-size: 16px;
padding: 0;
color: green;
cursor: pointer;
display: inline-block;
}
.reference:checked ~ .story {
display: block;
background: Snow;
padding: 10px;
}
2. Кнопка, которую можно разместить в любой части контента.
Бла-бла-бла-бла-бла Справка бла-бла-бла-бла-бла
Бла-бла-бла-бла-бла-бла-Бла-бла-бла-бла-бла-бла Бла-бла-бла-бла-бла-бла-Бла-бла-бла-бла-бла-бла Бла-бла-бла-бла-бла-бла-Бла-бла-бла-бла-бла-бла
Код:
Html тот-же что и в первом примере.
Css
.reference {
display: none;
}
.reference ~ .story{
display: none;
}
.reference + label {
position: absolute;
top: 0;
left: 200px;
border: 1px solid #333;
border-radius: 4px;
background: #F0FFF0;
padding: 3px;
color: green;
font-size: 16px;
cursor: pointer;
display: inline-block;
}
. reference:checked ~ .story {
display: block;
background: Snow;
padding: 10px;
}
.spravca {
position: relative;
}
Можно дополнительно оформить раскрывающиеся блоки в css под стиль вашего сайта.
В HTML5 похожая опция заложена по умолчанию.
Реализуется она тегами
1. <details></details> — контейнер, который можно развернуть и свернуть.
2. <summary></summary> — заголовок, по которому можно щёлкнуть, чтоб развернуть контейнер. Повторный щелчёк сворачивает контейнер.
Смотрится и работает эта опция так:
Заголовоктекст текст текст текст
Код:
<details>
<summary>Заголовок</summary>
текст текст текст текст
</details>
Теги details и summary по умолчанию блочные элементы, поэтому, если нужно вставить контейнер в строку, ему нужно будет задать свойство display: inline-block;
Можно так же задать и другое стилевое оформление.
Желаю творческих успехов.
В раздел >>>
Оформляем Select CSS! Пользовательские стили для Select на CSS
С приходом CSS3 стало возможным сделать красивый стиль для любого элемента на сайте. Потому что CSS3 даёт широкий спектр возможностей, которые ускоряют процесс разработки дизайна для сайта. Сегодня мы оформим элемент select на CSS. Кто не знает, этот элемент отвечает за выпадающий список на сайте. Многие используют стандартный вид, но его можно изменить, чтобы он подходил по дизайну к Вашему сайту.
Нет ничего лучше, чем увидеть как выглядит список своими глазами:
Смотреть примерСкачать
Вот как выглядит этот Select оформленный на CSS:
Похожие статьи на эту тему:
А сейчас опишу процесс установки по шагам этого выпадающего списка или просто Select.
1 шаг. Подключаем необходимые файлы
Всё просто. После того как скачали архив с исходниками оттуда нам будут нужны 2 файла (style. css и select.js — если подключаете первый вариант списка или select_demo2.js — если подключаете второй вариант). Подключаем эти два файла между тегами <head></head>:
HTML КОД
1 2 | <link rel="stylesheet" type="text/css" href="css/style.css" /> <script type='text/javascript' src='js/select.js'></script> |
2 шаг. HTML структура элемента Select
Ничего сверхсложного в структуре нет (да и откуда ему быть, ведь это просто HTML 🙂 ). Простая форма, внутри которой выпадающий Select с его пунктами:
HTML КОД
1 2 3 4 5 6 7 8 9 10 11 12 | <form action="#"> <p> <label>Страны Великобритании:</label> <select> <option>Пожалуйста, выберите страну:</option> <option>Англия</option> <option>Северная Ирландия</option> <option>Шотландия</option> <option>Уэльс</option> </select> </p> </form> |
3 шаг.

Их немного. Я привожу ниже стили для первого варианта списка. Хочу обратить внимание на пути к изображениям. Их всего два: первое для того, чтобы раскрыть список, а второй — чтобы закрыть. Они выглядят в виде двух стрелочек «вверх» и «вниз» соответственно. Их можно скачать в месте с исходниками, которые находятся в начале статьи:
CSS КОД
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | .dropcontainer { position:relative; font-size: 16px; color: #777; } .trigger { color: #777; padding: 10px; font-size: 16px; width: 50%; background: #fff url(../images/select-arrow-open.png) 98% center no-repeat; display: block; border: 1px solid #ccc; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; -webkit-transition: all 0. |
В демо примере стили расположены в папке css. Поэтому когда мы задаем путь к папке с изображениями в пути мы сначала пишем «
Сейчас хочу сказать что можно сделать, чтобы не копировать полностью стили для второго варианта списка (который с фиксированной высотой), а изменить одно свойство и получить фиксированный список.
Вам нужно заменить последнее свойство dropdownvisible:
CSS КОД
1 2 3 | . |
На это:
CSS КОД
1 2 3 4 | .dropdownvisible { height: 200px; overflow-y: scroll; } |
И если не забудете заменить скрипты (смотрите выше что на что менять), то получите следующее:
В каких браузерах этот Select CSS (выпадающий список) работает нормально?
- ✓ Firefox 24.0, Firefox 25.0, Firefox 26.0
- ✓ Chrome 29.0, Chrome 30.0, Chrome 31.0
- ✓ Opera 12.14, Opera 12.15, Opera 12.16
- ✓ IE 7.0, IE 8.0, IE 9.0, IE 10.0, IE 11.0
- ✓ Safari 5.1, Safari 6.0, Safari 6.1, Safari 7.0
- ✓ Apple IOS – iPhone 4S, iPhone 5, iPad 2 (5.0), iPad 3 (6.0), iPad Mini
- ✓ Android – Sony Experia X10, HTC One X, Kindle Fire 2, Google Nexus
Дополнение к уроку — креативный эффект при наведении + ВИДЕО
В дополнение к уроку хочу рассказать как сделать еще один эффект на сайте очень необычным: эффект при наведении. Посмотрите это короткое видео и всё сами увидите.
Вывод
Еще один элемент сайта — Select можно изменить под свой дизайн на CSS и Javascript. Ничего сложного в процессе установки нет, поэтому у Вас всё получится. Также в качестве дополнения к статье Вы получаете креативный способ при наведении и видео по установке.
Основные пункты статьи, чтобы Вы могли быстро к ним перейти:
- 1 шаг. Подключаем необходимые файлы
- 2 шаг. HTML структура элемент Select
- 3 шаг. Добавляем стили для Select CSS
- В каких браузерах этот Select CSS
- Дополнение к уроку — креативный эффект при наведении + ВИДЕО
Успехов!
Источник: Оригинал
С Уважением, Юрий Немец
Продвинутый курс по html и css
Вторая часть курса по html и css предназначена для тех, кто уже освоил основы основ и хочет научиться создавать формы, выпадающие меню, таблицы и встроенные элементы.
Продвинутый курс по html и css предназначен для тех, кто уже знаком с понятием теги и классы. Это логическое продолжение нашего первого курса по созданию сайтов. Если вы только начинаете изучение этих технологий, то рекомендуем начать с базового курса.
Как и всегда, мы обучаем технологиям на реальных примерах, поэтому формам вы научитесь в процессе создания реальной страницы регистрации. Вы научитесь создавать таблицы и в процессе создадите список цен на товары. Когда мы будем проходить позиционирование элементов, вы создадите выпадающее меню, которое сможете использовать в своих будущих проектах. Также, мы научим вас вставлять на сайт видео, карты и другие встроенные элементы.
В этом курсе вы изучите:
- Тег form
- Теги input, select, textarea
- HTML5 поля ввода и атрибуты
- Позиционирование элементов
- Создние CSS меню
- Создание фиксированного хедера
- Таблицы
- Атрибуты colspan и rowspan
- Встраивание видео и карт
Видео лекция 04:02 мин.
Изучаем создание форм. Создаем страницу регистрации и добавляем поля для имени пользователя и пароля.
Интерактивное задание
Создайте два текстовых поля типа текст и типа пароль в соответствующих блоках.
Видео лекция 02:22 мин.
С помощью полей ввода типа checkbox и radio добавляем в форму регистрации новые элементы
Интерактивное задание
В блоке с классом «cakes» создать радио группу с атрибутом name=»cakes» с выбором из трех вариантов: С яблоком, С вишней, С капустой. В блоке с классом «delivery» добавить чекбокс атрибутом name=»delivery»
Видео лекция 02:01 мин.
Интерактивное задание
Создайте тег селект, с выбором из трех вариантов. «С яблоком» у которого атрибут value=»apple», «С вишней» — value=»cherry» и «С капустой» — value=»cabbage»
Видео лекция 01:05 мин.
Интерактивное задание
Создайте textarea с атрибутами cols=»30″ и rows=»10″
Видео лекция 01:11 мин.
Интерактивное задание
Создайте поле прикрепление файла и кнопку отправки формы (type=»submit») с подписью «Отправить»
Видео лекция 02:47 мин.
Интерактивное задание
Создайте поле с типом url (на текущий момент работает во всех современных браузерах браузерах, кроме Safari). Укажите ему placeholder=»http://example.com». Проверьте, что кнопка submit работает только c правильным форматом url.
Видео лекция 04:02 мин.
Интерактивное задание
Создайте таблицу внутри блока с классом «table», имеющую 3 строки и 2 столбца. Укажите у этой таблицы границу, равную 2 пикселям.
Видео лекция 04:07 мин.
Интерактивное задание
Создайте таблицу аналогичную той, что изображена на картинке.
Видео лекция 09:51 мин.
Интерактивное задание
Расположите синий квадрат в левом нижнем углу на расстоянии 10px снизу и 20px слева с помощью свойств bottom и left, указав ему абсолютное позиционирование.
Укажите красному квадрату position: relative и с помощью свойств top и left расположите его так, как указано на картинке:
Видео лекция 03:13 мин.
Элементы HTML-формы
Большинство элементов добавляется в форму с помощью элемента <input>. Назначение и внешний вид элемента <input> меняются в зависимости от значения атрибута type.
Элемент <textarea> (текстовая область)
Для создания больших текстовых полей применяется элемент <textarea>, который в отличие от других элементов формы не является пустым, а следовательно, для него должны быть указаны открывающий и закрывающий теги. Текст, вводимый по умолчанию, находится между открывающим и закрывающим тегами. Размеры поля устанавливаются с помощью атрибутов cols и rows.
cols — число столбцов видимого текста:
<textarea name="pole" cols="20">
rows — число строк видимого текста:
<textarea name="pole" cols="20" rows="15">
При этом, если пользователю потребуется ввести в текстовую область больше строк текста, чем указано с помощью атрибута rows, в текстовой области появится вертикальная прокрутка.
При разработке форм для новых проектов используйте правила CSS для установки ширины и высоты текстовой области <textarea>. Однако при просмотре исходного кода сайтов вы еще часто можете встретить атрибуты cols и rows.
При необходимости можно запретить пользователю изменять текст в текстовом поле, например, если поле используется для представления какого-нибудь договора. Такой запрет вводится с помощью атрибута readonly.
В следующем примере представлен вариант создания больших текстовых полей. Первое поле предназначено только для чтения, а во второе поле можно ввести текст:
Пример: Текстовая область (textarea)
Ознакомтесь с соглашеием:
Условия нашего соглашения…
Ваше мнение о этом соглашении:
Введите свой комментарий…
<form action="" method="POST">
<p>Ознакомьтесь с соглашеием:</p>
<textarea cols="24" rows="3" name="about" readonly>
Условия нашего соглашения…</textarea><br/>
<p>Ваше мнение о этом соглашении:</p>
<textarea name="comments" cols="24" rows="4">
Введите свой комментарий…</textarea>
</form>
Раскрывающийся список (select)
Элемент <select> создает на веб-странице раскрывающийся список (также называемый раскрывающимся или выпадающим меню), позволяющий выбрать одно значение из множества возможных.
Как и в рассмотренных других элементах формы, элементу <select> назначается уникальное имя, с помощью атрибута name. Элемент <select> работает в паре с элементом <option>, создающим меню. Элемент <option> задается для каждого пункта меню. Текст, расположенный между тегами <option> и </option>, будет выведен в окне браузера как пункт раскрывающегося списка.
Атрибут value используется в каждом элементе <option> для установки значения, которое будет отправлено на сервер вместе с именем выбранного элемента. Указав для элемента <option> атрибут selected, вы сделаете его значением по умолчанию для данного списка. При загрузке страницы такие элементы будут выделены. Если атрибут selected не установлен, то при загрузке страницы будет отображен первый вариант ответа из созданного списка. Если пользователь не выберет другой пункт списка, то на сервер будет отправлен пункт, отмеченный атрибутом selected по умолчанию:
Пример: Раскрывающийся список (select)
Выберите вариант
ПервыйВторойТретийЧетвертыйПятый<form action="" method="POST">
<p>Выберите вариант</p>
<select name="form_select">
<option value="Значение 1">Первый</option>
<option value="Значение 2">Второй</option>
<option selected="selected" value="Значение 3">Третий</option>
<option value="Значение 4">Четвертый</option>
<option value="Значение 5">Пятый</option>
</select>
</form>
Прокручиваемые списки
По умолчанию с помощью тега <select> создается раскрывающийся список, в котором изначально видно только одно значение. Для создания прокручиваемого списка укажите число видимых строк, введя соответствующее значение атрибута size. Если количество элементов списка превышает значение, указанное в атрибуте size, справа появляется полоса прокрутки. Несмотря на то, что атрибут size позволяет отобразить сразу несколько пунктов списка, посетитель может выбрать из списка по-прежнему только один пункт.
Чтобы посетитель мог выбрать из списка одновременно несколько элементов (с помощью клавиши Shift или Ctrl), нужно использовать атрибут multiple. Как и в случае с раскрывающимся списком, указав в элементе <option> атрибут selected, вы сделаете его значением по умолчанию. Если для тега <select> или для <option> установить уже известный вам атрибут disabled, то в первом случае становится отключенным весь список, а во втором — только отдельный пункт списка.
Пример прокручиваемого списка, в котором выбраны сразу несколько элементов:
Пример: Прокручиваемый список
<p>Выберите вариант</p>
<select name="form_select" size="5" multiple="multiple">
<option value="Значение 1">Первый вариант</option>
<option value="Значение 2">Второй вариант</option>
<option selected="selected" value="Значение 3">Третий вариант</option>
<option selected="selected"value="Значение 4">Четвертый вариант</option>
<option value="Значение 5">Пятый вариант</option>
<option value="Значение 6">Шестой вариант</option>
</select>
Группировка пунктов списка (optgroup)
Если в списке находится большое количество пунктов, то посетителю довольно сложно найти нужный пункт. В этом случае можно воспользоваться элементом <optgroup>, предназначенным для создания смысловых групп пунктов списка. Элементы <option> помещаются внутрь контейнера <optgroup>, а заголовок группы указывается в атрибуте label.
Пример группировки пунктов списка с заголовками:
Пример: Создание списка с заголовками
<p>Желаемая работа (можно выбрать несколько): </p>
<select name="job" size="8" multiple="multiple" >
<optgroup label="Журналистика">
<option value="isk">Искусство</option>
<option value="ecol">Экология</option>
<option value="tur">Туризм</option>
</optgroup>
<optgroup label="Программирование">
<option value="html">HTML5</option>
<option value="php">PHP</option>
<option value="del">Delphi</option>
</optgroup>
<optgroup label="Создание сайтов">
<option value="diz">Дизайн</option>
<option value="verst">Верстка</option>
</optgroup>
<optgroup label="Переводчик">
<option value="eng">Английский</option>
<option value="fr">Французский</option>
<option value="kit">Китайский</option>
</optgroup>
<optgroup label="Строительство">
<option value="zd">Здания</option>
<option value="most">Мосты</option>
<option value="road">Дороги</option>
</optgroup>
</select>
Элемент <buttоn>
В отличие от кнопок отправки данных и сброса, в самой кнопке Ьuttоn нет встроенных функций. Благодаря элементу можно сочетать на кнопке текст и изображение, располагая их внутри контейнера <button>.
В следующем примере на кнопке отображается содержимое элемента <button> — текст и изображение:
Пример: Использование кнопки <button>
<p>Добавить email в список:</p>
<input type="text" name="email" value="Ваш email">
<button>
<img src="images/add.gif" alt="add"> Добавить</button>
HTML5 Элемент <datalist>
Элемент <datalist> позволяют предоставить пользователю несколько вариантов на выбор, когда он начинает вводить значение в соответствующем поле. Но если ни один из них не подходит, пользователь может ввести собственный текст. Значение, заданное для атрибута list (planet), аналогично идентификатору id элемента <datalist>. Это позволяет ассоциировать <datalist> с соответствующим полем ввода:
Пример: Использование элемента <datalist>
<form action="">
<p>Выбор планеты: <input list="planet"></p>
<datalist>
<option value="Солнце">
<option value="Земля">
<option value="Меркурий">
<option value="Марс">
<option value="Венера">
</datalist>
</form>
Метки элементов формы (label)
У каждого элемента формы может быть своя пояснительная надпись, или метка, создаваемая при помощи элемента <label> и повышающая доступность, создавая четкие семантические связи между компонентами формы.
Использование элемента <label> при работе с переключателями и флажками — самый распространенный вариант, однако это не ограничение. С таким же успехом можно связать текст с любым элементом формы, и при щелчке кнопкой мыши на тексте связанный элемент автоматически берется в фокус.
Связывание текста с элементом формы осуществляется просто: присваиваете атрибуту for элемента <label> значение такое же, как значение атрибута id у элемента, с которым связан <label>. Соответствие значений атрибутов for и id связывает два элемента вместе, что позволяет пользователям нажать на <label> и передать фокус нужному полю формы:
<input type="checkbox" name="form_checkbox" value="1">
<label for="id_checkbox">Наша метка</label>
Использование элемента <label> для создания меток предпочтительнее обычного текста. В первую очередь из-за удобства для конечного пользователя, ведь при применении элемента <label> установить/снять флажок можно не только щелчком на поле флажка, но и на его метке — пояснительном тексте:
Пример: Использование элемента <label>
Элементы формы
Элемент | Описание |
---|---|
<form> | Устанавливает форму на веб-странице |
<input> | Создает различные элементы формы (текстовые поля, кнопки, переключатели и т.д.) в зависимости от значения атрибута type |
<textarea> | Создает многострочное текстовое поле |
<fieldset> | Группирует элементы формы. Может также содержать внутри себя элемент legend с условными обозначениями элементов формы, составляющих логическую группу |
<button> | Многофункциональная кнопка |
<label> | Устанавливает связь между определенной меткой и элементом формы (input, select, textarea) |
<legend> | Применяется для создания заголовка группы элементов формы, которая определяется с помощью тега fieldset |
<optgroup> | Представляет собой контейнер, внутри которо-го располагаются теги option, объединенные в одну группу |
<option> | Определяет отдельные пункты списка, созда-ваемого с помощью контейнера select |
<select> | Позволяет создать элемент интерфейса в виде раскрывающегося или прокручиваемого списка |
<datalist> | Позволяет предоставить раскрывающийся список с предложенными значениями для любого типа поля ввода |
Задачи
-
Многострочное текстовое поле
Создайте многострочное текстовое поле, присвойте ему имя name=»pole», а также установите запрет на ввод текста в данное поле пользователем.
Задача HTML: Реши сам »Многострочное текстовое поле:
HTML-код: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> <form action=""> <p>Многострочное текстовое поле:</p> ... </form> </body>
</html>
-
Подсказка в поле ввода текста
Дополните HTML-код, чтобы в результате получилась форма, приведенная в задании. Когда пользователь начинает вводить значение в поле ввода, ему предоставляется несколько вариантов на выбор: «Среднее», »Среднее специальное» и «Высшее».
Задача HTML: Реши сам »HTML-код: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> <form action=""> <p>Ваше образование: <input type="text" list="teach" name="education"> ... </form> </body>
</html>
-
Ниспадающее меню
В задании представлена форма имеющая вид ниспадающего меню с перечнем профессий: «Учитель», «Слecapь», «Дизайнер», «Водитель», «Aктep».
Задача HTML: Реши сам »Дополните HTML-код, чтобы в результате получилась такая же форма. Присвойте имя списку name=»profession», а значения пунктам списка: «Теасher», «Technic», «Designer», «Driver» и «Actor».
Ваша профессия? УчительСлecapьДизайнерВодительAктep
HTML-код: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> <form action=""> <p>Ваша профессия?</p> ... </form> </body>
</html>
-
Многофункциональная кнопка
Доработайте HTML-код так, чтобы в результате получилась кнопка с изображением: «Star.png» и надписью — «Звезда».
Задача HTML: Реши сам »Звезда
HTML-код: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> <button> Звезда </button> </body>
</html>
Выпадающее меню на HTML / CSS без использования JavaScript
Очень часто необходимо сделать на сайте выпадающее при наведении меню. Большинство веб-девелоперов используют для этого JavaScript / Jquery. Это конечно хорошо, но такого роди задачи легко решаются с помощью HTML / CSS.
Вот простой пример HTML-кода меню:
<ul>
<li><a href=#>Menu 1</a>
<ul>
<li><a href=#>Sudmenu 1</a></li>
<li><a href=#>Sudmenu 1</a></li>
<li><a href=#>Sudmenu 1</a></li>
</ul>
</li>
<li><a href=#>Menu 2</a>
<ul>
<li><a href=#>Sudmenu 2</a></li>
<li><a href=#>Sudmenu 2</a></li>
<li><a href=#>Sudmenu 2</a></li>
</ul>
</li>
<li><a href=#>Menu 3</a>
<ul>
<li><a href=#>Sudmenu 3</a></li>
<li><a href=#>Sudmenu 3</a></li>
<li><a href=#>Sudmenu 3</a></li>
</ul>
</li>
<li><a href=#>Menu 4</a>
<ul>
<li><a href=#>Sudmenu 4</a></li>
<li><a href=#>Sudmenu 4</a></li>
<li><a href=#>Sudmenu 4</a></li>
</ul>
</li>
<li><a href=#>Menu 5</a>
<ul>
<li><a href=#>Sudmenu 5</a></li>
<li><a href=#>Sudmenu 5</a></li>
<li><a href=#>Sudmenu 5</a></li>
</ul>
</li>
</ul>
Для построения меню был использован список с классом menu. Подменю сделаны списками с классом submenu.
Теперь давайте как-нибудь минимально оформим наше меню стилями:
body {
font: 14px 'Verdana';
margin: 0;
padding: 0;
}
ul {
display: block;
margin: 0;
padding: 0;
list-style: none;
}
ul:after {
display: block;
content: ' ';
clear: both;
float: none;
}
ul.menu > li {
float: left;
position: relative;
}
ul.menu > li > a {
display: block;
padding: 10px;
color: white;
background-color: red;
text-decoration: none;
}
ul.menu > li > a:hover {
background-color: black;
}
ul.submenu {
display: none;
position: absolute;
width: 120px;
top: 37px;
left: 0;
background-color: white;
border: 1px solid red;
}
ul.submenu > li {
display: block;
}
ul.submenu > li > a {
display: block;
padding: 10px;
color: white;
background-color: red;
text-decoration: none;
}
ul.submenu > li > a:hover {
text-decoration: underline;
}
Для класса submenu было установлено свойство ‘display: none’. Это позволило на спрятать наше выпадающее меню.
Теперь добавим в CSS такой код:
ul.menu > li:hover > ul.submenu {
display: block;
}
Это позволит показывать подменю при наведении.
Вот и все. Просто и легко без JavaScript.
Стиль выпадающего списка по умолчанию | CSS-уловки
Всегда были большие различия в том, как разные браузеры обрабатывают стили форм. Вероятно, всегда будет — потому что варианты дизайна пользовательского интерфейса не описаны в спецификациях. Создатели браузеров, возможно, рассматривают это как один из способов немного дифференцировать пользовательский опыт. Выбираемые (раскрывающиеся) меню выглядят особенно странно.
Когда я говорю раскрывающееся меню, я имею в виду:
<выбрать>
Оставленный полностью в покое CSS, он будет одинаково отображаться во всех браузерах. На компьютерах Mac — Lucida Grande 11 пикселей.
Выбор стиля немного изменился с момента написания этой статьи. В середине 2020 года у нас все еще нет отличного контроля над стилем, но вы можете довольно хорошо стилизовать внешний вид с помощью этой техники.
Что делать, если вы измените семейство шрифтов?
выбрать {
семейство шрифтов: Cursive;
}
браузеры WebKit (Safari, Chrome) проигнорируют вас. Firefox, Opera и IE учтут ваши изменения. Семейство шрифтов
не будет каскадно включаться в выделение, вы должны явно объявить его для них.
Что делать, если изменить размер шрифта?
выбрать {
размер шрифта: 32 пикселя;
}
Это забавный. В WebKit, если размер шрифта составляет от 0 до 10 пикселей, он отображает размер шрифта как 10 пикселей. От 11 пикселей до 15 пикселей он будет отображаться как 11 пикселей, а 16 пикселей или больше он будет отображать его как (подождите) 14 пикселей. Это поведение похоже на обработку входных данных поиска.
Firefox, Opera и IE учтут ваши изменения, но опять же, только если они явно объявлены при выборе, они не будут каскадными.
Слева — размер шрифта, который царил в webkit. Справа: Firefox точно соответствует тому, что ему дано.Можете ли вы заставить WebKit уважать ваши изменения?
Kinda. Вы можете установить границу : 0;
на выбранных элементах, и это будет выглядеть как какая-то дрянная версия раскрывающегося списка, но все же будет иметь некоторый пользовательский интерфейс. Это также позволит вам выбрать размер и стиль шрифта.
Вы также можете установить -webkit-appearance: none;
, и вы получите то, что выглядит как поле ввода с закругленными углами, но по-прежнему имеет взаимодействие с выбором (щелкните, чтобы открыть меню, команды с клавиатуры и т. Д.).Таким образом, он также будет уважать ваш выбор шрифта.
Я бы сказал, что внешний вид — ваш лучший выбор для полностью настраиваемых раскрывающихся списков, но это будет WebKit только потому, что в то время как -moz-appearance: none;
работает, он удаляет не весь хром, а только некоторые. Opera вообще не поддерживает
внешний вид
.
А как насчет самого раскрывающегося списка?
То же самое, что показывает выбор при активации. Насколько мне известно, стилизовать их ни в одном браузере невозможно.Даже жирным или курсивом. Самое близкое к стилю, которое вы можете получить, — это сгруппировать их с помощью . Вероятно, это в основном элемент пользовательского интерфейса, но это также может быть связано с безопасностью. Вы же не хотите, чтобы люди делали сложные вещи со шрифтами, из-за которых неясно, какой вариант выбран.
Что, если вам нужен полный контроль над дизайном?
Во-первых, попробуйте все возможное, чтобы в этом не было необходимости. Элементы формы по умолчанию знакомы и хорошо работают. Настраивать раскрывающееся меню, соответствующее шрифту и цветам вашего бренда, обычно не требуется и, скорее всего, в лучшем случае неприятно, а в худшем — плохой UX.
Если вы решите, что настроить раскрывающийся список — это абсолютно хорошая идея, вам следует использовать JavaScript, чтобы:
- Доступно скрыть исходный выбор.
- Перестройте выделение с помощью настраиваемой разметки (возможно, списка определений), которую вы задаете так, как хотите.
- Репликация всех функций, выбранных по умолчанию, которые включают: события клавиатуры, такие как клавиши со стрелками вверх и вниз и возврат к выбору, прокрутка длинных списков, открытие меню вверх, когда выбор находится напротив нижней части экрана, и многие другие .
- Для мобильных устройств: запускать открытие собственного меню выбора, потому что эту функцию практически невозможно воспроизвести. Например, флип-колесо iOS.
- Возможно, вы захотите рассмотреть стиль «перехода по ссылкам» и для рабочего стола. По умолчанию выберите настраиваемый стиль, но при нажатии на него открывается собственное раскрывающееся меню (на месте). Когда вы выбираете параметр, он снова отображает пользовательский стиль с показанным выбором.
Это много работы и легко облажаться, так что будьте осторожны.В этом руководстве рассматриваются некоторые из этих проблем. Вот ручка с некоторыми тестами из этой статьи.
раскрывающихся списков · Bootstrap
Переключайте контекстные наложения для отображения списков ссылок и многого другого с помощью плагина раскрывающегося списка Bootstrap.
Обзор
Выпадающие списки — это переключаемые контекстные наложения для отображения списков ссылок и многого другого. Они сделаны интерактивными с помощью включенного плагина JavaScript для выпадающего меню Bootstrap. Они переключаются щелчком, а не наведением курсора; это намеренное дизайнерское решение.
Выпадающие списки созданы на основе сторонней библиотеки Popper.js, которая обеспечивает динамическое позиционирование и обнаружение области просмотра. Обязательно включите popper.min.js перед загрузочным JavaScript или используйте bootstrap.bundle.min.js
/ bootstrap.bundle.js
, который содержит Popper.js. Popper.js не используется для размещения раскрывающихся списков на панелях навигации, хотя динамическое позиционирование не требуется.
Если вы создаете наш JavaScript из исходного кода, для него требуется util.js
.
Доступность
Стандарт WAI ARIA определяет фактический виджет role = "menu"
, но он специфичен для меню, подобного приложению, которое запускает действия или функции. ARIA Меню может содержать только пункты меню, пункты меню флажков, пункты меню радиокнопок, группы радиокнопок и подменю.
Bootstrap имеют общий характер и применимы к различным ситуациям и структурам разметки. Например, можно создавать раскрывающиеся списки, содержащие дополнительные входные данные и элементы управления формой, такие как поля поиска или формы входа. По этой причине Bootstrap не ожидает (и не добавляет автоматически) какие-либо атрибуты role
и aria-
, необходимые для истинных меню ARIA . Авторы должны сами включить эти более конкретные атрибуты.
Однако Bootstrap добавляет встроенную поддержку для большинства стандартных взаимодействий с меню клавиатуры, таких как возможность перемещаться по отдельным элементам .dropdown-item
с помощью клавиш курсора и закрывать меню с помощью клавиши ESC .
Примеры
Оберните переключатель раскрывающегося списка (ваша кнопка или ссылка) и раскрывающееся меню в .dropdown
или другой элемент, который объявляет position: relative;
.Выпадающие списки можно запускать из элементов
или
, чтобы лучше соответствовать вашим потенциальным потребностям.
Одинарная кнопка
Любой отдельный .btn
можно превратить в раскрывающийся список с некоторыми изменениями разметки. Вот как вы можете заставить их работать с элементами
:
Самое приятное то, что вы можете сделать это и с любым вариантом кнопок:
Кнопка разделения
Аналогичным образом создайте раскрывающиеся списки с разделенными кнопками с практически такой же разметкой, что и раскрывающиеся списки с одной кнопкой, но с добавлением .
для правильного интервала вокруг выпадающего курсора. dropdown-toggle-split
Мы используем этот дополнительный класс, чтобы уменьшить горизонтальное заполнение
по обе стороны от каретки на 25% и удалить margin-left
, добавляемое для обычных раскрывающихся списков кнопок. Эти дополнительные изменения удерживают курсор в центре разделенной кнопки и обеспечивают область нажатия более подходящего размера рядом с основной кнопкой.
Калибр
Выпадающие меню кнопок работают с кнопками всех размеров, включая кнопки по умолчанию и кнопки с разделенным раскрывающимся списком.
...
...
...
.
..
Проезд
Выпадение
Запуск раскрывающихся меню над элементами путем добавления .dropup
к родительскому элементу.
Dropright
Выпадающее меню триггера справа от элементов путем добавления .
родительскому элементу. dropright
Капля
Триггер в раскрывающемся меню слева от элементов путем добавления .dropleft
родительскому элементу.
Раньше содержимое выпадающего меню содержало ссылок, но в версии 4 это уже не так. Теперь вы можете опционально использовать
элементов в раскрывающихся списках вместо
s.
Вы также можете создавать неинтерактивные раскрывающиеся элементы с помощью .выпадающий текст
. Не стесняйтесь изменять стиль с помощью пользовательских CSS или текстовых утилит.
Активный
Добавьте .active
к элементам в раскрывающемся списке, чтобы сделать их активными .
Отключено
Добавьте .отключено
для элементов в раскрывающемся списке до , пометит их как отключенные .
По умолчанию раскрывающееся меню автоматически располагается на 100% сверху и слева от своего родителя. Добавьте .dropdown-menu-right
к .dropdown-menu
, чтобы выровнять раскрывающееся меню по правому краю.
Внимание! Выпадающие списки размещаются благодаря Popper.js (кроме случаев, когда они содержатся в навигационной панели).
Адаптивное выравнивание
Если вы хотите использовать адаптивное выравнивание, отключите динамическое позиционирование, добавив атрибут data-display = "static"
, и используйте классы адаптивных вариантов.
Чтобы выровнять вправо раскрывающееся меню с заданной точкой останова или больше, добавьте .dropdown-menu {-sm | -md | -lg | -xl} -right
.
Чтобы выровнять влево раскрывающегося меню с заданной точкой останова или больше, добавьте .dropdown-menu-right
и . dropdown-menu {-sm | -md | -lg | -xl} -left
.
Обратите внимание, что вам не нужно добавлять атрибут data-display = "static"
к раскрывающимся кнопкам на панели навигации, начиная с Popper. js не используется в навигационных панелях.
Добавьте заголовок для обозначения разделов действий в любом раскрывающемся меню.
Разделители
Отдельные группы связанных пунктов меню с разделителем.
Текст
Поместите произвольный текст в раскрывающееся меню с текстом и используйте служебные программы для определения интервалов.Обратите внимание, что вам, вероятно, потребуются дополнительные стили размера, чтобы ограничить ширину меню.
Пример текста, который свободно перемещается в раскрывающемся меню.
И это еще один пример текста.
Формы
Поместите форму в раскрывающееся меню или превратите ее в раскрывающееся меню и используйте утилиты полей или заполнения, чтобы дать ей необходимое отрицательное пространство.
<форма>
Параметры раскрывающегося списка
Используйте data-offset
или data-reference
, чтобы изменить расположение раскрывающегося списка.
Использование
С помощью атрибутов данных или JavaScript плагин раскрывающегося списка переключает скрытый контент (раскрывающиеся меню) путем переключения .
в родительском элементе списка. Атрибут показать класс
data-toggle = "dropdown"
используется для закрытия раскрывающихся меню на уровне приложения, поэтому рекомендуется всегда использовать его.
На устройствах с сенсорным экраном открытие раскрывающегося списка добавляет пустые ( $ .noop
) обработчики mouseover
к непосредственным потомкам элемента
. Этот, по общему признанию, уродливый хакер необходим для обхода причуды в делегировании событий iOS, которая в противном случае помешала бы нажатию в любом месте за пределами раскрывающегося списка запускать код, закрывающий раскрывающийся список.После закрытия раскрывающегося списка эти дополнительные пустые обработчики mouseover
удаляются.
Через атрибуты данных
Добавьте data-toggle = "dropdown"
к ссылке или кнопке, чтобы переключить раскрывающийся список.
.
..
Через JavaScript
Вызов раскрывающихся списков через JavaScript:
$ ('.dropdown-toggle '). dropdown ()
data-toggle = "dropdown"
по-прежнему требуется
Независимо от того, вызываете ли вы раскрывающийся список с помощью JavaScript или вместо этого используете data-api, data-toggle = "dropdown"
всегда должен присутствовать в элементе триггера раскрывающегося списка.
Опции
Параметры можно передавать через атрибуты данных или JavaScript. Для атрибутов данных добавьте имя параметра к data-
, как в data-offset = ""
.
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
смещение | Номер| строка | функция | 0 | Смещение раскрывающегося списка относительно цели.![]() |
флип | логический | правда | Разрешить разворачивание раскрывающегося списка в случае перекрытия ссылочного элемента.Для получения дополнительной информации обратитесь к документации Popper.js. |
граница | строка | элемент | ‘scrollParent’ | Граница ограничения переполнения раскрывающегося меню. Принимает значения 'viewport' , 'window' , 'scrollParent' или ссылку HTMLElement (только JavaScript). Для получения дополнительной информации см. Документацию PreventOverflow Popper.js. |
ссылка | строка | элемент | ‘переключатель’ | Ссылочный элемент раскрывающегося меню.Принимает значения 'toggle' , 'parent' или ссылку HTMLElement.![]() |
дисплей | строка | динамический | По умолчанию мы используем Popper.js для динамического позиционирования. Отключите это с помощью static . |
Обратите внимание, когда для границы
установлено любое значение, кроме 'scrollParent'
, к применяется стиль
. position: static
.выпадающий контейнер
Методы
Метод | Описание |
---|---|
$ (). Раскрывающийся список ('переключение') |
Переключает раскрывающееся меню данной панели навигации или навигации с вкладками. |
$ (). Раскрывающийся список ('показать') |
Показывает раскрывающееся меню данной панели навигации или навигации с вкладками.![]() |
$ (). Раскрывающийся список ('скрыть') |
Скрывает раскрывающееся меню данной панели навигации или навигации с вкладками. |
$ (). Раскрывающийся список («обновление») |
Обновляет положение раскрывающегося списка элемента. |
$ (). Раскрывающийся список ('удалить') |
Удаляет раскрывающийся список элемента. |
События
Все события dropdown запускаются в родительском элементе .dropdown-menu
и имеют свойство relatedTarget
, значение которого является переключаемым элементом привязки.
скрыть.События bs.dropdown
и hidden.bs.dropdown
имеют свойство clickEvent
(только при исходном типе события click
), которое содержит объект события для события щелчка.
Событие | Описание |
---|---|
показать. |
Это событие запускается немедленно при вызове метода экземпляра шоу. | Показано
.bs.раскрывающийся список |
Это событие вызывается, когда раскрывающийся список становится видимым для пользователя (ожидает завершения переходов CSS). |
hide.bs. выпадающий |
Это событие запускается сразу после вызова метода экземпляра hide. |
hidden.bs. Раскрывающийся список |
Это событие вызывается, когда раскрывающийся список перестает быть скрытым от пользователя (будет ожидать завершения переходов CSS). |
$ ('# myDropdown'). On ('show.bs.dropdown', function () {
// сделай что-нибудь…
})
Показывать скрывать раскрывающееся меню при наведении курсора мыши с помощью CSS
Тема: HTML / CSSPrev | След.
Ответ: Используйте CSS
: hover
псевдокласс
Если вы просто хотите показывать и скрывать раскрывающееся меню при наведении курсора мыши, вам не нужен JavaScript.Вы можете сделать это, просто используя свойство CSS display
и псевдокласс : hover
.
В следующем примере показано, как реализовать простое раскрывающееся меню с помощью CSS.
Показать скрыть раскрывающийся список с помощью CSS
<стиль>
ul {
отступ: 0;
стиль списка: нет;
фон: # f2f2f2;
}
ul li {
дисплей: встроенный блок;
положение: относительное;
высота строки: 21 пикс;
выравнивание текста: слева;
}
ul li a {
дисплей: блок;
отступ: 8px 25px;
цвет: # 333;
текстовое оформление: нет;
}
ul li a: hover {
цвет: #fff;
фон: # 939393;
}
ul li ul.падать {
минимальная ширина: 100%; / * Устанавливаем ширину раскрывающегося списка * /
фон: # f2f2f2;
дисплей: нет;
позиция: абсолютная;
z-индекс: 999;
слева: 0;
}
ul li: hover ul.dropdown {
дисплей: блок; / * Показать раскрывающийся список * /
}
ul li ul.dropdown li {
дисплей: блок;
}
Связанные вопросы и ответы
Вот еще несколько часто задаваемых вопросов по этой теме:
Разгадывая тайны раскрывающихся списков на чистом CSS — Dotted Squirrel
Как это работает.Почему это работает. С репо кода.
Выпадающие меню неизбежны, когда дело доходит до разработки интерфейса. В какой-то момент вы столкнетесь с ними.
Хотя большинство фреймворков CSS делают это автоматически, иногда вам просто нужно сделать это самостоятельно.
Но вот вопрос — как?
Для тех, кто плохо знаком с CSS или просто имеет базовые знания о нем, это может показаться ловушкой. Вы можете плавать, вы можете встроить отображение, вы можете делать множество вещей, но вы просто не можете заставить вещи выпадать правильно.
Вот краткое руководство о том, как все это работает и почему работает, с примерами кода.
Или, если вы сразу после последнего рецепта кода, вы можете просто прокрутить вниз и взять его там.
Вот краткая навигация по всей статье:
Основные концепции, которые необходимо понять в первую очередь
The Actual Tutorial
Расшифровка относительного и абсолютного позиционирования
Относительное и абсолютное позиционирование в CSS — одна из тех раздражающих концепций, с которыми часто сталкиваются начинающие разработчики интерфейса.
Мы все знаем, что он может перемещать вещи, но как это работает?
Давайте начнем с относительного
и начнем с кода ниже:
Здесь текст
Здесь снова текст
Когда он отображается, граничная область каждого тега выглядит примерно так:
Большинство элементов по умолчанию являются блоками, что означает, что они растягиваются до края экрана. Вот почему теги
простираются до края вашего браузера.
Когда мы применяем относительное позиционирование к элементу, любые свойства координат, такие как верхний
, левый
, правый
и нижний
, будут перемещать этот элемент туда, где он в настоящее время находится на экране.
Итак, допустим, мы хотим применить относительный
к нашим тегам p
и переместить его вправо и вниз. Мы бы написали примерно так:
p {положение: относительное; слева: 50 пикселей; верх: 50 пикселей; }
Это приведет к следующему результату:
Блоки p
перемещаются соответственно (50 пикселей слева и 50 пикселей сверху).Относительность его исходной точки зависит от экрана.
Следует отметить, что когда вы используете относительный, он не перемещает ваши элементы из естественного потока блоков. Это означает, что если у вас есть контейнер div
вокруг тегов p
и применяется относительно него, это не приведет к сворачиванию div
.
В конечном итоге это приведет к перемещению устройства в целом, как есть. Он относительно исходного положения и будет смещать его в зависимости от того, куда вы хотите его направить.
Например, ваш HTML-код выглядит примерно так:
Здесь текст
Здесь снова текст
А ваш CSS выглядит примерно так:
div {положение: относительное; слева: 50 пикселей; верх: 50 пикселей; }
Ваш визуальный результат будет примерно таким:
Так где же здесь абсолютное позиционирование?
Абсолютное позиционирование наиболее эффективно, когда оно используется в дочернем элементе.Если вы используете его для родительского элемента, его координаты привязаны к вашему окну.
Например, представьте, что у вас есть следующий HTML-код:
Здесь текст
Здесь текст
Здесь снова текст
Здесь текст
Вот как будет выглядеть поток в нормальных условиях:
Если бы вы применили position: absolute
к вашему div
, а затем переместили его, исходные координаты не были бы основаны на угловой точке вашего текущего положения, скорее, они были бы основаны на верхнем левом углу вашего окна.
В дополнение к этому, весь блок div
будет перемещен из вашего естественного потока блоков. Он будет располагаться поверх всего остального, как если бы он существовал на собственном уровне. Ширина также уменьшается до ширины самого большого элемента внутри (который также схлопнулся).
В итоге получается так:
Итак, если вы начнете перемещать его, и ваш код css будет выглядеть примерно так:
div {позиция: абсолютная; верх: 0; слева: 10 пикселей; }
Вместо размещения div
на основе его текущего положения, начальные координаты будут начинаться в верхнем левом углу и идти оттуда.
В итоге это выглядит примерно так:
Так как же работает комбинация относительного и абсолютного позиционирования CSS?
Ну, если подумать, relative сохраняет исходное позиционирование статическим, не вынимая его из потока блоков. Absolute поднимает элемент со страницы и перемещает его в соответствии с исходными координатами контейнера.
Когда нет контейнера, окно эквивалентно родительскому контейнеру.
Итак, если у вас есть комбинация CSS, которая выглядит примерно так:
div {позиция: относительная;}
div p {позиция: абсолютная; верх: 50 пикселей; }
У вас будет что-то вроде этого:
Исходный контейнер div
остается на месте, в то время как теги p
накладываются друг на друга, потому что они были перемещены из обычного потока в свою собственную плоскость и помещены с левым верхним углом div
в качестве начального точка.
Высота блока div
также уменьшается. Почему?
Потому что технически в нем ничего не сидит. Absolute удалил теги p
из обычного потока, поэтому в документе создается впечатление, что внутри ничего нет — отсюда и коллапс. Чтобы обойти это, нужно установить ширину и высоту для div
, если они вам действительно нужны для заполнения пространства для фоновых дисплеев и т. Д.
Итак, это одна из концепций для понимания того, как работают раскрывающиеся меню на чистом CSS.Перейдем к следующему.
Блоки, рядные, рядные
Каждый элемент HTML в качестве отображаемого значения по умолчанию, и это значение часто составляет блок
.
По умолчанию есть несколько встроенных элементов
. Вот краткий список, который по умолчанию.
блочный элемент по умолчанию
<адрес> <статья>