Desarrollo web
Diseño interactivo responsivo

Diseño y desarrollo hechos con amor y cuidado.
Creamos sitios web rápidos para cualquier tamaño de pantalla.
Seguimos estrategias de diseño adaptativo o mobile-first, según corresponda.

Disponible para trabajar por proyecto o por horas. Contacta si tienes algún proyecto en mente. Veremos todas las posibilidades juntos

¡Hola! somos un pequeño y estudio web ágil que diseña y desarrolla para proyectos web y digitales. Trabajamos de forma flexible con los clientes para satisfacer sus necesidades.

Nos gusta
hacer cosas como

  • Diseño y Desarrollo web
  • Desarrollo WordPress
  • Desarrollo Woocommerce
  • Desarrollo Mobile First
  • Diseño web adaptable
  • Rendimiento web
  • Gestión de proyectos
  • Arquitectura de información
  • Diseño de interfaz de usuario (UI)
  • Diseño de experiencia de usuario (UX)
  • Análisis de usabilidad
  • Servicios de asistencia
  • Estrategia digital
  • Marketing digital
  • Análisis web
  • SEO
  • PPC / SEM

Si necesita crear un sitio web desde cero o con wordpress (u otro CMS) o simplemente necesita ayuda técnica en línea, siempre puede contar con nosotros. También podemos ayudarte con SEO, SEM o con la mejor estrategia digital para tu negocio .

We Web

SeguirLin.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; } -->