inswalk — Casual Minimalist Shoes
Regular price
£14.95
Regular price
Sale price
£14.95
Unit price
/
per
Sold out
Taxes included.
Color:
Black
Couldn't load pickup availability
Refresh
2-In-1 Hair Accessory
Make Every Hairstyle More Fashionable
Sunglasses Style, Hair Accessory Function
Upgrade your everyday style with this unique 2-in-1 fashion accessory that combines the look of trendy sunglasses with the function of a stylish hair clip. Designed with a chic acetate leopard pattern, it adds effortless elegance to any outfit while keeping your hair perfectly styled.
Why You'll Love It
Two reasons it's the smarter way to accessorize.
Suitable For
Perfect For Every Fashion Moment Whether you're heading out for coffee, traveling, attending a party, or simply styling your everyday look, this versatile accessory adds a fashionable finishing touch.
Ideal For
Parties & Events
Fashion Gifts
Shopping & City Walks
Photo Taking
Daily Outfits
Travel Styling
How To Use
1
Place
Place the accessory on your head like a stylish hairband.
2
Adjust
Adjust the position to match your hairstyle and outfit.
3
Style
Use it as a decorative hair accessory for an instant fashion upgrade.
4
Pair It
Pair it with casual or dressy outfits for different looks.
Product Specifications
Product Type
2-In-1 Hair Accessory
Design
Sunglasses-Inspired Style
Material
Acetate Style Material
Pattern
Leopard Print
Function
Hair Decoration & Styling Accessory
Style
Fashion / Casual / Trendy
Suitable For
Women & Girls
Occasions
Daily Wear, Travel, Parties, Events
Package Includes
1 × Hair Accessory
Yes. Its unique design makes it a fun and fashionable gift choice for anyone who loves accessories.
Customer Reviews
"Such a fun accessory! I wear it when traveling and it always gets compliments."
Olivia M.
"I love how unique this accessory is! Everyone thought it was sunglasses at first and then loved the idea when I showed them."
Emma W.
"Lightweight, cute, and different from ordinary hair clips. Definitely one of my favorite fashion pieces."
Mia R.
"The leopard pattern looks so stylish and expensive. It instantly makes my simple outfits look more fashionable."
Sophia L.
Make Every Hairstyle More Fashionable
Turn ordinary hairstyles into standout looks with a unique accessory designed for modern fashion lovers. Add a touch of personality, elegance, and creativity to every outfit.
Add to Cart Now
(function(){ var carousel = document.querySelector('[data-carousel]'); if(!carousel) return; var track = carousel.querySelector('[data-track]'); var slides = track.querySelectorAll('.zk3f'); var dotsWrap = carousel.querySelector('[data-dots]'); var prevBtn = carousel.querySelector('[data-prev]'); var nextBtn = carousel.querySelector('[data-next]'); var activeIndex = 0; var AUTOPLAY_DELAY = 3000; var autoplayTimer = null; var carouselInView = false; // becomes true only once the carousel scrolls into view slides.forEach(function(slide, i){ var dot = document.createElement('button'); dot.type = 'button'; dot.className = 'bwc-carousel-dot' + (i === 0 ? ' active' : ''); dot.setAttribute('aria-label', 'Go to slide ' + (i + 1)); dot.addEventListener('click', function(){ goToSlide(i); restartAutoplay(); }); dotsWrap.appendChild(dot); }); var dots = dotsWrap.querySelectorAll('.bwc-carousel-dot'); // Scroll the track itself (horizontal only). Never use scrollIntoView here — // it can also scroll the whole page vertically to "reveal" the slide, which // yanks the page back up to this section if the user has scrolled past it. function goToSlide(i){ var slide = slides[i]; track.scrollTo({ left: slide.offsetLeft, behavior: 'smooth' }); } function updateActive(){ var trackRect = track.getBoundingClientRect(); var closest = 0, closestDist = Infinity; slides.forEach(function(slide, i){ var dist = Math.abs(slide.getBoundingClientRect().left - trackRect.left); if (dist < closestDist) { closestDist = dist; closest = i; } }); activeIndex = closest; dots.forEach(function(d, i){ d.classList.toggle('active', i === closest); }); } var scrollTimer; track.addEventListener('scroll', function(){ clearTimeout(scrollTimer); scrollTimer = setTimeout(updateActive, 80); }); function stepWidth(){ if (slides.length > 1) { return slides[1].offsetLeft - slides[0].offsetLeft; } return slides[0].getBoundingClientRect().width; } prevBtn.addEventListener('click', function(){ track.scrollBy({left: -stepWidth(), behavior:'smooth'}); restartAutoplay(); }); nextBtn.addEventListener('click', function(){ track.scrollBy({left: stepWidth(), behavior:'smooth'}); restartAutoplay(); }); function nextSlide(){ var next = (activeIndex + 1) % slides.length; goToSlide(next); } function startAutoplay(){ stopAutoplay(); // Don't run autoplay (and thus don't touch scroll position at all) // while the carousel isn't visible on screen. if (!carouselInView) return; autoplayTimer = setInterval(nextSlide, AUTOPLAY_DELAY); } function stopAutoplay(){ if (autoplayTimer) { clearInterval(autoplayTimer); autoplayTimer = null; } } function restartAutoplay(){ stopAutoplay(); startAutoplay(); } // pause while the user is actively swiping/dragging/hovering, resume after track.addEventListener('pointerdown', stopAutoplay); track.addEventListener('touchstart', stopAutoplay, {passive:true}); track.addEventListener('pointerup', restartAutoplay); track.addEventListener('touchend', restartAutoplay, {passive:true}); carousel.addEventListener('mouseenter', stopAutoplay); carousel.addEventListener('mouseleave', restartAutoplay); // Only autoplay while the carousel is actually on screen — and the // 3-second countdown only starts once the user has scrolled to this // section, not immediately on page load. if ('IntersectionObserver' in window) { var io = new IntersectionObserver(function(entries){ entries.forEach(function(entry){ carouselInView = entry.isIntersecting; if (carouselInView) { restartAutoplay(); } else { stopAutoplay(); } }); }, { threshold: 0.4 }); io.observe(carousel); } updateActive();})(); (function(){ // Anti-scrape demo: the main photo and carousel photos have no // in the raw HTML at all. The URL is base64-encoded in a data attribute on // a plain , and only becomes a visible background-image after this // script runs. Tools that scan the HTML for
tags (which is how most // Shopify import/scraper tools find product images) find nothing here. document.querySelectorAll('[data-bg-b64]').forEach(function(el){ var encoded = el.getAttribute('data-bg-b64'); if (!encoded) return; var url = atob(encoded); // Load the real file first so we can match its natural width/height — // this restores the image's actual proportions instead of forcing a // fixed square/3:2 box, while still never putting the URL in an
tag. var probe = new Image(); probe.onload = function(){ if (probe.naturalWidth && probe.naturalHeight) { el.style.aspectRatio = probe.naturalWidth + ' / ' + probe.naturalHeight; } el.style.backgroundImage = 'url(' + url + ')'; }; probe.onerror = function(){ // fall back to showing it anyway even if dimensions can't be read el.style.backgroundImage = 'url(' + url + ')'; }; probe.src = url; });})();
(function(){ // Anti-scrape demo: headline/paragraph text isn't present in the raw HTML — // it's base64-encoded in data attributes and only rendered into the DOM // after this script runs. A plain HTTP fetch of this page's HTML will not // see the actual copy, only the encoded strings. document.querySelectorAll('.pv2h').forEach(function(el){ var h = el.getAttribute('data-h'); var p = el.getAttribute('data-p'); if (h) el.querySelector('h3').textContent = atob(h); if (p) el.querySelector('p').textContent = atob(p); });})();
(function(){ var accordion = document.querySelector('[data-accordion]'); if(!accordion) return; var buttons = accordion.querySelectorAll('.bwc-faq-q'); buttons.forEach(function(btn){ btn.addEventListener('click', function(){ var item = btn.closest('.bwc-faq-item'); var isOpen = item.classList.contains('open'); item.classList.toggle('open', !isOpen); btn.setAttribute('aria-expanded', String(!isOpen)); }); });})();
(function(){ function findRealAddToCartButton(){ var shrineBtn = document.querySelector('button.main-product-atc[name="add"]'); if (shrineBtn) return shrineBtn; var form = document.querySelector('form[action*="/cart/add"]'); if (form) { var btn = form.querySelector('button[name="add"], button[type="submit"], input[type="submit"]'); if (btn) return btn; } var all = document.querySelectorAll('button, input[type="submit"]'); for (var i = 0; i < all.length; i++) { var txt = (all[i].textContent || all[i].value || '').trim().toLowerCase(); if (txt === 'add to cart' && !all[i].classList.contains('bwc-add-to-cart')) return all[i]; } return null; } function bwcAddToCart(btn){ var realBtn = findRealAddToCartButton(); if (realBtn) { realBtn.click(); return; } var fallbackId = btn.getAttribute('data-fallback-variant'); if (!fallbackId || fallbackId === 'VARIANT_ID') { alert('Could not find the add-to-cart form on this page.'); return; } fetch('/cart/add.js', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ id: fallbackId, quantity: 1 }) }).then(function(){ window.location.href = '/cart'; }); } document.addEventListener('click', function(e){ var btn = e.target.closest('.bwc-add-to-cart'); if (!btn) return; e.preventDefault(); bwcAddToCart(btn); });})();
View full details