Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $(function() {
- function getTranslateX($el) {
- const transform = $el.css('transform');
- if (!transform || transform === 'none') return 0;
- const values = transform.match(/matrix\(([^)]+)\)/)[1].split(',');
- return parseFloat(values[4]);
- }
- $(document).on('click', '.custom-tab-title', function(e) {
- e.preventDefault();
- const $wrapper = $('.custom-tab-list');
- const $inner = $('.custom-tablist-track');
- const padding = parseFloat($inner.css('padding-left')) || 0;
- $('.custom-tab-title').removeClass('btn-tab-active');
- $(this).addClass('btn-tab-active');
- let index = $(this).index();
- $('.feature-tab-wrap').not(':eq(' + index + ')').slideUp(250);
- $('.feature-tab-wrap').eq(index).slideDown(250);
- const currentTs = getTranslateX($inner);
- // --- ЛОГИКА ВПРАВО ---
- let $next = $(this).next();
- if ($next.length) {
- const wrapperRight = $wrapper.offset().left + $wrapper.outerWidth();
- const nextRight = $next.offset().left + $next.outerWidth();
- if (nextRight > wrapperRight) {
- const diff = nextRight - wrapperRight;
- // Сдвигаем влево на разницу + ваш паддинг
- $inner.css('transform', `translateX(${currentTs - (diff + padding)}px)`);
- return;
- }
- }
- // --- ЛОГИКА ВЛЕВО ---
- let $prev = $(this).prev();
- if ($prev.length) {
- const wrapperLeft = $wrapper.offset().left;
- const prevLeft = $prev.offset().left;
- // Если левый край ПРЕДЫДУЩЕГО элемента ушел за левую границу
- if (prevLeft < wrapperLeft) {
- // Вычисляем, на сколько именно пикселей он спрятан
- const diff = wrapperLeft - prevLeft;
- // Сдвигаем вправо: текущее положение + разница + паддинг
- let targetTs = currentTs + diff + padding;
- // Ограничитель: нельзя сдвинуть дальше нуля (в самое начало)
- if (targetTs > 0) targetTs = 0;
- $inner.css('transform', `translateX(${targetTs}px)`);
- }
- }
- });
- });
Advertisement
Add Comment
Please, Sign In to add comment