De Europese leader voor duurzame, blanco kleding van topkwaliteit
De hele Stanley/Stella-collectie is ontwikkeld voor personalisatie. De collectie is dan ook van topkwaliteit. De fijne stoffen beloven een perfect bedrukkingsresultaat. En merklabels? Daar doen we niet aan mee.
Bij ons vind je uiteenlopende modellen en meer dan 100 trendy kleuren. Je creativiteit krijgt dus vrij spel en je klanten krijgen precies wat ze willen.
Ontdek onze collectie
Wij bieden diverse diensten op maat van jouw specifieke noden
Inkooppartner voor jouw modemerk
Versterk het imago van je organisatie met gepersonaliseerde kleding
Maak je belevenis onvergetelijk dankzij unieke, gepersonaliseerde kleding
Sluit je aan bij ons exclusief dealernetwerk. Samen vinden we mode opnieuw uit en maken we de wereld mooier. Word officiële dealer
Transparant en duurzaam mode-ecosysteem
Sinds dag één maken wij milieubewuste en hedendaagse kleding die mild is voor mens en planeet. Je begrijpt dus dat we enkel werken met 100% GOTS-gecertificeerd biologisch katoen en gerecyclede materialen. Zo lossen we al je wensen in, van promotie en imago tot merchandise of de creatie van je eigen merk.
Lees meer over onze beloftes
Laatste éditos
05/24 Ontdek de Crafter, het perfecte t-shirt voor elk zomers moment
04/24 Iconische stijlen voor iedereen Iconics
03/24 Core collectie Collectie Decoratie
Onze artikelen
`; slider.classList.add('glider-contain'); slider.insertAdjacentHTML( 'beforeend', '\u000A\u003Cdiv\u0020class\u003D\u0022carousel\u002Dnav\u0020flex\u0020items\u002Dcenter\u0020justify\u002Dcenter\u0020gap\u002D2\u0020flex\u002D1\u0020p\u002D4\u0022\u003E\u000A\u0020\u0020\u0020\u0020\u003Cbutton\u000A\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u0020aria\u002Dlabel\u003D\u0022Vorige\u0022\u000A\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u0020class\u003D\u0022glider\u002Dprev\u0020flex\u0020items\u002Dcenter\u0020justify\u002Dcenter\u0020outline\u002Dnone\u0020focus\u003Aoutline\u002Dnone\u0020hidden\u0022\u003E\u000A\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u003Csvg\u0020xmlns\u003D\u0022http\u003A\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\u0022\u0020viewBox\u003D\u00220\u00200\u002032\u002032\u0022\u0020class\u003D\u0022w\u002D6\u0020h\u002D6\u0020fill\u002Dprimary\u0022\u0020width\u003D\u002224\u0022\u0020height\u003D\u002224\u0022\u003E\u003Cpath\u0020d\u003D\u0022M\u002019.03125\u00204.28125\u0020L\u00208.03125\u002015.28125\u0020L\u00207.34375\u002016\u0020L\u00208.03125\u002016.71875\u0020L\u002019.03125\u002027.71875\u0020L\u002020.46875\u002026.28125\u0020L\u002010.1875\u002016\u0020L\u002020.46875\u00205.71875\u0020Z\u0022\u002F\u003E\u003C\u002Fsvg\u003E\u000A\u0020\u0020\u0020\u0020\u003C\u002Fbutton\u003E\u000A\u0020\u0020\u0020\u0020\u003Cdiv\u0020role\u003D\u0022tablist\u0022\u0020class\u003D\u0022glider\u002Ddots\u0020select\u002Dnone\u0020flex\u0020flex\u002Dwrap\u0020justify\u002Dcenter\u0020p\u002D0\u0020focus\u003Aoutline\u002Dnone\u0022\u003E\u003C\u002Fdiv\u003E\u000A\u0020\u0020\u0020\u0020\u003Cbutton\u000A\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u0020aria\u002Dlabel\u003D\u0022Volgende\u0022\u000A\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u0020class\u003D\u0022glider\u002Dnext\u0020flex\u0020items\u002Dcenter\u0020justify\u002Dcenter\u0020outline\u002Dnone\u0020focus\u003Aoutline\u002Dnone\u0020hidden\u0022\u003E\u000A\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u003Csvg\u0020xmlns\u003D\u0022http\u003A\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\u0022\u0020viewBox\u003D\u00220\u00200\u002032\u002032\u0022\u0020class\u003D\u0022w\u002D6\u0020h\u002D6\u0020fill\u002Dprimary\u0022\u0020width\u003D\u002224\u0022\u0020height\u003D\u002224\u0022\u003E\u003Cpath\u0020d\u003D\u0022M\u002012.96875\u00204.28125\u0020L\u002011.53125\u00205.71875\u0020L\u002021.8125\u002016\u0020L\u002011.53125\u002026.28125\u0020L\u002012.96875\u002027.71875\u0020L\u002023.96875\u002016.71875\u0020L\u002024.65625\u002016\u0020L\u002023.96875\u002015.28125\u0020Z\u0022\u002F\u003E\u003C\u002Fsvg\u003E\u000A\u0020\u0020\u0020\u0020\u003C\u002Fbutton\u003E\u000A\u003C\u002Fdiv\u003E\u000A' ); const gliderElement = slider.querySelector('[data-role="glider-content"]'); const gliderDots = slider.dataset.dots || slider.querySelector('.glider-dots'); const gliderPrev = slider.querySelector('.glider-prev'); const gliderNext = slider.querySelector('.glider-next'); let draggable = true; if (typeof slider.dataset.draggable !== 'undefined') { draggable = (slider.dataset.draggable === true) || (slider.dataset.draggable === 'true'); } const glider = new Glider(gliderElement, { slidesToShow: 1, slidesToScroll: 1, scrollLock: true, scrollLockDelay: 250, draggable: draggable, dragVelocity: 2.5, dots: gliderDots, arrows: { prev: gliderPrev, next: gliderNext, }, }); slider.classList.add('glider-initialized'); if (slider.dataset.showArrows === 'true') { gliderPrev.classList.remove('hidden'); gliderNext.classList.remove('hidden'); } if (slider.dataset.autoplay !== 'false') { gliderAutoplay( glider, slider.dataset.autoplaySpeed, slider.dataset.infiniteLoop ); } if ((slider.dataset.dots === 'false') && (slider.dataset.showArrows === 'false')) { slider.querySelector('.carousel-nav').classList.add('hidden'); } }; const gliderAutoplay = (glider, milliseconds, loop) => { const pagesCount = glider.track.childElementCount; let slideTimeout = null; let nextIndex = 1; let paused = false; const slide = () => { slideTimeout = setTimeout( () => { if (loop && nextIndex >= pagesCount) { nextIndex = 0; } glider.scrollItem(nextIndex); }, parseInt(milliseconds) ); }; glider.ele.addEventListener('glider-animated', () => { nextIndex = glider.slide + glider.opt.slidesToScroll; window.clearInterval(slideTimeout); if (!paused && (loop || nextIndex < pagesCount)) { slide(); } }); const pause = () => { if (!paused) { clearInterval(slideTimeout); paused = true; } }; const unpause = () => { if (paused) { slide(); paused = false; } }; glider.ele.parentElement.addEventListener('mouseover', pause, {passive: true}); glider.ele.parentElement.addEventListener('touchstart', pause, {passive: true}); glider.ele.parentElement.addEventListener('mouseout', unpause, {passive: true}); glider.ele.parentElement.addEventListener('touchend', unpause, {passive: true}); slide(); }; elements.forEach(element => { if (element.dataset.contentType === 'products') { initProductCarousel(element); } if (element.dataset.contentType === 'slider') { initSliderCarousel(element); } }); }; /** * This function adds a class "carousel-nav-wrapper" to a new div element, * and appends the div to the tab navigation container. * It also sets an ID for each carousel nav element and adds them to the new div element. * If the first tab in the set is a carousel, it sets it as active on page load. * * @returns {void} */ const tabCarousel = () => { // Select all tab content elements on the page const tabs = document.querySelectorAll('.tabs-content'); // Return if no tabs found if (!tabs.length > 0) { return; } // Set negative margin to container due to slide x margins to center the glider container const carousels = document.querySelectorAll('[data-content-type="products"][data-appearance="carousel"]'); carousels.forEach(carousel => { const carouselParentTabItem = carousel.parentElement; carouselParentTabItem.style.margin = '0 -8px'; gliderInstances.forEach((glider) => { requestAnimationFrame(() => { glider.refresh(true); }); }); }) // For each tab, create a carousel navigation wrapper and add it to the tab navigation tabs.forEach(tab => { const carouselNavsWrapper = document.createElement('div'); const carouselNavs = tab.querySelectorAll('.carousel-nav'); const tabNav = tab.parentElement.parentElement.querySelector('.tabs-navigation-wrapper'); // Add a class to the carousel navigation wrapper carouselNavsWrapper.classList.add('carousel-nav-wrapper'); // Add the carousel navigation wrapper to the tab navigation tabNav.appendChild(carouselNavsWrapper); // For each carousel navigation, set its ID, add it to the wrapper, and set it active if its tab is active carouselNavs.forEach(carouselNav => { const carouselTabId = carouselNav.parentElement.closest('[data-appearance="carousel"]').parentElement.id; carouselNav.id = `carousel-nav-${carouselTabId}`; carouselNavsWrapper.appendChild(carouselNav); const tabHeader = document.querySelector(`[data-tab="${carouselTabId}"]`); // If first tab is carousel, set it active on page load if (tabHeader.classList.contains('active') && carouselNav.id === `carousel-nav-${carouselTabId}`) { carouselNav.classList.add('active'); } }); }); }; window.addEventListener('lbb-private-content-loaded', (event) => { let carouselElements = []; let newGliders = []; const lbbCarouselData = event.detail; gliderInstances.forEach((glider) => { if (glider.ele.id === lbbCarouselData.elementId) { let el = document.querySelector('#' + lbbCarouselData.elementId) .closest('div[data-content-type="products"]'); if (el) { el.innerHTML = lbbCarouselData.html; carouselElements.push(el); } } else { newGliders.push(glider); } }); gliderInstances = newGliders; initCarousels(carouselElements); tabCarousel(); }); window.addEventListener('DOMContentLoaded', () => { const carouselElements = document.querySelectorAll( `[data-content-type="products"][data-appearance="carousel"], [data-content-type="slider"]` ); if (carouselElements.length > 0) { const script = document.createElement('script'); script.type = 'text/javascript'; script.addEventListener('load', () => { initCarousels(carouselElements); const lbbCarousel = document.querySelector('.lbb-carousel'); if (!lbbCarousel) { tabCarousel(); } }); script.src = 'https\u003A\u002F\u002Fstanleystella.com\u002Fstatic\u002Fversion1719585007\u002Ffrontend\u002FStanleyStella\u002Fdefault\u002Fnl_NL\u002FMagento_PageBuilder\u002Fjs\u002Fglider.min.js'; document.head.appendChild(script); /** * This code listens for a click event on an element with a class of "tab-title". * When the event is triggered, it gets the ID of the parent tab and the associated carousel navigation. * It then finds the corresponding carousel instance based on the carousel ID. * If the carousel instance is found, it refreshes the instance and sets it to the first slide. * It then removes the "active" class from any active carousel nav elements and adds the "active" class to the associated nav element. * * @returns {void} */ document.addEventListener('click', (event) => { // Check if the clicked element has a class of "tab-title" if (event.target.matches('.tab-title')) { // Get the ID of the parent tab and the associated carousel navigation const tabId = event.target.parentElement.closest('.tab-header').dataset.tab; const tabContainer = event.target.parentElement.closest('.tabs-navigation-wrapper'); const carouselNavs = tabContainer.querySelectorAll('.carousel-nav'); // Find the corresponding carousel instance based on the carousel ID const targetCarousel = gliderInstances.filter((obj) => { return obj._opt.carouselId === tabId; }); // If the carousel instance is found, refresh the instance and set it to the first slide if (targetCarousel.length > 0) { requestAnimationFrame(() => { targetCarousel[0].refresh(true); targetCarousel[0].scrollItem(0); }); } // Remove the "active" class from any active carousel nav elements and add the "active" class to the associated nav element const activeCarouselNav = document.getElementById(`carousel-nav-${tabId}`); carouselNavs.forEach(carouselNav => { if (carouselNav.classList.contains('active')) { carouselNav.classList.remove('active'); } }); if (activeCarouselNav) { activeCarouselNav.classList.add('active'); } } }); } }); })();
Introduction: My name is Lakeisha Bayer VM, I am a brainy, kind, enchanting, healthy, lovely, clean, witty person who loves writing and wants to share my knowledge and understanding with you.
We notice you're using an ad blocker
Without advertising income, we can't keep making this site awesome for you.