Форум поддержки пользователей ZeroParking

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Форум поддержки пользователей ZeroParking » Заказ скриптов » Контейнер для вкладок(улучшение)


Контейнер для вкладок(улучшение)

Сообщений 1 страница 5 из 5

1

Доброго дня всем разработчикам и простым пользователям. Пишу сюда потому, что нашел довольно интересный скрипт, использующий для своей работы библиотеку jQuery, однако, посмотрев его, понял, что хочу немного большего. Сейчас я нахожусь в активном лазании по документации jQuery, чтобы понять, как мне построить то, что я хочу видеть.
А мне бы хотелось вот что: у нас есть изображение, некоторые области которого являются активными. При нажатии на активную област в отведенном для этого контейнере меняется содержимое, причем меняется довольно красиво, выцветанием, так сказать.
Итак, мои мысли по этому поводу.
Для начала нам нужна map-карта, ну, и само изображение, разумеется. При этом, задавая некую область, мы будем задавать и ее идентификатор(id).

<area coords="..." id="ar1">

Итак, у нас есть несколько областей с уникальными идентификаторами. Это значит, что с помощью запроса мы задаем выполнение определенной функции только при взаимодействии с этой областью. Как пример - функция "по одинарному щелчку", то есть onClick. В jQuery она прописывается несколько по иному:
$("ar1").click(function() {
//текст функции//})
Прежде чем работать с контейнером, нужно его как-то объявить, кроме того, нужно объявить каждую из вкладок. Здесь у меня вышел стопор. Я не слишком хорошо разбираюсь в классах, элементах, в массивах тех же самых, поэтому не знаю, как прописать правильное объявление для контейнера и каждой вкладки. Для того скрипта, который я видел, было прописано так:

ForumDesign написал(а):

<div class="container">
    <div class="html-box">

/* <ul class="tabs">
    <li class="active"><a href="#tab1">Вкладка 1</a></li>
    <li><a href="#tab2">Вкладка 2</a></li>
    <li><a href="#tab3">Вкладка 3</a></li>
</ul> */ <-- список ссылок, в моем случае, он точно не нужен, так как мы прописываем изменение содержимого контейнера не через нажатие на ссылку, а через нажатие на область на изображении

      <div class="tab_container1">

<div style="display: block;" id="tab1" class="tab_content">
текст 1
</div>

<div style="display: none;" id="tab2" class="tab_content">
текст 2
</div>

<div style="display: none;" id="tab3" class="tab_content">
текст 3
</div>

      </div>
    </div>
</div>

Как я понимаю, к классу можно обращаться как $(".tab-content"), а к каждой вкладке в отдельности $(".tab_conten[tab1]"). Но, по правде сказать, я не совсем понимаю, как это будет отображаться, в частности, сам контейнер, объявленный как класс, и вкладки.
Следующий этап - прописать в функцию действия, которые должны происходить. Здесь я ощущаю себя крайне неуверенно. Как я понимаю, поскольку вкладки накладываются одна на другую, при нажатии открытая вкладка должна стать скрытой, а нужная нам - появиться. К тому же, в самом начальном положении должны быть скрыты все вкладки кроме какой-то первичной. За скрытие отвечает эффект hide(), а за плавное появление, которое мне нужно - fadeIn().
Получается, чтобы все прошло верно, нам нужно скрыть уже открытую вкладку и открыть новую, нужную нам. Но как определить, которая открыта? Возможно, есть вариант при вызове функции разом скрывать все, а на их месте пусть появляется нужная. Тогда нам не придется определять, что сейчас открыто.
Итак, примерный код должен получиться:

$("ar1").click(function() {
     $("tab_content").hide();
     $("tab_content[tab1]").fadeIn();

})

И такую придется прописать для каждой области.

Я обращаюсь с вопросом к опытным разработчикам скриптов: есть ли в моей логике ошибки? Если их нет, то правильно ли я понял семантику языка, правильно ли составил запрос?
Очень надеюсь на помощь, заранее спасибо.

Отредактировано Януш (2011-04-01 20:31:54)

0

2

Януш Лучше бы дали ссылку на рабочий пример !  , к примеру так > http://hostjs-mybb2011.narod.ru/TASHUNKO.htm

Или так > https://forums.0pk.me/viewtopic.php?id=6342

Отредактировано Deff (2011-04-02 09:55:50)

+1

3

Deff
Милсдарь, основа для нового скрипта - вот этот. Но ведь я хочу несколько иное. Я хочу написать, а не скопировать откуда-то, потому что того, что я хочу, я еще нигде не видел.
Вы не написали ничего дельного насчет тех вопросов, которые я задал. Тогда к чему был этот комментарий?

0

4

Януш написал(а):

Милсдарь, основа для н

Проще прописать чо нидь другое из доступного alt - например - и прописываем туда id открывающихся по клику блоков (href - убираем - дабы не кликалось)

<map name="Navigation">
  <area shape="poly" coords="113,24,211,24,233,0,137,0"  alt="#Yanush1">
  <area shape="poly" coords="210,24,233,0,329,0,307,24" alt="#Yanush2">
  <area shape="poly" coords="304,24,385,24,407,0,329,0"  alt="#Yanush3">
  <area shape="poly" coords="384,24,449,24,473,0,406,0"  alt="#Yanush4">
  </map>

Далее наши div контейнеры

<div id="Yanush1" class="Yanush"> Тут контент для первой области </div>
<div id="Yanush2" class="Yanush"> Тут контент для Второй области </div>
<div id="Yanush3" class="Yanush"> Тут контент для третьей области </div>
<div id="Yanush4" class="Yanush"> Тут контент для Четвертой области </div>

Скрываем их всех css в HTML верх (И открываем Первый блок  -(*или не открываем - эт по желанию - тогда синее удаляем

<style>
.Yanush {display:none}
#Yanush1 {display:block}
</style>

Далее Сlick-cкрипт ...

селектор для area > ("map[name='Navigation'] area")
Итого в HTML низ ( хотя удобнее скрипт ставить ниже последнего контейнера - дабы не искать при смене таблицы с мап картой

Код:
<script>
$(document).ready(function() {
$("map[name='Navigation'] area").click(function() {
    var activeDiv = $(this).attr("alt");
    $(".Yanush").hide()  //Скрываем все
    $(activeDiv).fadeIn(2200);  //Разворачиваем нужный /2200 -Время -разворота регулируем
    return false; });
});
</script>

(*Тестовый рабочий пример

Код:
<style>
.Yanush {display:none;}
#Yanush1 {display:block;}
</style>
<img src="http://s002.radikal.ru/i197/1002/14/2804fa17b4d7.png" border="0" usemap="#Navigation" >
<map name="Navigation"><area shape="rect" coords="12,194,164,228" alt="#Yanush1">
<area shape="rect" coords="81,245,166,280" alt="#Yanush2">
<area shape="rect" coords="64,303,217,337" alt="#Yanush3">
<area shape="rect" coords="151,353,302,391" alt="#Yanush4">
</map>
<div id="Yanush1" class="Yanush"> Тут контент для первой области </div>
<div id="Yanush2" class="Yanush"> Тут контент для Второй области </div>
<div id="Yanush3" class="Yanush"> Тут контент для третьей области </div>
<div id="Yanush4" class="Yanush"> Тут контент для Четвертой области </div>
<script>
$(document).ready(function() {
$("map[name='Navigation'] area").click(function() {
    var activeDiv = $(this).attr("alt");
    $(".Yanush").hide()  //Скрываем все
    $(activeDiv).fadeIn(2200);  //Разворачиваем нужный /2200 -Время -разворота регулируем
    return false; });
});
</script>

(код пихаем в Объяву и кликаем

Зы - Все блоки div -лучше  вставить в табличку и задать ей фиксированную высоту - дабы не дергалось при кликах - сворачиваниях (Возможно появицо идея засунуть каждый div в свою ячейку таблицы... (вроде изменицо ничо не должно

Основное неудобство при работе с Мап картой - что тыкаемую область картинки - трудно выделить при кликнутом-не кликнутом состоянии ( поскольку ни цвет не бордюр для area не работают = поэтому обычно картинку вставляют в табличку или позиционируют div блок(с position:absolute;) margin y x  0 0; на нужную область картинки и кликают его - а не МАП ( а ячейку или div  выделить цветом - окантовкой - сложности нет - при сложной области обычно делаецо табличка под фоновый рисунок достаточно мелкоячеистой и закрашиваецо несколько ячеек примерно представляющих нужную область кликабельности картинки, для этого в этих ячейках прописываем один и тот же класс

Отредактировано Deff (2011-04-03 12:14:00)

+1

5

Deff
О, вы верите, я вас обожаю. *обворожительно улыбнулся* Благодарю, правда, безумно благодарен, жалею, что не смогу достаточно плюсов поставить. Вы очень помогли!

0


Вы здесь » Форум поддержки пользователей ZeroParking » Заказ скриптов » Контейнер для вкладок(улучшение)


Рейтинг форумов | Создать форум бесплатно