Как сделать открывающееся меню для телефонной версии сайта на JavaScript?
Меню это неотъемлемая часть любого сайта. Оно выполняет навигационную функцию и помогает пользователю ориентироваться на сайте. На нашем любимом Хабре оно так же есть и на многих других сайтах. Frontend разработчики знают, что после того, как они сделают страницу для сайта, им нужно протестировать свою страницу на других устройствах: Десктоп, планшет, телефон. Это очень важно, так как при разных расширениях элементы сайта могут вести себя по разному и ломать вёрстку. Очень часто из за маленького расширения экрана на телефоне приходиться делать меню, которые открываются по нажатию на кнопку.
Это очень просто сделать при помощи JavaScript. Для начала нужно написать разметку кнопки и самого меню. Для кнопки можно сделать класс «menu__button», а для меню их сразу два: «menu» и «menu-open». Второй класс будет состоянием меню, которое будет заставлять его быть открытым.
Дальше нужно добавить стили CSS. Стиль для контейнера меню, в нём можно задать свойство display, без него элементы неправильно выстроятся. Настраиваем нашу кнопку, ширину, высоту, границы и конечно же картинку для неё. Настраиваем само меню, тоже делаем размер и границы.
Так же создаём стили для двух состояний нашего меню, открытого и закрытого. В стиле для открытого меню пишем «display: inline-block», у вас может быть другое состояние, главное чтобы меню отображалось корректно.
В стиле для закрытого состояния просто нужно написать «display: none», тогда элемент будет скрыт.
Дальше можете дописать какие-либо стили для других элементов меню по вашему желанию, ну или если вы делаете вёрстку на заказ, то по желанию заказчика.
Теперь нужно сделать так, чтобы кнопка открывала и закрывала наше меню. Пишем строчку, которая проверяет, загружено ли DOM дерево, ну или же разметка.
Дальше ищем нашу кнопку по классу и создаём функцию «menubut», которая будет применяться для всех объектов с этим классом(без этого можно только с элементами по id).
В нашей функции «menubut» проверяем, была ли нажата кнопка, если да, то будет выполняться ещё одна функция.
Ищем наше меню и выполняем функцию «menuopen», которая будет менять класс «menu-open» на «menu-close» и наоборот.
Готово. Теперь у нас есть меню и кнопка. На JavaScript мы написали простой скрипт, который путём изменения классов элемента открывает и закрывает наше меню. Можно сделать гораздо сложнее открытие меню, можно сделать так, чтобы оно выезжало, медленно появлялось, увеличивалось и уменьшалось, Много разных эффектов можно применить к меню
Как поменять меню в телефоне
1. Возьмите телефон в руки. Если у вас сохранилась инструкция, то лучше прочесть её. Также можете найти и прочесть инструкцию в интернете. Если вы нигде инструкцию не обнаружили ( что маловероятно), тогда придется делать все вручную.
2. Первым делом откройте меню своего телефона. Найдите в нем пункт «Настройки» (возможно он будет называться «Параметры») и выберите его. Затем зайдите в пункт «Дисплей». Найдите в нем строку «Тип меню» и выберите понравившийся вам вид.
3. Однако, такой способ смены меню доступен не в каждом телефоне. Если вы хотите, чтобы ваше меню выглядело как-то иначе, но ваш аппарат не позволяет сменить его вышеописанным образом, то не отчаивайтесь. Варианты еще есть. Снова зайдите в «Параметры» телефона. Найдите пункт меню «Темы». Поочередно устанавливаете темы до тех пор, пока не найдете ту, какая вам нравится. Если вас не устроила ни одна тема, имеющаяся в вашем телефоне, то можно установить другие, скаченные из интернета.
4. Для того, чтобы скачать тему из сети, наберите в поисковике «Темы для ( ваша модель телефона)». Выберите подходящий сайт, найдите понравившуюся вам тему. Скачайте файл, который вам будет предложен. Переместите его в телефон и нажмите кнопку «Установить тему». Вот и все, тема установлена на ваш сотовый аппарат.
Меню
Android поддерживает несколько типов меню. Первый — на телефоне есть отдельная кнопка Menu (в старых телефонах), нажатие которой вызывает меню. В новых устройствах отдельную кнопку убрали, заменив на значок меню в виде трёх точек в вертикальной ориентации. Второй тип — контекстное меню, которое появляется при нажатии и удерживания пальца на экране в нужном месте (также можно нажать и удерживать центральную кнопку на телефоне). Контекстное меню в свою очередь может иметь подменю. Сегодня мы познакомимся с первым типом меню. В данной статье будет рассматриваться работа с меню на новых устройствах под управлением Android 4.0 и выше.
В шаблоне Empty Activity нет меню, поэтому мы создадим его сами. Это поможет вам понять принцип работы и получить общее представление о проекте. Запоминать названия классов, методов и код для обработки выбора пунктов меню необязательно. В других шаблонах меню будет встроено и вы можете сразу использовать его.
Создайте новый проект на основе Empty Activity и запустите его. Никакого меню пока нет.
Создадим несколько строковых ресурсов в файле res/values/strings.xml, которые будут отвечать за пункты меню:
Settings Кот Кошка Котёнок
Теперь создайте новую папку menu в папке res (правый щелчок мыши на папке res, | New | Directory). Далее создайте в созданной папке файл menu_main.xml — имя указывает, что меню относится к основной активности MainActivity (правый щелчок мыши на папке menu | New | Menu Resource File). Если вы будете создавать приложение с несколькими экранами, то у каждой активности будет отдельное меню со своими настройками. Пока откроем файл menu_main.xml и добавим в полученный шаблон свой код:
Откроем файл MainActivity. Сейчас в нём только один метод onCreate(). Добавим новый метод onCreateOptionsMenu(). Именно данный метод отвечает за появление меню у активности. Сразу после метода onCreate() начинайте вводить первые символы метода и дальше студия сама покажет список подходящих методов.
Найдите нужный метод и заготовка будет создана автоматически.
override fun onCreateOptionsMenu(menu: Menu?): Boolean
Добавляем в заготовку метод, который берёт данные из ресурсов меню и преобразует их в пункты меню на экране.
override fun onCreateOptionsMenu(menu: Menu?): Boolean
В методе inflate() вы указываете ресурс меню (R.menu.menu_main) и объект класса Menu.
По английски «inflate» переводится как надувать, по замыслу разработчиков Android, мы как бы надуваем данными объект, например, меню.
Ваш браузер устарел. Видео с котом не увидите
По другой версии слово «inflate» происходит от словосочетания in flat — в квартиру. Существует старинная традиция запускать в квартиру первым кота, который исследует все закоулки дома и заявляет о своём согласии жить в нём. Так и мы запускаем данные из XML-файла в объект MenuInflater.
Запустите проект. Теперь в правой части заголовка вы увидите значок из трёх точек, выстроенных в вертикальную линию. Нажмите на значок, чтобы увидеть пункт меню Settings.
Как не трудно догадаться, элемент item отвечает за отдельный пункт меню. Добавим ещё три пункта по такому же принципу, меняя только идентификатор и текст для меню:
Запустите проект и попробуйте снова вызвать меню. Вы увидите три новых пункта.
Параметры id и title не нуждаются в объяснениях. Параметр orderInCategory позволяет задать свой порядок вывода пунктов меню. Предположим вы создали пять пунктов меню, но пока не определились с порядком их вывода на экране. Чтобы не перемещать постоянно целые блоки кода для пунктов меню в нужном порядке, можно воспользоваться данным параметром.
И, наконец, важный атрибут app:showAsAction определяет поведение меню в ActionBar. Значение never означает, что элемент меню не должен выводиться в заголовке, а только в всплывающем меню, т.е. находиться за тремя точками. Если вы установите значение always, то пункт Settings сразу появится в заголовке вашего приложения. Также доступны значения ifRooms, withText и collapseActionView. Попробуйте самостоятельно. Например, ifRoom выводит пункт меню, если позволяет место. Если пунктов будет много, то они будут только мешаться. Как правило, в таком варианте выводят очень короткое слово или значок для частых операций, чтобы избежать лишнего щелчка на три точки.
Обратите внимание на атрибут app:showAsAction, который относится к пространству имён xmlns:app=»http://schemas.android.com/apk/res-auto». Было время, когда такого пространства имён не существовало и в проектах использовался атрибут android:showAsAction из стандартного пространства имён. Если студия будет ругаться на ошибку, то отредактируйте код.
Пока пункты меню не выполняют полезной работы. Любое нажатие на пункт просто закрывает меню без видимых последствий. Мы ещё не написали код для обработки нажатий.
Выбор пунктов меню
Мы научились создавать меню. Но пока оно бесполезно, так как пункты меню никак не реагируют на наши нажатия. Для обработки нажатий пунктов меню служит другой метод onOptionsItemSelected(). Добавим метод по такому же принципу, как для предыдущего примера. Получим заготовку.
override fun onOptionsItemSelected(item: MenuItem): Boolean
Параметр item отвечает за пункт меню. Вам следует получить идентификатор меню через метод getItemId() и указать для него код (в Kotlin вместо метода используется свойство itemId). Так как обычно меню состоит из нескольких пунктов, то удобно использовать конструкцию when. Для вывода информации воспользуемся текстовой меткой. Добавьте на экран активности компонент TextView. Можете использовать имеющийся TextView с надписью «Hello World!», только присвойте ему идентификатор.
Добавим код в заготовку для выбранного пункта меню:
override fun onOptionsItemSelected(item: MenuItem): Boolean < when (item.itemId) < R.id.action_cat1 -> < textView.text = "Вы выбрали кота!" return true >R.id.action_cat2 -> < textView.text = "Вы выбрали кошку!" return true >R.id.action_cat3 -> < textView.text = "Вы выбрали котёнка!" return true >> return super.onOptionsItemSelected(item) >
Запустите приложение, вызовите меню и выберите любой пункт меню. В текстовом поле должно появиться сообщение.
Переключатели
Внешний вид пунктов меню можно изменить на вид с переключателями. Для этого нужно добавить элемент group с атрибутом android:checkableBehavior=»single»:
Большого смысла в этом режиме я не вижу. И рассматривать его не будем.
Режим Design
В Android Studio 2.2 добавили графический режим построения меню, которых похож на панель инструментов для добавления новых компонентов на экран. У меню панель состоит из четырёх элементов: Menu Item, Search Item, Menu, Group.
Принцип тот же, выбираете нужный элемент и перетаскиваете его на экран в область меню. Если вы изучили ручное создание меню, то данный способ не вызовет у вас затруднений. С его помощью можно быстро набросать структуру меню, а затем подправить вручную.
Итак, вы получили базовые навыки работы с меню, достаточных для большинства случаев. Если хотите узнать больше, то почитайте дополнительную информацию о меню в разделе Теория.
Пример на Java
Код на Java не сильно отличается. Создание элементов меню на XML остаётся без изменений. Осталось только написать кода в классе активности.
Выберите в студии меню Code | Override Methods. и в следующим окне начинайте вводить название метода по первым буквам. Можно вводить по первым заглавным буквам, т.е. ocom (onCreateOptionsMenu), чтобы быстро найти нужную строку. Нажимаем кнопку OK и получаем заготовку.
@Override public boolean onCreateOptionsMenu(Menu menu)
Добавляем в заготовку метод, который берёт данные из ресурсов меню и преобразует их в пункты меню на экране.
@Override public boolean onCreateOptionsMenu(Menu menu)
@Override public boolean onOptionsItemSelected(MenuItem item)
Добавим код в заготовку для выбранного пункта меню:
@Override public boolean onOptionsItemSelected(MenuItem item) < // получим идентификатор выбранного пункта меню int TextView infoTextView = findViewById(R.id.textView); // Операции для выбранного пункта меню switch (id) < case R.id.action_cat1: infoTextView.setText("Вы выбрали кота!"); return true; case R.id.action_cat2: infoTextView.setText("Вы выбрали кошку!"); return true; case R.id.action_cat3: infoTextView.setText("Вы выбрали котёнка!"); return true; default: return super.onOptionsItemSelected(item); >>
Запустите приложение, вызовите меню и выберите любой пункт меню. В текстовом поле должно появиться сообщение.
Существует альтернативный способ через XML, похожий на обработку щелчков кнопки (начиная с Android 3.0). Вы можете добавить атрибут android:onClick в ресурсах меню, и вам не нужно использовать вызов метода onOptionsItemSelected(). При помощи android:onClick вы можете указать нужный метод при выборе пункта меню. Добавьте данный атрибут к пункту Settings
Теперь в коде активности напишем следующее:
// у атрибута пункта меню Settings установлено значение android:onClick="onSettingsMenuClick" public void onSettingsMenuClick(MenuItem item)
Как поменять меню в телефоне: инструкция
Мобильное устройство служит своему владельцу несколько лет. Многие пользователи, которым уже изрядно надоело привычное управление, интересуются тем, как поменять меню в телефоне.
Не все могут позволить себе регулярно приобретать новые модели аппаратов. Именно поэтому изменение меню, способно внести разнообразие в привычную эксплуатацию мобильного устройства и фактически обновить его.
Инструкция по смене меню
- Для начала попробуем изучить руководство к мобильному устройству. Найти его можно обычно в комплекте телефона. Иногда такое руководство способно помочь.
- Открываем меню нашего мобильного аппарата и заходим в его настройки. Ищем пункт «Дисплей», а там – опцию по изменению вида меню. Выбираем понравившийся тип на собственное усмотрение.
- К сожалению, иногда это попросту недоступно. В этом случае заходим в настройки (порой они могут называться параметрами) и ищем опцию «Темы».
- Изменяем тему оформления на свой вкус, выбрав в итоге ту, которая понравится нам больше всего.
- Кроме того, можно скачать тему из Интернета, не забыв указать модель своего сотового аппарата, и установить её. Рекомендуется проверять антивирусным обеспечением любые файлы, загруженные из сети.
Изменение темы на примере Nokia
- Как и в описанном выше способе, обратимся к инструкции, которой должен быть укомплектован наш мобильный аппарат. Если руководства нет, можно поискать его в сети Интернет.
- Там обязательно должны быть указаны действия, при помощи которых можно изменить вид меню. Существуют даже специальные сайты, где также можно скачать русскоязычные электронные инструкции к мобильным устройствам.
- Заходим в меню и ищем пункт «Настройки» («Функции», «Параметры»). Там же должна быть опция по изменению внешнего вида меню.
- Если мы пользуемся более современным аппаратом от Nokia, изменения могут происходить путём переключения между значками и списком.
- Мы сможем также менять темы через панель управления, используя готовые предложения, либо те, которые скачаем из Интернета. Полезными для нас в этом случае окажутся русскоязычные ресурсы вроде Themes-Nokia, AllNokia и Theme.WorldNokia.
Сергей Семенов, 31 год Аналитик, журналист, редактор
Настоящий мобильный эксперт! Пишет простым и понятным языком полезные статьи и инструкции мобильной тематики, раздает направо и налево наиполезнейшие советы. Следит за разделом «Статьи и Лайфхаки».