<div class="aquarium">
  <div class="aquarium__table"></div>
  <div class="aquarium__aquarium">
    <div class="aquarium__water"></div>
    <div class="aquarium__bubble"></div>
    <div class="aquarium__bubble"></div>
    <div class="aquarium__bubble"></div>
    <div class="aquarium__bubble"></div>
    <div class="aquarium__bubble"></div>
    <div class="aquarium__bubble"></div>
    <div class="aquarium__bubble"></div>
    <div class="aquarium__bubble"></div>
  </div>
  <div class="aquarium__drops">
    <div class="aquarium__drop"></div>
    <div class="aquarium__water-column"></div>
    <div class="aquarium__splash"></div>
    <div class="aquarium__splash"></div>
  </div>
  <div class="aquarium__sponge-box">
    <div class="aquarium__body">
      <div class="aquarium__body-stripe"></div>
      <div class="aquarium__body-hole"></div>
    </div>
    <div class="aquarium__face">
      <div class="aquarium__mouth"></div>
      <div class="aquarium__smile"></div>
    </div>
  </div>
</div>
.aquarium {
	position: relative;
	overflow: hidden;
	background: white;
	width: 800px; height: 500px;
	margin: auto;
}
	.aquarium *, .aquarium *::before, .aquarium *::after {
		position: absolute;
		content: '';
	}
	.aquarium__table {
		left: 230px; top: 381px;
		width: 341px; height: 6px;
		border-radius: 3px;
		background: black;
	}
		.aquarium__table:before {
			left: 105px; top: -15px;
			width: 131px; height: 19px;
			box-sizing: border-box;
			border-radius: 6px;
			border: 4px solid black;
			background: #00AAFF;
		}
	.aquarium__aquarium {
		left: 296px; top: 223px;
		width: 209px; height: 148px;
		box-sizing: border-box;
		border: 5px solid black;
		border-radius: 40px 40px 50px 50px / 74px 74px 74px 74px;
		box-shadow: inset -30px 0 0 0 rgba(54, 125, 231, 0.2);
		overflow: hidden;
		z-index: 1;
	}
	.aquarium__water {
		left: 0; top: 39px;
		width: 100%; height: 100%;
		opacity: .5;
		background: #5bb8ff;
		animation: sponge-water 2.5s linear infinite;
	}
	.aquarium__drops {
		top: 142px; left: 304px;
		width: 190px; height: 125px;
		overflow: hidden;
	}
	.aquarium__drop {
		top: 100px; left: 93px;
		width: 8px; height: 8px;
		border-radius: 100%;
		background: #80D5FF;
		animation: sponge-drop 2.5s linear infinite;
	}
	.aquarium__water-column {
		top: 122px; left: 70px;
		width: 60px; height: 130px;
		opacity: .5;
		background: #5bb8ff;
		animation: sponge-water-column 2.5s linear infinite;
	}
	.aquarium__bubble:nth-child(2) {
		left: 30px; top: 25px;
		width: 10px; height: 10px;
		background: white;
		border-radius: 100%;
		transform: scale(1);
		z-index: 2;
		animation: sponge-bubble-1 2.5s linear infinite;
	}
	.aquarium__bubble:nth-child(3) {
		left: 140px; top: 84px;
		width: 10px; height: 10px;
		background: white;
		border-radius: 100%;
		transform: scale(1);
		z-index: 2;
		animation: sponge-bubble-2 2.5s linear infinite;
	}
	.aquarium__bubble:nth-child(4) {
		left: 139px; top: 58px;
		width: 10px; height: 10px;
		background: white;
		border-radius: 100%;
		transform: scale(1);
		z-index: 2;
		animation: sponge-bubble-3 2.5s linear infinite;
	}
	.aquarium__bubble:nth-child(5) {
		left: 48px; top: 67px;
		width: 10px; height: 10px;
		background: white;
		border-radius: 100%;
		transform: scale(1);
		z-index: 2;
		animation: sponge-bubble-4 2.5s linear infinite;
	}
	.aquarium__bubble:nth-child(6) {
		left: 48px; top: 92px;
		width: 10px; height: 10px;
		background: white;
		border-radius: 100%;
		transform: scale(1);
		z-index: 2;
		animation: sponge-bubble-5 2.5s linear infinite;
	}
	.aquarium__bubble:nth-child(7) {
		left: 140px; top: 92px;
		width: 10px; height: 10px;
		background: white;
		border-radius: 100%;
		transform: scale(1);
		z-index: 2;
		animation: sponge-bubble-6 2.5s linear infinite;
	}
	.aquarium__bubble:nth-child(8) {
		left: 139px; top: 93px;
		width: 10px; height: 10px;
		background: white;
		border-radius: 100%;
		transform: scale(1);
		z-index: 2;
		animation: sponge-bubble-7 2.5s linear infinite;
	}
	.aquarium__bubble:nth-child(9) {
		left: 48px; top: 82px;
		width: 10px; height: 10px;
		background: white;
		border-radius: 100%;
		transform: scale(1);
		z-index: 2;
		animation: sponge-bubble-8 2.5s linear infinite;
	}
	.aquarium__splash:nth-child(3) {
		top: 84px; left: 30px;
		height: 8px; width: 4px;
		border-radius: 2px;
		opacity: .5;
		background: #5bb8ff;
		animation: sponge-splash-1 2.5s linear infinite;
	}
		.aquarium__splash:nth-child(3):before {
			top: 22px; left: -23px;
			height: 4px; width: 8px;
			border-radius: 2px;
			background: #5bb8ff;
		}
		.aquarium__splash:nth-child(3):after {
			top: 22px; left: 18px;
			height: 4px; width: 8px;
			border-radius: 2px;
			background: #5bb8ff;
		}
	.aquarium__splash:nth-child(4) {
		top: 84px; left: 155px;
		height: 8px; width: 4px;
		border-radius: 2px;
		opacity: .5;
		background: #5bb8ff;
		animation: sponge-splash-2 2.5s linear infinite;
	}
		.aquarium__splash:nth-child(4):before {
			top: 22px; left: -23px;
			height: 4px; width: 8px;
			border-radius: 2px;
			background: #5bb8ff;
		}
		.aquarium__splash:nth-child(4):after {
			top: 22px; left: 18px;
			height: 4px; width: 8px;
			border-radius: 2px;
			background: #5bb8ff;
		}
	.aquarium__sponge-box {
		width: 86px; height: 106px;
		left: 357px; top: 233px;
		animation: sponge-box 2.5s linear infinite;
	}
	.aquarium__body {
		width: 100%; height: 100%;
		box-sizing: border-box;
		box-shadow: inset 0 0 0 5px black, inset -10px 0 0 5px rgba(221, 165, 33, 0.47);
		border-radius: 13px;
		background: #FAEF37;
		overflow: hidden;
		animation: sponge-body 2.5s linear infinite;
	}
		.aquarium__body:before {
			top: 62px; left: 74px;
			width: 24px; height: 24px;
			box-sizing: border-box;
			background: white;
			border-radius: 100%;
			border: 5px solid black;
		}
		.aquarium__body:after {
			top: 93px; left: 14px;
			width: 24px; height: 24px;
			box-sizing: border-box;
			background: white;
			border-radius: 100%;
			border: 5px solid black;
		}
	.aquarium__body-hole {
		width: 22px; height: 22px;
		left: -3px; top: 67px;
		border-radius: 11px;
		background: rgba(0, 0, 0, 0.1);
	}
		.aquarium__body-hole:before {
			width: 15px; height: 15px;
			left: 70px; top: -46px;
			border-radius: 100%;
			background: rgba(0, 0, 0, 0.1);
		}
		.aquarium__body-hole:after {
			width: 10px; height: 10px;
			left: 57px; top: 17px;
			border-radius: 100%;
			background: rgba(0, 0, 0, 0.1);
		}
	.aquarium__body-stripe {
		width: 23px; height: 13px;
		left: 45px; top: 0;
		border-radius: 0 10px 0 0;
		border-top: 5px solid black;
		border-right: 5px solid black;
	}
		.aquarium__body-stripe:before {
			width: 5px; height: 10px;
			left: 23px; top: 9px;
			border-radius: 3px;
			background: black;
		}
	.aquarium__face {
		width: 46px; height: 56px;
		left: 20px; top: 42px;
	}
		.aquarium__face:before {
			width: 9px; height: 9px;
			border-radius: 100%;
			background: black;
			animation: sponge-eye 2.5s linear infinite;
		}
		.aquarium__face:after {
			left: 37px; top: 0px;
			width: 9px; height: 9px;
			border-radius: 100%;
			background: black;
			animation: sponge-eye 2.5s linear infinite;
		}
	.aquarium__mouth {
		left: 13px; top: 14px;
		width: 20px; height: 14px;
		box-sizing: border-box;
		border-radius: 4px 4px 14px 14px;
		border: 3px solid black;
		border-top-width: 6px;
		background: red;
		animation: sponge-mouth 2.5s linear infinite;
	}
	.aquarium__smile {
		left: 24px; top: 12px;
		animation: sponge-smile 2.5s linear infinite;
	}
		.aquarium__smile:before {
			left: -10px;
			width: 6px; height: 6px;
			border-radius: 0 0 0 6px;
			border-bottom: 3px solid black;
			border-left: 3px solid black;
			transform: rotate(-45deg);
		}
		.aquarium__smile:after {
			left: -2px;
			width: 6px; height: 6px;
			border-radius: 0 0 0 6px;
			border-bottom: 3px solid black;
			border-left: 3px solid black;
			transform: rotate(-45deg);
		}

@keyframes sponge-splash-1 {
	0% { transform: scale(0) translateY(30px); }
	9.01% { transform: scale(0) translateY(30px); }
	16.84% { transform: scale(1) translateY(0); }
	16.9% { transform: scale(0) translateY(0); }
	72.64% { transform: scale(0) translateY(30px); }
	81.44% { transform: scale(1) translateY(0); }
	81.5% { transform: scale(0) translateY(0); }
	100% { transform: scale(0) translateY(30px); }
}
@keyframes sponge-splash-2 {
	0% { transform: scale(0) translateY(30px); }
	14.4% { transform: scale(0) translateY(30px); }
	20.64% { transform: scale(1) translateY(0); }
	20.7% { transform: scale(0) translateY(0); }
	77% { transform: scale(0) translateY(30px); }
	83.24% { transform: scale(1) translateY(0); }
	83.3% { transform: scale(0) translateY(30px); }
	100% { transform: scale(0) translateY(30px); }
}
@keyframes sponge-bubble-1 {
	0% { transform: scale(0) translate(0, 0); }
	45.9% { transform: scale(0) translate(8px, 16px); }
	46% { transform: scale(0.2) translate(8px, 16px); }
	50% { transform: scale(1) translate(17px, 33px); }
	50.1% { transform: scale(0) translate(17px, 33px); }
	100% { transform: scale(0) translate(0, 0); }
}
@keyframes sponge-bubble-2 {
	0% { transform: scale(0) translate(0, 0); }
	47.9% { transform: scale(0) translate(0, 0); }
	48% { transform: scale(0.2) translate(0, 0); }
	52% { transform: scale(1) translate(25px, -58px); }
	52.1% { transform: scale(0) translate(25px, -58px); }
	100% { transform: scale(0) translate(0, 0); }
}
@keyframes sponge-bubble-3 {
	0% { transform: scale(0) translate(0, 0); }
	50.9% { transform: scale(0) translate(0, 0); }
	51% { transform: scale(0.2) translate(0, 0); }
	55% { transform: scale(1) translate(18px, -34px); }
	55.1% { transform: scale(0) translate(18px, -34px); }
	100% { transform: scale(0) translate(0, 0); }
}
@keyframes sponge-bubble-4 {
	0% { transform: scale(0) translate(0, 0); }
	52.9% { transform: scale(0) translate(0, 0); }
	53% { transform: scale(0.2) translate(0, 0); }
	57% { transform: scale(1) translate(-10px, -42px); }
	57.1% { transform: scale(0) translate(-10px, -42px); }
	100% { transform: scale(0) translate(0, 0); }
}
@keyframes sponge-bubble-5 {
	0% { transform: scale(0) translate(0, 0); }
	54.9% { transform: scale(0) translate(0, 0); }
	55% { transform: scale(0.2) translate(0, 0); }
	60% { transform: scale(1) translate(-18px, -68px); }
	60.1% { transform: scale(0) translate(-18px, -68px); }
	100% { transform: scale(0) translate(0, 0); }
}
@keyframes sponge-bubble-6 {
	0% { transform: scale(0) translate(0, 0); }
	57.9% { transform: scale(0) translate(0, 0); }
	58% { transform: scale(0.2) translate(0, 0); }
	62% { transform: scale(1) translate(-2px, -68px); }
	62.1% { transform: scale(0) translate(-2px, -68px); }
	100% { transform: scale(0) translate(0, 0); }
}
@keyframes sponge-bubble-7 {
	0% { transform: scale(0) translate(0, 0); }
	60.9% { transform: scale(0) translate(0, 0); }
	61% { transform: scale(0.2) translate(0, 0); }
	65% { transform: scale(1) translate(20px, -68px); }
	65.1% { transform: scale(0) translate(20px, -68px); }
	100% { transform: scale(0) translate(0, 0); }
}
@keyframes sponge-bubble-8 {
	0% { transform: scale(0) translate(0, 0); }
	62.9% { transform: scale(0) translate(0, 0); }
	63% { transform: scale(0.2) translate(0, 0); }
	67% { transform: scale(1) translate(-8px, -56px); }
	67.9% { transform: scale(0) translate(-8px, -56px); }
	100% { transform: scale(0) translate(0, 0); }
}
@keyframes sponge-eye {
	9.36% { transform: scale(1); }
	9.37% { transform: scale(0); }
	14.0% { transform: scale(0); }
	14.01% { transform: scale(1); }
}
@keyframes sponge-mouth {
	0% {
		border-radius: 4px 4px 14px 14px;
		transform: scale(1);
		background: red;
	}
	9.36% {
		border-radius: 4px 4px 14px 14px;
		transform: scale(0);
		background: red;
	}
	28.08% {
		border-radius: 100%;
		transform: scale(0);
		background: black;
	}
	40.56% {
		border-radius: 100%;
		transform: scaleY(1.4);
		background: black;
	}
	42.12% {
		border-radius: 100%;
		transform: scaleY(1.4);
		background: black;
	}
	48.36% {
		border-radius: 100%;
		transform: scale(0);
		background: black;
	}
	76.4% {
		border-radius: 4px 4px 14px 14px;
		transform: scale(0);
		background: red;
	}
	76.44% {
		border-radius: 4px 4px 14px 14px;
		transform: scale(0.3);
		background: red;
	}
	93.6% {
		border-radius: 4px 4px 14px 14px;
		transform: scale(1);
		background: red;
	}
	100% {
		border-radius: 4px 4px 14px 14px;
		transform: scale(1);
		background: red;
	}
}
@keyframes sponge-smile {
	0%, 48.2% { opacity: 0; }
	48.36%, 76.44% { opacity: 1; }
	76.5%, 100% { opacity: 0; }
}
@keyframes sponge-water {
	6.24% { transform: translateY(0); }
	12.48% { transform: translateY(-11px); }
	78% { transform: translateY(-11px); }
	85.8% { transform: translateY(0); }
}
@keyframes sponge-drop {
	0% { transform: scale(0) translate(0, 24px); }
	7% { transform: scale(0) translate(0, 24px); }
	15.44% { transform: scale(2) translate(0, -36px); }
	27.8% { transform: scale(0) translate(0, 24px); }
	100% { transform: scale(0) translate(0, 24px); }
}
@keyframes sponge-water-column {
	0% { transform: scaleX(0) translateY(20px); }
	7.8% { transform: scaleX(1) translateY(20px); }
	18.72% { transform: scaleX(0.1) translateY(-12px); }
	29.64% { transform: scaleX(0.3) translateY(28px); }
	81.12% { transform: scaleX(1.4) translateY(28px); }
	95.16% { transform: scaleX(0) translateY(-132px); }
	100% { transform: scaleX(0) translateY(-132px); }
}
@keyframes sponge-box {
	0% { transform: translateY(-145px); }
	9.36% { transform: translateY(20px); }
	18.72% { transform: translateY(-5px); }
	28.08% { transform: translateY(-7px); }
	43.68% { transform: translateY(0px); }
	60.84% { transform: translateY(14px); }
	78% { transform: translateY(14px); }
	85.8% { transform: translateY(-144px); }
	93.6% { transform: translateY(-197px); }
	100% { transform: translateY(-164px); }
}
@keyframes sponge-body {
	0% { transform: rotate(-134deg) scale(1) translateX(0); }
	9.36% { transform: rotate(0deg) scale(1) translateX(0); }
	48.36% { transform: rotate(0deg) scale(1) translateX(0); }
	59.28% { transform: rotate(0deg) scale(0.95) translateX(0); }
	60.84% { transform: rotate(0deg) scale(0.9) translateX(-1px); }
	62.4% { transform: rotate(0deg) scale(0.9) translateX(-3px); }
	65.52% { transform: rotate(0deg) scale(0.9) translateX(3px); }
	68.64% { transform: rotate(0deg) scale(0.9) translateX(-3px); }
	71.76% { transform: rotate(0deg) scale(0.9) translateX(5px); }
	74.88% { transform: rotate(0deg) scale(0.9) translateX(-5px); }
	78% { transform: rotate(0deg) scale(0.9) translateX(0); }
	85.8% { transform: rotate(135deg) scale(1) translateX(0); }
	93.6% { transform: rotate(180deg) scale(1) translateX(0); }
	100% { transform: rotate(210deg) scale(1) translateX(0); }
}
// Gal Shir image from 
// https://dribbble.com/shots/2560391-Sponge

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.