We Are

Web design, web development,online marketing and SEO agency

MA-NO WEB DESIGN AND DEVELOPMENT is an agency specialized in web design and web development in Palma de Mallorca, graphic design, application development and SEO optimization. We have a powerful multinational and multidisciplinary creative team, which offers a quality service, fast and at the height of your project. 

89,526,124

Users who have visited our websites

18,244,545

Total earned by our customers

THE AGENCY

Web design and development agency in the Balearic Islands with 10 years of experience designing websites for large and small companies in Mallorca and throughout Spain, numerous success stories behind us. Advising our companies on the positioning of their websites.

MA-NO is an agency specialising in digital products that arouse emotions, have personality and drive results. We bring this experience to each project to offer a high level of service and excellence.

About us
 
 

SERVICES

We are the web design company in Mallorca that offers the best design and digital strategy in the design of corporate websites and online shops. We offer comprehensive web project development services, locally, regionally, nationally and internationally, with measurable results.

Our services

PORTFOLIO

We develop digital projects for important brands and it hasn't gone to our heads (although we are very good at it and we know it).

Ma-No listens, adapts and works with you to take your online presence from Meh to WOW. Need a full service? We can help with strategy, campaigns, advertising, branding, video, photography and more.

Our projects
 
 

CONTACT

If you have a non-profit, start-up brand, family business or corporation, you're here because you recognize the impact a digital product like a website can have.

Companies we have helped with our work


Creation of the website of Fanautic Club
Creation of the website of Nit de l'Art 2020 of Palma
Creation of the website of Wellies
Creation of the website of Barceló, Hotel Group
Creation of the website of Cuixot de Porc Negre Mallorquín
Creation of the website of Hotel d'es Puig, Deià - Mallorca
Creation of the website of Desarrollo Negocio Dental.
Creation of the website of AbruzzoWeb
Creation of the website of Meliá, hotels & resorts
Creation of the website of Sol by Meliá
Creation of the website of Pizzería Mamma Teresa Trattoria
Creation of the website of Tahini, sushi bar & restaurantde
Creation of the website of Fanautic Club
Creation of the website of Bodegas Suau
Creation of the website of Dismatecsa
Creation of the website of Malift Ascensores
Creation of the website of Somoza Brands
Creación página web Romance by Meliáde
Creation of the website of Pelita, italian burguer e bar
Creation of the website of Hotel Sofia Alcudia Beach
Creation of the website of Fanautic Club
Creation of the website of 21boats
Creation of the website of lds
Creation of the website of Melicotó
Creation of the website of Bunkers Palma
Creation of the website of Grupo Cappuccino
Creation of the website of Tramuntana, A Taste of Spain
Creation of the website of Nautipaints
Creation of the website of Humiclima
Creation of the website of Mallorca Low Cost
Creation of the website of Aura
Creation of the website of Sur Yachts Europa
Creation of the website of Hotel Ca'n Abril con enlace al portfolio
Creation of the website of Cumber Construction
Creation of the website of Martinius Excellent Yacht Service
Creation of the website of Instituto DentalFacial Cosaga
Creation of the website of Jopyería Weyler
Creation of the website of A White Hot Wedding
Creation of the website of Alberto García excelencia dental
Creation of the website of Arianna Mazzetta
Creation of the website of Finca Gomera
Creation of the website of Brokernautic
Creation of the website of Cappuccino Grand Café
Creation of the website of Paradisus by Meliá
Creation of the website of Yacht Service
Creation of the website of Hotelopia
Creation of the website of IBRC Dentists
Creation of the website of Casa Flor Restaurant
Creación página web de Lobster Club
Creación página web de Tiempo y Silencio Casa Sevilla
Creación página web del Defensor del paciente
Creación página web de Remex
Creación página web de Bapiporent

 

We are digital architects

 

MA-NO is an agency specialized in digital products that arouse emotions, have personality and drive results.

We will share experiences, professionalism, some humor, we will work with you to solve your complex problems and achieve your goals.

· Our day is not boring and yours shouldn't be either ·

 

  

We use our own and third-party cookies to improve our services, compile statistical information and analyze your browsing habits. This allows us to personalize the content we offer and to show you advertisements related to your preferences. By clicking "Accept all" you agree to the storage of cookies on your device to improve website navigation, analyse traffic and assist our marketing activities. You can also select "System Cookies Only" to accept only the cookies required for the website to function, or you can select the cookies you wish to activate by clicking on "settings".

Accept All Only sistem cookies Configuration
Array
(
    [path] => Array
        (
            [0] => en
        )

    [path-first-chunk] => Array
        (
        )

    [path-last-chunk] => en
    [path-prelast-chunk] => Array
        (
            [0] => en
        )

    [file-name] => en
    [file-mime] => en
    [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, Web Development, SEO Optimization in Majorca
            [is_indexable] => 
            [is_followable] => 
            [gallery] => categories-2
        )

)