Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Вёрстка веб-сайтов > Два дива (один виден, другой нет) |
Автор: Guedda 10.3.2010, 14:36 |
Добрый всем день. Проблема такая. Как-то на непомнюкаком сайте я видел возможность переключаться между дивами без перезагрузки страницы. Объясню подробнее. Есть один блок (который виден) с каким-то контентом. При нажатии на кнопку в этом же месте показывается другой блок с другим контентом, а этот исчезает. Как это можно реализовать? Заранее благодарен за ответы. |
Автор: bars80080 10.3.2010, 15:30 |
несколько слоёв с разным контентом. один имеет display: block; остальные display: none; нажатие на кнопку приводит к скрытию одного и открытию другого, путём изменения el.style.display |
Автор: Guedda 10.3.2010, 15:35 |
А немного подробнее? ![]() Просто в блочной верстке не очень соображаю. |
Автор: HARDMID 10.3.2010, 17:42 |
Держи один из вариантов ответа: http://dimox.name/universal-jquery-tabs-script/ Есть еще вариант: http://jqueryui.com/download |
Автор: bars80080 10.3.2010, 17:52 | ||||
это общий принцип. конечно, из-за вложенных дивов лучше придумать чуток другой механизм. самое оптимальное, просто перебирать элементы по id. второе, надо будет так же перебрать и ссылки, чтобы назначить нужной класс .selected, а у остальных его убрать. тогда ссылка можно будет выделить и представить в виде закладки. ну, и третье, конечно нужно позаботиться, чтобы и в начале был открыт всего один блок, и отмечена всего одна ссылка |
Автор: ksnk 10.3.2010, 18:19 | ||
и я свои 2 копейки вставлю ;) |
Автор: Guedda 10.3.2010, 18:24 | ||
bars80080, спасибо тебе, плюс поставил. Но есть вопрос. А если дивов в 'content' много, а свойство мне нужно для двоих только менять? Имена им 'poll-content' и 'rating-content'. Как переделать твой JS для именно их? Пожалуйста, помогите. Добавлено @ 18:27 Там просто получается приблизительно такой код:
И получается, что вообще не видно ни одного блока. |
Автор: bars80080 10.3.2010, 18:55 |
вообще, способ ksnk должен решать задачу более универсально и эффективно кстати, говоря о вложенных дивах, я подразумевал именно манипуляцию с классами попробуй его вариант |
Автор: SelenIT 11.3.2010, 03:41 |
ksnk, а почему ссылки глушатся через href="javascript:void(0);" вместо общепринятых (имхо) href="#" и return !1 в onclick-е? Разве javascript: больше не считается противопоказанным (из-за ломающейся динамики картинок в IE и т.п.)? Что я пропустил в этой теме? |
Автор: Guedda 11.3.2010, 09:31 |
Всем спасибо! Вариант ksnk помог! |
Автор: Guedda 11.3.2010, 10:19 |
ksnk, вопрос остался немного не решенным. Твой код подходит, но при загрузке страницы ни одного блока не видно, и только после нажатия на ссылку какой-либо блок появляется. Возможно ли сделать так, чтобы при загрузке страницы сразу был показан первый блок? Просто не вдупляю, и не получается у меня.. Вписываю в атрибуты первого блока style="display: block;" но тогда этот блок вообще никуда не исчезает... |
Автор: SelenIT 11.3.2010, 10:31 |
Guedda, по логике, в варианте ksnk как раз должен по дефолту рисоваться первый блок - за счет class="text1" у контейнера. А самим блокам никакого style не нужно, иначе наследование стилей перезатрется. Добавлено через 6 минут и 27 секунд bars80080, onclick="doSomething();return false" (!1 - тот же false, чтоб меньше писать;) как раз гарантирует неизменность адресной строки независимо от href ссылки. А "решетка" в адресе при отключенном JS - имхо, всё же меньшее зло, чем смерть анимаций и динамических эффектов с картинками в IE (правда, http://forum.vingrad.ru/forum/topic-178421.html на немного другой синтаксис, но я на всякий случай взял за правило использовать javascript:-ссылки только в букмарклетах и для генерации контента). |
Автор: ksnk 11.3.2010, 11:23 |
Ну я ленив и копирую кусочки уже отпощенного кода ![]() У этого приема есть несколько существенных минусов. Если появится желание поправить классами сам div#content, к примеру, для дополнительной стильной раскраски, придется обломаться, так как классы у меня перетираются, и такое поведение, к сожалению, принципиально ;) . Если приспичит делать какой-либо анимированно эффектное появление табов, тоже придеться кусать локти и переписывать скрипт. Еще один минус "javascript:void(0);", кроме демонстрации бага IE, в том, что центральная кнопка мыши открывает невразумительно пустую страницу вместо чего-то содержательного. |
Автор: Guedda 11.3.2010, 11:27 | ||
Показываю код:
Вроде все так. |
Автор: SelenIT 11.3.2010, 11:38 |
Guedda, в 22-й строчке надо <div id="mcontent" class="opr">. |
Автор: Guedda 11.3.2010, 12:21 |
Спасибо. Не заметил. Все получилось. |
Автор: bars80080 11.3.2010, 15:58 | ||
центральной кнопки? ух ты |
Автор: HARDMID 12.3.2010, 17:05 | ||||||
йэх... юзаю уже много-много-много-много секунд библиотеку http://www.google.ru/search?hl=ru&q=jquery-1.3.2.js+download&sourceid=navclient-ff&rlz=1B3GGGL_ruRU318RU318&ie=UTF-8&aq=0&oq=jquery-1.3.2.js. +код скриптика в хтмл:
В CSS примерно так все, остальное - по желанию:
в хтмл:
Единственное, чего не требовалось при решении задачи, так это схлопывание одного дива при открытии другого. Если кто чуть доработает для "авто-схлопывания" соседнего дива, будет круто. ))) |
Автор: Violator 12.3.2010, 18:55 | ||
HARDMID,
|
Автор: HARDMID 15.3.2010, 14:26 |
Спасибо, то что надо! ))) отличненько работает. ))) |