Sie sehen gerade Inhalte für den Standort:NederlandsBelgium / NederlandsÄndern
document.addEventListener("DOMContentLoaded", function() { const container = document.getElementById("smc-local-header"); const wrapper = document.getElementById("smc-local-header-wrapper"); const closeIcon = document.getElementById("smc-local-header-close"); let autoCloseTimer; function slideUpAndClose() { // äußerer Wrapper const zielElement = wrapper || (container ? container.parentElement : null); if (!zielElement) return; // Holt die exakte, aktuell gerenderte Höhe des Elements vor dem Schließen const startHoehe = zielElement.getBoundingClientRect().height || 65; // Schaltet CSS-Bremsen und Mindesthöhen beim äußeren Wrapper ab zielElement.style.setProperty("transition", "none", "important"); zielElement.style.setProperty("min-height", "0px", "important"); zielElement.style.overflow = "hidden"; // Bereitet den inneren Container auf das Mitverschieben vor if (container) { container.style.setProperty("transition", "none", "important"); } const animationsDauer = 600; const startZeit = performance.now(); function animate(jetztZeit) { let vergangeneZeit = jetztZeit - startZeit; let fortschritt = Math.min(vergangeneZeit / animationsDauer, 1); // Sanfter Brems-Effekt (Ease-Out) let easeOutProgress = 1 - Math.pow(1 - fortschritt, 3); // Berechnet die schrumpfende Höhe des äußeren Wrappers let aktuelleHoehe = startHoehe * (1 - easeOutProgress); // Berechnet, wie weit der innere Container nach oben geschoben werden muss let verschiebung = startHoehe * easeOutProgress; // Verringert die Höhe des Wrappers zielElement.style.setProperty("height", aktuelleHoehe + "px", "important"); // Schiebt den inneren Container synchron mit nach oben if (container) { container.style.setProperty("transform", `translateY(-${verschiebung}px)`, "important"); } if (fortschritt < 1) { requestAnimationFrame(animate); } else { // Am Ende den Wrapper komplett löschen zielElement.remove(); } } requestAnimationFrame(animate); } // Erstbesucher-Logik if (container && !localStorage.getItem("smc_header_gesehen")) { // Äußeren Wrapper einblenden (hebt display: none auf) const zielElement = wrapper || container.parentElement; if (zielElement) { zielElement.style.setProperty("display", "block", "important"); // WICHTIG: Erzwingt ein Browser-Reflow, damit das Element "ankommt" void zielElement.offsetHeight; } // Wir erzwingen hier KEIN block-Layout mehr, um Flexbox nicht zu zerstören container.style.setProperty("display", "flex", "important"); // WICHTIG FÜR GEO-REDIRECTS: Sofort als "gesehen" markieren! // Falls der Nutzer die Seite vor Ablauf der 15sek wechselt, // poppt der Header auf der nächsten Sprachseite nicht erneut auf. localStorage.setItem("smc_header_gesehen", "true"); // 15 Sekunden automatischer Timer autoCloseTimer = setTimeout(slideUpAndClose, 30000); // Klick-Event für das Schließen-Icon if (closeIcon) { closeIcon.addEventListener("click", slideUpAndClose); } } else { // Falls schon gesehen, direkt alles löschen const zielElement = wrapper || (container ? container.parentElement : null); if (zielElement) zielElement.remove(); } });

Velgen & Banden

(function($) { function initSmcFilters() { var $widget = $('#smc-filter-categorie'); if (!$widget.length) return; // Elementor-Button-Klasse an alle Kategorie-Links übergeben $widget.find('.bapf_body label a').addClass('smc-cat-filter-btn'); var $body = $widget.find('.bapf_body'); var $mainUl = $body.find('> ul'); var $mainLis = $mainUl.find('> li'); // Funktion zum Prüfen und Steuern der Scroll-Pfeile function updateScrollArrows() { if (!$mainUl.length || $mainUl.length === 0) return; var ulEl = $mainUl[0]; if (!ulEl) return; var scrollLeft = ulEl.scrollLeft; var scrollWidth = ulEl.scrollWidth; var clientWidth = ulEl.clientWidth; var maxScroll = scrollWidth - clientWidth; if (scrollWidth > clientWidth) { if (scrollLeft > 5) { if ($body.find('.smc-scroll-arrow-left').length === 0) { $body.append('
zurück
'); $body.find('.smc-scroll-arrow-left').off('click').on('click', function() { $mainUl.stop().animate({ scrollLeft: scrollLeft - 150 }, 200, updateScrollArrows); }); } } else { $body.find('.smc-scroll-arrow-left').remove(); } if (scrollLeft < maxScroll - 5) { if ($body.find('.smc-scroll-arrow-right').length === 0) { $body.append('
vorwärts
'); $body.find('.smc-scroll-arrow-right').off('click').on('click', function() { $mainUl.stop().animate({ scrollLeft: scrollLeft + 150 }, 200, updateScrollArrows); }); } } else { $body.find('.smc-scroll-arrow-right').remove(); } } else { $body.find('.smc-scroll-arrow-nav').remove(); } } function checkStatus() { var anyActive = false; var $activeMainLi = null; // Alte Buttons entfernen $mainUl.find('.smc-dynamic-button-wrapper').remove(); $mainLis.removeClass('is-active'); // WICHTIG: Alte "current" Klassen vor der Neuprüfung von allen Elementen entfernen $widget.find('.current').removeClass('current'); var $allCheckedBoxes = $widget.find('.bapf_body input[type="checkbox"]:checked'); if ($allCheckedBoxes.length > 0) { anyActive = true; var $firstChecked = $($allCheckedBoxes); $activeMainLi = $firstChecked.closest('.bapf_body > ul > li'); $activeMainLi.addClass('is-active'); // NEU: Dem aktiven Listenpunkt (li) und dem darin liegenden Link (a) die Klasse "current" geben $activeMainLi.addClass('current'); $activeMainLi.find('> label a').addClass('current'); // Falls tiefer geschachtelte Unterkategorien aktiv sind, bekommen diese ebenfalls "current" $allCheckedBoxes.each(function() { $(this).closest('li').addClass('current'); $(this).closest('li').find('> label a').addClass('current'); }); } if (anyActive && $activeMainLi) { $widget.addClass('has-active-category'); var backButtonHtml = '
  • ' + '' + 'Zurück' + '' + '
  • '; $mainUl.prepend(backButtonHtml); $mainUl.find('.smc-cat-filter-back-btn').on('click', function(e) { e.preventDefault(); var $checkboxesToClear = $activeMainLi.find('input[type="checkbox"]:checked'); if ($checkboxesToClear.length > 0) { $checkboxesToClear.each(function(index) { if (index === 0) { $(this).closest('li').find('> label').trigger('click'); } else { $(this).prop('checked', false).trigger('change'); } }); } }); } else { $widget.removeClass('has-active-category'); var allProductsHtml = '
  • ' + '' + '[smc-all-products-string]' + '' + '
  • '; $mainUl.prepend(allProductsHtml); } setTimeout(updateScrollArrows, 150); } checkStatus(); $widget.find('.bapf_body label, .bapf_body input[type="checkbox"]').off('click.smc').on('click.smc', function(e) { setTimeout(checkStatus, 150); }); $mainUl.off('scroll.smc').on('scroll.smc', function() { updateScrollArrows(); }); $(window).off('resize.smc').on('resize.smc', function() { updateScrollArrows(); }); } initSmcFilters(); $(document).on('berocket_ajax_filtering_end', function() { initSmcFilters(); }); })(jQuery);

    Het contact met de weg bepaalt het karakter.

    Velgen en banden behoren tot de details die het karakter van een voertuig direct veranderen. Grootte, breedte, ET-waarde, profiel en materiaal bepalen niet alleen de optiek – ze bepalen hoe authentiek een schaalmodel oogt.

    Bij ScaleMonkey vind je geselecteerde banden en velgen voor veeleisende automodelbouwprojecten. Van klassieke ontwerpen tot moderne performance-wielen, van kant-en-klare combinaties tot componenten voor individuele opbouw.

    Het gaat er niet om zomaar een wiel onder de carrosserie te plaatsen. Het gaat om de juiste combinatie van proportie, detailgetrouwheid en functie. Want juist bij wielen blijkt snel of een model passend is opgebouwd – of er alleen maar zo uitziet.

    Voor modellen waarbij elke millimeter telt.