С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 05.07.2012
Сообщений: 6

Выпадающее меню для внутренней навигации по закладкам на странице на javascript+css

13.07.2012, 11:12. Показов 2118. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите с решением/подскажите где подсмотреть готовое решение.
Есть большая html страница, содержимое разделено на части, каждая часть предваряется <div id="a01">заголовок</div>, между ними <div id="a00">собственно текст</div>
все страницы будут открываться локально на компьютере без интернета
Требуется решение с минимум кода, вынесенного в script.js и mysite.css, можно + с привлечением jquery.js
Вверху кнопка меню, при клике/наведении - выпадающее одноуровневое подменю
текст элементов подменю - перечитывается всякий раз заново из тегов <div id="a01">заголовок</div> на странице
при щелчке на элемент подменю - переход/скроллирование страницы к выбранному <div id="a01">
при необходимости могу поменять <div id="a01"> на <div name="ID заголовка"> для упрощения перехода по странице
если меню теряет фокус - подменю скрывается

P.s. в инете есть решения с созданием динамических меню с использованием <ul> и <li> Не подходит. Текст подменю должен читаться из содержимого страницы, которое может изменится - меню при этом также должно перестроится, эдакое "динамическое всплывающее оглавление для большой html книги"
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.07.2012, 11:12
Ответы с готовыми решениями:

Карусаль JQUERRY закрывает остальные объекты на сайте (выпадающее меню навигации)
Точнее не закрывает а ПРИКРЫВАЕТ Подскажите возможные варианты решения проблемы, И еще не получается двигать карусель (присваивать...

Выпадающее меню не выводится на странице
Делала по аналогии как тут http://www.h88.ru/modx/dokumentaciya/multylevel-modx-menu.html Меню не выводится - пишет на странице просто...

Выпадающее меню на CSS
В общем есть горизонтальная менюшка с выпадающими элементами. Все работает, но проблема в том, что скрытые списки с opacity:0 остаются на...

7
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
13.07.2012, 12:09
На странице не должно быть элементов с одинаковыми id, иначе javascript не сможет их обработать.
Предполагая, что заголовок располагается в <div class="head"></div>, а текст - в <div class="body"></div>, можно предложить такой простой скриптик:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$('<div class="menu">')
    .html('Select article...')
    .prependTo(document.body)
    .click(function(){
        var list = $('<ul class="list">').appendTo($(this));
        $('div.head').each(function(){
            var top = $(this).offset().top;
            $('<li>')
                .html($(this).html())
                .appendTo(list)
                .click(function(){
                    list.remove();
                    $(window).scrollTop(top);
                    return false;
                });
        });
        return false;
    });
Полный пример гляньте здесь: http://jsfiddle.net/EH8w7/2/

Заголовки перечитываются при каждом клике.
1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
13.07.2012, 12:11
Цитата Сообщение от ostgals Посмотреть сообщение
$('<div class="menu">')
а зачем так если можно просто $('.menu') ? и в других местах тоже
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
13.07.2012, 12:35
Цитата Сообщение от KOPOJI Посмотреть сообщение
а зачем так если можно просто $('.menu') ? и в других местах тоже
Потому что если вместо селектора указан html-код, то создается новый элемент.
JavaScript
1
2
$('img'); // выбраны все существующие элементы img
$('<img>'); // создан новый элемент img
0
13.07.2012, 12:40

Не по теме:

вы о чем? обращение не к тегу, а к классу или ид. в jquery оно проще - зачем изобретать велосипед
$('#id_name'). .... - обращение к элементу по имени идентификатора
$('.class_name'). .... - обращение к элементу по имени класса
зачем усложнять это? причем тут создание html тегов?

0
13.07.2012, 12:44

Не по теме:

Разницу понимаешь между выборкой элементов и их созданием? С фига ли я буду выбирать $('div.menu'), если его еще не существует в DOM? Посмотри пример.

0
13.07.2012, 12:45

Не по теме:

Цитата Сообщение от ostgals Посмотреть сообщение
Разницу понимаешь между выборкой элементов и их созданием? С фига ли я буду выбирать $('div.menu'), если его еще не существует в DOM? Посмотри пример.
понимаю. понял пример. думал ты обращаешься так к уже созданному элементу

0
0 / 0 / 0
Регистрация: 05.07.2012
Сообщений: 6
13.07.2012, 14:26  [ТС]
Предложенное ostgals решение вполне приемлемо, кроме мелких пожеланий:
- как вынести предложенный код из html в отдельный файл скрипта TOC.js (я новичок)
- сделать так чтобы при перемотке странице/переходе к разделу меню Select article... продолжало висеть вверху страницы (position:fixed не подходит, т.к. меню тогда перекрывает часть текста страницы)
- идентификацию заголовков делать все таки не по <div class="head"></div> а по <div id="a01"></div>, т.к. к классу уже подвязан другой скрипт
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.07.2012, 14:26
Помогаю со студенческими работами здесь

Выпадающее меню. CSS or JS?
Подскажите, если разница на чем делать выпадающее меню? Или в каких случаях лучше делать на CSS или на JS?

Выпадающее меню на CSS
Добрый день, не могу понять почему не работает выпадающее меню. может кто подскажет как правильно реализовать?3 ...

Выпадающее меню на CSS
Помогите сделать выпадающее меню на CSS. Есть код, но выпадающее меня сделать не получается. Вот скриншот: И сам код: ...

Выпадающее меню на css
Есть выпадающее меню на css. CSS вот: .mainmenubtn2 { background-color: transparent; background-image:...

Выпадающее меню CSS
Здравствуйте! Помогите разобраться с меню на CSS. Проблема в следующем: когда опускаешься вниз по меню справа раскрывается ПОДМЕНЮ, при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru