Перейти к содержимому


Фотография
- - - - -

Некорректное оторбажение виджетов widgetkit во вкладках


Лучший Ответ SmetDenis , 17 February 2016 - 06:19

Тут главное принцип. Заставить виджет рассчитать свои размеры можно если вызвать ресайз окна браузера. Теортетически.

 

 

Мое решение подойдет если вы используете вкладки JBZoo - http://jbzoo.ru/docs/how-tabs-works

У вас же на странице вкладки UIkit то там другие события - http://getuikit.com/.../docs/tab.html 

предположительно решение то же - вызывать событие resize на событие переключения вкладки.

Для BS будет другие события.

 

Либо тоже самое сделать по клику на вкладку с небольшим таймаутом.

$('.<вкладка>').click(function(){ /* таймаут с ресайзом*/ })

Вообще весь вопрос имеет отношение к JBZoo лишь косвенное (только потому что это лежит в шаблоне материала).

Это конфликт работы вкладок UIkit и WidgetKit, а по факту то как работает JavaScript в скрытом контейнере - т.е он не умеет вычислять размеры блоков, если браузер их не отображает. 

 

 

Либо суровый и не оптимизированный вариант, вызывать ресайз постоянно

jQuery(function ($) {
    setInterval(function(){
        $(window).trigger('resize');
   }, 500); // раз в полсекунды
});
Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 13

#1 Stream777

Stream777

Отправлено 26 January 2016 - 13:21

В шаблоне full создал 2 вкладки tabs, в них пытаюсь запихнуть виджеты типа widgetkit slideshow или же accordion

После сохранения настроек данные виджеты отображаются некорректно, аккордеон отображает содержимое активной вкладки в одну строку, виджет слайдшоу так же сжимается и по горизонтали и по вертикали. Это переделанный шаблон с магазина мобильников демо.

http://stend-shod-ra...dlya-gruzovikov

Проблема со вкладками Программное обеспечение и Комплектация. Не пойму в каком css или же где поправить чтоб на автомате выставлялась ширина и высота как надо.

Заранее спасибо!

 


  • 0

#2 SmetDenis

SmetDenis

Отправлено 28 January 2016 - 06:59

Добрый день,
 
Скорее всего это из-за того что JavaScript не может вычислить размеры контейнеров в скрытых блоках. Особенности браузеров и DOM.
Это решается насильным обновлением через функцию onTabShow, которая срабатывает на переключении вкладок.
 
http://jbzoo.ru/docs/how-tabs-worksТут можно прочитать о возможных проблемах с вкладками и вариант решения для Googlemaps
Что именно писать для Widgetkit я не знаю.
 
Другой вариант, показывать виджеты вне вкладок, либо на первой. Т.е так чтобы при загрузке он был сразу виден.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#3 Stream777

Stream777

Отправлено 05 February 2016 - 19:09

А где вписать код по обновлению ontabshow подскажите плиз. 


  • 0

#4 Cheren-dow

Cheren-dow

Отправлено 05 February 2016 - 19:14

Stream777, можно написать в шаблоне материала который используется. 


  • 0
Изображение
 

#5 Stream777

Stream777

Отправлено 05 February 2016 - 19:19

 Спасиб! Шаблон материала это в плане full.php ?


  • 0

#6 Cheren-dow

Cheren-dow

Отправлено 05 February 2016 - 19:21

Да, если проблема только в шаблоне full то лучше там.


  • 0
Изображение
 

#7 Stream777

Stream777

Отправлено 06 February 2016 - 15:29

<script type="text/javascript">
    jQuery(function ($) {
        $('#<?php echo $tabsId;?>').JBZooTabs({
            onTabShow: function (index) { // в index будет хранится номер текущей вкладки
                var wkit = $('.wk-slideshow-showcasebox > div:first'); // ищем карту Google
                if (wkit.length) { 
                    wkit.data('wk-slideshow-showcasebox').refresh(); // инициализация
                }
            }
        });
    });
</script>
 
типа такого что ли? не работает. я не понимаю к какому из дивов нужно это применять и вообще как это должно выглядеть, потому как в слайдере дивов там куча целая.
Из за этой ошибки все встало. А выносить все на главную вкладку..какой смысл тогда во вкладках вообще? Это получается как  простыня.
Я ведь хочу максимально удобно логично и интересно представить кучу скучной инфы для покупателя, зачем мне все лепить в одно?
Я понимаю что ни у кого времени нет лишнего, но решить как то вопрос нужно. Хотя бы и даже за бабки. Я прошу помощи, очень много времени потерял на этом.
И еще заметил одну вещь..если открыть таб в котором некорректно отображается виджет и изменить масштаб в браузере, виджет сразу же "выпрыгивает" как надо. Может это как то использовать? 
Ребят, давайте решим как то это в ближайшее время, очень прошу очень нужно, готов отблагодарить!

Сообщение отредактировал SmetDenis: 08 February 2016 - 08:50
[code] !

  • 0

#8 SmetDenis

SmetDenis

Отправлено 08 February 2016 - 09:03

Похоже что у слайдера виджеткита даже нет функций для перерисовки, в отличие от Google Maps
bhhn_200x0.png

Можно попробовать вызывать обновление виджетов через событие ресайза страницы. Например так
onTabShow: function() {
    setTimeout(function(){ // задержка на случай медленного браузера.
        $(window).trigger('resize');
    }, 200);
}
Попробуйте, возможно это сработает. В противном случае придется разбираться в JS WidgetKit.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#9 Stream777

Stream777

Отправлено 10 February 2016 - 21:28

Здравствуйте! Попробовал встроить в код full.php  вот так:
 
<script type="text/javascript">
document.body.children[0].onclick = function(e) {
    onTabShow: function() {
       setTimeout(function(){ // задержка на случай медленного браузера.
          $(window).trigger('resize');
       }, 200);
    } 
}
</script> 
 
и вот так:
 
<script type="text/javascript">

 onTabShow: function() {
        setTimeout(function(){ // задержка на случай медленного браузера.
               $(window).trigger('resize');
        }, 200);
  }
</script> 
 
и не помогает. сейчас в коде первый фрагмент и он не работает, можете глянуть.. код странички..что то не так сделал может быть - тогда поправьте пожалуйста..если все так то что дальше делать будем?
  • 0

#10 SmetDenis

SmetDenis

Отправлено 11 February 2016 - 06:50

Что-то вы наизобретали. :)

onTabShow из виджета JBZooTabs, т.е

<script type="text/javascript">
    jQuery(function ($) {
        $('#<?php echo $tabsId;?>').JBZooTabs({
            onTabShow: function() {
                setTimeout(function(){ // задержка на случай медленного браузера.
                    $(window).trigger('resize');
                }, 200);
            }
        });
    });
</script>

  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.





Click to return to top of page in style!