Somos
MA-NO Web Design & Development es una agencia especializada en diseño web y desarrollo web en Palma de Mallorca, diseño gráfico, desarrollo de aplicaciones y posicionamiento web SEO y SEM. Contamos con un potente equipo creativo multinacional y multidisciplinar, que te ofrece un servicio de calidad, rápido y a la altura de tu proyecto.
Usuarios que han visitado nuestras webs
Total ganado por nuestros clientes
Agencia de diseño y desarrollo web en Baleares con 10 años de experiencia diseñando páginas web para grandes y pequeñas empresas en Mallorca y toda España, numerosos casos de éxito nos avalan. Asesorando a nuestras empresas sobre el posicionamiento de sus páginas web.
MA-NO es una agencia especializada en productos digitales que despiertan emociones, tienen personalidad e impulsan resultados. Aportamos esa experiencia en cada proyecto para ofrecer así un servicio de alto nivel y excelencia.
Somos la empresa de diseño web en Mallorca que ofrece el mejor diseño y estrategia digital en el diseño de páginas web corporativas y tiendas online. Ofrecemos servicios integrales de desarrollo de proyectos web, a nivel local, regional, nacional e internacional, con resultados medibles.
Nuestros serviciosDesarrollamos proyectos digitales para marcas importantes y no se nos ha subido a la cabeza (aunque somos muy buenos y lo sabemos).
MA-NO escucha, se adapta y trabaja contigo para llevar tu presencia online al éxito. ¿Necesitas un servicio completo? Además de hacer tu página web, podemos ayudarte con estrategia, campañas, publicidad, branding, video, fotografía y más.
Si tienes una empresa sin ánimo de lucro, una marca emergente, una empresa familiar o una corporación, estás aquí porque reconoces el impacto que puede tener un producto digital como un sitio web.
MA-NO es una agencia especializada en productos digitales que despiertan emociones, tienen personalidad e impulsan resultados.
Compartiremos experiencias, profesionalidad, algo de humor, trabajaremos contigo para resolver tus complejos problemas y lograr tus metas.
· Nuestro día a día no es aburrido y el tuyo tampoco debería serlo ·
Opciones de Accesibilidad
Ajuste de contenido
Control saturación
Screen reader
Control volumen
Utilizamos cookies propias y de terceros para mejorar nuestros servicios, elaborar información estadística y analizar tus hábitos de navegación. Esto nos permite personalizar el contenido que ofrecemos y mostrarte publicidad relacionada con tus preferencias. Clicando en ‘Acepta todas’ aceptas el almacenamiento de cookies en tu dispositivo para mejorar la navegación en el sitio web, analizar el tráfico y ayudar en nuestras actividades de marketing. También puedes seleccionar ‘Sólo cookies de sistema’ para aceptar sólo las cookies necesarias para que la web funcione, o puedes seleccionar las cookies que quieres activar clicando en ‘Configuración’
Acepta todas Sólo cookies de sistema ConfiguraciónEstas cookies son necesarias para que el sitio web funcione y no se pueden desactivar en nuestros sistemas. Por lo general, solo se configuran en respuesta a sus acciones realizadas al solicitar servicios, como establecer sus preferencias de privacidad, iniciar sesión o completar formularios. Puede configurar su navegador para bloquear o alertar sobre estas cookies, pero algunas áreas del sitio no funcionarán. Estas cookies no almacenan ninguna información de identificación personal.
Estas cookies nos permiten contar las visitas y fuentes de tráfico para poder evaluar el rendimiento de nuestro sitio y mejorarlo. Nos ayudan a saber qué páginas son las más o las menos visitadas, y cómo los visitantes navegan por el sitio. Toda la información que recogen estas cookies es agregada y, por lo tanto, es anónima. Si no permite utilizar estas cookies, no sabremos cuándo visitó nuestro sitio y no podremos evaluar si funcionó correctamente.
Estas cookies permiten que el sitio web proporcione una mejor funcionalidad y personalización. Pueden ser establecidas por nuestra empresa o por proveedores externos cuyos servicios hemos agregado a nuestras páginas. Si no permite utilizar estas cookies, es posible que algunos de estos servicios no funcionen correctamente.
Estas cookies pueden ser establecidas a través de nuestro sitio por nuestros socios publicitarios. Pueden ser utilizadas por esas empresas para crear un perfil de sus intereses y mostrarle anuncios relevantes en otros sitios. No almacenan directamente información personal, sino que se basan en la identificación única de su navegador y dispositivo de Internet. Si no permite utilizar estas cookies, verá menos publicidad dirigida.
Array ( [path] => Array ( [0] => es ) [path-first-chunk] => Array ( ) [path-last-chunk] => es [path-prelast-chunk] => Array ( [0] => es ) [file-name] => es [file-mime] => es [file-is-file] => 0 [file-get-values] => Array ( ) [path-middle-chunks] => [plugins] => Array ( [item-nav-path] => [nav-path] => /index.php [path-models] => /var/www/torpedobits.com/plugins//public/models/index.php [path-files] => /var/www/torpedobits.com/plugins//public/views/index.php [path-item-models] => /var/www/torpedobits.com/plugins//public/models//item.php [path-item-files] => /var/www/torpedobits.com/plugins//public/views//item.php ) [PARAMS] => Array ( [css_style] => .typewrite_container {font-size:24px;font-weight:bold;} .swiper-container .sldtext{ top:10% } .particle-network-animation { position: relative; float:left; display:block; height: 100vh; width:100%; /*background-color: #fff; background: rgb(0,154,145); background: radial-gradient(circle, rgba(0,154,145,1) 0%, rgba(9,121,116,1) 35%, rgba(0,20,18,1) 100%);*/ } .particle-network-animation::before { z-index: -2; content: ""; position: absolute; top: 0; right: 0; bottom: 0; left: 0; /*background-image: url(/cache/galleries/generica/photo-1450849608880-6f787542c88a.webp);*/ background-image: url(/cache/galleries/categories-2/test.jpg); background-position: center center; background-size: cover; opacity: 0.2; } .particle-network-animation .sldtext{z-index:1;} .particle-network-animation canvas { display: block; float: left; position: absolute; top: 0; left: 0; z-index: -1; } .glow { z-index: -1; position: fixed; top: 50%; left: 50%; background-image: radial-gradient(circle closest-side, rgba(255, 255, 255, 0.025), transparent); } .glow-1 { width: 150vw; height: 150vh; margin-top: -75vh; margin-left: -75vw; animation: glow-1-move 25s linear infinite both; } @keyframes glow-1-move { from { transform: translate(-100%, 100%); } to { transform: translate(100%, -100%); } } .glow-2 { width: 100vw; height: 100vh; margin-top: -50vh; margin-left: -50vw; animation: glow-2-move 25s linear 8.3333333333s infinite both; } @keyframes glow-2-move { from { transform: translate(-100%, 0%); } to { transform: translate(100%, 100%); } } .glow-3 { width: 120vw; height: 120vh; margin-top: -60vh; margin-left: -60vw; animation: glow-3-move 25s linear 16.6666666667s infinite both; } @keyframes glow-3-move { from { transform: translate(100%, 100%); } to { transform: translate(0%, -100%); } } [javascript] => const swipercat = new Swiper('.swiper-container-parked', { // Optional parameters // direction: 'vertical', loop: false, // If we need pagination pagination: { el: '.swiper-pagination', }, // Navigation arrows navigation: { nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev', }, // And if we need scrollbar scrollbar: { el: '.swiper-scrollbar', }, }); /** * Particle Network Animation * Inspiration: https://github.com/JulianLaval/canvas-particle-network */ (function() { var ParticleNetworkAnimation, PNA; ParticleNetworkAnimation = PNA = function() {}; PNA.prototype.init = function(element) { this.$el = $(element); this.container = element; this.canvas = document.createElement('canvas'); this.sizeCanvas(); this.container.appendChild(this.canvas); this.ctx = this.canvas.getContext('2d'); this.particleNetwork = new ParticleNetwork(this); //this.bindUiActions(); return this; }; PNA.prototype.bindUiActions = function() { $(window).on('resize', function() { // this.sizeContainer(); this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); this.sizeCanvas(); this.particleNetwork.createParticles(); }.bind(this)); }; PNA.prototype.sizeCanvas = function() { this.canvas.width = this.container.offsetWidth; this.canvas.height = this.container.offsetHeight; }; var Particle = function(parent, x, y) { this.network = parent; this.canvas = parent.canvas; this.ctx = parent.ctx; this.particleColor = returnRandomArrayitem(this.network.options.particleColors); this.radius = getLimitedRandom(1.5, 4.5); this.opacity = 1; this.x = x || Math.random() * this.canvas.width; this.y = y || Math.random() * this.canvas.height; this.velocity = { x: (Math.random() - 0.5) * parent.options.velocity, y: (Math.random() - 0.5) * parent.options.velocity }; }; Particle.prototype.update = function() { if (this.opacity < 1) { this.opacity += 0.1; } else { this.opacity = 1; } // Change dir if outside map if (this.x > this.canvas.width + 100 || this.x < -100) { this.velocity.x = -this.velocity.x; } if (this.y > this.canvas.height + 100 || this.y < -100) { this.velocity.y = -this.velocity.y; } // Update position this.x += this.velocity.x; this.y += this.velocity.y; }; Particle.prototype.draw = function() { // Draw particle this.ctx.beginPath(); this.ctx.fillStyle = this.particleColor; this.ctx.globalAlpha = this.opacity; this.ctx.arc(this.x, this.y, this.radius, 0, 2 * Math.PI); this.ctx.fill(); }; var ParticleNetwork = function(parent) { this.options = { velocity: 1, // the higher the faster density: 12000, // the lower the denser netLineDistance: 300, netLineColor: '#00a4ad', particleColors: ['#aaa'] // ['#6D4E5C', '#aaa', '#FFC458' ] }; this.canvas = parent.canvas; this.ctx = parent.ctx; this.init(); }; ParticleNetwork.prototype.init = function() { // Create particle objects this.createParticles(true); // Update canvas this.animationFrame = requestAnimationFrame(this.update.bind(this)); //this.bindUiActions(); }; ParticleNetwork.prototype.createParticles = function(isInitial) { // Initialise / reset particles var me = this; this.particles = []; var quantity = this.canvas.width * this.canvas.height / this.options.density; if (isInitial) { var counter = 0; clearInterval(this.createIntervalId); this.createIntervalId = setInterval(function() { if (counter < quantity - 1) { // Create particle object this.particles.push(new Particle(this)); } else { clearInterval(me.createIntervalId); } counter++; }.bind(this), 140); } else { // Create particle objects for (var i = 0; i < quantity; i++) { this.particles.push(new Particle(this)); } } }; ParticleNetwork.prototype.createInteractionParticle = function() { // Add interaction particle this.interactionParticle = new Particle(this); this.interactionParticle.velocity = { x: 0, y: 0 }; this.particles.push(this.interactionParticle); return this.interactionParticle; }; ParticleNetwork.prototype.removeInteractionParticle = function() { // Find it var index = this.particles.indexOf(this.interactionParticle); if (index > -1) { // Remove it this.interactionParticle = undefined; this.particles.splice(index, 1); } }; ParticleNetwork.prototype.update = function() { if (this.canvas) { this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); this.ctx.globalAlpha = 1; // Draw connections for (var i = 0; i < this.particles.length; i++) { for (var j = this.particles.length - 1; j > i; j--) { var distance, p1 = this.particles[i], p2 = this.particles[j]; // check very simply if the two points are even a candidate for further measurements distance = Math.min(Math.abs(p1.x - p2.x), Math.abs(p1.y - p2.y)); if (distance > this.options.netLineDistance) { continue; } // the two points seem close enough, now let's measure precisely distance = Math.sqrt( Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2) ); if (distance > this.options.netLineDistance) { continue; } this.ctx.beginPath(); this.ctx.strokeStyle = this.options.netLineColor; this.ctx.globalAlpha = (this.options.netLineDistance - distance) / this.options.netLineDistance * p1.opacity * p2.opacity; this.ctx.lineWidth = 0.7; this.ctx.moveTo(p1.x, p1.y); this.ctx.lineTo(p2.x, p2.y); this.ctx.stroke(); } } // Draw particles for (var i = 0; i < this.particles.length; i++) { this.particles[i].update(); this.particles[i].draw(); } if (this.options.velocity !== 0) { this.animationFrame = requestAnimationFrame(this.update.bind(this)); } } else { cancelAnimationFrame(this.animationFrame); } }; ParticleNetwork.prototype.bindUiActions = function() { // Mouse / touch event handling this.spawnQuantity = 3; this.mouseIsDown = false; this.touchIsMoving = false; this.onMouseMove = function(e) { if (!this.interactionParticle) { this.createInteractionParticle(); } this.interactionParticle.x = e.offsetX; this.interactionParticle.y = e.offsetY; }.bind(this); this.onTouchMove = function(e) { e.preventDefault(); this.touchIsMoving = true; if (!this.interactionParticle) { this.createInteractionParticle(); } this.interactionParticle.x = e.changedTouches[0].clientX; this.interactionParticle.y = e.changedTouches[0].clientY; }.bind(this); this.onMouseDown = function(e) { this.mouseIsDown = true; var counter = 0; var quantity = this.spawnQuantity; var intervalId = setInterval(function() { if (this.mouseIsDown) { if (counter === 1) { quantity = 1; } for (var i = 0; i < quantity; i++) { if (this.interactionParticle) { this.particles.push(new Particle(this, this.interactionParticle.x, this.interactionParticle.y)); } } } else { clearInterval(intervalId); } counter++; }.bind(this), 50); }.bind(this); this.onTouchStart = function(e) { e.preventDefault(); setTimeout(function() { if (!this.touchIsMoving) { for (var i = 0; i < this.spawnQuantity; i++) { this.particles.push(new Particle(this, e.changedTouches[0].clientX, e.changedTouches[0].clientY)); } } }.bind(this), 200); }.bind(this); this.onMouseUp = function(e) { this.mouseIsDown = false; }.bind(this); this.onMouseOut = function(e) { this.removeInteractionParticle(); }.bind(this); this.onTouchEnd = function(e) { e.preventDefault(); this.touchIsMoving = false; this.removeInteractionParticle(); }.bind(this); this.canvas.addEventListener('mousemove', this.onMouseMove); this.canvas.addEventListener('touchmove', this.onTouchMove); this.canvas.addEventListener('mousedown', this.onMouseDown); this.canvas.addEventListener('touchstart', this.onTouchStart); this.canvas.addEventListener('mouseup', this.onMouseUp); this.canvas.addEventListener('mouseout', this.onMouseOut); this.canvas.addEventListener('touchend', this.onTouchEnd); }; ParticleNetwork.prototype.unbindUiActions = function() { if (this.canvas) { this.canvas.removeEventListener('mousemove', this.onMouseMove); this.canvas.removeEventListener('touchmove', this.onTouchMove); this.canvas.removeEventListener('mousedown', this.onMouseDown); this.canvas.removeEventListener('touchstart', this.onTouchStart); this.canvas.removeEventListener('mouseup', this.onMouseUp); this.canvas.removeEventListener('mouseout', this.onMouseOut); this.canvas.removeEventListener('touchend', this.onTouchEnd); } }; var getLimitedRandom = function(min, max, roundToInteger) { var number = Math.random() * (max - min) + min; if (roundToInteger) { number = Math.round(number); } return number; }; var returnRandomArrayitem = function(array) { return array[Math.floor(Math.random()*array.length)]; }; pna = new ParticleNetworkAnimation(); pna.init($('.particle-network-animation')[0]); }()); [main_title] => MA-NO WEB DESIGN AND DEVELOPMENT S.L. [is_indexable] => [is_followable] => [gallery] => categories-2 ) )