#javascript #jquery #jquery-ui-tabs
#javascript #jquery #jquery-ui-tabs
Вопрос:
Я использую пользовательский интерфейс jQuery Tabs со стандартной структурой вкладок (http://jqueryui.com/demos/tabs / ). Я не включил сюда весь html, поскольку это излишне, если вы знакомы с пользовательским интерфейсом Tabs.
Но в этом случае, что мне нужно сделать, это показать другое изображение для каждой активной вкладки. Т.Е. другое изображение в #headerwrapper, когда активен #tabone, и другое, когда активен #tabtwo и т.д. И в идеале добавлять / выключать эти изображения с чем-то вроде эффекта прозрачности fx.
Инициализация моих вкладок выглядит следующим образом:
var $tabs= $("#tabs").tabs({
});
Похоже, мне нужно сделать это (согласно ответу Мэтта, приведенному ниже), чтобы найти активную вкладку:
$('#tabs').tabs({
select: function(event, ui) { .... });
Но мне не повезло с ответом Мэтта.
Это headerwrapper и image CSS:
#headerwrapper {
background: url(images/image.jpg) top center no-repeat;
height:88px;
}
Возможно ли показывать разные изображения для каждой вкладки и изменять их (т. Е. fx: {opacity: ‘toggle’}) по мере их изменения?
Ответ №1:
Вы могли бы использовать data-*
атрибуты:
$("#tabs").tabs({
select: function($event, ui) {
/* Extract the image from the active tab: */
var img = $(ui.panel).data("image");
/* Animate the header out, set the background css, then animate back in: */
$("#headerwrapper")
.animate({ opacity: 'toggle' }, function() {
$(this).css("background-image", "url(" img ")")
.animate({ opacity: 'toggle' });
});
}
});
И на каждой панели вкладок было бы data-image
определено:
<div id="tabs-1" data-image="http://placekitten.com/g/300/88">...</div>
Вот рабочий пример: http://jsfiddle.net/8muBm/2 /
Комментарии:
1. Это близко к тому, что я пытаюсь сделать, но как я могу поменять фоновое изображение в CSS?
2. @songdogtech: Я еще раз взгляну на вопрос и соответствующим образом обновлю свой ответ.
3. @songdogtech: Смотрите мой обновленный ответ — пожалуйста, дайте мне знать, если он не соответствует вашим требованиям.
4. Спасибо! Это отлично работает. Между изображениями есть приятный переход. Единственная проблема, с которой я сталкиваюсь сейчас, заключается в том, что когда я загружаю страницу Tabs в первый раз (или перезагружаю страницу, чего никто не будет делать при обычном использовании), изображение не отображается, поэтому я не знаю, как это исправить. Каким-то образом установить изображение по умолчанию?
5. @songdogtech: Если вы загружаете страницу в первый раз, должно отображаться значение по умолчанию
background-image
для#headerwrapper
(по крайней мере, в примере). Это то, что вы имеете в виду?
Ответ №2:
Вы можете установить само изображение. Итак, в зависимости от того, на какой вкладке вы находитесь, вы можете переименовать изображения в header0, header1 и т.д… Вы можете использовать
$('#example').tabs({
select: function(event, ui) {
var selected = $('#example').tabs('option', 'selected');
$("#headerimg").attr("src", "/new/image/header" selected ".jpg");
}
});
Что-то подобное должно сработать. Вы можете получить текущую выбранную вкладку. В противном случае вы также всегда можете использовать оператор if / else.
Комментарии:
1. Гораздо лучшая идея, чем то, о чем я думал; Я могу использовать headerimg1 и т.д. Для названий изображений. Как бы я работал с CSS (добавленным выше) и attr в функции, чтобы учесть, что это фоновое изображение?
2. @songdogtech Я, честно говоря, никогда раньше не работал с jquery и css, но api.jquery.com/css им можно манипулировать.