Desenvolupament Web
Disseny responsiu interactiu

Disseny i desenvolupament realitzats amb cura i detall.
Creem llocs web ràpids per a qualsevol mida de pantalla.
Seguim estratègies de disseny responsiu o de mòbil first, segons convingui

Disponible per treballar en un projecte o per hora. Contacteu si teniu algun projecte en ment.

Som un petit i àgil estudi web que dissenya i desenvolupa per a projectes web i digitals. Treballem amb flexibilitat amb els clients per satisfer les seves necessitats.

Gaudim fent coses com

  • Desenvolupament web
  • Desenvolupament WordPress
  • Desenvolupament Woocommerce
  • Desenvolupament Mobile First
  • Disseny web responsiu
  • Rendiment web
  • Gestió de projectes
  • Arquitectura de la informació
  • Disseny d’interfícies d’usuari (UI)
  • Disseny d’experiència de l’usuari (UX)
  • Anàlisi d’usabilitat
  • Serveis de suport
  • Estratègia digital
  • Màrqueting digital
  • Analytica web
  • SEO
  • PPC / SEM

Si necessiteu crear un lloc web des de zero o amb wordpress (o un altre CMS) o només necessiteu ajuda tècnica en línia, sempre podeu comptar amb nosaltres. També podem ajudar-vos amb SEO, SEM o amb la millor estratègia digital per al vostre negoci.

We Web

FollowLin.X.
...
window.addEventListener("load", initCursor); function initCursor() { const $img = document.querySelector("#site-header"); const { $width } = $img.getBoundingClientRect(); const $halfImgWidth = $width / 2; $img.addEventListener("mousemove", function (e) { const xPos = e.pageX - $img.offsetLeft; /*IE11 need this*/ //this.classList.remove("cursor-prev"); //this.classList.remove("cursor-next"); this.classList.remove("cursor-prev", "cursor-next"); if (xPos > $halfImgWidth) { this.classList.add("cursor-next"); } else { this.classList.add("cursor-prev"); } }); } // Cursor ICON substitition <-- // Button Ripple Effect // Function to add the ripple effect function addRippleEffect(event) { const button = event.currentTarget; const ripple = document.createElement("span"); const rect = button.getBoundingClientRect(); const size = Math.max(rect.width, rect.height); const x = event.clientX - rect.left - size / 2; const y = event.clientY - rect.top - size / 2; ripple.style.width = ripple.style.height = `${size}px`; ripple.style.left = `${x}px`; ripple.style.top = `${y}px`; ripple.classList.add("ripple"); button.appendChild(ripple); ripple.addEventListener("animationend", function() { ripple.remove(); }); } // Function to attach the ripple effect to buttons with given class names function attachRippleEffectToButtons(classNames) { classNames.forEach(className => { const buttons = document.querySelectorAll(`.${className}`); if (buttons.length === 0) { console.warn(`No elements found for class ${className}`); return; } buttons.forEach(button => { button.addEventListener("click", addRippleEffect); }); }); } // Attach the ripple effect when the document is ready document.addEventListener("DOMContentLoaded", function() { const targetClassNames = ["btn-mat", "another-class"]; attachRippleEffectToButtons(targetClassNames); function createCircleInner() { const circleInner = document.createElement('div'); circleInner.className = 'circle-inner'; const box = document.createElement('div'); box.className = 'box'; circleInner.appendChild(box); const smallCircle = document.createElement('div'); smallCircle.className = 'small-circle'; box.appendChild(smallCircle); for (let i = 1; i <= 10; i++) { const span = document.createElement('span'); span.style.setProperty('--i', i); box.appendChild(span); } document.body.appendChild(circleInner); } createCircleInner(); }); window.onbeforeunload = function leavingPage(){ console.log('leaving'); return null; } -->