Siamo
MA-NO WEB DESIGN AND DEVELOPMENT è un'agenzia specializzata in web design e sviluppo web a Palma di Maiorca, design grafico, sviluppo di applicazioni e ottimizzazione SEO. Abbiamo un potente team creativo multinazionale e multidisciplinare, che vi offre un servizio di qualità, veloce e all'altezza del vostro progetto.
Utenti che hanno visitato i nostri siti web
Totale guadagnato dai nostri clienti
MA-NO è un'agenzia specializzata in prodotti digitali che suscitano emozioni, hanno personalità e portano risultati. Web agency nelle Isole Baleari con 10 anni di progettazione di siti web per grandi e piccole imprese a Maiorca e in tutta la Spagna, numerose storie di successo ci sostengono. Portiamo questa esperienza ad ogni progetto per offrire un alto livello di servizio ed eccellenza.
ConoscerciOffriamo servizi di sviluppo di progetti completi, a livello locale, regionale, nazionale e internazionale, con risultati misurabili. Siamo l'azienda di Web Design a Mallorca che offre il miglior design e strategia digitale nella progettazione di siti web aziendali e negozi online.
I nostri serviziSviluppiamo progetti digitali per grandi marche e questo non ci ha dato alla testa (anche se siamo molto bravi e lo sappiamo).
Ma-No ascolta, si adatta e lavora con te per portare la tua presenza online da Meh a WOW. Hai bisogno di un servizio completo? Possiamo aiutare con strategia, campagne, pubblicità, branding, video, fotografia e altro.
MA-NO è un'agenzia specializzata in prodotti digitali che suscitano emozioni, hanno personalità e portano risultati.
Condivideremo esperienze, professionalità, un po' di umorismo, lavoreremo con voi per risolvere i vostri problemi complessi e raggiungere i vostri obiettivi.
· La nostra giornata non è noiosa e nemmeno la vostra dovrebbe esserlo ·
Opciones de Accesibilidad
Ajuste de contenido
Control saturación
Screen reader
Control volumen
Utilizziamo i nostri cookie e quelli di terzi per migliorare i nostri servizi, compilare informazioni statistiche e analizzare le vostre abitudini di navigazione. Questo ci permette di personalizzare i contenuti che offriamo e di mostrarvi le pubblicità relative alle vostre preferenze. Cliccando su "Accetta tutto" acconsentite alla memorizzazione dei cookie sul vostro dispositivo per migliorare la navigazione del sito web, analizzare il traffico e assistere le nostre attività di marketing. Potete anche selezionare "Solo cookies di sistema" per accettare solo i cookies necessari al funzionamento del sito web, oppure potete selezionare i cookies che desiderate attivare cliccando su "Impostazioni".
Accetta tutti Solo cookies del sistema ConfigurazioneQuesti cookie sono necessari per il funzionamento del sito Web e non possono essere disattivati sui nostri sistemi. Generalmente vengono impostate solo in risposta alle vostre azioni di richiesta di servizi, come l'impostazione delle vostre preferenze sulla privacy, l'accesso o la compilazione di moduli. È possibile impostare il browser in modo da bloccare o avvisare l'utente di questi cookie, ma alcune aree del sito non funzioneranno. Questi cookie non memorizzano alcuna informazione di identificazione personale
Questi cookie ci permettono di contare le visite e le fonti di traffico in modo da poter valutare le prestazioni del nostro sito e migliorarle. Ci aiutano a sapere quali sono le pagine più o meno visitate e come i visitatori navigano nel sito. Tutte le informazioni raccolte da questi cookie sono aggregate e quindi anonime. Se non consentite l'utilizzo di questi cookie, non sapremo quando avete visitato il nostro sito e non saremo in grado di valutare se ha funzionato correttamente
Questi cookie consentono al sito Web di fornire una migliore funzionalità e personalizzazione. Essi possono essere impostati dalla nostra azienda o da fornitori esterni di cui abbiamo aggiunto i servizi alle nostre pagine. Se non si consente l'utilizzo di questi cookie, alcuni di questi servizi potrebbero non funzionare correttamente
Questi cookie possono essere impostati attraverso il nostro sito dai nostri partner pubblicitari. Possono essere utilizzati da queste aziende per profilare i vostri interessi e visualizzare annunci pertinenti su altri siti. Non memorizzano direttamente le informazioni personali, ma si basano sull'identificazione univoca del browser e del dispositivo Internet. Se non si consente l'utilizzo di questi cookie, si vedrà una pubblicità meno mirata
Array ( [path] => Array ( [0] => it ) [path-first-chunk] => Array ( ) [path-last-chunk] => it [path-prelast-chunk] => Array ( [0] => it ) [file-name] => it [file-mime] => it [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-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%); } } .mySwiper { -webkit-box-shadow: none; box-shadow: none; height:300px; } .mySwiper .swiper-slide { text-align: center; font-size: 18px; width: 300px; height: 300px; /* Center slide text vertically */ display: -webkit-box; display: -ms-flexbox; display: -webkit-flex; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; -webkit-justify-content: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; -webkit-align-items: center; align-items: center; } [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]); }()); var swiper = new Swiper(".mySwiper", { /* navigation: { nextEl: ".swiper-button-next", prevEl: ".swiper-button-prev", }, pagination: { el: ".swiper-pagination", clickable: true, },*/ slidesPerView: 4, spaceBetween: 40, breakpoints: { 320: { slidesPerView: 2, spaceBetween: 20 }, 480: { slidesPerView: 3, spaceBetween: 30 }, 640: { slidesPerView: 4, spaceBetween: 40 } }, loop: true, loopFillGroupWithBlank: true, autoplay: { delay: 2500, disableOnInteraction: false, }, }); [main_title] => Web Design, Sviluppo Web, Ottimizzazione SEO a Maiorca [is_indexable] => [is_followable] => [gallery] => categories-2 ) )