✦ Verified product
F-One ROCKET WING MIDLENGTH
EUR 1,689.00
Board Size (L)
Billy.be
Verified independent store
→
Where the middle is just the right place to be!Where the middle is just the right place to be. Representing a pragmatic evolution in our foil board range, the new ROCKET MIDLENGTH
boards combine the efficiency and glide of our SUP DW boards with the stability and ease of our wing foil boards. Designed to offer easy take-off, enhanced maneuverability and optimal stability, these boards bring an unrivalled wing foiling experience and meet the demands of all riders, in all conditions. Best all-around board in our range Innovative shape for enhanced performance, optimized glide, and maximum stability Light bamboo construction for a very direct feel Size range adapted to all levels and conditions .progress-container { display: flex; justify-content: space-between; background-color: #f9f9f9; padding: 40px 25px 60px 25px; } .progress-ring { width: 150px; height: 150px; position: relative; text-align: center; } .progress-ring circle { fill: transparent; stroke: #ff6800; stroke-width: 15; transform: rotate(-90deg); transform-origin: 50% 50%; transition: stroke-dashoffset 0.5s; } .progress-ring .ring-background { fill: transparent; stroke: #ccc; stroke-width: 15; transform: rotate(-90deg); transform-origin: 50% 50%; } .progress-text { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 24px; } .progress-title { font-size: 20px; color: black; margin-top: 10px; } @media (max-width: 768px) { .progress-container { flex-direction: column; align-items: center; } .progress-ring { margin-bottom: 50px; } } PERFORMANCE Accessibility 0% Lightwind 0% Freestyle 0% Carving 0% document.addEventListener("DOMContentLoaded", function() { function animateProgress(ringId, from, to, duration) { const ring = document.querySelector(`#ring${ringId} .ring`); const text = document.getElementById(`progress${ringId}`); const title = document.querySelector(`#ring${ringId} .progress-title`); const circumference = 2 * Math.PI * 65; // Hardcoding the radius as 65 for this example const increment = (to - from) / (duration * 60); let current = from; function update() { if ((increment > 0 && current < to) || (increment < 0 && current > to)) { const offset = circumference - (current / 100) * circumference; ring.style.strokeDasharray = `${circumference} ${circumference}`; ring.style.strokeDashoffset = offset; text.textContent = `${Math.round(current)}%`; current += increment; requestAnimationFrame(update); } else { const offset = circumference - (to / 100) * circumference; ring.style.strokeDashoffset = offset; text.textContent = `${to}%`; } } update(); } function handleIntersection(entries, observer) { entries.forEach((entry) => { if (entry.isIntersecting) { const ringId = entry.target.id.replace('ring', ''); const from = 0; const to = parseInt(entry.target.getAttribute('data-progress'), 10); animateProgress(ringId, from, to, 2); observer.unobserve(entry.target); } }); } const rings = document.querySelectorAll('.progress-ring'); const observer = new IntersectionObserver(handleIntersection, { root: null, rootMargin: '0px', threshold: 0.2 // Adjust this threshold as needed }); rings.forEach((ring) => { observer.observe(ring); }); });