diff --git a/animations/3d-synth-canyon-animation/README.md b/animations/3d-synth-canyon-animation/README.md new file mode 100644 index 0000000..3d154a1 --- /dev/null +++ b/animations/3d-synth-canyon-animation/README.md @@ -0,0 +1,5 @@ +# [3D] Synth Canyon Animation + +I wanted to do some experimentation with manipulating geometries and layering several simple shader effects, and this is what I came up with. + +The Soundcloud embed is just there for ambiance. diff --git a/animations/3d-synth-canyon-animation/index.html b/animations/3d-synth-canyon-animation/index.html new file mode 100644 index 0000000..7ef543d --- /dev/null +++ b/animations/3d-synth-canyon-animation/index.html @@ -0,0 +1,90 @@ + + + + + 3D Synth Canyon Animation + + + + + + + + +
+
Synth Canyon Animation - with three.js +
+
+ + + + + +
+ + + + + + + + + + diff --git a/animations/3d-synth-canyon-animation/script.js b/animations/3d-synth-canyon-animation/script.js new file mode 100644 index 0000000..7fcd07f --- /dev/null +++ b/animations/3d-synth-canyon-animation/script.js @@ -0,0 +1,150 @@ +const SHOW_STATS = false; +const CANYON_WIDTH = 400; +const CANYON_LENGTH = 120; +const CANYON_SEGMENTS_W = 27; +const CANYON_SEGMENTS_L = 10; +const CLIFF_BASE = 60; +const CLIFF_VARY = 15; +const FLOOR_VARY = 10; +const CANYON_SPEED = 70; +const CAMERA_DRIFT_DISTANCE = 15; +const CAMERA_DRIFT_SPEED = 0.05; + +let lastUpdate; +let camera, scene, renderer, composer; +let cameraBaseX, cameraBaseY; +let uResolutionScale; +let uTime; +let canyonA, canyonB; + +function init() { + // stats + if (SHOW_STATS) { + const stats = new Stats(); + stats.domElement.classList.add('stats-element'); + document.body.appendChild(stats.domElement); + requestAnimationFrame(function updateStats(){ + stats.update(); + requestAnimationFrame(updateStats); + }); + } + + // basic setup + const container = document.getElementById('container'); + camera = new THREE.PerspectiveCamera(70, window.innerWidth / window.innerHeight, 1, 300); + const cameraDistance = 70; + const cameraAngle = .05*Math.PI; + camera.position.z = cameraDistance; + cameraBaseX = 0; + cameraBaseY = 0.3 * (CLIFF_BASE + CLIFF_VARY + FLOOR_VARY); + camera.position.y = cameraBaseY; + camera.rotation.x = -cameraAngle; + scene = new THREE.Scene(); + renderer = new THREE.WebGLRenderer({ antialias: true }); + renderer.setPixelRatio(window.devicePixelRatio); + + // shader setup + lastUpdate = new Date().getTime(); + const vertexShader = document.getElementById( 'vertexShader' ).textContent; + const fragmentShader = document.getElementById( 'fragmentShader' ).textContent; + uTime = { type: 'f', value: 1.0 }; + uResolutionScale = { type: 'f', value: 1.0 }; + + // add objects + const canyonGeometry = new THREE.PlaneGeometry(CANYON_WIDTH, CANYON_LENGTH, CANYON_SEGMENTS_W, CANYON_SEGMENTS_L); + canyonGeometry.rotateX(-0.5 * Math.PI); + const reverseGeometry = canyonGeometry.clone(); + const simplexA = new SimplexNoise(Math.floor(0xffff*Math.random())); + const simplexB = new SimplexNoise(Math.floor(0xffff*Math.random())); + for (let i = 0, l = canyonGeometry.vertices.length; i < l; i++) { + const { x, z } = canyonGeometry.vertices[i]; + canyonGeometry.vertices[i].y = + Math.min(1.0, Math.pow(x/50, 4)) * Math.round(CLIFF_BASE + simplexA.noise2D(x,z) * CLIFF_VARY) + Math.round(simplexB.noise2D(x,z) * FLOOR_VARY); + reverseGeometry.vertices[i].y = + Math.min(1.0, Math.pow(x/50, 4)) * Math.round(CLIFF_BASE + simplexA.noise2D(x,-z) * CLIFF_VARY) + Math.round(simplexB.noise2D(x,-z) * FLOOR_VARY); + } + const canyonMaterial = new THREE.ShaderMaterial({ + transparent: true, + side: THREE.DoubleSide, + uniforms: { uTime, uResolutionScale }, + vertexShader, + fragmentShader + }); + canyonMaterial.extensions.derivatives = true; + canyonA = new THREE.Mesh(geomToBufferGeomWithCenters(canyonGeometry), canyonMaterial); + scene.add(canyonA); + canyonB = new THREE.Mesh(geomToBufferGeomWithCenters(reverseGeometry), canyonMaterial); + canyonB.position.z -= CANYON_LENGTH; + scene.add(canyonB); + container.appendChild(renderer.domElement); + + // effect composition + const renderScene = new THREE.RenderPass(scene, camera); + const bloomPass = new THREE.UnrealBloomPass(new THREE.Vector2(window.innerWidth, window.innerHeight), 1.5, 0.4, 0.86); + bloomPass.threshold = 0.3; + bloomPass.strength = 2.5 * uResolutionScale.value; + bloomPass.radius = 0.3 * uResolutionScale.value; + composer = new THREE.EffectComposer(renderer); + composer.addPass(renderScene); + composer.addPass(bloomPass); + + // event listeners + onWindowResize(); + window.addEventListener( 'resize', onWindowResize, false); + document.getElementById('resolution').addEventListener('change', onResolutionChange, false); +} + +// events +function onWindowResize(evt) { + camera.aspect = window.innerWidth / window.innerHeight; + camera.updateProjectionMatrix(); + renderer.setSize(window.innerWidth, window.innerHeight); + composer.setSize(window.innerWidth, window.innerHeight); +} +function onResolutionChange(evt) { + uResolutionScale.value = parseFloat(evt.target.value); + bloomPass.strength = 2.5 * uResolutionScale.value; + bloomPass.radius = 0.3 * uResolutionScale.value; + renderer.setPixelRatio( window.devicePixelRatio / uResolutionScale.value ); +} +function animate() { + const currentTime = new Date().getTime(); + const timeSinceLastUpdate = currentTime - lastUpdate; + lastUpdate = currentTime; + const deltaTime = timeSinceLastUpdate / 1000; + uTime.value += deltaTime; + // move canyons + canyonA.position.z += deltaTime * CANYON_SPEED; + canyonB.position.z += deltaTime * CANYON_SPEED; + if (canyonA.position.z > CANYON_LENGTH) { + canyonA.position.z -= 2*CANYON_LENGTH; + } + if (canyonB.position.z > CANYON_LENGTH) { + canyonB.position.z -= 2*CANYON_LENGTH; + } + // drift camera (simple lissajous) + camera.position.x = cameraBaseX + CAMERA_DRIFT_DISTANCE*Math.sin(7*CAMERA_DRIFT_SPEED*Math.PI*uTime.value); + camera.position.y = cameraBaseY + CAMERA_DRIFT_DISTANCE*Math.sin(5*CAMERA_DRIFT_SPEED*Math.PI*uTime.value); + // render + // renderer.render( scene, camera ); + composer.render(); + requestAnimationFrame( animate ); +} + +// boot +init(); +animate(); + +// utils +// adapted from https://github.com/mrdoob/three.js/blob/dev/examples/webgl_materials_wireframe.html for wireframe effect +function geomToBufferGeomWithCenters(geom) { + const buffGeom = new THREE.BufferGeometry().fromGeometry(geom); + const vectors = [new THREE.Vector3(1,0,0), new THREE.Vector3(0,1,0), new THREE.Vector3(0,0,1)]; + const { position } = buffGeom.attributes; + const centers = new Float32Array(position.count*3); + for (let i=0, l=position.count; i + + + + Basic Matrix Effect + + + + + + + + + + + diff --git a/animations/basic-matrix-effect/script.js b/animations/basic-matrix-effect/script.js new file mode 100644 index 0000000..6b414ed --- /dev/null +++ b/animations/basic-matrix-effect/script.js @@ -0,0 +1,189 @@ +const langs = [ + "Hello World", + "مرحبا بالعالم", + "Salam Dünya", + "Прывітанне Сусвет", + "Здравей свят", + "ওহে বিশ্ব", + "Zdravo svijete", + "Hola món", + "Kumusta Kalibutan", + "Ahoj světe", + "Helo Byd", + "Hej Verden", + "Hallo Welt", + "Γειά σου Κόσμε", + "Hello World", + "Hello World", + "Hola Mundo", + "Tere, Maailm", + "Kaixo Mundua", + "سلام دنیا", + "Hei maailma", + "Bonjour le monde", + "Dia duit an Domhan", + "Ola mundo", + "હેલો વર્લ્ડ", + "Sannu Duniya", + "नमस्ते दुनिया", + "Hello World", + "Pozdrav svijete", + "Bonjou Mondyal la", + "Helló Világ", + "Բարեւ աշխարհ", + "Halo Dunia", + "Ndewo Ụwa", + "Halló heimur", + "Ciao mondo", + "שלום עולם", + "こんにちは世界", + "Hello World", + "Გამარჯობა მსოფლიო", + "Сәлем Әлем", + "សួស្តី​ពិភពលោក", + "ಹಲೋ ವರ್ಲ್ಡ್", + "안녕하세요 월드", + "Ciao mondo", + "ສະ​ບາຍ​ດີ​ຊາວ​ໂລກ", + "Labas pasauli", + "Sveika pasaule", + "Hello World", + "Kia Ora", + "Здраво свету", + "ഹലോ വേൾഡ്", + "Сайн уу", + "हॅलो वर्ल्ड", + "Hai dunia", + "Hello dinja", + "မင်္ဂလာပါကမ္ဘာလောက", + "नमस्कार संसार", + "Hallo Wereld", + "Hei Verden", + "Moni Dziko Lapansi", + "ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ ਦੁਨਿਆ", + "Witaj świecie", + "Olá Mundo", + "Salut Lume", + "Привет, мир", + "හෙලෝ වර්ල්ඩ්", + "Ahoj svet", + "Pozdravljen, svet", + "Waad salaaman tihiin", + "Përshendetje Botë", + "Здраво Свете", + "Lefatše Lumela", + "Halo Dunya", + "Hej världen", + "Salamu, Dunia", + "ஹலோ வேர்ல்ட்", + "హలో వరల్డ్", + "Салом Ҷаҳон", + "สวัสดีชาวโลก", + "Kamusta Mundo", + "Selam Dünya", + "Привіт Світ", + "ہیلو ورلڈ", + "Salom Dunyo", + "Chào thế giới", + "העלא וועלט", + "Mo ki O Ile Aiye", + "你好,世界", + "你好,世界", + "你好,世界", + "Sawubona Mhlaba" +]; +// hello world in 92 Languages + +let charSize = 18; +let fallRate = charSize / 2; +let streams; + +// ------------------------------- +class Char { + constructor(value, x, y, speed) { + this.value = value; + this.x = x; + this.y = y; + this.speed = speed; + } + + draw() { + const flick = random(100); + // 10 percent chance of flickering a number instead + if (flick < 10) { + fill(120, 30, 100); + text(round(random(9)), this.x, this.y); + } else { + text(this.value, this.x, this.y); + } + + // fall down + this.y = this.y > height ? 0 : this.y + this.speed; + } +} + +// ------------------------------------- +class Stream { + constructor(text, x) { + const y = random(text.length); + const speed = random(2, 10); + this.chars = []; + + for (let i = text.length; i >= 0; i--) { + this.chars.push( + new Char(text[i], x, (y + text.length - i) * charSize, speed) + ); + } + } + + draw() { + fill(120, 100, 100); + this.chars.forEach((c, i) => { + // 30 percent chance of lit tail + const lit = random(100); + if (lit < 30) { + if (i === this.chars.length - 1) { + fill(120, 30, 100); + } else { + fill(120, 100, 90); + } + } + + c.draw(); + }); + } +} + +function createStreams() { + // create random streams from langs that span the width + for (let i = 0; i < width; i += charSize) { + streams.push(new Stream(random(langs), i)); + } +} + +function reset() { + streams = []; + createStreams(); +} + +function setup() { + createCanvas(innerWidth, innerHeight); + reset(); + frameRate(20); + colorMode(HSB); + noStroke(); + textSize(charSize); + textFont("monospace"); + background(0); +} + +function draw() { + background(0, 0.4); + streams.forEach((s) => s.draw()); +} + +function windowResized() { + resizeCanvas(innerWidth, innerHeight); + background(0); + reset(); +} \ No newline at end of file diff --git a/animations/basic-matrix-effect/style.css b/animations/basic-matrix-effect/style.css new file mode 100644 index 0000000..be0cd08 --- /dev/null +++ b/animations/basic-matrix-effect/style.css @@ -0,0 +1,9 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} +body { + overflow: hidden; + height: 100%; +} \ No newline at end of file diff --git a/animations/marvel-intro-animation/README.md b/animations/marvel-intro-animation/README.md new file mode 100644 index 0000000..c4d3f3b --- /dev/null +++ b/animations/marvel-intro-animation/README.md @@ -0,0 +1,2 @@ +# Marvel Intro Animation + diff --git a/animations/marvel-intro-animation/index.html b/animations/marvel-intro-animation/index.html new file mode 100644 index 0000000..a22040a --- /dev/null +++ b/animations/marvel-intro-animation/index.html @@ -0,0 +1,50 @@ + + + + + Marvel Intro Animation + + + + + +
MARVEL
+
+ +
+
+ Loader + LOADING ANIMATION +
+
+ +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + diff --git a/animations/marvel-intro-animation/resources/a.mp3 b/animations/marvel-intro-animation/resources/a.mp3 new file mode 100644 index 0000000..77ed07a Binary files /dev/null and b/animations/marvel-intro-animation/resources/a.mp3 differ diff --git a/animations/marvel-intro-animation/resources/img-1.jpg b/animations/marvel-intro-animation/resources/img-1.jpg new file mode 100644 index 0000000..00f2beb Binary files /dev/null and b/animations/marvel-intro-animation/resources/img-1.jpg differ diff --git a/animations/marvel-intro-animation/resources/img-10.jpg b/animations/marvel-intro-animation/resources/img-10.jpg new file mode 100644 index 0000000..3c411ea Binary files /dev/null and b/animations/marvel-intro-animation/resources/img-10.jpg differ diff --git a/animations/marvel-intro-animation/resources/img-11.jpg b/animations/marvel-intro-animation/resources/img-11.jpg new file mode 100644 index 0000000..6c6d12c Binary files /dev/null and b/animations/marvel-intro-animation/resources/img-11.jpg differ diff --git a/animations/marvel-intro-animation/resources/img-12.jpg b/animations/marvel-intro-animation/resources/img-12.jpg new file mode 100644 index 0000000..1e04618 Binary files /dev/null and b/animations/marvel-intro-animation/resources/img-12.jpg differ diff --git a/animations/marvel-intro-animation/resources/img-13.jpg b/animations/marvel-intro-animation/resources/img-13.jpg new file mode 100644 index 0000000..a640160 Binary files /dev/null and b/animations/marvel-intro-animation/resources/img-13.jpg differ diff --git a/animations/marvel-intro-animation/resources/img-14.jpg b/animations/marvel-intro-animation/resources/img-14.jpg new file mode 100644 index 0000000..b289655 Binary files /dev/null and b/animations/marvel-intro-animation/resources/img-14.jpg differ diff --git a/animations/marvel-intro-animation/resources/img-15.jpg b/animations/marvel-intro-animation/resources/img-15.jpg new file mode 100644 index 0000000..ac3cb67 Binary files /dev/null and b/animations/marvel-intro-animation/resources/img-15.jpg differ diff --git a/animations/marvel-intro-animation/resources/img-16.jpg b/animations/marvel-intro-animation/resources/img-16.jpg new file mode 100644 index 0000000..739dbb7 Binary files /dev/null and b/animations/marvel-intro-animation/resources/img-16.jpg differ diff --git a/animations/marvel-intro-animation/resources/img-17.jpg b/animations/marvel-intro-animation/resources/img-17.jpg new file mode 100644 index 0000000..c219125 Binary files /dev/null and b/animations/marvel-intro-animation/resources/img-17.jpg differ diff --git a/animations/marvel-intro-animation/resources/img-18.jpg b/animations/marvel-intro-animation/resources/img-18.jpg new file mode 100644 index 0000000..55d1267 Binary files /dev/null and b/animations/marvel-intro-animation/resources/img-18.jpg differ diff --git a/animations/marvel-intro-animation/resources/img-19.jpg b/animations/marvel-intro-animation/resources/img-19.jpg new file mode 100644 index 0000000..da38948 Binary files /dev/null and b/animations/marvel-intro-animation/resources/img-19.jpg differ diff --git a/animations/marvel-intro-animation/resources/img-2.jpg b/animations/marvel-intro-animation/resources/img-2.jpg new file mode 100644 index 0000000..1add473 Binary files /dev/null and b/animations/marvel-intro-animation/resources/img-2.jpg differ diff --git a/animations/marvel-intro-animation/resources/img-20.jpg b/animations/marvel-intro-animation/resources/img-20.jpg new file mode 100644 index 0000000..c11e807 Binary files /dev/null and b/animations/marvel-intro-animation/resources/img-20.jpg differ diff --git a/animations/marvel-intro-animation/resources/img-3.jpg b/animations/marvel-intro-animation/resources/img-3.jpg new file mode 100644 index 0000000..fab3526 Binary files /dev/null and b/animations/marvel-intro-animation/resources/img-3.jpg differ diff --git a/animations/marvel-intro-animation/resources/img-4.jpg b/animations/marvel-intro-animation/resources/img-4.jpg new file mode 100644 index 0000000..5fc8da0 Binary files /dev/null and b/animations/marvel-intro-animation/resources/img-4.jpg differ diff --git a/animations/marvel-intro-animation/resources/img-5.jpg b/animations/marvel-intro-animation/resources/img-5.jpg new file mode 100644 index 0000000..7cfdc1d Binary files /dev/null and b/animations/marvel-intro-animation/resources/img-5.jpg differ diff --git a/animations/marvel-intro-animation/resources/img-6.jpg b/animations/marvel-intro-animation/resources/img-6.jpg new file mode 100644 index 0000000..53cee5e Binary files /dev/null and b/animations/marvel-intro-animation/resources/img-6.jpg differ diff --git a/animations/marvel-intro-animation/resources/img-7.jpg b/animations/marvel-intro-animation/resources/img-7.jpg new file mode 100644 index 0000000..9f4b965 Binary files /dev/null and b/animations/marvel-intro-animation/resources/img-7.jpg differ diff --git a/animations/marvel-intro-animation/resources/img-8.jpg b/animations/marvel-intro-animation/resources/img-8.jpg new file mode 100644 index 0000000..2d62f87 Binary files /dev/null and b/animations/marvel-intro-animation/resources/img-8.jpg differ diff --git a/animations/marvel-intro-animation/resources/img-9.jpg b/animations/marvel-intro-animation/resources/img-9.jpg new file mode 100644 index 0000000..d22bfe6 Binary files /dev/null and b/animations/marvel-intro-animation/resources/img-9.jpg differ diff --git a/animations/marvel-intro-animation/resources/loader.svg b/animations/marvel-intro-animation/resources/loader.svg new file mode 100644 index 0000000..9e23c0d --- /dev/null +++ b/animations/marvel-intro-animation/resources/loader.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/animations/marvel-intro-animation/script.js b/animations/marvel-intro-animation/script.js new file mode 100644 index 0000000..49bf7c6 --- /dev/null +++ b/animations/marvel-intro-animation/script.js @@ -0,0 +1,40 @@ +$(function () { + function playAnimation() { + var bg = $("#bg"), + bgNum = 0; + document.getElementById("audio").play(); + const marvelInterval = setInterval(function () { + bgNum = (bgNum % 20) + 1; + bg.css( + "background-image", + `url(./resources/img-${bgNum}.jpg)` + ); + }, 100); + + setTimeout(function () { + clearInterval(marvelInterval); + }, 12000); + } + + function initPlay() { + $("#loader img").fadeOut(100); + $("#a").html("▶PLAY ANIMATION (turn ON sound)").addClass("cursor"); + $("#a").on("click", function () { + $("#loader").fadeOut(100); + playAnimation(); + }); + } + + $("#hidden").imagesLoaded({ background: true }, function () { + setTimeout(function () { + var audio = document.getElementById("audio"); + audio.oncanplay = function () { + initPlay(); + }; + + if (audio.readyState > 3) { + initPlay(); + } + }, 1000); + }); +}); \ No newline at end of file diff --git a/animations/marvel-intro-animation/style.css b/animations/marvel-intro-animation/style.css new file mode 100644 index 0000000..ae75a6f --- /dev/null +++ b/animations/marvel-intro-animation/style.css @@ -0,0 +1,118 @@ +body { + height: 100vh; + display: flex; + justify-content: center; + align-items: center; + margin: 0; + font-family: "Roboto Condensed", sans-serif; + background-image: radial-gradient(#730801, #1f0100); + overflow: hidden; +} + +#marvel { + color: transparent; + font-size: 250vh; + -webkit-text-stroke: 2px #000; + letter-spacing: -2vh; + opacity: 0; + animation: marvel 11s ease 2s forwards; +} + +@keyframes marvel { + 0% { + opacity: 0; + font-size: 205vh; + color: rgba(255, 255, 255, 0); + -webkit-text-stroke-color: #000; + } + 20% { + opacity: 1; + color: rgba(255, 255, 255, 0); + -webkit-text-stroke-color: #000; + } + 60% { + color: rgba(255, 255, 255, 0.5); + -webkit-text-stroke-color: #000; + } + 100% { + opacity: 1; + font-size: 30vh; + color: rgba(255, 255, 255, 1); + -webkit-text-stroke-color: transparent; + } +} + +#bg { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + opacity: 1; + background-image: url(https://himalayasingh.github.io/marvel/img/img-1.jpg); + background-attachment: fixed; + background-size: cover; + z-index: 1; + transform: scale(1.4); + animation: hideBg 14s ease 0s forwards; +} + +@keyframes hideBg { + 0% { + opacity: 1; + transform: scale(1.4); + } + 60% { + opacity: 0.5; + } + 100% { + opacity: 0; + transform: scale(1); + } +} + +#loader { + display: flex; + align-items: center; + justify-content: center; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + text-align: center; + background-color: #212121; + z-index: 125; +} + +#loader span { + display: block; + color: #fff; + font-size: 16px; + margin-top: 10px; +} + +#loader span b { + margin-left: 12px; +} + +#hidden { + position: fixed; + opacity: 0; + z-index: -1; +} + +#ytd_link { + display: none; + position: fixed; + right: 20px; + bottom: 20px; + color: #fff; + font-size: 30px; + text-decoration: none; + z-index: 1; +} + +.cursor { + cursor: pointer; +} \ No newline at end of file diff --git a/animations/netflix-logo-animation/README.md b/animations/netflix-logo-animation/README.md new file mode 100644 index 0000000..535b736 --- /dev/null +++ b/animations/netflix-logo-animation/README.md @@ -0,0 +1,2 @@ +# Customisable Netflix Logo Animation + diff --git a/animations/netflix-logo-animation/index.html b/animations/netflix-logo-animation/index.html new file mode 100644 index 0000000..da5a7b0 --- /dev/null +++ b/animations/netflix-logo-animation/index.html @@ -0,0 +1,112 @@ + + + + + Customisable Netflix Logo Animation + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + diff --git a/animations/netflix-logo-animation/script.js b/animations/netflix-logo-animation/script.js new file mode 100644 index 0000000..c01ba07 --- /dev/null +++ b/animations/netflix-logo-animation/script.js @@ -0,0 +1,156 @@ +// ---------- NETFLIX ANIMATION ---------- // + +/* + _ _ + | \ | | + | \| | + | . ` | + | |\ | + |_| \_| */ +const n_tl = gsap.timeline(); +n_tl + .to("#N1-shadow", {opacity: 0, duration: 0.5}, 0.3) + .to("#N3-shadow", {opacity: 0, duration: 1.5}, 0.3) + +/* + ______ + | ____| + | |__ + | __| + | |____ + |______|*/ +const e_ogShape = "M255.1 171.6V208.2L250.5 208.5L250 172L255.1 171.6Z"; +const e_tl = gsap.timeline(); +e_tl + .from("#E1-base", {morphSVG:{shape: e_ogShape, type: "linear"}, opacity: 0, duration: 0.15}, 0) + .from("#E2-base", {scaleY: 0, transformOrigin: "50% 100%", duration: 0.1}, 0.11) + .from("#E3", {scaleX: 0, duration: 0.06}, 0.21) + .from("#E4", {scaleX: 0, duration: 0.18}, 0.27) + .to("#E1-shadow, #E2-shadow", {opacity: 0, duration: 0.8}, 0) + +/* + _______ + |__ __| + | | + | | + | | + |_|*/ +const t_tl = gsap.timeline(); +t_tl + .from("#T1", {scaleX: 0, duration: 0.1}, 0) + .from("#T2-base", {scaleY: 0, duration: 0.25}, 0.1) + .to("#T2-shadow", {opacity: 0, duration: 0.82}) + +/* + ______ + | ____| + | |__ + | __| + | | + |_|*/ +const f_tl = gsap.timeline(); +f_tl + .from("#F1", {scaleX: 0, duration: 0.15}, 0) + .from("#F2-base", {scaleY: 0, duration: 0.33}, 0.1) + .from("#F3", {scaleX: 0, duration: 0.15}, 0.28) + .to("#F2-shadow", {opacity: 0, duration: 0.86}) + +/* + _ + | | + | | + | | + | |____ + |______|*/ +const l_ogShape = "M540.5 167.5L546 167.781V204.371L540.5 204.1V167.5Z"; +const l_tl = gsap.timeline(); +l_tl + .from("#L1-base", {scaleY: 0, duration: 0.22}, 0) + .from("#L2", {morphSVG:{shape: l_ogShape, type: "linear"}, opacity: 0, duration: 0.1}, 0.2) + .to("#L1-shadow", {opacity: 0, duration: 0.83}) + +/* + _____ + |_ _| + | | + | | + _| |_ + |_____|*/ +const i_tl = gsap.timeline(); +i_tl + .from("#I", {scaleY: 0, transformOrigin: "50% 100%", duration: 0.18}, 0) + +/* + __ __ + \ \ / / + \ V / + > < + / . \ + /_/ \_\*/ +const x1_ogShape = "M733.1 216.8L771.5 220.8L772.5 218.5L734.5 213.5L733.1 216.8Z"; +const x2_ogShape = "M737 0L738 2.5H777.5L776.5 0H737Z"; +const x_tl = gsap.timeline(); +x_tl + .from("#X1", {morphSVG:{shape: x1_ogShape, type: "linear", shapeIndex: 2}, duration: 0.63}, 0) + .from("#X1", {opacity: 0, duration: 0.1,}, 0) + .from("#X2-base", {morphSVG:{shape: x2_ogShape, type: "linear", shapeIndex: 2}, duration: 0.53}, 0.11) + .from("#X2-base", {opacity: 0, duration: 0.01,}, 0.11) + .to("#X2-shadow", {opacity: 0, duration: 1.3}, 0) + +//Movement Timeline +const movement_tl = gsap.timeline(); +movement_tl + .from("svg", {opacity: 0, duration: 0.7}, 0) + .from("svg", {xPercent:50, left:"50%", duration: 1.9, ease: CustomEase.create("custom", "M0,0,C0.358,0.144,0.098,1,1,1")}, 0.7) + +//Exit Timeline +const exit_tl = gsap.timeline(); +exit_tl + .to("svg", {opacity: 0, duration: 0.5}) + +//Master Timeline +const master_tl = gsap.timeline({repeat: -1, repeatDelay: 1}); +master_tl + .add((movement_tl), 0) + .add((n_tl), 0.7) + .add((e_tl), 0.8) + .add((t_tl), 1.08) + .add((f_tl), 1.18) + .add((l_tl), 1.33) + .add((i_tl), 1.63) + .add((x_tl), 1.7) + .add((exit_tl), 6) + +// ---------- UI CONTROLS ---------- // +const theme1 = document.querySelector("#theme1"); +const theme2 = document.querySelector("#theme2"); +const theme3 = document.querySelector("#theme3"); +const themes = document.querySelectorAll(".theme"); +const body = document.querySelector("body"); + + +// Colours +const colours = [ + {theme: "#E50914", bg: "black"}, + {theme: "white", bg: "#E50914"}, + {theme: "#CFFFE9", bg: "#002E19"} +]; + +// Setting the OG document colours +for(i = 0; i < themes.length; i++){ + themes[i].style.backgroundColor = colours[i].theme; + themes[i].querySelector(".bg-colour").style.background = colours[i].bg; +} + +document.documentElement.style.setProperty('--primary-colour', colours[0].theme); +document.documentElement.style.setProperty('--shadow-colour', colours[0].bg); +body.style.backgroundColor = colours[0].bg; + +// Adding click events +for (t = 0; t < themes.length; t++){ + themes[t].addEventListener("click", function(){ + document.documentElement.style.setProperty('--primary-colour', this.style.backgroundColor); + document.documentElement.style.setProperty('--shadow-colour', this.querySelector(".bg-colour").style.backgroundColor); + body.style.backgroundColor = this.querySelector(".bg-colour").style.backgroundColor; + }); +} \ No newline at end of file diff --git a/animations/netflix-logo-animation/style.css b/animations/netflix-logo-animation/style.css new file mode 100644 index 0000000..fdb5f0d --- /dev/null +++ b/animations/netflix-logo-animation/style.css @@ -0,0 +1,72 @@ +:root { + --primary-colour: #E50914; + --shadow-colour: black; + --shadow-intensity: 0.6; + --UIControlsSize: 30px; +} + +/* ---------- Netflix SVG ---------- */ + +.base { + fill: var(--primary-colour); + transition: fill 0.4s; +} + +.shadow-start { + stop-color: var(--shadow-colour); + stop-opacity: var(--shadow-intensity); + +} +.shadow-end { + stop-color: var(--shadow-colour); + stop-opacity: 0; +} + +body { + height: 100vh; + background: black; + overflow: hidden; + transition: background 0.4s; +} + +.netflix-container { + display: flex; + justify-content: center; + align-items: center; + height: 80vh; +} + +svg { + margin: 15vmin; +} + +/* ---------- UI Controls ---------- */ + +.themesContainer { + display: flex; + justify-content: center; + align-items: center; +} + +.theme { + width: var(--UIControlsSize); + height: var(--UIControlsSize); + margin: 20px; + border-radius: 50%; + border: 3px solid white; + background: lightgray; + transition: transform 0.2s; + cursor: pointer; + overflow: hidden; +} + +.theme:hover { + transform: scale(1.1); +} + +.bg-colour { + height: 100%; + width: 50%; + transform-origin: 100% 50%; + transform: rotate(225deg); +} \ No newline at end of file diff --git a/buttons-and-toggles/electric-hover-effect/README.md b/buttons-and-toggles/electric-hover-effect/README.md new file mode 100644 index 0000000..1ff10b8 --- /dev/null +++ b/buttons-and-toggles/electric-hover-effect/README.md @@ -0,0 +1,3 @@ +# Electric hover effect + + diff --git a/buttons-and-toggles/electric-hover-effect/dat.gui.min.js b/buttons-and-toggles/electric-hover-effect/dat.gui.min.js new file mode 100644 index 0000000..5b69be5 --- /dev/null +++ b/buttons-and-toggles/electric-hover-effect/dat.gui.min.js @@ -0,0 +1,14 @@ +/** + * dat-gui JavaScript Controller Library + * https://github.com/dataarts/dat.gui + * + * Copyright 2016 Data Arts Team, Google Creative Lab + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.dat=t():e.dat=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}var i=n(1),r=o(i);e.exports=r["default"]},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}t.__esModule=!0;var i=n(2),r=o(i),a=n(6),l=o(a),s=n(3),u=o(s),d=n(7),c=o(d),f=n(8),_=o(f),p=n(10),h=o(p),m=n(11),b=o(m),g=n(12),v=o(g),y=n(13),w=o(y),x=n(14),E=o(x),C=n(15),A=o(C),S=n(16),k=o(S),O=n(9),T=o(O),R=n(17),L=o(R);t["default"]={color:{Color:r["default"],math:l["default"],interpret:u["default"]},controllers:{Controller:c["default"],BooleanController:_["default"],OptionController:h["default"],StringController:b["default"],NumberController:v["default"],NumberControllerBox:w["default"],NumberControllerSlider:E["default"],FunctionController:A["default"],ColorController:k["default"]},dom:{dom:T["default"]},gui:{GUI:L["default"]},GUI:L["default"]}},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t,n){Object.defineProperty(e,t,{get:function(){return"RGB"===this.__state.space?this.__state[t]:(h.recalculateRGB(this,t,n),this.__state[t])},set:function(e){"RGB"!==this.__state.space&&(h.recalculateRGB(this,t,n),this.__state.space="RGB"),this.__state[t]=e}})}function a(e,t){Object.defineProperty(e,t,{get:function(){return"HSV"===this.__state.space?this.__state[t]:(h.recalculateHSV(this),this.__state[t])},set:function(e){"HSV"!==this.__state.space&&(h.recalculateHSV(this),this.__state.space="HSV"),this.__state[t]=e}})}t.__esModule=!0;var l=n(3),s=o(l),u=n(6),d=o(u),c=n(4),f=o(c),_=n(5),p=o(_),h=function(){function e(){if(i(this,e),this.__state=s["default"].apply(this,arguments),this.__state===!1)throw new Error("Failed to interpret color arguments");this.__state.a=this.__state.a||1}return e.prototype.toString=function(){return(0,f["default"])(this)},e.prototype.toHexString=function(){return(0,f["default"])(this,!0)},e.prototype.toOriginal=function(){return this.__state.conversion.write(this)},e}();h.recalculateRGB=function(e,t,n){if("HEX"===e.__state.space)e.__state[t]=d["default"].component_from_hex(e.__state.hex,n);else{if("HSV"!==e.__state.space)throw new Error("Corrupted color state");p["default"].extend(e.__state,d["default"].hsv_to_rgb(e.__state.h,e.__state.s,e.__state.v))}},h.recalculateHSV=function(e){var t=d["default"].rgb_to_hsv(e.r,e.g,e.b);p["default"].extend(e.__state,{s:t.s,v:t.v}),p["default"].isNaN(t.h)?p["default"].isUndefined(e.__state.h)&&(e.__state.h=0):e.__state.h=t.h},h.COMPONENTS=["r","g","b","h","s","v","hex","a"],r(h.prototype,"r",2),r(h.prototype,"g",1),r(h.prototype,"b",0),a(h.prototype,"h"),a(h.prototype,"s"),a(h.prototype,"v"),Object.defineProperty(h.prototype,"a",{get:function(){return this.__state.a},set:function(e){this.__state.a=e}}),Object.defineProperty(h.prototype,"hex",{get:function(){return"HEX"!==!this.__state.space&&(this.__state.hex=d["default"].rgb_to_hex(this.r,this.g,this.b)),this.__state.hex},set:function(e){this.__state.space="HEX",this.__state.hex=e}}),t["default"]=h},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}t.__esModule=!0;var i=n(4),r=o(i),a=n(5),l=o(a),s=[{litmus:l["default"].isString,conversions:{THREE_CHAR_HEX:{read:function(e){var t=e.match(/^#([A-F0-9])([A-F0-9])([A-F0-9])$/i);return null!==t&&{space:"HEX",hex:parseInt("0x"+t[1].toString()+t[1].toString()+t[2].toString()+t[2].toString()+t[3].toString()+t[3].toString(),0)}},write:r["default"]},SIX_CHAR_HEX:{read:function(e){var t=e.match(/^#([A-F0-9]{6})$/i);return null!==t&&{space:"HEX",hex:parseInt("0x"+t[1].toString(),0)}},write:r["default"]},CSS_RGB:{read:function(e){var t=e.match(/^rgb\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/);return null!==t&&{space:"RGB",r:parseFloat(t[1]),g:parseFloat(t[2]),b:parseFloat(t[3])}},write:r["default"]},CSS_RGBA:{read:function(e){var t=e.match(/^rgba\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/);return null!==t&&{space:"RGB",r:parseFloat(t[1]),g:parseFloat(t[2]),b:parseFloat(t[3]),a:parseFloat(t[4])}},write:r["default"]}}},{litmus:l["default"].isNumber,conversions:{HEX:{read:function(e){return{space:"HEX",hex:e,conversionName:"HEX"}},write:function(e){return e.hex}}}},{litmus:l["default"].isArray,conversions:{RGB_ARRAY:{read:function(e){return 3===e.length&&{space:"RGB",r:e[0],g:e[1],b:e[2]}},write:function(e){return[e.r,e.g,e.b]}},RGBA_ARRAY:{read:function(e){return 4===e.length&&{space:"RGB",r:e[0],g:e[1],b:e[2],a:e[3]}},write:function(e){return[e.r,e.g,e.b,e.a]}}}},{litmus:l["default"].isObject,conversions:{RGBA_OBJ:{read:function(e){return!!(l["default"].isNumber(e.r)&&l["default"].isNumber(e.g)&&l["default"].isNumber(e.b)&&l["default"].isNumber(e.a))&&{space:"RGB",r:e.r,g:e.g,b:e.b,a:e.a}},write:function(e){return{r:e.r,g:e.g,b:e.b,a:e.a}}},RGB_OBJ:{read:function(e){return!!(l["default"].isNumber(e.r)&&l["default"].isNumber(e.g)&&l["default"].isNumber(e.b))&&{space:"RGB",r:e.r,g:e.g,b:e.b}},write:function(e){return{r:e.r,g:e.g,b:e.b}}},HSVA_OBJ:{read:function(e){return!!(l["default"].isNumber(e.h)&&l["default"].isNumber(e.s)&&l["default"].isNumber(e.v)&&l["default"].isNumber(e.a))&&{space:"HSV",h:e.h,s:e.s,v:e.v,a:e.a}},write:function(e){return{h:e.h,s:e.s,v:e.v,a:e.a}}},HSV_OBJ:{read:function(e){return!!(l["default"].isNumber(e.h)&&l["default"].isNumber(e.s)&&l["default"].isNumber(e.v))&&{space:"HSV",h:e.h,s:e.s,v:e.v}},write:function(e){return{h:e.h,s:e.s,v:e.v}}}}}],u=void 0,d=void 0,c=function(){d=!1;var e=arguments.length>1?l["default"].toArray(arguments):arguments[0];return l["default"].each(s,function(t){if(t.litmus(e))return l["default"].each(t.conversions,function(t,n){if(u=t.read(e),d===!1&&u!==!1)return d=u,u.conversionName=n,u.conversion=t,l["default"].BREAK}),l["default"].BREAK}),d};t["default"]=c},function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e,t){var n=e.__state.conversionName.toString(),o=Math.round(e.r),i=Math.round(e.g),r=Math.round(e.b),a=e.a,l=Math.round(e.h),s=e.s.toFixed(1),u=e.v.toFixed(1);if(t||"THREE_CHAR_HEX"===n||"SIX_CHAR_HEX"===n){for(var d=e.hex.toString(16);d.length<6;)d="0"+d;return"#"+d}return"CSS_RGB"===n?"rgb("+o+","+i+","+r+")":"CSS_RGBA"===n?"rgba("+o+","+i+","+r+","+a+")":"HEX"===n?"0x"+e.hex.toString(16):"RGB_ARRAY"===n?"["+o+","+i+","+r+"]":"RGBA_ARRAY"===n?"["+o+","+i+","+r+","+a+"]":"RGB_OBJ"===n?"{r:"+o+",g:"+i+",b:"+r+"}":"RGBA_OBJ"===n?"{r:"+o+",g:"+i+",b:"+r+",a:"+a+"}":"HSV_OBJ"===n?"{h:"+l+",s:"+s+",v:"+u+"}":"HSVA_OBJ"===n?"{h:"+l+",s:"+s+",v:"+u+",a:"+a+"}":"unknown format"}},function(e,t){"use strict";t.__esModule=!0;var n=Array.prototype.forEach,o=Array.prototype.slice,i={BREAK:{},extend:function(e){return this.each(o.call(arguments,1),function(t){var n=this.isObject(t)?Object.keys(t):[];n.forEach(function(n){this.isUndefined(t[n])||(e[n]=t[n])}.bind(this))},this),e},defaults:function(e){return this.each(o.call(arguments,1),function(t){var n=this.isObject(t)?Object.keys(t):[];n.forEach(function(n){this.isUndefined(e[n])&&(e[n]=t[n])}.bind(this))},this),e},compose:function(){var e=o.call(arguments);return function(){for(var t=o.call(arguments),n=e.length-1;n>=0;n--)t=[e[n].apply(this,t)];return t[0]}},each:function(e,t,o){if(e)if(n&&e.forEach&&e.forEach===n)e.forEach(t,o);else if(e.length===e.length+0){var i=void 0,r=void 0;for(i=0,r=e.length;i>8*t&255},hex_with_component:function(e,t,o){return o<<(n=8*t)|e&~(255<-1?t.length-t.indexOf(".")-1:0}t.__esModule=!0;var s=n(7),u=o(s),d=n(5),c=o(d),f=function(e){function t(n,o,a){i(this,t);var s=r(this,e.call(this,n,o)),u=a||{};return s.__min=u.min,s.__max=u.max,s.__step=u.step,c["default"].isUndefined(s.__step)?0===s.initialValue?s.__impliedStep=1:s.__impliedStep=Math.pow(10,Math.floor(Math.log(Math.abs(s.initialValue))/Math.LN10))/10:s.__impliedStep=s.__step,s.__precision=l(s.__impliedStep),s}return a(t,e),t.prototype.setValue=function(t){var n=t;return void 0!==this.__min&&nthis.__max&&(n=this.__max),void 0!==this.__step&&n%this.__step!==0&&(n=Math.round(n/this.__step)*this.__step),e.prototype.setValue.call(this,n)},t.prototype.min=function(e){return this.__min=e,this},t.prototype.max=function(e){return this.__max=e,this},t.prototype.step=function(e){return this.__step=e,this.__impliedStep=e,this.__precision=l(e),this},t}(u["default"]);t["default"]=f},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n}t.__esModule=!0;var s=n(12),u=o(s),d=n(9),c=o(d),f=n(5),_=o(f),p=function(e){function t(n,o,a){function l(){var e=parseFloat(m.__input.value);_["default"].isNaN(e)||m.setValue(e)}function s(){m.__onFinishChange&&m.__onFinishChange.call(m,m.getValue())}function u(){s()}function d(e){var t=b-e.clientY;m.setValue(m.getValue()+t*m.__impliedStep),b=e.clientY}function f(){c["default"].unbind(window,"mousemove",d),c["default"].unbind(window,"mouseup",f),s()}function p(e){c["default"].bind(window,"mousemove",d),c["default"].bind(window,"mouseup",f),b=e.clientY}i(this,t);var h=r(this,e.call(this,n,o,a));h.__truncationSuspended=!1;var m=h,b=void 0;return h.__input=document.createElement("input"),h.__input.setAttribute("type","text"),c["default"].bind(h.__input,"change",l),c["default"].bind(h.__input,"blur",u),c["default"].bind(h.__input,"mousedown",p),c["default"].bind(h.__input,"keydown",function(e){13===e.keyCode&&(m.__truncationSuspended=!0,this.blur(),m.__truncationSuspended=!1,s())}),h.updateDisplay(),h.domElement.appendChild(h.__input),h}return a(t,e),t.prototype.updateDisplay=function(){return this.__input.value=this.__truncationSuspended?this.getValue():l(this.getValue(),this.__precision),e.prototype.updateDisplay.call(this)},t}(u["default"]);t["default"]=p},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t,n,o,i){return o+(i-o)*((e-t)/(n-t))}t.__esModule=!0;var s=n(12),u=o(s),d=n(9),c=o(d),f=function(e){function t(n,o,a,s,u){function d(e){document.activeElement.blur(),c["default"].bind(window,"mousemove",f),c["default"].bind(window,"mouseup",_),f(e)}function f(e){e.preventDefault();var t=h.__background.getBoundingClientRect();return h.setValue(l(e.clientX,t.left,t.right,h.__min,h.__max)),!1}function _(){c["default"].unbind(window,"mousemove",f),c["default"].unbind(window,"mouseup",_),h.__onFinishChange&&h.__onFinishChange.call(h,h.getValue())}i(this,t);var p=r(this,e.call(this,n,o,{min:a,max:s,step:u})),h=p;return p.__background=document.createElement("div"),p.__foreground=document.createElement("div"),c["default"].bind(p.__background,"mousedown",d),c["default"].addClass(p.__background,"slider"),c["default"].addClass(p.__foreground,"slider-fg"),p.updateDisplay(),p.__background.appendChild(p.__foreground),p.domElement.appendChild(p.__background),p}return a(t,e),t.prototype.updateDisplay=function(){var t=(this.getValue()-this.__min)/(this.__max-this.__min);return this.__foreground.style.width=100*t+"%",e.prototype.updateDisplay.call(this)},t}(u["default"]);t["default"]=f},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}t.__esModule=!0;var l=n(7),s=o(l),u=n(9),d=o(u),c=function(e){function t(n,o,a){i(this,t);var l=r(this,e.call(this,n,o)),s=l;return l.__button=document.createElement("div"),l.__button.innerHTML=void 0===a?"Fire":a,d["default"].bind(l.__button,"click",function(e){return e.preventDefault(),s.fire(),!1}),d["default"].addClass(l.__button,"button"),l.domElement.appendChild(l.__button),l}return a(t,e),t.prototype.fire=function(){this.__onChange&&this.__onChange.call(this),this.getValue().call(this.object),this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue())},t}(s["default"]);t["default"]=c},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t,n,o){e.style.background="",g["default"].each(y,function(i){e.style.cssText+="background: "+i+"linear-gradient("+t+", "+n+" 0%, "+o+" 100%); "})}function s(e){e.style.background="",e.style.cssText+="background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);",e.style.cssText+="background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);"}t.__esModule=!0;var u=n(7),d=o(u),c=n(9),f=o(c),_=n(2),p=o(_),h=n(3),m=o(h),b=n(5),g=o(b),v=function(e){function t(n,o){function a(e){h(e),f["default"].bind(window,"mousemove",h),f["default"].bind(window,"mouseup",u)}function u(){f["default"].unbind(window,"mousemove",h),f["default"].unbind(window,"mouseup",u),_()}function d(){var e=(0,m["default"])(this.value);e!==!1?(y.__color.__state=e,y.setValue(y.__color.toOriginal())):this.value=y.__color.toString()}function c(){f["default"].unbind(window,"mousemove",b),f["default"].unbind(window,"mouseup",c),_()}function _(){y.__onFinishChange&&y.__onFinishChange.call(y,y.__color.toOriginal())}function h(e){e.preventDefault();var t=y.__saturation_field.getBoundingClientRect(),n=(e.clientX-t.left)/(t.right-t.left),o=1-(e.clientY-t.top)/(t.bottom-t.top);return o>1?o=1:o<0&&(o=0),n>1?n=1:n<0&&(n=0),y.__color.v=o,y.__color.s=n,y.setValue(y.__color.toOriginal()),!1}function b(e){e.preventDefault();var t=y.__hue_field.getBoundingClientRect(),n=1-(e.clientY-t.top)/(t.bottom-t.top);return n>1?n=1:n<0&&(n=0),y.__color.h=360*n,y.setValue(y.__color.toOriginal()),!1}i(this,t);var v=r(this,e.call(this,n,o));v.__color=new p["default"](v.getValue()),v.__temp=new p["default"](0);var y=v;v.domElement=document.createElement("div"),f["default"].makeSelectable(v.domElement,!1),v.__selector=document.createElement("div"),v.__selector.className="selector",v.__saturation_field=document.createElement("div"),v.__saturation_field.className="saturation-field",v.__field_knob=document.createElement("div"),v.__field_knob.className="field-knob",v.__field_knob_border="2px solid ",v.__hue_knob=document.createElement("div"),v.__hue_knob.className="hue-knob",v.__hue_field=document.createElement("div"),v.__hue_field.className="hue-field",v.__input=document.createElement("input"),v.__input.type="text",v.__input_textShadow="0 1px 1px ",f["default"].bind(v.__input,"keydown",function(e){13===e.keyCode&&d.call(this)}),f["default"].bind(v.__input,"blur",d),f["default"].bind(v.__selector,"mousedown",function(){f["default"].addClass(this,"drag").bind(window,"mouseup",function(){f["default"].removeClass(y.__selector,"drag")})});var w=document.createElement("div");return g["default"].extend(v.__selector.style,{width:"122px",height:"102px",padding:"3px",backgroundColor:"#222",boxShadow:"0px 1px 3px rgba(0,0,0,0.3)"}),g["default"].extend(v.__field_knob.style,{position:"absolute",width:"12px",height:"12px",border:v.__field_knob_border+(v.__color.v<.5?"#fff":"#000"),boxShadow:"0px 1px 3px rgba(0,0,0,0.5)",borderRadius:"12px",zIndex:1}),g["default"].extend(v.__hue_knob.style,{position:"absolute",width:"15px",height:"2px",borderRight:"4px solid #fff",zIndex:1}),g["default"].extend(v.__saturation_field.style,{width:"100px",height:"100px",border:"1px solid #555",marginRight:"3px",display:"inline-block",cursor:"pointer"}),g["default"].extend(w.style,{width:"100%",height:"100%",background:"none"}),l(w,"top","rgba(0,0,0,0)","#000"),g["default"].extend(v.__hue_field.style,{width:"15px",height:"100px",border:"1px solid #555",cursor:"ns-resize",position:"absolute",top:"3px",right:"3px"}),s(v.__hue_field),g["default"].extend(v.__input.style,{outline:"none",textAlign:"center",color:"#fff",border:0,fontWeight:"bold",textShadow:v.__input_textShadow+"rgba(0,0,0,0.7)"}),f["default"].bind(v.__saturation_field,"mousedown",a),f["default"].bind(v.__field_knob,"mousedown",a),f["default"].bind(v.__hue_field,"mousedown",function(e){b(e),f["default"].bind(window,"mousemove",b),f["default"].bind(window,"mouseup",c)}),v.__saturation_field.appendChild(w),v.__selector.appendChild(v.__field_knob),v.__selector.appendChild(v.__saturation_field),v.__selector.appendChild(v.__hue_field),v.__hue_field.appendChild(v.__hue_knob),v.domElement.appendChild(v.__input),v.domElement.appendChild(v.__selector),v.updateDisplay(),v}return a(t,e),t.prototype.updateDisplay=function(){var e=(0,m["default"])(this.getValue());if(e!==!1){var t=!1;g["default"].each(p["default"].COMPONENTS,function(n){if(!g["default"].isUndefined(e[n])&&!g["default"].isUndefined(this.__color.__state[n])&&e[n]!==this.__color.__state[n])return t=!0,{}},this),t&&g["default"].extend(this.__color.__state,e)}g["default"].extend(this.__temp.__state,this.__color.__state),this.__temp.a=1;var n=this.__color.v<.5||this.__color.s>.5?255:0,o=255-n;g["default"].extend(this.__field_knob.style,{marginLeft:100*this.__color.s-7+"px",marginTop:100*(1-this.__color.v)-7+"px",backgroundColor:this.__temp.toHexString(),border:this.__field_knob_border+"rgb("+n+","+n+","+n+")"}),this.__hue_knob.style.marginTop=100*(1-this.__color.h/360)+"px",this.__temp.s=1,this.__temp.v=1,l(this.__saturation_field,"left","#fff",this.__temp.toHexString()),this.__input.value=this.__color.toString(),g["default"].extend(this.__input.style,{backgroundColor:this.__color.toHexString(),color:"rgb("+n+","+n+","+n+")",textShadow:this.__input_textShadow+"rgba("+o+","+o+","+o+",.7)"})},t}(d["default"]),y=["-moz-","-o-","-webkit-","-ms-",""];t["default"]=v},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t,n){var o=document.createElement("li");return t&&o.appendChild(t),n?e.__ul.insertBefore(o,n):e.__ul.appendChild(o),e.onResize(),o}function r(e,t){var n=e.__preset_select[e.__preset_select.selectedIndex];t?n.innerHTML=n.value+"*":n.innerHTML=n.value}function a(e,t,n){if(n.__li=t,n.__gui=e,U["default"].extend(n,{options:function(t){if(arguments.length>1){var o=n.__li.nextElementSibling;return n.remove(),s(e,n.object,n.property,{before:o,factoryArgs:[U["default"].toArray(arguments)]})}if(U["default"].isArray(t)||U["default"].isObject(t)){var i=n.__li.nextElementSibling;return n.remove(),s(e,n.object,n.property,{before:i,factoryArgs:[t]})}},name:function(e){return n.__li.firstElementChild.firstElementChild.innerHTML=e,n},listen:function(){return n.__gui.listen(n),n},remove:function(){ +return n.__gui.remove(n),n}}),n instanceof B["default"])!function(){var e=new N["default"](n.object,n.property,{min:n.__min,max:n.__max,step:n.__step});U["default"].each(["updateDisplay","onChange","onFinishChange","step"],function(t){var o=n[t],i=e[t];n[t]=e[t]=function(){var t=Array.prototype.slice.call(arguments);return i.apply(e,t),o.apply(n,t)}}),z["default"].addClass(t,"has-slider"),n.domElement.insertBefore(e.domElement,n.domElement.firstElementChild)}();else if(n instanceof N["default"]){var o=function(t){if(U["default"].isNumber(n.__min)&&U["default"].isNumber(n.__max)){var o=n.__li.firstElementChild.firstElementChild.innerHTML,i=n.__gui.__listening.indexOf(n)>-1;n.remove();var r=s(e,n.object,n.property,{before:n.__li.nextElementSibling,factoryArgs:[n.__min,n.__max,n.__step]});return r.name(o),i&&r.listen(),r}return t};n.min=U["default"].compose(o,n.min),n.max=U["default"].compose(o,n.max)}else n instanceof O["default"]?(z["default"].bind(t,"click",function(){z["default"].fakeEvent(n.__checkbox,"click")}),z["default"].bind(n.__checkbox,"click",function(e){e.stopPropagation()})):n instanceof R["default"]?(z["default"].bind(t,"click",function(){z["default"].fakeEvent(n.__button,"click")}),z["default"].bind(t,"mouseover",function(){z["default"].addClass(n.__button,"hover")}),z["default"].bind(t,"mouseout",function(){z["default"].removeClass(n.__button,"hover")})):n instanceof j["default"]&&(z["default"].addClass(t,"color"),n.updateDisplay=U["default"].compose(function(e){return t.style.borderLeftColor=n.__color.toString(),e},n.updateDisplay),n.updateDisplay());n.setValue=U["default"].compose(function(t){return e.getRoot().__preset_select&&n.isModified()&&r(e.getRoot(),!0),t},n.setValue)}function l(e,t){var n=e.getRoot(),o=n.__rememberedObjects.indexOf(t.object);if(o!==-1){var i=n.__rememberedObjectIndecesToControllers[o];if(void 0===i&&(i={},n.__rememberedObjectIndecesToControllers[o]=i),i[t.property]=t,n.load&&n.load.remembered){var r=n.load.remembered,a=void 0;if(r[e.preset])a=r[e.preset];else{if(!r[Q])return;a=r[Q]}if(a[o]&&void 0!==a[o][t.property]){var l=a[o][t.property];t.initialValue=l,t.setValue(l)}}}}function s(e,t,n,o){if(void 0===t[n])throw new Error('Object "'+t+'" has no property "'+n+'"');var r=void 0;if(o.color)r=new j["default"](t,n);else{var s=[t,n].concat(o.factoryArgs);r=C["default"].apply(e,s)}o.before instanceof S["default"]&&(o.before=o.before.__li),l(e,r),z["default"].addClass(r.domElement,"c");var u=document.createElement("span");z["default"].addClass(u,"property-name"),u.innerHTML=r.property;var d=document.createElement("div");d.appendChild(u),d.appendChild(r.domElement);var c=i(e,d,o.before);return z["default"].addClass(c,oe.CLASS_CONTROLLER_ROW),r instanceof j["default"]?z["default"].addClass(c,"color"):z["default"].addClass(c,g(r.getValue())),a(e,c,r),e.__controllers.push(r),r}function u(e,t){return document.location.href+"."+t}function d(e,t,n){var o=document.createElement("option");o.innerHTML=t,o.value=t,e.__preset_select.appendChild(o),n&&(e.__preset_select.selectedIndex=e.__preset_select.length-1)}function c(e,t){t.style.display=e.useLocalStorage?"block":"none"}function f(e){var t=e.__save_row=document.createElement("li");z["default"].addClass(e.domElement,"has-save"),e.__ul.insertBefore(t,e.__ul.firstChild),z["default"].addClass(t,"save-row");var n=document.createElement("span");n.innerHTML=" ",z["default"].addClass(n,"button gears");var o=document.createElement("span");o.innerHTML="Save",z["default"].addClass(o,"button"),z["default"].addClass(o,"save");var i=document.createElement("span");i.innerHTML="New",z["default"].addClass(i,"button"),z["default"].addClass(i,"save-as");var r=document.createElement("span");r.innerHTML="Revert",z["default"].addClass(r,"button"),z["default"].addClass(r,"revert");var a=e.__preset_select=document.createElement("select");e.load&&e.load.remembered?U["default"].each(e.load.remembered,function(t,n){d(e,n,n===e.preset)}):d(e,Q,!1),z["default"].bind(a,"change",function(){for(var t=0;t0&&(e.preset=this.preset,e.remembered||(e.remembered={}),e.remembered[this.preset]=h(this)),e.folders={},U["default"].each(this.__folders,function(t,n){e.folders[n]=t.getSaveObject()}),e},save:function(){this.load.remembered||(this.load.remembered={}),this.load.remembered[this.preset]=h(this),r(this,!1),this.saveToLocalStorageIfPossible()},saveAs:function(e){this.load.remembered||(this.load.remembered={},this.load.remembered[Q]=h(this,!0)),this.load.remembered[e]=h(this),this.preset=e,d(this,e,!0),this.saveToLocalStorageIfPossible()},revert:function(e){U["default"].each(this.__controllers,function(t){this.getRoot().load.remembered?l(e||this.getRoot(),t):t.setValue(t.initialValue),t.__onFinishChange&&t.__onFinishChange.call(t,t.getValue())},this),U["default"].each(this.__folders,function(e){e.revert(e)}),e||r(this.getRoot(),!1)},listen:function(e){var t=0===this.__listening.length;this.__listening.push(e),t&&b(this.__listening)},updateDisplay:function(){U["default"].each(this.__controllers,function(e){e.updateDisplay()}),U["default"].each(this.__folders,function(e){e.updateDisplay()})}}),e.exports=oe},function(e,t){"use strict";e.exports={load:function(e,t){var n=t||document,o=n.createElement("link");o.type="text/css",o.rel="stylesheet",o.href=e,n.getElementsByTagName("head")[0].appendChild(o)},inject:function(e,t){var n=t||document,o=document.createElement("style");o.type="text/css",o.innerHTML=e;var i=n.getElementsByTagName("head")[0];try{i.appendChild(o)}catch(r){}}}},function(e,t){e.exports="
Here's the new load parameter for your GUI's constructor:
Automatically save values to localStorage on exit.
The values saved to localStorage will override those passed to dat.GUI's constructor. This makes it easier to work incrementally, but localStorage is fragile, and your friends may not see the same values you do.
"},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}t.__esModule=!0;var i=n(10),r=o(i),a=n(13),l=o(a),s=n(14),u=o(s),d=n(11),c=o(d),f=n(15),_=o(f),p=n(8),h=o(p),m=n(5),b=o(m),g=function(e,t){var n=e[t];return b["default"].isArray(arguments[2])||b["default"].isObject(arguments[2])?new r["default"](e,t,arguments[2]):b["default"].isNumber(n)?b["default"].isNumber(arguments[2])&&b["default"].isNumber(arguments[3])?b["default"].isNumber(arguments[4])?new u["default"](e,t,arguments[2],arguments[3],arguments[4]):new u["default"](e,t,arguments[2],arguments[3]):b["default"].isNumber(arguments[4])?new l["default"](e,t,{min:arguments[2],max:arguments[3],step:arguments[4]}):new l["default"](e,t,{min:arguments[2],max:arguments[3]}):b["default"].isString(n)?new c["default"](e,t):b["default"].isFunction(n)?new _["default"](e,t,""):b["default"].isBoolean(n)?new h["default"](e,t):null};t["default"]=g},function(e,t){"use strict";function n(e){setTimeout(e,1e3/60)}t.__esModule=!0,t["default"]=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||n},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}t.__esModule=!0;var r=n(9),a=o(r),l=n(5),s=o(l),u=function(){function e(){i(this,e),this.backgroundElement=document.createElement("div"),s["default"].extend(this.backgroundElement.style,{backgroundColor:"rgba(0,0,0,0.8)",top:0,left:0,display:"none",zIndex:"1000",opacity:0,WebkitTransition:"opacity 0.2s linear",transition:"opacity 0.2s linear"}),a["default"].makeFullscreen(this.backgroundElement),this.backgroundElement.style.position="fixed",this.domElement=document.createElement("div"),s["default"].extend(this.domElement.style,{position:"fixed",display:"none",zIndex:"1001",opacity:0,WebkitTransition:"-webkit-transform 0.2s ease-out, opacity 0.2s linear",transition:"transform 0.2s ease-out, opacity 0.2s linear"}),document.body.appendChild(this.backgroundElement),document.body.appendChild(this.domElement);var t=this;a["default"].bind(this.backgroundElement,"click",function(){t.hide()})}return e.prototype.show=function(){var e=this;this.backgroundElement.style.display="block",this.domElement.style.display="block",this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)",this.layout(),s["default"].defer(function(){e.backgroundElement.style.opacity=1,e.domElement.style.opacity=1,e.domElement.style.webkitTransform="scale(1)"})},e.prototype.hide=function t(){var e=this,t=function n(){e.domElement.style.display="none",e.backgroundElement.style.display="none",a["default"].unbind(e.domElement,"webkitTransitionEnd",n),a["default"].unbind(e.domElement,"transitionend",n),a["default"].unbind(e.domElement,"oTransitionEnd",n)};a["default"].bind(this.domElement,"webkitTransitionEnd",t),a["default"].bind(this.domElement,"transitionend",t),a["default"].bind(this.domElement,"oTransitionEnd",t),this.backgroundElement.style.opacity=0,this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)"},e.prototype.layout=function(){this.domElement.style.left=window.innerWidth/2-a["default"].getWidth(this.domElement)/2+"px",this.domElement.style.top=window.innerHeight/2-a["default"].getHeight(this.domElement)/2+"px"},e}();t["default"]=u},function(e,t,n){t=e.exports=n(24)(),t.push([e.id,".dg ul{list-style:none;margin:0;padding:0;width:100%;clear:both}.dg.ac{position:fixed;top:0;left:0;right:0;height:0;z-index:0}.dg:not(.ac) .main{overflow:hidden}.dg.main{-webkit-transition:opacity .1s linear;transition:opacity .1s linear}.dg.main.taller-than-window{overflow-y:auto}.dg.main.taller-than-window .close-button{opacity:1;margin-top:-1px;border-top:1px solid #2c2c2c}.dg.main ul.closed .close-button{opacity:1!important}.dg.main .close-button.drag,.dg.main:hover .close-button{opacity:1}.dg.main .close-button{-webkit-transition:opacity .1s linear;transition:opacity .1s linear;border:0;position:absolute;line-height:19px;height:20px;cursor:pointer;text-align:center;background-color:#000}.dg.main .close-button:hover{background-color:#111}.dg.a{float:right;margin-right:15px;overflow-x:hidden}.dg.a.has-save>ul{margin-top:27px}.dg.a.has-save>ul.closed{margin-top:0}.dg.a .save-row{position:fixed;top:0;z-index:1002}.dg li{-webkit-transition:height .1s ease-out;transition:height .1s ease-out}.dg li:not(.folder){cursor:auto;height:27px;line-height:27px;overflow:hidden;padding:0 4px 0 5px}.dg li.folder{padding:0;border-left:4px solid transparent}.dg li.title{cursor:pointer;margin-left:-4px}.dg .closed li:not(.title),.dg .closed ul li,.dg .closed ul li>*{height:0;overflow:hidden;border:0}.dg .cr{clear:both;padding-left:3px;height:27px}.dg .property-name{cursor:default;float:left;clear:left;width:40%;overflow:hidden;text-overflow:ellipsis}.dg .c{float:left;width:60%}.dg .c input[type=text]{border:0;margin-top:4px;padding:3px;width:100%;float:right}.dg .has-slider input[type=text]{width:30%;margin-left:0}.dg .slider{float:left;width:66%;margin-left:-5px;margin-right:0;height:19px;margin-top:4px}.dg .slider-fg{height:100%}.dg .c input[type=checkbox]{margin-top:9px}.dg .c select{margin-top:5px}.dg .cr.boolean,.dg .cr.boolean *,.dg .cr.function,.dg .cr.function *,.dg .cr.function .property-name{cursor:pointer}.dg .selector{display:none;position:absolute;margin-left:-9px;margin-top:23px;z-index:10}.dg .c:hover .selector,.dg .selector.drag{display:block}.dg li.save-row{padding:0}.dg li.save-row .button{display:inline-block;padding:0 6px}.dg.dialogue{background-color:#222;width:460px;padding:15px;font-size:13px;line-height:15px}#dg-new-constructor{padding:10px;color:#222;font-family:Monaco,monospace;font-size:10px;border:0;resize:none;box-shadow:inset 1px 1px 1px #888;word-wrap:break-word;margin:12px 0;display:block;width:440px;overflow-y:scroll;height:100px;position:relative}#dg-local-explain{display:none;font-size:11px;line-height:17px;border-radius:3px;background-color:#333;padding:8px;margin-top:10px}#dg-local-explain code{font-size:10px}#dat-gui-save-locally{display:none}.dg{color:#eee;font:11px Lucida Grande,sans-serif;text-shadow:0 -1px 0 #111}.dg.main::-webkit-scrollbar{width:5px;background:#1a1a1a}.dg.main::-webkit-scrollbar-corner{height:0;display:none}.dg.main::-webkit-scrollbar-thumb{border-radius:5px;background:#676767}.dg li:not(.folder){background:#1a1a1a;border-bottom:1px solid #2c2c2c}.dg li.save-row{line-height:25px;background:#dad5cb;border:0}.dg li.save-row select{margin-left:5px;width:108px}.dg li.save-row .button{margin-left:5px;margin-top:1px;border-radius:2px;font-size:9px;line-height:7px;padding:4px 4px 5px;background:#c5bdad;color:#fff;text-shadow:0 1px 0 #b0a58f;box-shadow:0 -1px 0 #b0a58f;cursor:pointer}.dg li.save-row .button.gears{background:#c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;height:7px;width:8px}.dg li.save-row .button:hover{background-color:#bab19e;box-shadow:0 -1px 0 #b0a58f}.dg li.folder{border-bottom:0}.dg li.title{padding-left:16px;background:#000 url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;cursor:pointer;border-bottom:1px solid hsla(0,0%,100%,.2)}.dg .closed li.title{background-image:url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==)}.dg .cr.boolean{border-left:3px solid #806787}.dg .cr.color{border-left:3px solid}.dg .cr.function{border-left:3px solid #e61d5f}.dg .cr.number{border-left:3px solid #2fa1d6}.dg .cr.number input[type=text]{color:#2fa1d6}.dg .cr.string{border-left:3px solid #1ed36f}.dg .cr.string input[type=text]{color:#1ed36f}.dg .cr.boolean:hover,.dg .cr.function:hover{background:#111}.dg .c input[type=text]{background:#303030;outline:none}.dg .c input[type=text]:hover{background:#3c3c3c}.dg .c input[type=text]:focus{background:#494949;color:#fff}.dg .c .slider{background:#303030;cursor:ew-resize}.dg .c .slider-fg{background:#2fa1d6;max-width:100%}.dg .c .slider:hover{background:#3c3c3c}.dg .c .slider:hover .slider-fg{background:#44abda}",""])},function(e,t){e.exports=function(){var e=[];return e.toString=function(){for(var e=[],t=0;t + + + + Electric hover effect + + + + + + +ENTER + + + + + + + + + + diff --git a/buttons-and-toggles/electric-hover-effect/script.js b/buttons-and-toggles/electric-hover-effect/script.js new file mode 100644 index 0000000..48abcb7 --- /dev/null +++ b/buttons-and-toggles/electric-hover-effect/script.js @@ -0,0 +1,184 @@ +var mobileAndTabletcheck = function() { + var check = false; + (function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera); + return check; +}; + +var canvas = document.createElement( 'canvas' ); +var ctx = canvas.getContext( '2d' ); + +var w = 320; +var h = 320; + +var width = window.innerWidth; +var height = window.innerHeight; + +var planeSize = 600; + +var radius = 300; + +if(mobileAndTabletcheck()){ + planeSize = 400; + w = 200; + h = 200; + radius = 150; +} + +canvas.setAttribute('width', w); +canvas.setAttribute('height', h); + +// canvas.style.position = 'absolute'; +// canvas.style.width = '320px'; +// canvas.style.height = '320px'; +// canvas.style.top = '0'; +// canvas.style.left = '0'; +// canvas.style.zIndex = '100'; +// document.body.appendChild(canvas); + +window.addEventListener('resize', onWindowResize); + +var maskImage = new Image(); +//because of tainted canvas +maskImage.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTM4NzkwRjM0QTk3MTFFNzlCMkFFRTA2QTZFNkM4MTgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTM4NzkwRjQ0QTk3MTFFNzlCMkFFRTA2QTZFNkM4MTgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1Mzg3OTBGMTRBOTcxMUU3OUIyQUVFMDZBNkU2QzgxOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1Mzg3OTBGMjRBOTcxMUU3OUIyQUVFMDZBNkU2QzgxOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pmzm5t8AABYsSURBVHja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"; +// maskImage.crossOrigin = "Anonymous"; + +var mousePos = [0, 0]; + +var raycaster = new THREE.Raycaster(); +var mouse = new THREE.Vector2(); + +if(mobileAndTabletcheck()){ + window.addEventListener('touchmove', function(e){ + mouse.x = ( e.touches[0].clientX / window.innerWidth ) * 2 - 1; + mouse.y = - ( e.touches[0].clientY / window.innerHeight ) * 2 + 1; + }); + } else { + window.addEventListener('mousemove', function(e){ + mouse.x = ( e.clientX / window.innerWidth ) * 2 - 1; + mouse.y = - ( e.clientY / window.innerHeight ) * 2 + 1; + }); +} + +function renderRay() { + raycaster.setFromCamera( mouse, camera ); + var intersects = raycaster.intersectObjects( scene.children ); + for ( var i = 0; i < intersects.length; i++ ) { + mousePos[0] = (((intersects[i].point.x / planeSize)+ 0.5) * w) - (radius*0.5); + mousePos[1] = ((((intersects[i].point.y * -1) / planeSize)+ 0.5) * h) - (radius*0.5); + } +} + + +function draw(){ + ctx.clearRect(0, 0, w, h); + ctx.drawImage(maskImage, mousePos[0], mousePos[1], radius, radius); + renderRay(); +} + +var frustumSize = 600; +var aspect = window.innerWidth / window.innerHeight; + + +var clock = new THREE.Clock(true); + +var scene = new THREE.Scene(); +camera = new THREE.OrthographicCamera( frustumSize * aspect / - 2, frustumSize * aspect / 2, frustumSize / 2, frustumSize / - 2, 1, 2000 ); + +camera.lookAt(scene.position); +camera.position.z = 1; + + +var renderer = new THREE.WebGLRenderer({ + antialias: true, + alpha: true +}); +renderer.setPixelRatio = 1; +renderer.setClearColor(0x3A405A, 1.0); +renderer.setSize( window.innerWidth, window.innerHeight ); +document.body.appendChild( renderer.domElement ); + +function onWindowResize(){ + +var aspect = window.innerWidth / window.innerHeight; + +camera.left = - frustumSize * aspect / 2; +camera.right = frustumSize * aspect / 2; +camera.top = frustumSize / 2; +camera.bottom = - frustumSize / 2; + +camera.updateProjectionMatrix(); + +renderer.setSize( window.innerWidth, window.innerHeight ); +} + +var gui = new dat.GUI(); +var params = { + dispFactor: 0.238, + speed: 24.0, +}; + +gui.add(params, 'dispFactor', 0, 1).step(0.001).onChange(function( value ) { + object.material.uniforms._dispFactor.value = value; + object.material.uniforms._dispFactor.needsUpdate = true; +}); +gui.add(params, 'speed', 1, 50).step(1).onChange(function( value ) { + object.material.uniforms._speed.value = value; + object.material.uniforms._speed.needsUpdate = true; +}); + +// var controls = new THREE.OrbitControls( camera, renderer.domElement ); + +var loader = new THREE.TextureLoader(); +loader.crossOrigin = ''; +var circle = loader.load('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABAAAAAQACAYAAAB/HSuDAAAACXBIWXMAAAsTAAALEwEAmpwYAAA5pmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzggNzkuMTU5ODI0LCAyMDE2LzA5LzE0LTAxOjA5OjAxICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgICAgICAgICB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKE1hY2ludG9zaCk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTctMTEtMDlUMTU6MDk6MzIrMDE6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNy0xMS0wOVQxNjowNDo0OCswMTowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6TWV0YWRhdGFEYXRlPjIwMTctMTEtMDlUMTY6MDQ6NDgrMDE6MDA8L3htcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6YWRmM2JhNzAtNDlmOC00NmRhLWIyOTMtYmIzZGMwOTY0ZmQ3PC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD54bXAuZGlkOjQ5QTI5ODg1QkQ3QzExRTc5RTlEQkZFRTgyOTMzRjVBPC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjQ5QTI5ODgyQkQ3QzExRTc5RTlEQkZFRTgyOTMzRjVBPC9zdFJlZjppbnN0YW5jZUlEPgogICAgICAgICAgICA8c3RSZWY6ZG9jdW1lbnRJRD54bXAuZGlkOjQ5QTI5ODgzQkQ3QzExRTc5RTlEQkZFRTgyOTMzRjVBPC9zdFJlZjpkb2N1bWVudElEPgogICAgICAgICA8L3htcE1NOkRlcml2ZWRGcm9tPgogICAgICAgICA8eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPnhtcC5kaWQ6NDlBMjk4ODVCRDdDMTFFNzlFOURCRkVFODI5MzNGNUE8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOmFkZjNiYTcwLTQ5ZjgtNDZkYS1iMjkzLWJiM2RjMDk2NGZkNzwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNy0xMS0wOVQxNjowNDo0OCswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KICAgICAgICAgPHBob3Rvc2hvcDpDb2xvck1vZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WVJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+NjU1MzU8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjEwMjQ8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MTAyNDwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+E7DnhgAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAABJoklEQVR42uzdz49d1Zkv7g/dBao0RUIpBssIJ24LAgkdoC9NGiKI2lHaulfiTix95ZEnDDzyxEP/BTWsSY1q4IlHnnjSSH3lRHEroEBC3AEnpElAbhIjLIijIp2iU4Jq1Xew1845tSnb9eP82Ofs55Gsfez01ZVe4zrv+uy13nXHxsZGAAAAgOn2V0oAAAAAAgAAAABAAAAAAAAIAAAAAAABAAAAACAAAAAAAAQAAAAAgAAAAAAAEAAAAACAAAAAAAAQAAAAAAACAAAAAEAAAAAAAAgAAAAAAAEAAAAAIAAAAAAABAAAAAAgAAAAAAAEAAAAAIAAAAAAABAAAAAAAAIAAAAAQAAAAAAACAAAAAAAAQAAAAAIAAAAAAABAAAAACAAAAAAAAQAAAAAgAAAAAAAEAAAAAAAAgAAAABAAAAAAAAIAAAAAEAAAAAAAAgAAAAAAAEAAAAAIAAAAAAABAAAAACAAAAAAAAQAAAAAAACAAAAABAAAAAAAAIAAAAAQAAAAAAACAAAAAAAAQAAAAAgAAAAAAAEAAAAAIAAAAAAAAQAAAAAgAAAAAAA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'); +var circle_blur = loader.load('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABAAAAAQACAYAAAB/HSuDAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTRFRDNENTBCRDg0MTFFNzlFOURCRkVFODI5MzNGNUEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTRFRDNENEZCRDg0MTFFNzlFOURCRkVFODI5MzNGNUEiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0OUEyOTg4NEJEN0MxMUU3OUU5REJGRUU4MjkzM0Y1QSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0OUEyOTg4NUJEN0MxMUU3OUU5REJGRUU4MjkzM0Y1QSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pro48p4AAIUdSURBVHja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'); +var color = loader.load('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAIAAAB7GkOtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3BpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplMzVlMjhlNS1mNDlmLTQwYmItODc1Zi1kMWU5YjA3MzJlMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NThBQkUzMzgwNThDMTFFN0I1NkRFMjgyRDRBRkJCMTEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NThBQkUzMzcwNThDMTFFN0I1NkRFMjgyRDRBRkJCMTEiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4MjM0NTQ4MzE5QzgxMUU2QjU1RjlFNDUxN0EzMzhDOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4MjM0NTQ4NDE5QzgxMUU2QjU1RjlFNDUxN0EzMzhDOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv8rUSYAABIUSURBVHja7N2JkuO4EQVAwdtf7Y93ObzjndEtUiTOyoyOjd6ePkSQxEMBFFn+/dflWrz4fPs/ffGde3/84++8+8r2Lz7//eXzK9n4Gt5vQnz1/dv/6dzfec6rLVvbpFITPR5FJ/62eDgkvtgjH//Q9gP74Hl37o9fDnz/+z9X74sf/2nX9xz5/qfK1Se/Pv519cndx19///fn8p8LW9uVlm1bKpwiA2xu2OkM48fx+GU6S4V6bbtiC5fKoz/4KgA4vecCEABwWsQqueBs/9IEACoAmKcgWFHJtbmoAAAQAAAIAAAEAAACAAABAIAAAEAAACAAABAAAAgAAAQAgAAAQAAAIAAAEAAACAAABAAAAgAAAQCAAABgaD+agDmU9Tcx7GVUAAAIAAAEAAACAAABAIAAAEAAACAAABAAAAgAAAQAgAAAQAAAsDx3A2VURROAANA9aWGgAlNAAAIAAAEAgAAAQAAAIAAAEAAACAAABAAAAgCAET3cCsL773fRXNp2j/j74+4roAIAQAAAIAAAEAAACAAABAAAAgCAHX7ur7Z2YfsumkvbwsQBgP5I20JKpoAABAAAAgAAAQDAmn6sv32mibQtCACdFNr2O/HsXtDQlykgAAEAgAAAQAAAIAAAWIirgDbQRNp2v6fX/BQXAjFWAKDT17CQkikgAAEAgAAAQAAAsCaLwLcsUWpbSBQATkudlLaFlEwBAQgAAAQAAAIAAAEAwEJcBXRLa2jbwzz6kXkCAHT9kJIpIAABAIAAAGB5FoFf0Cwac7O4+i+oAAAQAAAIAAAEAAACAIAeXAX0gmbRmLB+AKCr0oCQkikgAAEAQCbJpoBMUGhD4E8ApDqfdV7aEPiHKSAAAQCAAABgedYA0IY7PN752b2gmTkA9FNoUkjJFBCAAABAAAAgAABY05yLwFYjtS1wQgDMeMLrpLQtcJgpIAABAEAmQ64BmIXQzkCLABiwF9AxaWegPlNAAAIAAAEAwPKsASSmnbeJq7s9F3d+ZqkA0Ono8YGUTAEBCAAAMqkzBWSqoSOND2wNgBr9hT5IACwnHj6B2ZkCAhAAAGTydg3AZMLg7CDgUABYA5AKgABAhw5kCgBdj2zgVjy71MdNIFABoJcHFuEqIAABAEAmpoCGZwe1aua4+oAcAYC+HkjJFBCAAAAgE1NAnZjtAfoHgJ5IAADn6XUdQezvWkwBASQlAAAEAACZWAPoRLN3bftfs6V3E7Xx8A1kFju/PtrL3tLHuApIj88EZzXUYAoIQAAAkIkpoJOY4YFpxYavLBoAei4BACStAPRcAgBIGgDo8ZfeS5GpouejPLM9seHmEBaBAZISAABJmQLawGwPsGYA6N0EQDJWBVbdp++/Yqc/MgUEIAAAEAAALM8i8C3T/TCS2DCbb2Z/SxvG8wDQ5QkAIGkFoMsTAEuPfYDXAaB/Z+nKVwxIbl6xCAwgAADIJMcUkJkfgCcBkKFzFAAwNpd1qgD07wAqAAEAi4700z6Ad4SWv2tqi8AASQkAAAEAQCazLQKb7ufW7/f6xrOvM8IOsi8GDoC5ulQBACAAADgWALp14GymfaZgERhAAACQSfMpILM9AKMEQOMeWQDwrcenu3jeyzi7xt3cZmQKCEAAACAAAFjet2sA2yf5ytv/BaBbAHynVPhOAEapAEIA0Fm5vdTH5SWDsDsSVABFt85A3Q3QsAIwrkcAgAoAGisvnmJK9zA2/zPpCfXIZaAASQkAgKR+zPMAZA2AN2QD8Dcz/ioAAAQAnKe8uLDk9wUnxQi065Bf46/KIjATdECAAABAAABwzI8mADzTMWsAWAQGEAAAZAoA6M1N3zq2PJlZBAYQAABkYgoISCPhkme8DwCLwHQ9Ms3+M2YAxDc96q5vqnZmla3bqgIASFpqqADoWZIa+yu8RjsmzzkyyzDbU5784+8Pi8AASQkAAAEAQCYWgWnBvPMgu+Dx8+fKQC87dm7dm23c/sW5lZumK6+32SIwMG4AoAIAhMS0BddQuybuAsBehNW7oJj5xU+5dWWsxryfSSsqADAwJ/PhESoA6gw3Hgdrln8btX+ZcrHd2wO7cBkogAAAQAAAsDxrANDK6XPb5dkvLqO3QdRvGF61fNx+yVVA0EoZ/heS7IBUATD0GJd3rV3cXYNDVADo/aetAEAFwAhdv6FogxiY9AJ/B8awXAUEIAAAEAAALM8iMGxmwYzVAsAxzc4+8NWSb1l+uc/JspmF3ymYAgJQAcC2kZ0L+9qXBZodFQAAAgAAAQDAF1wGyg6/p6Hnu+CnzNrUdxsRM7xaaxXzBIBFYDJwnIMKAE5OBcNdVAAgRfKkScg+AQD6bpg5AODTWG/c4V7RwtStctbmMlCApAQAgAAAIBOLwPwx32R0WaTBHSQtX//Hr1zmXwC43kfl9bmiAgBQAcBQw7MtR+YSN3iYdODc7M/F4W9YZlx/5KiL5wEA4ygTd+6gAmDiMcK4YbD0KIyLe8l1CwDQ6UNKFoEBBAAAmZgCoj4TOzBoADg5U2q6IFm08J+WmOuGz4+fowIAPT6oAEAAdKyu6rzmaNs4KoxmuzhUAOjcARVA0pFp9QGXg2qeQ0I9lDsAcM7r3EEFAALg60w1zkUFgK4fmIN3AgMIAAAyMQXELfM8kCgAnPDLdeC/1yTj7TcIgONmfEDu+8Pj3L/CsAftrw8VgMH+5gBwToMKgJUDQHGwbfg86SuvFOXh5nGzBgBpO/dimA8qANYaov7v4+vd6nj4NMh1P+dVC7uEXAYKIAAAEAAALM8awCRi6z/+f/bfbj217d3T+OkhF7OdNLH73Jr+uH3fGbgKaBKlwncCKgAmGMaUl0OwEACtKy71St0Gj53D9lTj+u8KtfinYygqgCnH/rr13r1/0aegAqBnDGD4D+cd2yqA+br+8AiqOs0872JvtP1bRw6/2Lw2yylHdblt+bumdhkoQFICAEAAAJCJReDh/bODzJNWFbdvnInZXnODv8WKAcBIvTyACkAA/BniGX9xdzx4zagADPYBVAACgGPD0rlm/9s00dPPUQGgiwem5zJQAAEAQCamgI4x20ND5uI5OwB0YWMEQGy7DTppu/6Y7QWjAli9ly+OfUAFYJhfoSzg+K57fCfdRLd5eLU5tf+cMYwKQF8PoAKQCvXHesZc2rZL+6xRQGx8yEyk3L9FBaACAFAB9A+AxtO7yYf/OYfkbV5n1NnwLZfDWbHYtZviRd+WuAKQfEBu3gkMIAAAyCTZFNAY0z6mLIExAiDVVHjvjXVJYrNkjaledsvnvkXXQzE2X7JJvcPs98ecFUA54wejzz4AUAH0Hsi33fDrgY8rPpcZz05UEZ5VHu2tV1S9w1bJl/kqgHKs73YkAsxaAZSuP344boz9awyfZ5zuhxG4DBRAAAAgAABYXu81gI+3K70zw4qFWxBXPVg07K7mupzUaFH5++kUAH0dvKoHgM4VwNdxP3kAFMPSti08bzs3qwsVoDSvAErzHxy11kYLQ7IKoH1y6J4EADB3BTCtotbWwp9Ca+p3Au5aQ57lmcDccRkogAAAQAAAsLyfGW+tTAbXCwDFHd8+/cUFdverzYmd38/TA7I8DwDdOoAKQAXwauPixcBkxvHpLC0815D/0unSl7Oqjdh/2c93m+yRkEMVpiqAvEU3oAIQAAwxNpGpeQaezBAAAKzLZaAAAgAAAcA1M5jAkqwB3HhzPaIYqJSsMf9d/psdHqe3VQy/ydQ4hEIFAKAC0Aiwu2rpO3Abv/BSH0xRCqgAAFQAeEdSw0H0dOPE5HPfToolqQAABAAAAgCA5VkD8GSJdo086fpKdHrGy7nPlK96nJ/+UPiPv81pu/fUKyoAAFQALvhpPZLV1CtVxlUfCONQadbdqQAAVAAA5AqArFUtVYvN9TahzZOfo86vCscDz5gCAhAAAAgAAJaXYhHYFZ8t23lS5eo46fWer+h3tIe3VqkAAFABrDAaRY313SaUaR/xOE694gQcrcB9eqqqAACSEgAAAgCATFZ7J7ALfmorr6eAyyQt/3QTYqpNeDzsG//g0/Pu9F9L/QBwLyD6dRxAR6aAEACgApi2J9IZaXCtN3vkv5lBih6vZ72jzhPBAJi/ApD/fQewZeZd0PF+DzHA7zzl+cxVnwhGg8MvVAAAmQkAAAEAQCYzrQGce9dcMjT7m/d8Tb0v2vytU1rMZWMjH04qAAAVACxavkS/P/2qIunyelrWQEb9U1ABAAgAAAQAAAIAgDUNtwjsxuIjNH6stTkL/N0vVrN3nUfbzztXYy9wUngmMIAKwGWgcHhUdalzo7c7w96D7/TC3TRAGyoAABXAGGMH7AXDxuO7Mva32K7vrHo7aB1Cs3NcBQCQlAAAEAAAZPLT8W+HBYCuYqGt6H7Jf9gpn5qIIQPAZaB6f0AAIACATAHQo1q/VnRGSvJjGxK9j+G54nzjpNnBa2qd1FMMAS0CAyQlAAAEAACZtFgE9gb9QVxfdzvj0suqdyGe6wbLbgc9qfLQCagAAFQAFQYIhvx90/7VMG2usX+5HbN0fOUDjny/vu9bnH3aVr0dNPWoAAAEAAACAIDlnfZOYHN2gyi974+2nnp3LZxoH3kgzJLHsHsBLbu/AT5VAAJAAABJA+CMLkZ3M1qtt4DrC0BjgDYsJ13dGK1+fJAz1FTkyH2FRWCApAQAgAAAIJOti8Bu8DCyJXfN7Leum+7I2bVfLnueJ8Nop5UKAEAF4DLQmcdua1xi8fTWddHjNdR+z1fU//GzNmHXvjBDMOl5pwIASEoAAAgAADK5eSewibwpLPlMvu6LGadfdHTw7cRV3418GW/1SG/T5Wi3CIyTH9JWAAIAAQBJAwC9ZNct0vuPcGzEhocGn7LvtjwPgEoHyWM7WwQGSEoAAAgAADL5CYvAAwsT5RW8ufNE96e+RM1jqcFfObc1UAEAIAAAEAAAHOSNYINaeOa0++1GTr/nc691mjjjKfN7d5MHwqzUsagAAFQAUHnUH50e83IZ+y6Hla71arnJ7iM5KRUAgAAAQAAAIAAAWJNF4FGset3n2nezaLx1HQ+SqreDpsvBEyoAgLQEAIAAACATawD9xVoTo0Nty+B3fajRVh83+emb8uq9k8uk/8gnqQoAICkBACAAAMjkRxN08TgrWpaYKo3BXsyw93377gdjpE1wO+hJz9C4CQCLwLl7SdsFiSsAAaCjtF2QNACYYQbAdu1NoKi2jTFk+3/XOHFSY3oewKQsAgMIAAAEAADLswjcyPVlfMUk6bT7rtkvicGuFXbEqgAAEAAACAAAZmQNoKIl7/dQXk9nd9m6pzc3znOAvdnwqhfyb39LhNtBqwAAEAAACAAABAAArVkEPl8svfA13Y3pj/zma3uXuL/7JdGk3S71d6KF3/HPYhUAQF4CAEAAAJCJNYBDyuoz/nf63s+u6vNYrndlnNRK9dr/4/fESa399PN4/cVLzX3EKcfP9eOAVAAASQkAAAEAQCbWAL504pTx4EZ+GLoW3vVXHj+Pr34cFQAAAgAAAQCAAABgaBaBvxS93xXVYANHcPdWuxhyhy6wSF7viWCoAAAQAAAIAAA6sgbwWXlx96v1DPWer3pvtXuzQxsv52zftPft8N2KRdQ8SCwPjHyOeyAMQHYCAEAAAJCJNYDPUj3yZcxmH/adFntXTVoeSAeXrPa+LcADYVQAAAgAAAQAAAIAgFFYBL6R5z1fd1Ktck+xqv/0FZaHI/PI+7kungimAtAEAAIAAAEAgAAAQAAAsA5XAd3Ic9eHoTaz3sVXp//mr2+X3ezQevWH7lrg6QVF25vIIyFVAAAIAAAEAAACAIBxWQROZ8CF7rnuzRCV/8qW19Bme199bgV43nO/3O5BFQBAUgIAQAAAIAAAEAAArMlVQIme/XJ9sU0ZYGPj6lU12OQurX2nUrPHngO7RrOHi4JmUB4OAxUAQFICAEAAACAAABAAAAgAABaS9zLQcO1ajl08/qGy5fZqUeHCzcueXxjHfhwVAAACAAABAEAXudYAMkxZlk/v9e9+E4jx771x8C4OUeE7T2/28uIxL3nOFFQAAAIAAAEAgAAAQAAAIAAAEAAACAAAhnf9no8UbwRz37cRdsGl/l5Y6a1MW96M9vTA/ni0b9wXbx4p7E5wC5yGvz5UAABJCQAAAQBAJv8VYABRoFYuvywKogAAAABJRU5ErkJggg=='); +var dist = loader.load('data:image/jpeg;base64,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AAAAAAAJAAAAAAAAAAABADhCSU0ECgAAAAAAAQAAOEJJTScQAAAAAAAKAAEAAAAAAAAAAjhCSU0D9QAAAAAASAAvZmYAAQBsZmYABgAAAAAAAQAvZmYAAQChmZoABgAAAAAAAQAyAAAAAQBaAAAABgAAAAAAAQA1AAAAAQAtAAAABgAAAAAAAThCSU0D+AAAAAAAcAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAA4QklNBAAAAAAAAAIAAThCSU0EAgAAAAAABAAAAAA4QklNBDAAAAAAAAIBAThCSU0ELQAAAAAABgABAAAAAzhCSU0ECAAAAAAAEAAAAAEAAAJAAAACQAAAAAA4QklNBB4AAAAAAAQAAAAAOEJJTQQaAAAAAANfAAAABgAAAAAAAAAAAAABLAAAASwAAAAVAHQAZQB4AF8AbQBhAHAAXwBkAGkAcwB0AG8AcgB0AF8AZgBsAG8AbwByAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAEsAAABLAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAbnVsbAAAAAIAAAAGYm91bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcAAAAAAAAAAEJ0b21sb25nAAABLAAAAABSZ2h0bG9uZwAAASwAAAAGc2xpY2VzVmxMcwAAAAFPYmpjAAAAAQAAAAAABXNsaWNlAAAAEgAAAAdzbGljZUlEbG9uZwAAAAAAAAAHZ3JvdXBJRGxvbmcAAAAAAAAABm9yaWdpbmVudW0AAAAMRVNsaWNlT3JpZ2luAAAADWF1dG9HZW5lcmF0ZWQAAAAAVHlwZWVudW0AAAAKRVNsaWNlVHlwZQAAAABJbWcgAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAASwAAAAAUmdodGxvbmcAAAEsAAAAA3VybFRF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RFCiDpdDAQAAAAAAAAAAAOICAABbAgAAAAABAAAARENURGVjb2RlAKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlAQAAAO4CAADuAgAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wEAAABKAQAAIv6zAAAAAAAAAAAAIv6zAAAAqABm7cEB7gIAAO4CAAAAAAAAAAAAAAAAAABAQzpcRG9jdW1lbnRzIGFuZCBTZXR0aW5nc1xVTUNLSU1BXExvY2FsIFNldHRpbmdzXFRlbXBcQWNyMkUxLnBkZgAAAAAAAAAAAAAAMwAAABBlvh8AM/IB4JMEAAAAAAAAAAAAKOcSAAAz8gGQUwwCAAAAAAwAAAACAAAAs+zWAAwAAADgsokEHOcSAG2tIQBC9wAAAAAUAJzkEgD/////DOcSABjukHzwBpF8/////+sGkXwj0E93AAAUAAAAAABgPGYADAAAAAAAAACVC+EAsNG/Hzf70wC4IPIBUPTAH0DFvh8AM/IB6hPTALgg8gGQUwwClMW+H0DFvh9IVb4fOEJJTQQGAAAAAAAHAAgAAAABAQD/4Q6SaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzEzOCA3OS4xNTk4MjQsIDIwMTYvMDkvMTQtMDE6MDk6MDEgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczp4bXBSaWdodHM9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9yaWdodHMvIiBwaG90b3Nob3A6TGVnYWN5SVBUQ0RpZ2VzdD0iNDYwQ0YyODkyNkI4NTZEQUIwOUMwMUExQjBBNzkwNzciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1MgV2luZG93cyIgeG1wOk1vZGlmeURhdGU9IjIwMTctMDYtMDdUMTE6NTc6MjYrMDI6MDAiIHhtcDpDcmVhdGVEYXRlPSIyMDE3LTA2LTA3VDA5OjUxOjM5KzAyOjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDE3LTA2LTA3VDExOjU3OjI2KzAyOjAwIiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6MWU5NDI4YzgtOGJmNi0xMTdhLWFlOWQtYzMxMWEwZmUwMDdmIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmFmM2ZiNzI3LWNlMTYtNDQxNy1hN2QyLTY3NDg3NGZhN2Y0MiIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSIyMkI0RTc3NDY4MkE0MjI5OEI2QzFCMTg1MTc2OEFGQiIgZGM6Zm9ybWF0PSJpbWFnZS9qcGVnIiB4bXBSaWdodHM6TWFya2VkPSJGYWxzZSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjM3ZTU2NzFlLTcyOTItNDRlOS04OTJjLTc3YmVkNjFiODI1YiIgc3RFdnQ6d2hlbj0iMjAxNy0wNi0wN1QxMTo1NzoyNiswMjowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKE1hY2ludG9zaCkiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmFmM2ZiNzI3LWNlMTYtNDQxNy1hN2QyLTY3NDg3NGZhN2Y0MiIgc3RFdnQ6d2hlbj0iMjAxNy0wNi0wN1QxMTo1NzoyNiswMjowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKE1hY2ludG9zaCkiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg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'); + + +dist.wrapS = dist.wrapT = THREE.RepeatWrapping; +color.wrapS = color.wrapT = THREE.RepeatWrapping; + +var mask = new THREE.Texture(canvas); +mask.minFilter = THREE.LinearFilter; + +var mat = new THREE.ShaderMaterial({ + uniforms: { + _time: { type: "f", value: 1.0 }, + _mask: { type: 't', value: mask }, + _color: { type: 't', value: color }, + _circle: { type: 't', value: circle }, + _circle_blur: { type: 't', value: circle_blur }, + _dist: { type: 't', value: dist }, + + _dispFactor: { type: "f", value: params.dispFactor }, + _speed: { type: "f", value: params.speed } + }, + + vertexShader: document.getElementById( 'vertexShader' ).textContent, + fragmentShader: document.getElementById( 'fragmentShader' ).textContent, + transparent: true, + opacity: 1.0, + blending: THREE.AdditiveBlending +}); + +var geometry = new THREE.PlaneBufferGeometry( planeSize, planeSize, 1 ); +var object = new THREE.Mesh(geometry, mat); +scene.add(object); + +window.addEventListener('click', function(){ +}); + + +var animate = function () { + requestAnimationFrame( animate ); + renderer.render(scene, camera); + + var d = clock.getDelta(); + mat.uniforms._time.value += d; + + mask.needsUpdate = true; + + draw(); +}; +animate(); \ No newline at end of file diff --git a/buttons-and-toggles/electric-hover-effect/style.css b/buttons-and-toggles/electric-hover-effect/style.css new file mode 100644 index 0000000..287be05 --- /dev/null +++ b/buttons-and-toggles/electric-hover-effect/style.css @@ -0,0 +1,31 @@ +body { + margin: 0; + overflow: hidden; + position: fixed; +} +canvas { + width: 100%; + height: 100%; +} +a { + text-decoration: none; + position: absolute; + color: rgba(255, 255, 255, 0.9); + font-weight: 100; + font-size: 20px; + font-family: "helvetica"; + letter-spacing: 8px; + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + -webkit-transition: color 0.6s ease; + transition: color 0.6s ease; + padding: 130px 90px; + border-radius: 50%; +} +a:hover { + color: rgba(255, 255, 255, 0.4); + -webkit-transition: color 0.6s ease; + transition: color 0.6s ease; +} \ No newline at end of file diff --git a/buttons-and-toggles/responsive-numeric-stepper/README.md b/buttons-and-toggles/responsive-numeric-stepper/README.md new file mode 100644 index 0000000..2b48a81 --- /dev/null +++ b/buttons-and-toggles/responsive-numeric-stepper/README.md @@ -0,0 +1,3 @@ +# Responsive numeric stepper + +Used as an example for utilising media queries with the display property to build a responsive numeric stepper. diff --git a/buttons-and-toggles/responsive-numeric-stepper/index.html b/buttons-and-toggles/responsive-numeric-stepper/index.html new file mode 100644 index 0000000..8f1bd72 --- /dev/null +++ b/buttons-and-toggles/responsive-numeric-stepper/index.html @@ -0,0 +1,42 @@ + + + + + Responsive numeric stepper + + + + + + +
+

Select number of passengers

+
+

Adult (age 12 & up)

+
+ +

1

+ +
+
+
+

Children (age 2-11yrs)

+
+ +

1

+ +
+
+
+

Infant (age 1-23mths)

+
+ +

1

+ +
+
+
+ + + + diff --git a/buttons-and-toggles/responsive-numeric-stepper/style.css b/buttons-and-toggles/responsive-numeric-stepper/style.css new file mode 100644 index 0000000..10b99d3 --- /dev/null +++ b/buttons-and-toggles/responsive-numeric-stepper/style.css @@ -0,0 +1,144 @@ +@import url(https://fonts.googleapis.com/css?family=Happy+Monkey|Lemon); +html { + box-sizing: border-box; +} + +*, +*:before, +*:after { + box-sizing: inherit; +} + +body { + font-family: "Happy Monkey"; + line-height: 1.5; + min-width: 21.25em; +} + +.passengers { + padding: 1em; + margin-left: auto; + margin-right: auto; + max-width: 60em; +} + +h1 { + font-family: 'Lemon'; + font-size: 1.5em; + text-align: center; + margin-bottom: 1em; +} + +.passenger { + margin-bottom: 1em; + padding-right: 1.69492%; +} + +@media screen and (min-width: 31em) { + .passenger { + width: 32.2033898305%; + float: left; + margin-right: 1.6949152542%; + border-right: 1px solid black; + } + .passenger:nth-child(3n) { + float: right; + margin-right: 0; + border-right: 0; + } +} +@media screen and (min-width: 31em) { + .passenger__label { + text-align: center; + margin-bottom: 1em; + } +} +@media screen and (max-width: 30.99em) { + .passenger__label { + display: inline-block; + vertical-align: middle; + width: calc(100% - 10.25em); + } +} +@media screen and (max-width: 24.5em) { + .passenger__label span { + display: block; + } +} +@media screen and (min-width: 31em) and (max-width: 39.99em) { + .passenger__label span { + display: block; + } +} +.passenger__stepper { + position: relative; + display: inline-block; + width: 100%; +} +.passenger__stepper > * { + display: inline-block; + vertical-align: middle; +} + +@media screen and (max-width: 30.99em) { + .passenger__stepper { + width: 10em; + } +} +@media screen and (min-width: 31em) { + .passenger__stepper { + display: block; + max-width: 14em; + margin: 0 auto; + } + .passenger__stepper::after { + content: ''; + display: block; + clear: both; + } +} +.stepper { + border: 0; + outline: 0; + cursor: pointer; + font-size: 1.25em; + background: black; + color: white; + width: 2em; + height: 2em; + border-radius: 50%; + box-shadow: 0.125em 0.125em 0 0 white, 0.125em 0.125em 0 1px black; +} +.stepper:active { + box-shadow: 0 0 0 1px white, 0 0 0 1px black; + -webkit-transform: translate(0.125rem, 0.125rem); + transform: translate(0.125rem, 0.125rem); +} + +.stepper__display { + font-size: 2em; + margin: 0 0.5em; +} + +@media screen and (min-width: 31em) { + .stepper__display { + font-size: 5em; + float: left; + line-height: 1.2; + margin: 0; + padding-left: 1rem; + } + + .stepper { + position: absolute; + right: 1rem; + } + + .stepper__more { + top: 0; + } + + .stepper__less { + bottom: 0; + } +} \ No newline at end of file diff --git a/buttons-and-toggles/trash-button-animation/README.md b/buttons-and-toggles/trash-button-animation/README.md new file mode 100644 index 0000000..b3372a2 --- /dev/null +++ b/buttons-and-toggles/trash-button-animation/README.md @@ -0,0 +1,4 @@ +# Trash button animation + + + diff --git a/buttons-and-toggles/trash-button-animation/index.html b/buttons-and-toggles/trash-button-animation/index.html new file mode 100644 index 0000000..2f4815f --- /dev/null +++ b/buttons-and-toggles/trash-button-animation/index.html @@ -0,0 +1,30 @@ + + + + + Trash button animation + + + + + + + + + + + + diff --git a/buttons-and-toggles/trash-button-animation/script.js b/buttons-and-toggles/trash-button-animation/script.js new file mode 100644 index 0000000..2631c82 --- /dev/null +++ b/buttons-and-toggles/trash-button-animation/script.js @@ -0,0 +1,7 @@ +document.querySelectorAll('.button').forEach(button => button.addEventListener('click', e => { + if(!button.classList.contains('delete')) { + button.classList.add('delete'); + setTimeout(() => button.classList.remove('delete'), 3200); + } + e.preventDefault(); +})); \ No newline at end of file diff --git a/buttons-and-toggles/trash-button-animation/style.css b/buttons-and-toggles/trash-button-animation/style.css new file mode 100644 index 0000000..c301671 --- /dev/null +++ b/buttons-and-toggles/trash-button-animation/style.css @@ -0,0 +1,365 @@ +.button { + --background: #2B3044; + --background-hover: #1E2235; + --text: #fff; + --shadow: rgba(0, 9, 61, .2); + --paper: #5C86FF; + --paper-lines: #fff; + --trash: #E1E6F9; + --trash-lines: #BBC1E1; + --check: #fff; + --check-background: #5C86FF; + position: relative; + border: none; + outline: none; + background: none; + padding: 10px 24px; + border-radius: 7px; + min-width: 142px; + -webkit-appearance: none; + -webkit-tap-highlight-color: transparent; + cursor: pointer; + display: -webkit-box; + display: flex; + color: var(--text); + background: var(--btn, var(--background)); + box-shadow: 0 var(--shadow-y, 4px) var(--shadow-blur, 8px) var(--shadow); + -webkit-transform: scale(var(--scale, 1)); + transform: scale(var(--scale, 1)); + -webkit-transition: box-shadow .3s, background .3s, -webkit-transform .3s; + transition: box-shadow .3s, background .3s, -webkit-transform .3s; + transition: transform .3s, box-shadow .3s, background .3s; + transition: transform .3s, box-shadow .3s, background .3s, -webkit-transform .3s; +} +.button span { + display: block; + font-size: 14px; + line-height: 25px; + font-weight: 600; + opacity: var(--span-opacity, 1); + -webkit-transform: translateX(var(--span-x, 0)) translateZ(0); + transform: translateX(var(--span-x, 0)) translateZ(0); + -webkit-transition: opacity 0.3s ease var(--span-delay, 0.2s), -webkit-transform 0.4s ease var(--span-delay, 0.2s); + transition: opacity 0.3s ease var(--span-delay, 0.2s), -webkit-transform 0.4s ease var(--span-delay, 0.2s); + transition: transform 0.4s ease var(--span-delay, 0.2s), opacity 0.3s ease var(--span-delay, 0.2s); + transition: transform 0.4s ease var(--span-delay, 0.2s), opacity 0.3s ease var(--span-delay, 0.2s), -webkit-transform 0.4s ease var(--span-delay, 0.2s); +} +.button .trash { + display: block; + position: relative; + left: -8px; + -webkit-transform: translate(var(--trash-x, 0), var(--trash-y, 1px)) translateZ(0) scale(var(--trash-scale, 0.64)); + transform: translate(var(--trash-x, 0), var(--trash-y, 1px)) translateZ(0) scale(var(--trash-scale, 0.64)); + -webkit-transition: -webkit-transform .5s; + transition: -webkit-transform .5s; + transition: transform .5s; + transition: transform .5s, -webkit-transform .5s; +} +.button .trash:before, .button .trash:after { + content: ''; + position: absolute; + height: 8px; + width: 2px; + border-radius: 1px; + background: var(--icon, var(--trash)); + bottom: 100%; + -webkit-transform-origin: 50% 6px; + transform-origin: 50% 6px; + -webkit-transform: translate(var(--x, 3px), 2px) scaleY(var(--sy, 0.7)) rotate(var(--r, 0deg)); + transform: translate(var(--x, 3px), 2px) scaleY(var(--sy, 0.7)) rotate(var(--r, 0deg)); + -webkit-transition: background .3s, -webkit-transform .4s; + transition: background .3s, -webkit-transform .4s; + transition: transform .4s, background .3s; + transition: transform .4s, background .3s, -webkit-transform .4s; +} +.button .trash:before { + left: 1px; +} +.button .trash:after { + right: 1px; + --x: -3px; +} +.button .trash .top { + position: absolute; + overflow: hidden; + left: -4px; + right: -4px; + bottom: 100%; + height: 40px; + z-index: 1; + -webkit-transform: translateY(2px); + transform: translateY(2px); +} +.button .trash .top:before, .button .trash .top:after { + content: ''; + position: absolute; + border-radius: 1px; + background: var(--icon, var(--trash)); + width: var(--w, 12px); + height: var(--h, 2px); + left: var(--l, 8px); + bottom: var(--b, 5px); + -webkit-transition: background .3s, -webkit-transform .4s; + transition: background .3s, -webkit-transform .4s; + transition: background .3s, transform .4s; + transition: background .3s, transform .4s, -webkit-transform .4s; +} +.button .trash .top:after { + --w: 28px; + --h: 2px; + --l: 0; + --b: 0; + -webkit-transform: scaleX(var(--trash-line-scale, 1)); + transform: scaleX(var(--trash-line-scale, 1)); +} +.button .trash .top .paper { + width: 14px; + height: 18px; + background: var(--paper); + left: 7px; + bottom: 0; + border-radius: 1px; + position: absolute; + -webkit-transform: translateY(-16px); + transform: translateY(-16px); + opacity: 0; +} +.button .trash .top .paper:before, .button .trash .top .paper:after { + content: ''; + width: var(--w, 10px); + height: 2px; + border-radius: 1px; + position: absolute; + left: 2px; + top: var(--t, 2px); + background: var(--paper-lines); + -webkit-transform: scaleY(0.7); + transform: scaleY(0.7); + box-shadow: 0 9px 0 var(--paper-lines); +} +.button .trash .top .paper:after { + --t: 5px; + --w: 7px; +} +.button .trash .box { + width: 20px; + height: 25px; + border: 2px solid var(--icon, var(--trash)); + border-radius: 1px 1px 4px 4px; + position: relative; + overflow: hidden; + z-index: 2; + -webkit-transition: border-color .3s; + transition: border-color .3s; +} +.button .trash .box:before, .button .trash .box:after { + content: ''; + position: absolute; + width: 4px; + height: var(--h, 20px); + top: 0; + left: var(--l, 50%); + background: var(--b, var(--trash-lines)); +} +.button .trash .box:before { + border-radius: 2px; + margin-left: -2px; + -webkit-transform: translateX(-3px) scale(0.6); + transform: translateX(-3px) scale(0.6); + box-shadow: 10px 0 0 var(--trash-lines); + opacity: var(--trash-lines-opacity, 1); + -webkit-transition: opacity .4s, -webkit-transform .4s; + transition: opacity .4s, -webkit-transform .4s; + transition: transform .4s, opacity .4s; + transition: transform .4s, opacity .4s, -webkit-transform .4s; +} +.button .trash .box:after { + --h: 16px; + --b: var(--paper); + --l: 1px; + -webkit-transform: translate(-0.5px, -16px) scaleX(0.5); + transform: translate(-0.5px, -16px) scaleX(0.5); + box-shadow: 7px 0 0 var(--paper), 14px 0 0 var(--paper), 21px 0 0 var(--paper); +} +.button .trash .check { + padding: 4px 3px; + border-radius: 50%; + background: var(--check-background); + position: absolute; + left: 2px; + top: 24px; + opacity: var(--check-opacity, 0); + -webkit-transform: translateY(var(--check-y, 0)) scale(var(--check-scale, 0.2)); + transform: translateY(var(--check-y, 0)) scale(var(--check-scale, 0.2)); + -webkit-transition: opacity var(--check-duration-opacity, 0.2s) ease var(--check-delay, 0s), -webkit-transform var(--check-duration, 0.2s) ease var(--check-delay, 0s); + transition: opacity var(--check-duration-opacity, 0.2s) ease var(--check-delay, 0s), -webkit-transform var(--check-duration, 0.2s) ease var(--check-delay, 0s); + transition: transform var(--check-duration, 0.2s) ease var(--check-delay, 0s), opacity var(--check-duration-opacity, 0.2s) ease var(--check-delay, 0s); + transition: transform var(--check-duration, 0.2s) ease var(--check-delay, 0s), opacity var(--check-duration-opacity, 0.2s) ease var(--check-delay, 0s), -webkit-transform var(--check-duration, 0.2s) ease var(--check-delay, 0s); +} +.button .trash .check svg { + width: 8px; + height: 6px; + display: block; + fill: none; + stroke-width: 1.5; + stroke-dasharray: 9px; + stroke-dashoffset: var(--check-offset, 9px); + stroke-linecap: round; + stroke-linejoin: round; + stroke: var(--check); + -webkit-transition: stroke-dashoffset 0.4s ease var(--checkmark-delay, 0.4s); + transition: stroke-dashoffset 0.4s ease var(--checkmark-delay, 0.4s); +} +.button.delete { + --span-opacity: 0; + --span-x: 16px; + --span-delay: 0s; + --trash-x: 46px; + --trash-y: 2px; + --trash-scale: 1; + --trash-lines-opacity: 0; + --trash-line-scale: 0; + --icon: #fff; + --check-offset: 0; + --check-opacity: 1; + --check-scale: 1; + --check-y: 16px; + --check-delay: 1.7s; + --checkmark-delay: 2.1s; + --check-duration: .55s; + --check-duration-opacity: .3s; +} +.button.delete .trash:before, .button.delete .trash:after { + --sy: 1; + --x: 0; +} +.button.delete .trash:before { + --r: 40deg; +} +.button.delete .trash:after { + --r: -40deg; +} +.button.delete .trash .top .paper { + -webkit-animation: paper 1.5s linear forwards .5s; + animation: paper 1.5s linear forwards .5s; +} +.button.delete .trash .box:after { + -webkit-animation: cut 1.5s linear forwards .5s; + animation: cut 1.5s linear forwards .5s; +} +.button.delete, .button:hover { + --btn: var(--background-hover); + --shadow-y: 5px; + --shadow-blur: 9px; +} +.button:active { + --shadow-y: 2px; + --shadow-blur: 5px; + --scale: .94; +} + +@-webkit-keyframes paper { + 10%, + 100% { + opacity: 1; + } + 20% { + -webkit-transform: translateY(-16px); + transform: translateY(-16px); + } + 40% { + -webkit-transform: translateY(0); + transform: translateY(0); + } + 70%, + 100% { + -webkit-transform: translateY(24px); + transform: translateY(24px); + } +} + +@keyframes paper { + 10%, + 100% { + opacity: 1; + } + 20% { + -webkit-transform: translateY(-16px); + transform: translateY(-16px); + } + 40% { + -webkit-transform: translateY(0); + transform: translateY(0); + } + 70%, + 100% { + -webkit-transform: translateY(24px); + transform: translateY(24px); + } +} +@-webkit-keyframes cut { + 0%, + 40% { + -webkit-transform: translate(-0.5px, -16px) scaleX(0.5); + transform: translate(-0.5px, -16px) scaleX(0.5); + } + 100% { + -webkit-transform: translate(-0.5px, 24px) scaleX(0.5); + transform: translate(-0.5px, 24px) scaleX(0.5); + } +} +@keyframes cut { + 0%, + 40% { + -webkit-transform: translate(-0.5px, -16px) scaleX(0.5); + transform: translate(-0.5px, -16px) scaleX(0.5); + } + 100% { + -webkit-transform: translate(-0.5px, 24px) scaleX(0.5); + transform: translate(-0.5px, 24px) scaleX(0.5); + } +} +html { + box-sizing: border-box; + -webkit-font-smoothing: antialiased; +} + +* { + box-sizing: inherit; +} +*:before, *:after { + box-sizing: inherit; +} + +body { + min-height: 100vh; + display: -webkit-box; + display: flex; + font-family: 'Inter', Arial; + -webkit-box-pack: center; + justify-content: center; + -webkit-box-align: center; + align-items: center; + background: #ECEFFC; +} +body .dribbble { + position: fixed; + display: block; + right: 20px; + bottom: 20px; +} +body .dribbble img { + display: block; + height: 28px; +} +body .twitter { + position: fixed; + display: block; + right: 64px; + bottom: 14px; +} +body .twitter svg { + width: 32px; + height: 32px; + fill: #1da1f2; +} \ No newline at end of file diff --git a/cards/card-hover-interaction/README.md b/cards/card-hover-interaction/README.md new file mode 100644 index 0000000..40ce3c3 --- /dev/null +++ b/cards/card-hover-interaction/README.md @@ -0,0 +1 @@ +# Card Hover Interaction diff --git a/cards/card-hover-interaction/index.html b/cards/card-hover-interaction/index.html new file mode 100644 index 0000000..c467006 --- /dev/null +++ b/cards/card-hover-interaction/index.html @@ -0,0 +1,72 @@ + + + + + Card Hover Interaction + + + + + +
+ +
+
+ +

The Hills

+ by David Marcu +
+ + + + + +
+
+ +
+
+ +

The Forest

+ by Jay Mantri +
+ + + + + +
+
+ +
+
+ +

The Desert

+ by Keith Hardy +
+ + + + + +
+
+ +
+
+ +

The Ocean

+ by Dan Stark +
+ + + + + +
+
+ +
+ + + diff --git a/cards/card-hover-interaction/style.css b/cards/card-hover-interaction/style.css new file mode 100644 index 0000000..ff89531 --- /dev/null +++ b/cards/card-hover-interaction/style.css @@ -0,0 +1,178 @@ +*, +*::before, +*::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + width: 100%; + height: 100vh; + display: flex; + justify-content: center; + align-items: center; + background: #e4e4e4; +} + +.container { + display: grid; + grid-template-rows: repeat(2, 1fr); + grid-template-columns: repeat(2, 1fr); + grid-gap: 30px; +} + +figure.card { + position: relative; + width: 380px; + height: 240px; + background-image: var(--image-src); + background-position: 50% 50%; + background-size: 125%; + transition: background 400ms ease; + box-shadow: 0 6.7px 5.3px rgba(0, 0, 0, 0.03), 0 22.3px 17.9px rgba(0, 0, 0, 0.05), 0 100px 80px rgba(0, 0, 0, 0.07); + overflow: hidden; +} +figure.card:hover figcaption { + transform: translateY(0px); +} +figure.card--1:hover { + background-position: 50% 100%; +} +figure.card--1 figcaption { + bottom: 0; + transform: translateY(80px); +} +figure.card--2 { + background-size: 110%; +} +figure.card--2:hover { + background-position: 50% -100%; +} +figure.card--2 figcaption { + top: 0; + transform: translateY(-80px); +} +figure.card--3 { + background-size: 115%; +} +figure.card--3:hover { + background-position: -100% 50%; +} +figure.card--3 figcaption { + left: 0; + transform: translateX(-180px); +} +figure.card--4:hover { + background-position: 100% 50%; +} +figure.card--4 figcaption { + right: 0; + transform: translateX(180px); +} +figure.card--1 figcaption, figure.card--2 figcaption { + width: 100%; + height: 80px; + padding: 15px 20px; +} +figure.card--3 figcaption, figure.card--4 figcaption { + flex-direction: column; + width: 180px; + height: 100%; + padding: 20px 15px; +} +figure.card figcaption { + display: flex; + justify-content: space-between; + align-items: center; + position: absolute; + background: #282828; + transition: transform 400ms ease; +} +figure.card figcaption .info { + color: #e2e2e2; + font-family: "Montserrat"; +} +figure.card figcaption .info h3 { + font-size: 1.2rem; + letter-spacing: 1px; + margin-bottom: 2px; +} +figure.card figcaption .info span { + color: #72cc60; + font-size: 0.85rem; +} +figure.card figcaption .links { + display: flex; + justify-content: end; + align-items: center; +} +figure.card figcaption .links a { + text-decoration: none; + position: relative; + width: 35px; + height: 35px; + display: flex; + justify-content: center; + align-items: center; + color: #fff; + margin-left: 10px; + font-size: 1.2rem; + opacity: 0.65; + border-radius: 50%; + overflow: hidden; +} +figure.card figcaption .links a:hover { + opacity: 1; +} +figure.card figcaption .links a:focus { + outline: none; +} +figure.card figcaption .links a:focus::after { + transform: scale(1); + opacity: 1; +} +figure.card figcaption .links a::after { + content: ""; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + border-radius: 50%; + opacity: 0; + background: rgba(255, 255, 255, 0.05); + transform: scale(0.5); + z-index: -1; + transition: all 150ms ease; +} + +@media only screen and (max-width: 900px) { + body { + align-items: start; + } + + .container { + grid-template-rows: repeat(4, 1fr); + grid-template-columns: 1fr; + grid-gap: 40px; + padding: 80px 0; + } +} +.support { + position: fixed; + right: 10px; + bottom: 10px; + padding: 10px; + display: flex; +} +.support a { + margin: 0 10px; + color: #222; + font-size: 1.8rem; + backface-visibility: hidden; + transition: all 150ms ease; +} +.support a:hover { + transform: scale(1.1); +} \ No newline at end of file diff --git a/cards/extreme-hover/README.md b/cards/extreme-hover/README.md new file mode 100644 index 0000000..0e9134b --- /dev/null +++ b/cards/extreme-hover/README.md @@ -0,0 +1 @@ +# Extreme Hover diff --git a/cards/extreme-hover/index.html b/cards/extreme-hover/index.html new file mode 100644 index 0000000..8467efd --- /dev/null +++ b/cards/extreme-hover/index.html @@ -0,0 +1,72 @@ + + + + + Extreme Hover + + + + + + +
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + + diff --git a/cards/extreme-hover/script.js b/cards/extreme-hover/script.js new file mode 100644 index 0000000..3830cb4 --- /dev/null +++ b/cards/extreme-hover/script.js @@ -0,0 +1,8 @@ +// Loading Screen +window.addEventListener("load", function(){ + let hoverImagesContainer = document.getElementById('imageHover'); + let loadingScreen = document.getElementById('loadingScreen'); + loadingScreen.style.opacity = '0'; + loadingScreen.style.zIndex = '-1'; + hoverImagesContainer.style.opacity = '1'; +}); \ No newline at end of file diff --git a/cards/extreme-hover/style.css b/cards/extreme-hover/style.css new file mode 100644 index 0000000..0ffb674 --- /dev/null +++ b/cards/extreme-hover/style.css @@ -0,0 +1,316 @@ +@import url("https://fonts.googleapis.com/css2?family=Manrope:wght@300&family=Open+Sans&family=Roboto:wght@300&display=swap"); +.image-hover-container { + position: relative; + height: 100vh; + width: 100%; + display: -webkit-box; + display: flex; +} +.image-hover-container .container { + position: relative; + height: 430px; + width: 310px; + margin: auto; + display: -webkit-box; +} +.image-hover-container .container:hover > .bottom-right { + top: 55%; + left: 80%; + box-shadow: 0px 37px 29px rgba(0, 0, 0, 0.3); + width: 350px; +} +.image-hover-container .container:hover > .middle { + height: 90%; + left: 5%; + top: 5%; + width: 90%; + box-shadow: 0px 23px 33px rgba(0, 0, 0, 0.34); +} +.image-hover-container .container:hover > .middle .overlay { + opacity: 1; + z-index: 1; +} +.image-hover-container .container:hover > .middle .overlay p:nth-child(1) { + padding-top: 0; +} +.image-hover-container .container:hover > .top-left { + left: -70px; + top: -90px; + width: 150px; + box-shadow: 0px 37px 29px rgba(0, 0, 0, 0.3); +} +.image-hover-container .container:hover > .top-right { + left: 250px; + top: -90px; + width: 260px; + height: 280px; + box-shadow: 0px 37px 29px rgba(0, 0, 0, 0.3); +} +.image-hover-container .container:hover > .bottom-left { + left: -89%; + top: 65%; + width: 360px; + box-shadow: 0px 37px 29px rgba(0, 0, 0, 0.3); +} +.image-hover-container .container .lancaster { + background: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/769286/lancaster-min.jpg) no-repeat; +} +.image-hover-container .container .lake-district { + background: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/769286/lake-district-min.jpg) no-repeat; +} +.image-hover-container .container .bg-image { + background-size: cover; + background-attachment: fixed; + background-position: 10% 10%; +} +.image-hover-container .container .middle { + -webkit-transition: 500ms all; + transition: 500ms all; + -webkit-transition-delay: 0.25s; + transition-delay: 0.25s; + -webkit-transition-timing-function: cubic-bezier(0.17, 0.67, 0.33, 0.97); + transition-timing-function: cubic-bezier(0.17, 0.67, 0.33, 0.97); + position: relative; + margin: auto; + height: 100%; + width: 100%; + margin: 0px; + left: 0; + top: 0; + box-shadow: 0px 17px 23px rgba(0, 0, 0, 0.34); +} +.image-hover-container .container .middle .bg-image { + height: 100%; + width: 100%; +} +.image-hover-container .container .middle .overlay { + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + z-index: 9; + background: rgba(67, 27, 12, 0.75); + display: -webkit-box; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + flex-direction: column; + -webkit-transition: 300ms all; + transition: 300ms all; + -webkit-transition-delay: 0.37s; + transition-delay: 0.37s; + opacity: 0; + text-decoration: none; + z-index: -1; +} +.image-hover-container .container .middle .overlay p { + position: relative; + margin: auto; + color: #fff; + text-transform: uppercase; + font-family: 'Roboto', sans-serif; + font-size: 1.1em; + opacity: 0.8; +} +.image-hover-container .container .middle .overlay p:nth-child(1) { + margin-bottom: 4px !important; + padding-top: 30px; + -webkit-transition: all 400ms; + transition: all 400ms; + -webkit-transition-delay: 0.3s; + transition-delay: 0.3s; +} +.image-hover-container .container .middle .overlay p:nth-child(2) { + margin-top: 4px !important; +} +.image-hover-container .container .middle .overlay .mobile-link { + display: none; +} +.image-hover-container .container .bottom-right { + -webkit-transition: 800ms all; + transition: 800ms all; + -webkit-transition-delay: 0.15s; + transition-delay: 0.15s; + -webkit-transition-timing-function: cubic-bezier(0.17, 0.67, 0.33, 0.97); + transition-timing-function: cubic-bezier(0.17, 0.67, 0.33, 0.97); + position: absolute; + left: 0%; + top: 48%; + width: 100%; + box-shadow: 0px 37px 29px rgba(0, 0, 0, 0); + z-index: 1; +} +.image-hover-container .container .bottom-right .bg-image { + height: 220px; + width: 100%; +} +.image-hover-container .container .bottom-left { + -webkit-transition: 800ms all; + transition: 800ms all; + -webkit-transition-delay: 0.17s; + transition-delay: 0.17s; + -webkit-transition-timing-function: cubic-bezier(0.17, 0.67, 0.33, 0.97); + transition-timing-function: cubic-bezier(0.17, 0.67, 0.33, 0.97); + position: absolute; + left: 0%; + top: 48%; + width: 100%; + z-index: 1; +} +.image-hover-container .container .bottom-left .bg-image { + height: 220px; + width: 100%; +} +.image-hover-container .container .top-left { + -webkit-transition-timing-function: cubic-bezier(0.17, 0.67, 0.33, 0.97); + transition-timing-function: cubic-bezier(0.17, 0.67, 0.33, 0.97); + -webkit-transition: 600ms all; + transition: 600ms all; + -webkit-transition-delay: 0.19s; + transition-delay: 0.19s; + position: absolute; + left: 0%; + top: 0%; + width: 150px; + z-index: 1; +} +.image-hover-container .container .top-left .bg-image { + height: 220px; + width: 100%; +} +.image-hover-container .container .top-right { + -webkit-transition: 500ms all; + transition: 500ms all; + -webkit-transition-delay: 0.08s; + transition-delay: 0.08s; + position: absolute; + left: 0%; + top: 0%; + width: 300px; + height: 260px; + z-index: 1; + -webkit-transition-timing-function: cubic-bezier(0.17, 0.67, 0.33, 0.97); + transition-timing-function: cubic-bezier(0.17, 0.67, 0.33, 0.97); +} +.image-hover-container .container .top-right .bg-image { + float: right; + height: 100%; + width: 100%; +} + +@media (max-width: 920px) { + .image-hover-container { + -webkit-transform: scale(0.8) translateX(0px); + transform: scale(0.8) translateX(0px); + overflow: hidden; + } + .image-hover-container .overlay p:nth-child(1) { + margin-top: 125px; + } + .image-hover-container .overlay p:nth-child(2) { + margin-bottom: 30px !important; + } + .image-hover-container .overlay .mobile-link { + display: block !important; + margin-top: 0px !important; + } + .image-hover-container .bottom-right, .image-hover-container .bottom-left, .image-hover-container .top-left, .image-hover-container .top-right { + box-shadow: 0px 0px 0px !important; + } +} +@media (max-width: 350px) { + .bottom-right, .bottom-left, .top-left, .top-right { + display: none !important; + } +} +.loading-container { + position: fixed; + height: 100vh; + width: 100%; + left: 0; + top: 0; + background: #fff; + -webkit-transition: 600ms all; + transition: 600ms all; +} +.loading-container #loading { + margin: 0 auto; + width: 70px; + height: 70px; + background: rgba(67, 27, 12, 0.75); + border-radius: 50%; + -webkit-animation: boing .8s linear infinite; + animation: boing .8s linear infinite; + position: relative; + top: calc(50% - 35px); +} +.loading-container #loading:before { + content: ''; + position: absolute; + left: calc(50% - 30px); + top: calc(50% - 30px); + display: block; + width: 60px; + height: 60px; + border-radius: 50%; + background: white; + -webkit-animation: boing-inner .8s linear infinite; + animation: boing-inner .8s linear infinite; +} +@-webkit-keyframes boing { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + } + 25% { + -webkit-transform: scale(0.75); + transform: scale(0.75); + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + } +} +@keyframes boing { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + } + 25% { + -webkit-transform: scale(0.75); + transform: scale(0.75); + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + } +} +@-webkit-keyframes boing-inner { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + } + 25% { + -webkit-transform: scale(0.6); + transform: scale(0.6); + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + } +} +@keyframes boing-inner { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + } + 25% { + -webkit-transform: scale(0.6); + transform: scale(0.6); + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + } +} \ No newline at end of file diff --git a/css-effects/pure-css-eye/README.md b/css-effects/pure-css-eye/README.md new file mode 100644 index 0000000..8aa884e --- /dev/null +++ b/css-effects/pure-css-eye/README.md @@ -0,0 +1,2 @@ +# Pure CSS "Eye" + diff --git a/css-effects/pure-css-eye/index.html b/css-effects/pure-css-eye/index.html new file mode 100644 index 0000000..90262e4 --- /dev/null +++ b/css-effects/pure-css-eye/index.html @@ -0,0 +1,53 @@ + + + + + Pure CSS Eye + + + + + +
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + diff --git a/css-effects/pure-css-eye/style.css b/css-effects/pure-css-eye/style.css new file mode 100644 index 0000000..eb1614d --- /dev/null +++ b/css-effects/pure-css-eye/style.css @@ -0,0 +1,681 @@ +html, body { + padding: 0; margin: 0; +} + +body { + position: relative; + width: 100vw; + min-width: 800px; + height: 100vh; + min-height: 600px; + background: linear-gradient(-45deg, #8691b3, #edeef3); +} + body *, body *:before, body *:after { + content: ''; + position: absolute; + top: 50%; left: 50%; + } + + +.eye { + width: 332px; height: 332px; + transform: translate(-50%, -50%); + border-radius: 50%; + background: #EBEDF3; + filter: blur(5px); + + animation: eyeAnimation 4s cubic-bezier(1, 0, 1, 1) infinite; +} +@keyframes eyeAnimation { + 0%, 33%, 100% { + box-shadow: inset -8px -13px 20px -10px rgba(230, 230, 236, 0.04), 64px 55px 40px -40px #38406A, 20px 18px 30px -10px #38406A, inset -70px -50px 60px -30px #4b6398, inset -90px -90px 70px -90px #697398, inset -70px -50px 100px -40px #697398, inset 80px 50px 80px -50px #eeeef3, -25px -15px 50px -10px #F6F6FB, 14px -1px 50px -10px #7e7ea9, 1px 9px 50px -10px #7e7ea9, inset -90px 40px 60px -20px rgba(116, 66, 255, 0.1), inset -90px -120px 60px -20px rgba(116, 66, 255, 0.1); + transform: translate(-50%, -50%) scale(1.25); + } + 65% { + box-shadow: inset -8px -13px 60px -10px rgba(230, 230, 236, 0.2), 44px 35px 20px -20px #687294, 11px 9px 9px -4px #6e799d, inset -100px -70px 40px -110px #6A789C, inset -90px -90px 70px -90px #697398, inset -70px -50px 100px -40px #697398, inset 80px 50px 80px -50px #eeeef3, -25px -15px 30px -10px #F6F6FB; + transform: translate(-50%, -50%) scale(1); + } +} + + + .eye::after { + width: 160px; height: 160px; + border-radius: 50%; + box-shadow: inset -50px -20px 30px 0px #e7e2f5, inset 100px 10px 20px -27px #2f2c4c, 0px 0px 10px 7px rgba(231, 226, 245, 1); + + animation: pupilAnimationSize 4s cubic-bezier(1, 0, 1, 1) infinite, + pupilAnimationView 4s ease infinite; + } +@keyframes pupilAnimationSize { + 0%, 30%, 100% { transform: translate(-50%, -50%) scale(0.85); } + 40%, 90% { transform: translate(-50%, -50%) scale(0.5); } +} +@keyframes pupilAnimationView { + 0%, 30%, 100% { + box-shadow: inset -50px -20px 30px 0px #e7e2f5, inset 100px 10px 20px -27px #2f2c4c, 0px 0px 10px 7px rgba(231, 226, 245, 1); + } + 60%, 66% { + box-shadow: inset -50px -20px 30px 0px rgba(231, 226, 245, 0), inset 10px 10px 70px -27px rgba(47, 44, 76, 0), 0px 0px 10px 7px hsla(256, 49%, 92%, 0); + } + 90% { + box-shadow: inset -50px -20px 30px 0px #e7e2f5, inset 100px 10px 20px -27px #2f2c4c, 0px 0px 10px 7px rgba(231, 226, 245, 1); + } +} + + +.circle-1 { + width: 475px; height: 475px; + border-radius: 50%; + border: 1px solid transparent; + border-right-color: rgba(223, 228, 255, 0.6); + + animation: circle1AnimationOpacity 4s ease infinite, + circle1AnimationMove 4s ease infinite; +} +@keyframes circle1AnimationMove { + 00%, 100% { transform: translate(-50%, -50%) rotate(49deg); } + 07% { transform: translate(-50%, -50%) rotate(38deg); } + 12%, 19%, 68% { transform: translate(-50%, -50%) rotate(42deg); } + 26%, 30% { transform: translate(-50%, -50%) rotate(82deg); } + 73% { transform: translate(-50%, -50%) rotate(34deg); } + 87%, 92% { transform: translate(-50%, -50%) rotate(69deg); } + 94% { transform: translate(-50%, -50%) rotate(65deg); } +} +@keyframes circle1AnimationOpacity { + 00%, 27%, 73%, 100% { opacity: 1; } + 30%, 70% { opacity: 0; } +} + + +.circle-2 { + width: 475px; height: 475px; + border-radius: 50%; + border: 1px solid transparent; + border-right-color: rgba(223, 228, 255, 0.6); + + animation: circle2AnimationOpacity 4s ease infinite, + circle2AnimationMove 4s ease infinite; +} +@keyframes circle2AnimationMove { + 0%, 100% { transform: translate(-50%, -50%) rotate(229deg); } + 9% { transform: translate(-50%, -50%) rotate(220deg); } + 14%, 21% { transform: translate(-50%, -50%) rotate(225deg); } + 29%, 67% { transform: translate(-50%, -50%) rotate(262deg); } + 82% { transform: translate(-50%, -50%) rotate(241deg); } + 90%, 94% { transform: translate(-50%, -50%) rotate(249deg); } + 99% { transform: translate(-50%, -50%) rotate(245deg); } +} +@keyframes circle2AnimationOpacity { + 0%, 27%, 79%, 100% { opacity: 1; } + 30%, 76% { opacity: 0; } +} + + +.circle-3 { + left: calc(50% + 93px); + top: calc(50% - 189px); + width: 106px; height: 280px; + overflow: hidden; +} + .circle-3::before { + left: -275%; + top: -4%; + width: 393px; + height: 393px; + border-radius: 50%; + border: 1px solid transparent; + border-right-color: rgba(223, 228, 255, 0.6); + + animation: circle3Animation 4s ease infinite; + } +@keyframes circle3Animation { + 0% { transform: rotate(-3deg); } + 20% { transform: rotate(-107deg); } + 79% { transform: rotate(-286deg); } + 100% { transform: rotate(-364deg); } +} + + +.circle-4 { + width: 295px; height: 295px; + border-radius: 50%; + border: 1px solid transparent; + border-right-color: rgb(251, 251, 251); + border-left-color: rgba(251, 251, 251, 0.2); + + animation: circle4AnimationMove 4s cubic-bezier(1, 0, 1, 1) infinite, + circle4AnimationOpacity 4s ease infinite; +} +@keyframes circle4AnimationMove { + 0%, 100% { transform: translate(-50%, -50%) rotate(219deg) scale(1); } + 6% { transform: translate(-50%, -50%) rotate(221deg) scale(0.9); } + 16% { transform: translate(-50%, -50%) rotate(302deg) scale(0.9); } + 22% { transform: translate(-50%, -50%) rotate(307deg) scale(0.9); } + 29% { transform: translate(-50%, -50%) rotate(312deg) scale(0.93); } + 33% { transform: translate(-50%, -50%) rotate(310deg) scale(0.93); } + 36% { transform: translate(-50%, -50%) rotate(300deg) scale(0.7); } + 39% { transform: translate(-50%, -50%) rotate(220deg) scale(0.92); } + 50%, 57% { transform: translate(-50%, -50%) rotate(248deg) scale(0.92); } + 66% { transform: translate(-50%, -50%) rotate(225deg) scale(0.92); } + 73%, 81% { transform: translate(-50%, -50%) rotate(243deg) scale(0.92); } + 93% { transform: translate(-50%, -50%) rotate(215deg) scale(1); } +} +@keyframes circle4AnimationOpacity { + 00%, 33%, 50%, 100% { opacity: 1; } + 36%, 39% { opacity: 0; } +} + + +.circle-5 { + width: 100px; height: 100px; + transform: translate(-50%, -50%); + + animation: circle5AnimationSize 4s cubic-bezier(1, 0, 1, 1) infinite, + circle5AnimationView 4s ease infinite; +} + .circle-5::before { + width: 173px; height: 173px; + border-radius: 50%; + border: 1px solid rgb(251, 251, 251); + transform: translate(-50%, -50%); + } + .circle-5::after { + width: 177px; height: 177px; + border-radius: 50%; + border: 1px solid rgb(251, 251, 251); + transform: translate(-50%, -50%); + } +@keyframes circle5AnimationSize { + 0%, 38%, 82.82%, 100% { transform: translate(-50%, -50%) scale(1); } + 45%, 75.44% { transform: translate(-50%, -50%) scale(0.7); } +} +@keyframes circle5AnimationView { + 0%, 5.7%, 7.4%, 9.8%, 11.5%, 14%, 15.6%, 18.9%, 21.3%, 23.8%, 25.4%, 28.7%, 35.3%, 42%, 77.9%, 82.7%, 83.6%, 85.2%, 86.1%, 91.8%, 93.5%, 97.6%, 100% { opacity: 1; } + 2.5%, 6.6%, 8.2%, 10.7%, 14.8%, 18%, 20.5%, 22.1%, 24.6%, 27.9%, 36%, 88.6% { opacity: 0.5; } + 47%, 77.8%, 82.8%, 83.5%, 85.3%, 86%, 90.2%, 92.7%, 96.8%, 99.2% { opacity: 0; } +} + + +.circle-6 { + top: 50%; left: 50%; + width: 190px; height: 190px; + background: repeating-conic-gradient(from 0deg, rgba(179, 221, 255, 0.4) 0deg 1deg, transparent 1deg 2deg); + clip-path: url(#bagel1); + border-radius: 50%; + + animation: circle6Animation 4s cubic-bezier(1, 0, 1, 1) infinite; +} +@keyframes circle6Animation { + 0% { + transform: translate(-50%, -50%) scale(1); + } + 8%, 35% { + transform: translate(-50%, -50%) scale(0.93); + opacity: 1; + } + 40%, 90% { + transform: translate(-50%, -50%) scale(0.2); + opacity: 0; + } + 95%, 100% { + transform: translate(-50%, -50%) scale(1); + opacity: 1; + } +} + +.circle-7 { + top: 50%; left: 50%; + width: 142px; height: 142px; + filter: blur(1px); + + animation: circle6Animation 4s -0.1s cubic-bezier(1, 0, 1, 1) infinite; +} + .circle-7::before { + top: 0; left: 0; + width: 100%; height: 100%; + background: repeating-conic-gradient(from 0deg, rgba(114, 87, 187, 0.6) 0deg 2deg, transparent 2deg 8deg); + clip-path: url(#bagel2); + border-radius: 50%; + } + + +.circle-8 { + top: 50%; left: 50%; + width: 120px; height: 120px; + background: repeating-conic-gradient(from 0deg, rgba(236, 247, 255, 0.68) 0deg 1deg, transparent 1deg 2deg); + clip-path: url(#bagel3); + border-radius: 50%; + + animation: circle6Animation 4s -0.13s cubic-bezier(1, 0, 1, 1) infinite; +} + + +.circle-9 { + top: 50%; left: 50%; + width: 76px; height: 76px; + background: repeating-conic-gradient(from 0deg, rgba(236, 247, 255, 0.68) 0deg 1deg, transparent 1deg 2deg); + clip-path: url(#bagel4); + border-radius: 50%; + + animation: circle6Animation 4s -0.16s cubic-bezier(1, 0, 1, 1) infinite; +} + + +.circle-10 { + top: 50%; left: 50%; + width: 190px; height: 190px; + background: radial-gradient(rgba(230, 245, 255, 0.6), rgba(201, 243, 255, 0.5), rgba(74, 105, 160, 0.3), transparent 70%); + clip-path: url(#bagel1); + border-radius: 50%; + + animation: circle10Animation 4s cubic-bezier(1, 0, 1, 1) infinite; +} +@keyframes circle10Animation { + 0% { + transform: translate(-50%, -50%) scale(1); + } + 4%, 30% { + transform: translate(-50%, -50%) scale(0.93); + opacity: 1; + } + 35%, 93% { + transform: translate(-50%, -50%) scale(0); + opacity: 0; + } + 98%, 100% { + transform: translate(-50%, -50%) scale(1); + opacity: 1; + } +} + + +.circle-11 { + top: 50%; left: 50%; + width: 190px; height: 190px; + background: repeating-conic-gradient(from 0deg, rgba(229, 243, 255, 0.1) 0deg 1deg, transparent 1deg 8deg, rgba(229, 243, 255, 0.3) 8deg 9deg, transparent 9deg 10deg, rgba(229, 243, 255, 0.1) 10deg 11deg, transparent 11deg 72deg); + clip-path: url(#bagel1); + border-radius: 50%; + + animation: circle11Animation 4s cubic-bezier(1, 0, 1, 1) infinite; +} +@keyframes circle11Animation { + 0%, 98%, 100% { + transform: translate(-50%, -50%) rotate(0deg); + opacity: 1; + } + 15% { + transform: translate(-50%, -50%) rotate(45deg); + } + 25% { + transform: translate(-50%, -50%) rotate(-10deg); + } + 30% { + opacity: 1; + } + 35% { + transform: translate(-50%, -50%) rotate(-20deg); + opacity: 0; + } + 93% { + transform: translate(-50%, -50%) rotate(80deg); + opacity: 0; + } +} + + +.circle-12 { + top: 50%; left: 50%; + width: 190px; height: 190px; + background: repeating-conic-gradient(from 0deg, rgba(208, 233, 255, 0.2) 20deg 21deg, transparent 21deg 40deg, rgba(192, 223, 249, 0.25) 40deg 41deg, transparent 41deg 43deg, rgba(179, 220, 255, 0.15) 43deg 44deg, transparent 44deg 76deg); + clip-path: url(#bagel1); + border-radius: 50%; + + animation: circle12Animation 4s cubic-bezier(1, 0, 1, 1) infinite; +} +@keyframes circle12Animation { + 0%, 96%, 100% { + transform: translate(-50%, -50%) rotate(0deg); + opacity: 1; + } + 10% { + transform: translate(-50%, -50%) rotate(45deg); + } + 25% { + transform: translate(-50%, -50%) rotate(-45deg); + } + 30% { + opacity: 1; + } + 35% { + transform: translate(-50%, -50%) rotate(50deg); + opacity: 0; + } + 93% { + transform: translate(-50%, -50%) rotate(-90deg); + opacity: 0; + } +} + + +.circle-13 { + width: 100px; height: 100px; + transform: translate(-50%, -50%); + animation: circle13AnimationSize 4s cubic-bezier(1, 0, 1, 1) infinite, + circle13AnimationView 4s ease infinite; +} + .circle-13::before { + width: 110px; height: 110px; + border-radius: 50%; + border: 1px solid rgb(251, 251, 251); + transform: translate(-50%, -50%); + } + .circle-13::after { + width: 120px; height: 120px; + border-radius: 50%; + border: 1px solid rgba(251, 251, 251, 0.5); + transform: translate(-50%, -50%); + } +@keyframes circle13AnimationSize { + 0%, 32%, 86%, 100% { transform: translate(-50%, -50%) scale(1); } + 38%, 82% { transform: translate(-50%, -50%) scale(0.2); } +} +@keyframes circle13AnimationView { + /* подвигать */ + 0% { opacity: 1; } + 2.5% { opacity: 0.5; } + 5.7% { opacity: 1; } + 6.6% { opacity: 0.5; } + 7.4% { opacity: 1; } + 8.2% { opacity: 0.5; } + 9.8% { opacity: 1; } + 10.7% { opacity: 0.5; } + 11.5%, 14% { opacity: 1; } + 14.8% { opacity: 0.5; } + 15.6% { opacity: 1; } + 18% { opacity: 0.5; } + 18.9% { opacity: 1; } + 20.5% { opacity: 0.5; } + 21.3% { opacity: 1; } + 22.1% { opacity: 0.5; } + 23.8% { opacity: 1; } + 24.6% { opacity: 0.5; } + 25.4% { opacity: 1; } + 27.9% { opacity: 0.5; } + 28.7%, 32% { opacity: 1; } + 38% { opacity: 0; } + 82% { opacity: 0; } + 86% { opacity: 1; } + 88.6% { opacity: 0.5; } + 90.2% { opacity: 0; } + 91.8% { opacity: 1; } + 92.7% { opacity: 0; } + 93.5% { opacity: 1; } + 96.8% { opacity: 0; } + 97.6% { opacity: 1; } + 99.2% { opacity: 0; } + 100% { opacity: 1; } +} + +.circle-14 { + width: 100px; height: 100px; + transform: translate(-50%, -50%); + animation: circle13AnimationSize 4s -0.15s cubic-bezier(1, 0, 1, 1) infinite, + circle14AnimationView 4s ease infinite; +} + .circle-14::before { + width: 70px; height: 70px; + border-radius: 50%; + border: 1px solid rgba(251, 251, 251, 0.5); + transform: translate(-50%, -50%); + } + .circle-14::after { + width: 95px; height: 95px; + border-radius: 50%; + border: 1px solid rgba(251, 251, 251, 0.3); + transform: translate(-50%, -50%); + } + +@keyframes circle14AnimationView { + /* подвигать */ + 0% { opacity: 1; } + 2.5% { opacity: 0.5; } + 5.7% { opacity: 1; } + 6.6% { opacity: 0.5; } + 7.4% { opacity: 1; } + 8.2% { opacity: 0.5; } + 9.8% { opacity: 1; } + 10.7% { opacity: 0.5; } + 11.5%, 14% { opacity: 1; } + 14.8% { opacity: 0.5; } + 15.6% { opacity: 1; } + 18% { opacity: 0.5; } + 18.9% { opacity: 1; } + 20.5% { opacity: 0.5; } + 21.3% { opacity: 1; } + 22.1% { opacity: 0.5; } + 23.8% { opacity: 1; } + 24.6% { opacity: 0.5; } + 25.4% { opacity: 1; } + 27.9% { opacity: 0.5; } + 28.7%, 32% { opacity: 1; } + 38% { opacity: 0; } + 82% { opacity: 0; } + 86% { opacity: 1; } + 88.6% { opacity: 0.5; } + 90.2% { opacity: 0; } + 91.8% { opacity: 1; } + 92.7% { opacity: 0; } + 93.5% { opacity: 1; } + 96.8% { opacity: 0; } + 97.6% { opacity: 1; } + 99.2% { opacity: 0; } + 100% { opacity: 1; } +} + + +.glitch { + width: 2px; height: 2px; + box-shadow: -21px -75px #8AC7ED, -16px -78px #8AC7ED, -8px -78px #8AC7ED, -5px -77px #8AC7ED, -2px -79px #8AC7ED, 10px -79px #8AC7ED, 25px -73px #8AC7ED, 41px -71px #8AC7ED, 44px -68px #8AC7ED, -26px -72px #8AC7ED, -45px -62px #8AC7ED, -65px -57px #8AC7ED, 59px -49px #8AC7ED, 67px -52px #8AC7ED, 37px -69px #8AC7ED, 43px -62px #8AC7ED, 39px -62px #8AC7ED, 17px -71px #8AC7ED, 28px -67px #8AC7ED, 65px -32px #8AC7ED, 73px -24px #8AC7ED, 67px -25px #8AC7ED, 76px -14px #8AC7ED, 70px -18px #8AC7ED, 82px 21px #8AC7ED, 79px 20px #8AC7ED, 72px 15px #8AC7ED, 55px 45px #8AC7ED, 48px 51px #8AC7ED, 43px 58px #8AC7ED, 37px 57px #8AC7ED, 36px 63px #8AC7ED, 32px 76px #8AC7ED, 35px 70px #8AC7ED, 25px 71px #8AC7ED, 20px 75px #8AC7ED, 5px 70px #8AC7ED, 7px 75px #8AC7ED, -5px 79px #8AC7ED, 3px 78px #8AC7ED, -1px 77px #8AC7ED, -13px 78px #8AC7ED, -15px 82px #8AC7ED, -20px 76px #8AC7ED, -18px 78px #8AC7ED, -17px 75px #8AC7ED, -22px 72px #8AC7ED, -34px 72px #8AC7ED, -36px 69px #8AC7ED, -43px 74px #8AC7ED, -41px 72px #8AC7ED, -42px 69px #8AC7ED, -38px 66px #8AC7ED, -43px 63px #8AC7ED, -37px 61px #8AC7ED, -56px 66px #8AC7ED, -54px 61px #8AC7ED, -58px 54px #8AC7ED, -60px 41px #8AC7ED, -50px 56px #8AC7ED, -54px 57px #8AC7ED, -60px 52px #8AC7ED, -74px 35px #8AC7ED, -76px 18px #8AC7ED, -74px 25px #8AC7ED, -69px 23px #8AC7ED, -84px 13px #8AC7ED, -73px 3px #8AC7ED, -80px -1px #8AC7ED, -79px -4px #8AC7ED, -79px -7px #8AC7ED, -70px -11px #8AC7ED, -67px -23px #8AC7ED, -84px -13px #8AC7ED, -71px -42px #8AC7ED, -61px -49px #8AC7ED, -58px -43px #8AC7ED, -55px -50px #8AC7ED, -32px -72px #8AC7ED, -80px -30px #8AC7ED, -59px -20px #8AC7ED, -79px 12px #8AC7ED, -76px 1px #8AC7ED, 8px 57px #8AC7ED, 59px 36px #8AC7ED, 60px 46px #8AC7ED, 54px 59px #8AC7ED, 44px 52px #8AC7ED, -31px 20px #8AC7ED, -56px 2px #8AC7ED, 47px 35px #8AC7ED, 70px 6px #8AC7ED, 60px -2px #8AC7ED, + -21px -75px 0 1px rgba(255, 255, 255, 0.1), -16px -78px 0 1px rgba(255, 255, 255, 0.1), -8px -78px 0 1px rgba(255, 255, 255, 0.1), -5px -77px 0 1px rgba(255, 255, 255, 0.1), -2px -79px 0 1px rgba(255, 255, 255, 0.1), 10px -79px 0 1px rgba(255, 255, 255, 0.1), 25px -73px 0 1px rgba(255, 255, 255, 0.1), 41px -71px 0 1px rgba(255, 255, 255, 0.1), 44px -68px 0 1px rgba(255, 255, 255, 0.1), -26px -72px 0 1px rgba(255, 255, 255, 0.1), -45px -62px 0 1px rgba(255, 255, 255, 0.1), -65px -57px 0 1px rgba(255, 255, 255, 0.1), 59px -49px 0 1px rgba(255, 255, 255, 0.1), 67px -52px 0 1px rgba(255, 255, 255, 0.1), 37px -69px 0 1px rgba(255, 255, 255, 0.1), 43px -62px 0 1px rgba(255, 255, 255, 0.1), 39px -62px 0 1px rgba(255, 255, 255, 0.1), 17px -71px 0 1px rgba(255, 255, 255, 0.1), 28px -67px 0 1px rgba(255, 255, 255, 0.1), 65px -32px 0 1px rgba(255, 255, 255, 0.1), 73px -24px 0 1px rgba(255, 255, 255, 0.1), 67px -25px 0 1px rgba(255, 255, 255, 0.1), 76px -14px 0 1px rgba(255, 255, 255, 0.1), 70px -18px 0 1px rgba(255, 255, 255, 0.1), 82px 21px 0 1px rgba(255, 255, 255, 0.1), 79px 20px 0 1px rgba(255, 255, 255, 0.1), 72px 15px 0 1px rgba(255, 255, 255, 0.1), 55px 45px 0 1px rgba(255, 255, 255, 0.1), 48px 51px 0 1px rgba(255, 255, 255, 0.1), 43px 58px 0 1px rgba(255, 255, 255, 0.1), 37px 57px 0 1px rgba(255, 255, 255, 0.1), 36px 63px 0 1px rgba(255, 255, 255, 0.1), 32px 76px 0 1px rgba(255, 255, 255, 0.1), 35px 70px 0 1px rgba(255, 255, 255, 0.1), 25px 71px 0 1px rgba(255, 255, 255, 0.1), 20px 75px 0 1px rgba(255, 255, 255, 0.1), 5px 70px 0 1px rgba(255, 255, 255, 0.1), 7px 75px 0 1px rgba(255, 255, 255, 0.1), -5px 79px 0 1px rgba(255, 255, 255, 0.1), 3px 78px 0 1px rgba(255, 255, 255, 0.1), -1px 77px 0 1px rgba(255, 255, 255, 0.1), -13px 78px 0 1px rgba(255, 255, 255, 0.1), -15px 82px 0 1px rgba(255, 255, 255, 0.1), -20px 76px 0 1px rgba(255, 255, 255, 0.1), -18px 78px 0 1px rgba(255, 255, 255, 0.1), -17px 75px 0 1px rgba(255, 255, 255, 0.1), -22px 72px 0 1px rgba(255, 255, 255, 0.1), -34px 72px 0 1px rgba(255, 255, 255, 0.1), -36px 69px 0 1px rgba(255, 255, 255, 0.1), -43px 74px 0 1px rgba(255, 255, 255, 0.1), -41px 72px 0 1px rgba(255, 255, 255, 0.1), -42px 69px 0 1px rgba(255, 255, 255, 0.1), -38px 66px 0 1px rgba(255, 255, 255, 0.1), -43px 63px 0 1px rgba(255, 255, 255, 0.1), -37px 61px 0 1px rgba(255, 255, 255, 0.1), -56px 66px 0 1px rgba(255, 255, 255, 0.1), -54px 61px 0 1px rgba(255, 255, 255, 0.1), -58px 54px 0 1px rgba(255, 255, 255, 0.1), -60px 41px 0 1px rgba(255, 255, 255, 0.1), -50px 56px 0 1px rgba(255, 255, 255, 0.1), -54px 57px 0 1px rgba(255, 255, 255, 0.1), -60px 52px 0 1px rgba(255, 255, 255, 0.1), -74px 35px 0 1px rgba(255, 255, 255, 0.1), -76px 18px 0 1px rgba(255, 255, 255, 0.1), -74px 25px 0 1px rgba(255, 255, 255, 0.1), -69px 23px 0 1px rgba(255, 255, 255, 0.1), -84px 13px 0 1px rgba(255, 255, 255, 0.1), -73px 3px 0 1px rgba(255, 255, 255, 0.1), -80px -1px 0 1px rgba(255, 255, 255, 0.1), -79px -4px 0 1px rgba(255, 255, 255, 0.1), -79px -7px 0 1px rgba(255, 255, 255, 0.1), -70px -11px 0 1px rgba(255, 255, 255, 0.1), -67px -23px 0 1px rgba(255, 255, 255, 0.1), -84px -13px 0 1px rgba(255, 255, 255, 0.1), -71px -42px 0 1px rgba(255, 255, 255, 0.1), -61px -49px 0 1px rgba(255, 255, 255, 0.1), -58px -43px 0 1px rgba(255, 255, 255, 0.1), -55px -50px 0 1px rgba(255, 255, 255, 0.1), -32px -72px 0 1px rgba(255, 255, 255, 0.1), -80px -30px 0 1px rgba(255, 255, 255, 0.1), -59px -20px 0 1px rgba(255, 255, 255, 0.1), -79px 12px 0 1px rgba(255, 255, 255, 0.1), -76px 1px 0 1px rgba(255, 255, 255, 0.1), 8px 57px 0 1px rgba(255, 255, 255, 0.1), 59px 36px 0 1px rgba(255, 255, 255, 0.1), 60px 46px 0 1px rgba(255, 255, 255, 0.1), 54px 59px 0 1px rgba(255, 255, 255, 0.1), 44px 52px 0 1px rgba(255, 255, 255, 0.1), -31px 20px 0 1px rgba(255, 255, 255, 0.1), -56px 2px 0 1px rgba(255, 255, 255, 0.1), 47px 35px 0 1px rgba(255, 255, 255, 0.1), 70px 6px 0 1px rgba(255, 255, 255, 0.1), 60px -2px 0 1px rgba(255, 255, 255, 0.1); + filter: blur(1px); + + animation: glitchAnimationOpacity 4s cubic-bezier(1, 0, 1, 1) infinite, + glitchAnimationMove 4s cubic-bezier(1, 0, 1, 1) infinite, + glitchAnimationBright 4s cubic-bezier(1, 0, 1, 1) infinite; +} +@keyframes glitchAnimationOpacity { + 0%, 30%, 96%, 100% { opacity: 1; } + 35%, 93% { opacity: 0; } +} +@keyframes glitchAnimationMove { + 0%, 100% { transform: translate(-50%, -50%) rotate(0deg); } + 35%, 65% { transform: translate(-50%, -50%) rotate(4320deg); } +} +@keyframes glitchAnimationBright { + 0%, 100% { filter: blur(1px); } + 35%, 65% { filter: blur(1px) brightness(1.8); } +} + + +.fragment-1::before { + width: 6px; height: 6px; + border: 2px solid rgba(255, 255, 255, 0.3); + border-radius: 2px; + + animation: fragment1BeforeAnimationMove 4s -0.15s cubic-bezier(1, 0, 1, 1) infinite; +} +@keyframes fragment1BeforeAnimationMove { + 0%, 100% { + transform: rotate(0deg) translate(71px, -181px); + opacity: 1; + } + 37% { + transform: rotate(15deg) translate(71px, -181px); + opacity: 1; + } + 37.1%, 76.9% { + opacity: 0; + } + 77% { + transform: rotate(-2deg) translate(71px, -181px); + opacity: 1; + } + 90% { + transform: rotate(-9deg) translate(71px, -181px); + } +} + + +.fragment-1::after { + width: 6px; height: 6px; + border: 2px solid rgba(255, 255, 255, 0.3); + border-radius: 2px; + + animation: fragment1AfterAnimationMove 4s -0.15s cubic-bezier(1, 0, 1, 1) infinite; +} +@keyframes fragment1AfterAnimationMove { + 0%, 100% { + transform: rotate(0deg) translate(285px, 48px); + opacity: 1; + } + 7% { + transform: rotate(5deg) translate(285px, 48px); + } + 22% { + transform: rotate(-1deg) translate(285px, 48px); + } + 40% { + transform: rotate(-3deg) translate(285px, 48px); + opacity: 1; + } + 40.1%, 81.9% { + opacity: 0; + } + 82% { + transform: rotate(-15deg) translate(285px, 48px); + opacity: 1; + } +} + + +.fragment-2::after { + width: 6px; height: 6px; + border: 2px solid rgba(255, 255, 255, 0.3); + border-radius: 2px; + + animation: fragment2AfterAnimationMove 4s -0.15s cubic-bezier(1, 0, 1, 1) infinite; +} +@keyframes fragment2AfterAnimationMove { + 0%, 100% { + transform: rotate(0deg) translate(-220px, 162px); + opacity: 1; + } + 46% { + transform: rotate(-8deg) translate(-220px, 162px); + opacity: 1; + } + 46.1%, 97.9% { + opacity: 0; + } + 98% { + transform: rotate(2deg) translate(-220px, 162px); + opacity: 1; + } +} + + +.fragment-2::before { + width: 6px; height: 6px; + border: 2px solid rgba(255, 255, 255, 0.3); + border-radius: 2px; + + animation: fragment2BeforeAnimationMove 4s -0.15s cubic-bezier(1, 0, 1, 1) infinite; +} +@keyframes fragment2BeforeAnimationMove { + 0%, 100% { + transform: rotate(0deg) translate(284px, 111px); + opacity: 1; + } + 2% { + transform: rotate(2deg) translate(284px, 111px); + } + 9% { + transform: rotate(-5deg) translate(284px, 111px); + } + 15%, 22% { + transform: rotate(-3deg) translate(284px, 111px); + } + 27% { + transform: rotate(-2deg) translate(284px, 111px); + opacity: 1; + } + 38.9% { + transform: rotate(-9deg) translate(284px, 111px); + } + 39%, 76.9% { + opacity: 0; + } + 77% { + transform: rotate(-9deg) translate(284px, 111px); + opacity: 1; + } +} + + +.fragment-3::after { + width: 6px; height: 6px; + background: rgba(255, 255, 255, 0.3); + border-radius: 2px; + + animation: fragment3AfterAnimationMove 4s -0.15s cubic-bezier(1, 0, 1, 1) infinite; +} +@keyframes fragment3AfterAnimationMove { + 0%, 4.9%, 65.1%, 100% { + opacity: 0; + } + 5% { + transform: rotate(0deg) translate(183px, 198px); + opacity: 1; + } + 16% { + transform: rotate(-9deg) translate(284px, 111px); + opacity: 1; + } + 16.1%, 60.9% { + opacity: 0; + } + 61% { + transform: rotate(5deg) translate(284px, 111px); + opacity: 1; + } + 65% { + transform: rotate(10deg) translate(284px, 111px); + opacity: 1; + } +} + + +.fragment-3::before { + width: 6px; height: 6px; + background: rgba(255, 255, 255, 0.3); + border-radius: 2px; + + animation: fragment3BeforeAnimationMove 4s -0.15s cubic-bezier(1, 0, 1, 1) infinite; +} +@keyframes fragment3BeforeAnimationMove { + 0%, 100% { + transform: rotate(0deg) translate(-253px, -126px); + opacity: 1; + } + 22% { + transform: rotate(25deg) translate(-253px, -126px); + opacity: 1; + } + 22.1%, 95.9% { + opacity: 0; + } + 96% { + transform: rotate(-5deg) translate(-253px, -126px); + opacity: 1; + } +} \ No newline at end of file diff --git a/css-effects/text-image-mosaic/README.md b/css-effects/text-image-mosaic/README.md new file mode 100644 index 0000000..c35b9b9 --- /dev/null +++ b/css-effects/text-image-mosaic/README.md @@ -0,0 +1,3 @@ +# Text Image Mosaic + +Uses mix-blend mode and CSS filters to produce the impression that an image is made of words. \ No newline at end of file diff --git a/css-effects/text-image-mosaic/index.html b/css-effects/text-image-mosaic/index.html new file mode 100644 index 0000000..98bdc15 --- /dev/null +++ b/css-effects/text-image-mosaic/index.html @@ -0,0 +1,18 @@ + + + + + Text Image Mosaic + + + + + +
+ +

We have to recognise that there cannot be relationships unless there is commitment, unless there is loyalty, unless there is love, patience, persistence. Never forget that justice is what love looks like in public. You can't lead the people if you don't love the people. You can't save the people if you don't serve the people. The country is in deep trouble. We've forgotten that a rich life consists fundamentally of serving others, trying to leave the world a little better than you found it. We need the courage to question the powers that be, the courage to be impatient with evil and patient with people, the courage to fight for social justice. In many instances we will be stepping out on nothing, and just hoping to land on something. But that's the struggle. To live is to wrestle with despair, yet never allow despair to have the last word. I cannot be an optimist but I am a prisoner of hope. I have tried to be a man of letters in love with ideas in order to be a wiser and more loving person, hoping to leave the world just a little better than I found it. Nihilism is a natural consequence of a culture (or civilization) ruled and regulated by categories that mask manipulation, mastery and domination of peoples and nature. Empathy is not simply a matter of trying to imagine what others are going through, but having the will to muster enough courage to do something about it. In a way, empathy is predicated upon hope. Music at its best… is the grand archeology into and transfiguration of our guttural cry, the great human effort to grasp in time our deepest passions and yearnings as prisoners of time. Profound music leads us - beyond language - to the dark roots of our scream and the celestial +heights of our silence. In a time in which Communist regimes have been rightfully discredited and yet alternatives to neoliberal capitalist societies are unwisely dismissed, I defend the fundamental claim of Marxist theory: there must be countervailing forces that defend people's needs against the brutality of profit driven capitalism. To be a Christian is to live dangerously, honestly, freely - to step in the name of love as if you may land on nothing, yet to keep on stepping because the something that sustains you no empire can give you and no empire can take away. You must let suffering speak, if you want to hear the truth. To accept your country without betraying it, you must love it for that which shows what it might become. America - this monument to the genius of ordinary men and women, this place where hope becomes capacity, this long, halting turn of "no" into the "yes" - needs citizens who love it enough to re-imagine and re-make it. My aim is not to provide excuses for black behavior or to absolve blacks of personal responsibility. But when the new black conservatives accent black behavior and responsibility in such a way that the cultural realities of black people are ignored, they are playing a deceptive and dangerous intellectual game with the lives and fortunes of disadvantaged people. We indeed must criticize and condemn immoral acts of black people, but we must do so cognizant of the circumstances into which people are born and under which they live. By overlooking these circumstances, the new black conservatives fall into the trap of blaming black poor people for their predicament. It is imperative to steer a course between the Scylla of environmental determinism and the Charybdis of a blaming-the-victims perspective. Of course, the aim of a constitutional democracy is to safeguard the rights of the minority and avoid the tyranny of the majority. I must feel the fire of my soul so my intellectual blues can set others on fire. In these downbeat times, we need as much hope and courage as we do vision and analysis; we must accent the best of each other even as we point out the vicious effects of our racial divide and pernicious consequences of our maldistribution of wealth and power. We simply cannot enter the twenty-first century at each other's throats, even as we acknowledge the weighty forces of racism, patriarchy, economic inequality, homophobia, and ecological abuse on our necks. We are at a crucial crossroad in the history of this nation. Without the presence of black people in America, European-Americans would not be "white" - they would be Irish, Italians, Poles, Welsh, and other engaged in class, ethnic, and gender struggles over resources and identityand we either hang together by combating these forces that divide and degrade us or we hang separately. Do we have the intelligence, humor, imagination, courage, tolerance, love, respect, and will to meet the challenge? Time will tell. None of us alone can save the nation or world. But each of us can make a positive difference if we commit ourselves to do so. Aesthetics have substantial political consequences. How one views oneself as beautiful or not beautiful or desirable or not desirable has deep consequences in terms of one’s feelings of self-worth and one’s capacity to be a political agent. White supremacist ideology is based first and foremost on the degradation of black bodies in order to control them. One of the best ways to instill fear in people is to terrorize them. Yet this fear is best sustained by convincing them that their bodies are ugly, their intellect is inherently underdeveloped, their culture is less civilized, and their future warrants less concern than that of other peoples. I grew up in traditional black patriarchal culture and there is no doubt that I’m going to take a great many unconscious, but present, patriarchal complicities to the grave because it so deeply ensconced in how I look at the world. Therefore, very much like alcoholism, drug addiction, or racism, patriarchy is a disease and we are in perennial recovery and relapse. So you have to get up every morning and struggle against it. To be a jazz freedom fighter is to attempt to galvanize and energize world-weary people into forms of organization with accountable leadership that promote critical exchange and broad reflection. The interplay of individuality and unity is not one of uniformity and unanimity imposed from above but rather of conflict among diverse groupings that reach a dynamic consensus subject to questioning and criticism. As with a soloist in a jazz quartet, quintet or band, individuality is promoted in order to sustain and increase the creative tension with the group--a tension that yields higher levels of performance to achieve the aim of the collective project. We’re beings toward death, we’re… two-legged, linguistically-conscious creatures born between urine and feces whose body will one day be the culinary delight of terrestrial worms. None of us alone can save the nation or the world. But each of us can make a positive difference if we commit ourselves to do so. You can't really move forward until you look back. Market moralities and mentalities - fueled by economic imperatives to make a profit at nearly any cost - yield unprecedented levels of loneliness, isolation, and sadness. And our public life lies in shambles, shot through with icy cynicism and paralyzing pessimism. To put it bluntly, beneath the record-breaking stock markets on Wall Street and bipartisan budget-balancing deals in the White House lurk ominous clouds of despair across this nation. Liberty, which means resisting all forms of cultural authoritarianism, be it from the right wing church, black ideologues, black nationalists, or mainstream white media. We have to accent liberty and freedom of expression and thought in all their forms.

+
+ + + diff --git a/css-effects/text-image-mosaic/style.css b/css-effects/text-image-mosaic/style.css new file mode 100644 index 0000000..5926074 --- /dev/null +++ b/css-effects/text-image-mosaic/style.css @@ -0,0 +1,39 @@ +@font-face { + font-family: 'inconsolata'; + src: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/4273/Simplifica.woff") format("woff"); + font-style: normal; + font-weight: normal; + font-display: swap; +} +body { + font-family: inconsolata; + margin: 0; + background: #000; +} + +div { + position: relative; + overflow: hidden; + line-height: 0; +} + +img { + width: 100%; + -webkit-filter: contrast(60%); + filter: contrast(60%); +} + +p { + line-height: 1; + text-align: justify; + padding: .18vw; + margin-top: 0; + font-size: 1.76vw; + color: #fff; + background: #000; + mix-blend-mode: multiply; + position: absolute; + top: 0; + width: 100%; + height: 100%; +} \ No newline at end of file diff --git a/error-pages/404-pages/80s-hacker-theme-404/README.md b/error-pages/404-pages/80s-hacker-theme-404/README.md new file mode 100644 index 0000000..795e6d1 --- /dev/null +++ b/error-pages/404-pages/80s-hacker-theme-404/README.md @@ -0,0 +1,4 @@ +# Error 404: Page not found – 80s hacker theme + + + diff --git a/error-pages/404-pages/80s-hacker-theme-404/index.html b/error-pages/404-pages/80s-hacker-theme-404/index.html new file mode 100644 index 0000000..20f3d02 --- /dev/null +++ b/error-pages/404-pages/80s-hacker-theme-404/index.html @@ -0,0 +1,22 @@ + + + + + Error 404: Page not found + + + + + + +
+
+
+

Error 404

+

The page you are looking for might have been removed, had its name changed or is temporarily unavailable.

+

Please try to go back or return to the homepage.

+

Good luck.

+
+ + + diff --git a/error-pages/404-pages/80s-hacker-theme-404/style.css b/error-pages/404-pages/80s-hacker-theme-404/style.css new file mode 100644 index 0000000..0634f04 --- /dev/null +++ b/error-pages/404-pages/80s-hacker-theme-404/style.css @@ -0,0 +1,122 @@ +@import "https://fonts.googleapis.com/css?family=Inconsolata"; +html { + min-height: 100%; +} + +body { + box-sizing: border-box; + height: 100%; + background-color: #000000; + background-image: radial-gradient(#11581E, #041607), url("https://media.giphy.com/media/oEI9uBYSzLpBK/giphy.gif"); + background-repeat: no-repeat; + background-size: cover; + font-family: 'Inconsolata', Helvetica, sans-serif; + font-size: 1.5rem; + color: rgba(128, 255, 128, 0.8); + text-shadow: 0 0 1ex #33ff33, 0 0 2px rgba(255, 255, 255, 0.8); +} + +.noise { + pointer-events: none; + position: absolute; + width: 100%; + height: 100%; + background-image: url("https://media.giphy.com/media/oEI9uBYSzLpBK/giphy.gif"); + background-repeat: no-repeat; + background-size: cover; + z-index: -1; + opacity: .02; +} + +.overlay { + pointer-events: none; + position: absolute; + width: 100%; + height: 100%; + background: repeating-linear-gradient(180deg, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0.3) 50%, rgba(0, 0, 0, 0) 100%); + background-size: auto 4px; + z-index: 1; +} + +.overlay::before { + content: ""; + pointer-events: none; + position: absolute; + display: block; + top: 0; + left: 0; + right: 0; + bottom: 0; + width: 100%; + height: 100%; + background-image: -webkit-gradient(linear, left bottom, left top, from(transparent), color-stop(2%, rgba(32, 128, 32, 0.2)), color-stop(3%, rgba(32, 128, 32, 0.8)), color-stop(3%, rgba(32, 128, 32, 0.2)), to(transparent)); + background-image: linear-gradient(0deg, transparent 0%, rgba(32, 128, 32, 0.2) 2%, rgba(32, 128, 32, 0.8) 3%, rgba(32, 128, 32, 0.2) 3%, transparent 100%); + background-repeat: no-repeat; + -webkit-animation: scan 7.5s linear 0s infinite; + animation: scan 7.5s linear 0s infinite; +} + +@-webkit-keyframes scan { + 0% { + background-position: 0 -100vh; + } + 35%, 100% { + background-position: 0 100vh; + } +} + +@keyframes scan { + 0% { + background-position: 0 -100vh; + } + 35%, 100% { + background-position: 0 100vh; + } +} +.terminal { + box-sizing: inherit; + position: absolute; + height: 100%; + width: 1000px; + max-width: 100%; + padding: 4rem; + text-transform: uppercase; +} + +.output { + color: rgba(128, 255, 128, 0.8); + text-shadow: 0 0 1px rgba(51, 255, 51, 0.4), 0 0 2px rgba(255, 255, 255, 0.8); +} + +.output::before { + content: "> "; +} + +/* +.input { + color: rgba(192, 255, 192, 0.8); + text-shadow: + 0 0 1px rgba(51, 255, 51, 0.4), + 0 0 2px rgba(255, 255, 255, 0.8); +} + +.input::before { + content: "$ "; +} +*/ +a { + color: #fff; + text-decoration: none; +} + +a::before { + content: "["; +} + +a::after { + content: "]"; +} + +.errorcode { + color: white; +} \ No newline at end of file diff --git a/forms-and-login-pages/login-form-minimal/README.md b/forms-and-login-pages/login-form-minimal/README.md new file mode 100644 index 0000000..b569880 --- /dev/null +++ b/forms-and-login-pages/login-form-minimal/README.md @@ -0,0 +1,5 @@ +# Login Form Minimal + +Nice and Simple login form + +![image](/attachments/dc15dfb7-a506-477f-879d-51cd063c40c5) \ No newline at end of file diff --git a/forms-and-login-pages/login-form-minimal/index.html b/forms-and-login-pages/login-form-minimal/index.html new file mode 100644 index 0000000..4f0a5bd --- /dev/null +++ b/forms-and-login-pages/login-form-minimal/index.html @@ -0,0 +1,23 @@ + + + + + Login Form simple + + + + + + + + + + + diff --git a/forms-and-login-pages/login-form-minimal/style.css b/forms-and-login-pages/login-form-minimal/style.css new file mode 100644 index 0000000..b1d79c9 --- /dev/null +++ b/forms-and-login-pages/login-form-minimal/style.css @@ -0,0 +1,57 @@ +@import url(https://fonts.googleapis.com/css?family=Open+Sans); +.btn { display: inline-block; *display: inline; *zoom: 1; padding: 4px 10px 4px; margin-bottom: 0; font-size: 13px; line-height: 18px; color: #333333; text-align: center;text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); vertical-align: middle; background-color: #f5f5f5; background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); background-image: -ms-linear-gradient(top, #ffffff, #e6e6e6); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); background-image: linear-gradient(top, #ffffff, #e6e6e6); background-repeat: repeat-x; filter: progid:dximagetransform.microsoft.gradient(startColorstr=#ffffff, endColorstr=#e6e6e6, GradientType=0); border-color: #e6e6e6 #e6e6e6 #e6e6e6; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); border: 1px solid #e6e6e6; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); cursor: pointer; *margin-left: .3em; } +.btn:hover, .btn:active, .btn.active, .btn.disabled, .btn[disabled] { background-color: #e6e6e6; } +.btn-large { padding: 9px 14px; font-size: 15px; line-height: normal; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } +.btn:hover { color: #333333; text-decoration: none; background-color: #e6e6e6; background-position: 0 -15px; -webkit-transition: background-position 0.1s linear; -moz-transition: background-position 0.1s linear; -ms-transition: background-position 0.1s linear; -o-transition: background-position 0.1s linear; transition: background-position 0.1s linear; } +.btn-primary, .btn-primary:hover { text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); color: #ffffff; } +.btn-primary.active { color: rgba(255, 255, 255, 0.75); } +.btn-primary { background-color: #4a77d4; background-image: -moz-linear-gradient(top, #6eb6de, #4a77d4); background-image: -ms-linear-gradient(top, #6eb6de, #4a77d4); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#6eb6de), to(#4a77d4)); background-image: -webkit-linear-gradient(top, #6eb6de, #4a77d4); background-image: -o-linear-gradient(top, #6eb6de, #4a77d4); background-image: linear-gradient(top, #6eb6de, #4a77d4); background-repeat: repeat-x; filter: progid:dximagetransform.microsoft.gradient(startColorstr=#6eb6de, endColorstr=#4a77d4, GradientType=0); border: 1px solid #3762bc; text-shadow: 1px 1px 1px rgba(0,0,0,0.4); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.5); } +.btn-primary:hover, .btn-primary:active, .btn-primary.active, .btn-primary.disabled, .btn-primary[disabled] { filter: none; background-color: #4a77d4; } +.btn-block { width: 100%; display:block; } + +* { -webkit-box-sizing:border-box; -moz-box-sizing:border-box; -ms-box-sizing:border-box; -o-box-sizing:border-box; box-sizing:border-box; } + +html { width: 100%; height:100%; overflow:hidden; } + +body { + width: 100%; + height:100%; + font-family: 'Open Sans', sans-serif; + background: #092756; + background: -moz-radial-gradient(0% 100%, ellipse cover, rgba(104,128,138,.4) 10%,rgba(138,114,76,0) 40%),-moz-linear-gradient(top, rgba(57,173,219,.25) 0%, rgba(42,60,87,.4) 100%), -moz-linear-gradient(-45deg, #670d10 0%, #092756 100%); + background: -webkit-radial-gradient(0% 100%, ellipse cover, rgba(104,128,138,.4) 10%,rgba(138,114,76,0) 40%), -webkit-linear-gradient(top, rgba(57,173,219,.25) 0%,rgba(42,60,87,.4) 100%), -webkit-linear-gradient(-45deg, #670d10 0%,#092756 100%); + background: -o-radial-gradient(0% 100%, ellipse cover, rgba(104,128,138,.4) 10%,rgba(138,114,76,0) 40%), -o-linear-gradient(top, rgba(57,173,219,.25) 0%,rgba(42,60,87,.4) 100%), -o-linear-gradient(-45deg, #670d10 0%,#092756 100%); + background: -ms-radial-gradient(0% 100%, ellipse cover, rgba(104,128,138,.4) 10%,rgba(138,114,76,0) 40%), -ms-linear-gradient(top, rgba(57,173,219,.25) 0%,rgba(42,60,87,.4) 100%), -ms-linear-gradient(-45deg, #670d10 0%,#092756 100%); + background: -webkit-radial-gradient(0% 100%, ellipse cover, rgba(104,128,138,.4) 10%,rgba(138,114,76,0) 40%), linear-gradient(to bottom, rgba(57,173,219,.25) 0%,rgba(42,60,87,.4) 100%), linear-gradient(135deg, #670d10 0%,#092756 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3E1D6D', endColorstr='#092756',GradientType=1 ); +} +.login { + position: absolute; + top: 50%; + left: 50%; + margin: -150px 0 0 -150px; + width:300px; + height:300px; +} +.login h1 { color: #fff; text-shadow: 0 0 10px rgba(0,0,0,0.3); letter-spacing:1px; text-align:center; } + +input { + width: 100%; + margin-bottom: 10px; + background: rgba(0,0,0,0.3); + border: none; + outline: none; + padding: 10px; + font-size: 13px; + color: #fff; + text-shadow: 1px 1px 1px rgba(0,0,0,0.3); + border: 1px solid rgba(0,0,0,0.3); + border-radius: 4px; + box-shadow: inset 0 -5px 45px rgba(100,100,100,0.2), 0 1px 1px rgba(255,255,255,0.2); + -webkit-transition: box-shadow .5s ease; + -moz-transition: box-shadow .5s ease; + -o-transition: box-shadow .5s ease; + -ms-transition: box-shadow .5s ease; + transition: box-shadow .5s ease; +} +input:focus { box-shadow: inset 0 -5px 45px rgba(100,100,100,0.4), 0 1px 1px rgba(255,255,255,0.2); } \ No newline at end of file diff --git a/forms-and-login-pages/login-form-modern/README.md b/forms-and-login-pages/login-form-modern/README.md index 56c34a9..0e55e37 100644 --- a/forms-and-login-pages/login-form-modern/README.md +++ b/forms-and-login-pages/login-form-modern/README.md @@ -1,2 +1,3 @@ -# Login Form -![image](/attachments/39ded713-ee72-40cb-adac-78ebe26ded7b) \ No newline at end of file +# Modern Login Form with floating placeholder and light button + + diff --git a/forms-and-login-pages/login-form-modern/index.html b/forms-and-login-pages/login-form-modern/index.html index 61d15d0..f83a7d1 100644 --- a/forms-and-login-pages/login-form-modern/index.html +++ b/forms-and-login-pages/login-form-modern/index.html @@ -2,35 +2,32 @@ - Login Form - - + Modern Login Form + - -Forgot password? + diff --git a/forms-and-login-pages/login-form-modern/style.css b/forms-and-login-pages/login-form-modern/style.css index bb31688..364ae77 100644 --- a/forms-and-login-pages/login-form-modern/style.css +++ b/forms-and-login-pages/login-form-modern/style.css @@ -1,126 +1,167 @@ -* { - -webkit-font-smoothing: antialiased; - text-rendering: optimizeLegibility; -} - -html, body { +html { height: 100%; } - body { - display: flex; - align-items: center; - justify-content: center; - flex-direction: column; - position: relative; - background: linear-gradient(135deg, rgba(36, 46, 77, 0.9), rgba(137, 126, 121, 0.9)); - font-family: 'Roboto', helvetica, arial, sans-serif; - font-size: 1.5em; + margin:0; + padding:0; + font-family: sans-serif; + background: linear-gradient(#141e30, #243b55); } -body:before { - content: ''; + +.login-box { position: absolute; - top: 0; - left: 0; - height: 100%; - width: 100%; - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAAAUVBMVEWFhYWDg4N3d3dtbW17e3t1dXWBgYGHh4d5eXlzc3OLi4ubm5uVlZWPj4+NjY19fX2JiYl/f39ra2uRkZGZmZlpaWmXl5dvb29xcXGTk5NnZ2c8TV1mAAAAG3RSTlNAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAvEOwtAAAFVklEQVR4XpWWB67c2BUFb3g557T/hRo9/WUMZHlgr4Bg8Z4qQgQJlHI4A8SzFVrapvmTF9O7dmYRFZ60YiBhJRCgh1FYhiLAmdvX0CzTOpNE77ME0Zty/nWWzchDtiqrmQDeuv3powQ5ta2eN0FY0InkqDD73lT9c9lEzwUNqgFHs9VQce3TVClFCQrSTfOiYkVJQBmpbq2L6iZavPnAPcoU0dSw0SUTqz/GtrGuXfbyyBniKykOWQWGqwwMA7QiYAxi+IlPdqo+hYHnUt5ZPfnsHJyNiDtnpJyayNBkF6cWoYGAMY92U2hXHF/C1M8uP/ZtYdiuj26UdAdQQSXQErwSOMzt/XWRWAz5GuSBIkwG1H3FabJ2OsUOUhGC6tK4EMtJO0ttC6IBD3kM0ve0tJwMdSfjZo+EEISaeTr9P3wYrGjXqyC1krcKdhMpxEnt5JetoulscpyzhXN5FRpuPHvbeQaKxFAEB6EN+cYN6xD7RYGpXpNndMmZgM5Dcs3YSNFDHUo2LGfZuukSWyUYirJAdYbF3MfqEKmjM+I2EfhA94iG3L7uKrR+GdWD73ydlIB+6hgref1QTlmgmbM3/LeX5GI1Ux1RWpgxpLuZ2+I+IjzZ8wqE4nilvQdkUdfhzI5QDWy+kw5Wgg2pGpeEVeCCA7b85BO3F9DzxB3cdqvBzWcmzbyMiqhzuYqtHRVG2y4x+KOlnyqla8AoWWpuBoYRxzXrfKuILl6SfiWCbjxoZJUaCBj1CjH7GIaDbc9kqBY3W/Rgjda1iqQcOJu2WW+76pZC9QG7M00dffe9hNnseupFL53r8F7YHSwJWUKP2q+k7RdsxyOB11n0xtOvnW4irMMFNV4H0uqwS5ExsmP9AxbDTc9JwgneAT5vTiUSm1E7BSflSt3bfa1tv8Di3R8n3Af7MNWzs49hmauE2wP+ttrq+AsWpFG2awvsuOqbipWHgtuvuaAE+A1Z/7gC9hesnr+7wqCwG8c5yAg3AL1fm8T9AZtp/bbJGwl1pNrE7RuOX7PeMRUERVaPpEs+yqeoSmuOlokqw49pgomjLeh7icHNlG19yjs6XXOMedYm5xH2YxpV2tc0Ro2jJfxC50ApuxGob7lMsxfTbeUv07TyYxpeLucEH1gNd4IKH2LAg5TdVhlCafZvpskfncCfx8pOhJzd76bJWeYFnFciwcYfubRc12Ip/ppIhA1/mSZ/RxjFDrJC5xifFjJpY2Xl5zXdguFqYyTR1zSp1Y9p+tktDYYSNflcxI0iyO4TPBdlRcpeqjK/piF5bklq77VSEaA+z8qmJTFzIWiitbnzR794USKBUaT0NTEsVjZqLaFVqJoPN9ODG70IPbfBHKK+/q/AWR0tJzYHRULOa4MP+W/HfGadZUbfw177G7j/OGbIs8TahLyynl4X4RinF793Oz+BU0saXtUHrVBFT/DnA3ctNPoGbs4hRIjTok8i+algT1lTHi4SxFvONKNrgQFAq2/gFnWMXgwffgYMJpiKYkmW3tTg3ZQ9Jq+f8XN+A5eeUKHWvJWJ2sgJ1Sop+wwhqFVijqWaJhwtD8MNlSBeWNNWTa5Z5kPZw5+LbVT99wqTdx29lMUH4OIG/D86ruKEauBjvH5xy6um/Sfj7ei6UUVk4AIl3MyD4MSSTOFgSwsH/QJWaQ5as7ZcmgBZkzjjU1UrQ74ci1gWBCSGHtuV1H2mhSnO3Wp/3fEV5a+4wz//6qy8JxjZsmxxy5+4w9CDNJY09T072iKG0EnOS0arEYgXqYnXcYHwjTtUNAcMelOd4xpkoqiTYICWFq0JSiPfPDQdnt+4/wuqcXY47QILbgAAAABJRU5ErkJggg==); - opacity: .3; + top: 50%; + left: 50%; + width: 400px; + padding: 40px; + transform: translate(-50%, -50%); + background: rgba(0,0,0,.5); + box-sizing: border-box; + box-shadow: 0 15px 25px rgba(0,0,0,.6); + border-radius: 10px; } -.login-form { - width: 100%; - padding: 2em; +.login-box h2 { + margin: 0 0 30px; + padding: 0; + color: #fff; + text-align: center; +} + +.login-box .user-box { position: relative; - background: rgba(0, 0, 0, 0.15); } -.login-form:before { - content: ''; - position: absolute; - top: -2px; - left: 0; - height: 2px; + +.login-box .user-box input { width: 100%; - background: linear-gradient(to right, #35c3c1, #00d6b7); + padding: 10px 0; + font-size: 16px; + color: #fff; + margin-bottom: 30px; + border: none; + border-bottom: 1px solid #fff; + outline: none; + background: transparent; } -@media screen and (min-width: 600px) { - .login-form { - width: 50vw; - max-width: 15em; - } +.login-box .user-box label { + position: absolute; + top:0; + left: 0; + padding: 10px 0; + font-size: 16px; + color: #fff; + pointer-events: none; + transition: .5s; } -.flex-row { - display: flex; - margin-bottom: 1em; +.login-box .user-box input:focus ~ label, +.login-box .user-box input:valid ~ label { + top: -20px; + left: 0; + color: #03e9f4; + font-size: 12px; } -.lf--label { - width: 2em; - display: flex; - align-items: center; - justify-content: center; - background: #f5f6f8; - cursor: pointer; +.login-box form a { + position: relative; + display: inline-block; + padding: 10px 20px; + color: #03e9f4; + font-size: 16px; + text-decoration: none; + text-transform: uppercase; + overflow: hidden; + transition: .5s; + margin-top: 40px; + letter-spacing: 4px } -.lf--input { - flex: 1; - padding: 1em; - border: 0; - color: #8f8f8f; - font-size: 1rem; -} -.lf--input:focus { - outline: none; - transition: -webkit-transform .15s ease; - transition: transform .15s ease; - transition: transform .15s ease, -webkit-transform .15s ease; - -webkit-transform: scale(1.1); - transform: scale(1.1); +.login-box a:hover { + background: #03e9f4; + color: #fff; + border-radius: 5px; + box-shadow: 0 0 5px #03e9f4, + 0 0 25px #03e9f4, + 0 0 50px #03e9f4, + 0 0 100px #03e9f4; } -.lf--submit { +.login-box a span { + position: absolute; display: block; - padding: 1em; +} + +.login-box a span:nth-child(1) { + top: 0; + left: -100%; width: 100%; - background: linear-gradient(to right, #35c3c1, #00d6b7); - border: 0; - color: #fff; - cursor: pointer; - font-size: .75em; - font-weight: 600; - text-shadow: 0 1px 0 rgba(0, 0, 0, 0.2); + height: 2px; + background: linear-gradient(90deg, transparent, #03e9f4); + animation: btn-anim1 1s linear infinite; } -.lf--submit:focus { - outline: none; - transition: -webkit-transform .15s ease; - transition: transform .15s ease; - transition: transform .15s ease, -webkit-transform .15s ease; - -webkit-transform: scale(1.1); - transform: scale(1.1); + +@keyframes btn-anim1 { + 0% { + left: -100%; + } + 50%,100% { + left: 100%; + } } -.lf--forgot { - margin-top: 1em; - color: #00d6b7; - font-size: .65em; - text-align: center; - position: relative; +.login-box a span:nth-child(2) { + top: -100%; + right: 0; + width: 2px; + height: 100%; + background: linear-gradient(180deg, transparent, #03e9f4); + animation: btn-anim2 1s linear infinite; + animation-delay: .25s } -::-webkit-input-placeholder { - color: #8f8f8f; +@keyframes btn-anim2 { + 0% { + top: -100%; + } + 50%,100% { + top: 100%; + } } -:-ms-input-placeholder { - color: #8f8f8f; +.login-box a span:nth-child(3) { + bottom: 0; + right: -100%; + width: 100%; + height: 2px; + background: linear-gradient(270deg, transparent, #03e9f4); + animation: btn-anim3 1s linear infinite; + animation-delay: .5s } -::-ms-input-placeholder { - color: #8f8f8f; +@keyframes btn-anim3 { + 0% { + right: -100%; + } + 50%,100% { + right: 100%; + } } -::placeholder { - color: #8f8f8f; +.login-box a span:nth-child(4) { + bottom: -100%; + left: 0; + width: 2px; + height: 100%; + background: linear-gradient(360deg, transparent, #03e9f4); + animation: btn-anim4 1s linear infinite; + animation-delay: .75s +} + +@keyframes btn-anim4 { + 0% { + bottom: -100%; + } + 50%,100% { + bottom: 100%; + } } \ No newline at end of file diff --git a/forms-and-login-pages/login-form-simple/README.md b/forms-and-login-pages/login-form-simple/README.md index f7b59ef..56c34a9 100644 --- a/forms-and-login-pages/login-form-simple/README.md +++ b/forms-and-login-pages/login-form-simple/README.md @@ -1,5 +1,2 @@ -# Login Form simple - -Nice and Simple login form - -![image](/attachments/dc15dfb7-a506-477f-879d-51cd063c40c5) \ No newline at end of file +# Login Form +![image](/attachments/39ded713-ee72-40cb-adac-78ebe26ded7b) \ No newline at end of file diff --git a/forms-and-login-pages/login-form-simple/index.html b/forms-and-login-pages/login-form-simple/index.html index 4f0a5bd..61d15d0 100644 --- a/forms-and-login-pages/login-form-simple/index.html +++ b/forms-and-login-pages/login-form-simple/index.html @@ -2,22 +2,35 @@ - Login Form simple - + Login Form + - - - + +Forgot password? + diff --git a/forms-and-login-pages/login-form-simple/style.css b/forms-and-login-pages/login-form-simple/style.css index b1d79c9..bb31688 100644 --- a/forms-and-login-pages/login-form-simple/style.css +++ b/forms-and-login-pages/login-form-simple/style.css @@ -1,57 +1,126 @@ -@import url(https://fonts.googleapis.com/css?family=Open+Sans); -.btn { display: inline-block; *display: inline; *zoom: 1; padding: 4px 10px 4px; margin-bottom: 0; font-size: 13px; line-height: 18px; color: #333333; text-align: center;text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); vertical-align: middle; background-color: #f5f5f5; background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); background-image: -ms-linear-gradient(top, #ffffff, #e6e6e6); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); background-image: linear-gradient(top, #ffffff, #e6e6e6); background-repeat: repeat-x; filter: progid:dximagetransform.microsoft.gradient(startColorstr=#ffffff, endColorstr=#e6e6e6, GradientType=0); border-color: #e6e6e6 #e6e6e6 #e6e6e6; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); border: 1px solid #e6e6e6; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); cursor: pointer; *margin-left: .3em; } -.btn:hover, .btn:active, .btn.active, .btn.disabled, .btn[disabled] { background-color: #e6e6e6; } -.btn-large { padding: 9px 14px; font-size: 15px; line-height: normal; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } -.btn:hover { color: #333333; text-decoration: none; background-color: #e6e6e6; background-position: 0 -15px; -webkit-transition: background-position 0.1s linear; -moz-transition: background-position 0.1s linear; -ms-transition: background-position 0.1s linear; -o-transition: background-position 0.1s linear; transition: background-position 0.1s linear; } -.btn-primary, .btn-primary:hover { text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); color: #ffffff; } -.btn-primary.active { color: rgba(255, 255, 255, 0.75); } -.btn-primary { background-color: #4a77d4; background-image: -moz-linear-gradient(top, #6eb6de, #4a77d4); background-image: -ms-linear-gradient(top, #6eb6de, #4a77d4); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#6eb6de), to(#4a77d4)); background-image: -webkit-linear-gradient(top, #6eb6de, #4a77d4); background-image: -o-linear-gradient(top, #6eb6de, #4a77d4); background-image: linear-gradient(top, #6eb6de, #4a77d4); background-repeat: repeat-x; filter: progid:dximagetransform.microsoft.gradient(startColorstr=#6eb6de, endColorstr=#4a77d4, GradientType=0); border: 1px solid #3762bc; text-shadow: 1px 1px 1px rgba(0,0,0,0.4); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.5); } -.btn-primary:hover, .btn-primary:active, .btn-primary.active, .btn-primary.disabled, .btn-primary[disabled] { filter: none; background-color: #4a77d4; } -.btn-block { width: 100%; display:block; } - -* { -webkit-box-sizing:border-box; -moz-box-sizing:border-box; -ms-box-sizing:border-box; -o-box-sizing:border-box; box-sizing:border-box; } - -html { width: 100%; height:100%; overflow:hidden; } - -body { - width: 100%; - height:100%; - font-family: 'Open Sans', sans-serif; - background: #092756; - background: -moz-radial-gradient(0% 100%, ellipse cover, rgba(104,128,138,.4) 10%,rgba(138,114,76,0) 40%),-moz-linear-gradient(top, rgba(57,173,219,.25) 0%, rgba(42,60,87,.4) 100%), -moz-linear-gradient(-45deg, #670d10 0%, #092756 100%); - background: -webkit-radial-gradient(0% 100%, ellipse cover, rgba(104,128,138,.4) 10%,rgba(138,114,76,0) 40%), -webkit-linear-gradient(top, rgba(57,173,219,.25) 0%,rgba(42,60,87,.4) 100%), -webkit-linear-gradient(-45deg, #670d10 0%,#092756 100%); - background: -o-radial-gradient(0% 100%, ellipse cover, rgba(104,128,138,.4) 10%,rgba(138,114,76,0) 40%), -o-linear-gradient(top, rgba(57,173,219,.25) 0%,rgba(42,60,87,.4) 100%), -o-linear-gradient(-45deg, #670d10 0%,#092756 100%); - background: -ms-radial-gradient(0% 100%, ellipse cover, rgba(104,128,138,.4) 10%,rgba(138,114,76,0) 40%), -ms-linear-gradient(top, rgba(57,173,219,.25) 0%,rgba(42,60,87,.4) 100%), -ms-linear-gradient(-45deg, #670d10 0%,#092756 100%); - background: -webkit-radial-gradient(0% 100%, ellipse cover, rgba(104,128,138,.4) 10%,rgba(138,114,76,0) 40%), linear-gradient(to bottom, rgba(57,173,219,.25) 0%,rgba(42,60,87,.4) 100%), linear-gradient(135deg, #670d10 0%,#092756 100%); - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3E1D6D', endColorstr='#092756',GradientType=1 ); -} -.login { - position: absolute; - top: 50%; - left: 50%; - margin: -150px 0 0 -150px; - width:300px; - height:300px; -} -.login h1 { color: #fff; text-shadow: 0 0 10px rgba(0,0,0,0.3); letter-spacing:1px; text-align:center; } - -input { - width: 100%; - margin-bottom: 10px; - background: rgba(0,0,0,0.3); - border: none; - outline: none; - padding: 10px; - font-size: 13px; - color: #fff; - text-shadow: 1px 1px 1px rgba(0,0,0,0.3); - border: 1px solid rgba(0,0,0,0.3); - border-radius: 4px; - box-shadow: inset 0 -5px 45px rgba(100,100,100,0.2), 0 1px 1px rgba(255,255,255,0.2); - -webkit-transition: box-shadow .5s ease; - -moz-transition: box-shadow .5s ease; - -o-transition: box-shadow .5s ease; - -ms-transition: box-shadow .5s ease; - transition: box-shadow .5s ease; -} -input:focus { box-shadow: inset 0 -5px 45px rgba(100,100,100,0.4), 0 1px 1px rgba(255,255,255,0.2); } \ No newline at end of file +* { + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; +} + +html, body { + height: 100%; +} + +body { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + position: relative; + background: linear-gradient(135deg, rgba(36, 46, 77, 0.9), rgba(137, 126, 121, 0.9)); + font-family: 'Roboto', helvetica, arial, sans-serif; + font-size: 1.5em; +} +body:before { + content: ''; + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + background-image: url(data:image/png;base64,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); + opacity: .3; +} + +.login-form { + width: 100%; + padding: 2em; + position: relative; + background: rgba(0, 0, 0, 0.15); +} +.login-form:before { + content: ''; + position: absolute; + top: -2px; + left: 0; + height: 2px; + width: 100%; + background: linear-gradient(to right, #35c3c1, #00d6b7); +} +@media screen and (min-width: 600px) { + .login-form { + width: 50vw; + max-width: 15em; + } +} + +.flex-row { + display: flex; + margin-bottom: 1em; +} + +.lf--label { + width: 2em; + display: flex; + align-items: center; + justify-content: center; + background: #f5f6f8; + cursor: pointer; +} + +.lf--input { + flex: 1; + padding: 1em; + border: 0; + color: #8f8f8f; + font-size: 1rem; +} +.lf--input:focus { + outline: none; + transition: -webkit-transform .15s ease; + transition: transform .15s ease; + transition: transform .15s ease, -webkit-transform .15s ease; + -webkit-transform: scale(1.1); + transform: scale(1.1); +} + +.lf--submit { + display: block; + padding: 1em; + width: 100%; + background: linear-gradient(to right, #35c3c1, #00d6b7); + border: 0; + color: #fff; + cursor: pointer; + font-size: .75em; + font-weight: 600; + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.2); +} +.lf--submit:focus { + outline: none; + transition: -webkit-transform .15s ease; + transition: transform .15s ease; + transition: transform .15s ease, -webkit-transform .15s ease; + -webkit-transform: scale(1.1); + transform: scale(1.1); +} + +.lf--forgot { + margin-top: 1em; + color: #00d6b7; + font-size: .65em; + text-align: center; + position: relative; +} + +::-webkit-input-placeholder { + color: #8f8f8f; +} + +:-ms-input-placeholder { + color: #8f8f8f; +} + +::-ms-input-placeholder { + color: #8f8f8f; +} + +::placeholder { + color: #8f8f8f; +} \ No newline at end of file diff --git a/loading-icons/css-animation-ai-loader/README.md b/loading-icons/css-animation-ai-loader/README.md new file mode 100644 index 0000000..0ac738f --- /dev/null +++ b/loading-icons/css-animation-ai-loader/README.md @@ -0,0 +1,3 @@ +# [CSS Animation] AI Loader + +Uses `blur` & `contrast` filter to simulate a gooey effect. diff --git a/loading-icons/css-animation-ai-loader/index.html b/loading-icons/css-animation-ai-loader/index.html new file mode 100644 index 0000000..941f055 --- /dev/null +++ b/loading-icons/css-animation-ai-loader/index.html @@ -0,0 +1,22 @@ + + + + + [CSS Animation] AI Loader + + + + + +

AI Loaderdesign test

+
+
+
+
+
+
+
+
+ + + diff --git a/loading-icons/css-animation-ai-loader/style.css b/loading-icons/css-animation-ai-loader/style.css new file mode 100644 index 0000000..546536b --- /dev/null +++ b/loading-icons/css-animation-ai-loader/style.css @@ -0,0 +1,185 @@ +.loader { + position: relative; + display: -webkit-box; + display: flex; + font-size: 12px; +} +.loader::after { + content: ''; + position: absolute; + top: calc(50% - .15em); + left: -5vw; + height: .3em; + width: calc(100% + 10vw); + border-radius: 50%; + background-color: currentColor; + -webkit-transform: translateZ(0); + transform: translateZ(0); + -webkit-filter: blur(0.05em) contrast(2); + filter: blur(0.05em) contrast(2); + box-shadow: 0 0 1em #ccf, 0 0 2em #ccf; +} + +.o { + position: relative; + left: -42px; + z-index: 1; + width: 1em; + height: 1em; + border-radius: 50%; + background-color: currentColor; + margin-left: 3em; + margin-right: 3em; + -webkit-animation: translateX 1s linear infinite; + animation: translateX 1s linear infinite; + -webkit-filter: blur(0.3em) contrast(5); + filter: blur(0.3em) contrast(5); + box-shadow: 0 0 0.15em, 0 0 1em 0.25em #9999ff, 0 0 3em 1.5em rgba(153, 153, 255, 0.2), 0 0 5em rgba(153, 153, 255, 0.5); +} +.o:first-child { + -webkit-animation-name: translateX, hide-show; + animation-name: translateX, hide-show; + -webkit-animation-timing-function: linear, step-end; + animation-timing-function: linear, step-end; +} +.o:last-child { + -webkit-transform-origin: -99px 50%; + transform-origin: -99px 50%; + -webkit-animation-name: helf-rotate; + animation-name: helf-rotate; + -webkit-animation-timing-function: cubic-bezier(0.25, 0, 0.4, 1.25); + animation-timing-function: cubic-bezier(0.25, 0, 0.4, 1.25); +} +@-webkit-keyframes translateX { + 100% { + -webkit-transform: translateX(84px); + transform: translateX(84px); + } +} +@keyframes translateX { + 100% { + -webkit-transform: translateX(84px); + transform: translateX(84px); + } +} +@-webkit-keyframes helf-rotate { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 50% { + opacity: 1; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); + } + 50.1%, 100% { + opacity: 0; + } +} +@keyframes helf-rotate { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 50% { + opacity: 1; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); + } + 50.1%, 100% { + opacity: 0; + } +} +@-webkit-keyframes hide-show { + 0% { + opacity: 0; + } + 50% { + opacity: 1; + } +} +@keyframes hide-show { + 0% { + opacity: 0; + } + 50% { + opacity: 1; + } +} +.box { + position: relative; + display: -webkit-box; + display: flex; + -webkit-box-flex: 1; + flex: 1; + -webkit-box-pack: center; + justify-content: center; + -webkit-box-align: center; + align-items: center; + flex-wrap: wrap; + overflow: hidden; +} +.box:hover * { +/* -webkit-animation-play-state: paused; + animation-play-state: paused; */ +} +.box:active * { + -webkit-animation-play-state: running; + animation-play-state: running; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +html { + height: 100%; +} + +body { + display: -webkit-box; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + flex-direction: column; + min-height: 100%; + margin: 0; + line-height: 1.4; + color: #fff; + background-color: #000; +} + +.intro { + width: 90%; + max-width: 50rem; + padding-top: .5em; + padding-bottom: 1rem; + margin: 0 auto 1em; + font-size: calc(1rem + 2vmin); + text-transform: capitalize; + text-align: center; + font-family: serif; +} +.intro small { + display: block; + text-align: right; + opacity: .5; + font-style: italic; + text-transform: none; + border-top: 1px dashed rgba(255, 255, 255, 0.75); +} + +.info { + margin: 0; + padding: 1em; + font-size: .9em; + font-style: italic; + font-family: serif; + text-align: right; + opacity: .75; +} +.info a { + color: inherit; +} \ No newline at end of file diff --git a/templates-and-navigation/home-page-design/README.md b/templates-and-navigation/home-page-design/README.md new file mode 100644 index 0000000..9a1cb66 --- /dev/null +++ b/templates-and-navigation/home-page-design/README.md @@ -0,0 +1 @@ +# Home Page Design diff --git a/templates-and-navigation/home-page-design/index.html b/templates-and-navigation/home-page-design/index.html new file mode 100644 index 0000000..fc7ac49 --- /dev/null +++ b/templates-and-navigation/home-page-design/index.html @@ -0,0 +1,73 @@ + + + + + Home Page Design + + + + + +
+
+ + +
+
    +
  • +
  • +
  • +
  • +
+
+
+ +
+
+ +
+
+
+ +
+
+
+
+
+ +
+ +
+
+

Welcome to My Page

+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+ + +
+
+
+ +
+ + + + + + diff --git a/templates-and-navigation/home-page-design/script.js b/templates-and-navigation/home-page-design/script.js new file mode 100644 index 0000000..f33d7f0 --- /dev/null +++ b/templates-and-navigation/home-page-design/script.js @@ -0,0 +1,312 @@ +'use strict'; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +(function (factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else if ((typeof module === 'undefined' ? 'undefined' : _typeof(module)) === 'object' && module.exports) { + // Node/CommonJS + module.exports = function (root, jQuery) { + if (jQuery === undefined) { + // require('jQuery') returns a factory that requires window to + // build a jQuery instance, we normalize how we use modules + // that require this pattern but the window provided is a noop + // if it's defined (how jquery works) + if (typeof window !== 'undefined') { + jQuery = require('jquery'); + } else { + jQuery = require('jquery')(root); + } + } + factory(jQuery); + return jQuery; + }; + } else { + // Browser globals + factory(jQuery); + } +})(function ($) { + $.fn.tilt = function (options) { + + /** + * RequestAnimationFrame + */ + var requestTick = function requestTick() { + if (this.ticking) return; + requestAnimationFrame(updateTransforms.bind(this)); + this.ticking = true; + }; + + /** + * Bind mouse movement evens on instance + */ + var bindEvents = function bindEvents() { + var _this = this; + $(this).on('mousemove', mouseMove); + $(this).on('mouseenter', mouseEnter); + if (this.settings.reset) $(this).on('mouseleave', mouseLeave); + if (this.settings.glare) $(window).on('resize', updateGlareSize.bind(_this)); + }; + + /** + * Set transition only on mouse leave and mouse enter so it doesn't influence mouse move transforms + */ + var setTransition = function setTransition() { + var _this2 = this; + + if (this.timeout !== undefined) clearTimeout(this.timeout); + $(this).css({ 'transition': this.settings.speed + 'ms ' + this.settings.easing }); + if (this.settings.glare) this.glareElement.css({ 'transition': 'opacity ' + this.settings.speed + 'ms ' + this.settings.easing }); + this.timeout = setTimeout(function () { + $(_this2).css({ 'transition': '' }); + if (_this2.settings.glare) _this2.glareElement.css({ 'transition': '' }); + }, this.settings.speed); + }; + + /** + * When user mouse enters tilt element + */ + var mouseEnter = function mouseEnter(event) { + this.ticking = false; + $(this).css({ 'will-change': 'transform' }); + setTransition.call(this); + + // Trigger change event + $(this).trigger("tilt.mouseEnter"); + }; + + /** + * Return the x,y position of the mouse on the tilt element + * @returns {{x: *, y: *}} + */ + var getMousePositions = function getMousePositions(event) { + if (typeof event === "undefined") { + event = { + pageX: $(this).offset().left + $(this).outerWidth() / 2, + pageY: $(this).offset().top + $(this).outerHeight() / 2 + }; + } + return { x: event.pageX, y: event.pageY }; + }; + + /** + * When user mouse moves over the tilt element + */ + var mouseMove = function mouseMove(event) { + this.mousePositions = getMousePositions(event); + requestTick.call(this); + }; + + /** + * When user mouse leaves tilt element + */ + var mouseLeave = function mouseLeave() { + setTransition.call(this); + this.reset = true; + requestTick.call(this); + + // Trigger change event + $(this).trigger("tilt.mouseLeave"); + }; + + /** + * Get tilt values + * + * @returns {{x: tilt value, y: tilt value}} + */ + var getValues = function getValues() { + var width = $(this).outerWidth(); + var height = $(this).outerHeight(); + var left = $(this).offset().left; + var top = $(this).offset().top; + var percentageX = (this.mousePositions.x - left) / width; + var percentageY = (this.mousePositions.y - top) / height; + // x or y position inside instance / width of instance = percentage of position inside instance * the max tilt value + var tiltX = (this.settings.maxTilt / 2 - percentageX * this.settings.maxTilt).toFixed(2); + var tiltY = (percentageY * this.settings.maxTilt - this.settings.maxTilt / 2).toFixed(2); + // angle + var angle = Math.atan2(this.mousePositions.x - (left + width / 2), -(this.mousePositions.y - (top + height / 2))) * (180 / Math.PI); + // Return x & y tilt values + return { tiltX: tiltX, tiltY: tiltY, 'percentageX': percentageX * 100, 'percentageY': percentageY * 100, angle: angle }; + }; + + /** + * Update tilt transforms on mousemove + */ + var updateTransforms = function updateTransforms() { + this.transforms = getValues.call(this); + + if (this.reset) { + this.reset = false; + $(this).css('transform', 'perspective(' + this.settings.perspective + 'px) rotateX(0deg) rotateY(0deg)'); + + // Rotate glare if enabled + if (this.settings.glare) { + this.glareElement.css('transform', 'rotate(180deg) translate(-50%, -50%)'); + this.glareElement.css('opacity', '0'); + } + + return; + } else { + $(this).css('transform', 'perspective(' + this.settings.perspective + 'px) rotateX(' + (this.settings.disableAxis === 'x' ? 0 : this.transforms.tiltY) + 'deg) rotateY(' + (this.settings.disableAxis === 'y' ? 0 : this.transforms.tiltX) + 'deg) scale3d(' + this.settings.scale + ',' + this.settings.scale + ',' + this.settings.scale + ')'); + + // Rotate glare if enabled + if (this.settings.glare) { + this.glareElement.css('transform', 'rotate(' + this.transforms.angle + 'deg) translate(-50%, -50%)'); + this.glareElement.css('opacity', '' + this.transforms.percentageY * this.settings.maxGlare / 100); + } + } + + // Trigger change event + $(this).trigger("change", [this.transforms]); + + this.ticking = false; + }; + + /** + * Prepare elements + */ + var prepareGlare = function prepareGlare() { + var glarePrerender = this.settings.glarePrerender; + + // If option pre-render is enabled we assume all html/css is present for an optimal glare effect. + if (!glarePrerender) + // Create glare element + $(this).append('
'); + + // Store glare selector if glare is enabled + this.glareElementWrapper = $(this).find(".js-tilt-glare"); + this.glareElement = $(this).find(".js-tilt-glare-inner"); + + // Remember? We assume all css is already set, so just return + if (glarePrerender) return; + + // Abstracted re-usable glare styles + var stretch = { + 'position': 'absolute', + 'top': '0', + 'left': '0', + 'width': '100%', + 'height': '100%' + }; + + // Style glare wrapper + this.glareElementWrapper.css(stretch).css({ + 'overflow': 'hidden', + 'pointer-events': 'none' + }); + + // Style glare element + this.glareElement.css({ + 'position': 'absolute', + 'top': '50%', + 'left': '50%', + 'background-image': 'linear-gradient(0deg, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 100%)', + 'width': '' + $(this).outerWidth() * 2, + 'height': '' + $(this).outerWidth() * 2, + 'transform': 'rotate(180deg) translate(-50%, -50%)', + 'transform-origin': '0% 0%', + 'opacity': '0' + }); + }; + + /** + * Update glare on resize + */ + var updateGlareSize = function updateGlareSize() { + this.glareElement.css({ + 'width': '' + $(this).outerWidth() * 2, + 'height': '' + $(this).outerWidth() * 2 + }); + }; + + /** + * Public methods + */ + $.fn.tilt.destroy = function () { + $(this).each(function () { + $(this).find('.js-tilt-glare').remove(); + $(this).css({ 'will-change': '', 'transform': '' }); + $(this).off('mousemove mouseenter mouseleave'); + }); + }; + + $.fn.tilt.getValues = function () { + var results = []; + $(this).each(function () { + this.mousePositions = getMousePositions.call(this); + results.push(getValues.call(this)); + }); + return results; + }; + + $.fn.tilt.reset = function () { + $(this).each(function () { + var _this3 = this; + + this.mousePositions = getMousePositions.call(this); + this.settings = $(this).data('settings'); + mouseLeave.call(this); + setTimeout(function () { + _this3.reset = false; + }, this.settings.transition); + }); + }; + + /** + * Loop every instance + */ + return this.each(function () { + var _this4 = this; + + /** + * Default settings merged with user settings + * Can be set trough data attributes or as parameter. + * @type {*} + */ + this.settings = $.extend({ + maxTilt: $(this).is('[data-tilt-max]') ? $(this).data('tilt-max') : 20, + perspective: $(this).is('[data-tilt-perspective]') ? $(this).data('tilt-perspective') : 300, + easing: $(this).is('[data-tilt-easing]') ? $(this).data('tilt-easing') : 'cubic-bezier(.03,.98,.52,.99)', + scale: $(this).is('[data-tilt-scale]') ? $(this).data('tilt-scale') : '1', + speed: $(this).is('[data-tilt-speed]') ? $(this).data('tilt-speed') : '400', + transition: $(this).is('[data-tilt-transition]') ? $(this).data('tilt-transition') : true, + disableAxis: $(this).is('[data-tilt-disable-axis]') ? $(this).data('tilt-disable-axis') : null, + axis: $(this).is('[data-tilt-axis]') ? $(this).data('tilt-axis') : null, + reset: $(this).is('[data-tilt-reset]') ? $(this).data('tilt-reset') : true, + glare: $(this).is('[data-tilt-glare]') ? $(this).data('tilt-glare') : false, + maxGlare: $(this).is('[data-tilt-maxglare]') ? $(this).data('tilt-maxglare') : 1 + }, options); + + // Add deprecation warning & set disableAxis to deprecated axis setting + if (this.settings.axis !== null) { + console.warn('Tilt.js: the axis setting has been renamed to disableAxis. See https://github.com/gijsroge/tilt.js/pull/26 for more information'); + this.settings.disableAxis = this.settings.axis; + } + + this.init = function () { + // Store settings + $(_this4).data('settings', _this4.settings); + + // Prepare element + if (_this4.settings.glare) prepareGlare.call(_this4); + + // Bind events + bindEvents.call(_this4); + }; + + // Init + this.init(); + }); + }; + + /** + * Auto load + */ + $('[data-tilt]').tilt(); + + return true; +}); +//# sourceMappingURL=tilt.jquery.js.map \ No newline at end of file diff --git a/templates-and-navigation/home-page-design/style.css b/templates-and-navigation/home-page-design/style.css new file mode 100644 index 0000000..ff89527 --- /dev/null +++ b/templates-and-navigation/home-page-design/style.css @@ -0,0 +1,388 @@ +* { + margin: 0; + padding: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +body +{ + text-align:center; +} + +.BoardName +{ + color: white; + text-shadow: 1px 2px 3px black; + font-size: 35px; + transform-style: preserve-3d; + transform: translateZ(80px); +} + +.main +{ + height: 100%; + width: 100%; + position: absolute; + top: 0; + left: 0; + z-index: 2; + opacity: 1; +} + +.main-header { + position: fixed; + top: 0; + left: 0; + width: 80px; + bottom: 0; + z-index: 20; + background: #292929; + -webkit-transform: translate3d(0,0,0); +} + +.folio-btn { + position: absolute; + right: 0; + width: 100%; + bottom: 0; + height: 80px; + background: #343434; + border-top: 1px solid rgba(255,255,255,0.1); +} + +.folio-btn-item { + position: absolute; + left: 20px; + width: 40px; + height: 40px; + top: 20px; +} + +.folio-btn-dot { + float: left; + width: 33.3%; + height: 33.3%; + position: relative; +} + +.folio-btn-dot:before { + content: ''; + position: absolute; + left: 50%; + top: 50%; + width: 4px; + height: 4px; + margin: -2px 0 0 -2px; + border-radius: 50%; + transition: all 300ms linear; + transform: scale(1.0); +} + +.folio-btn-dot:before +{ + background: #F68338; +} + +.folio-btn:hover .folio-btn-dot:first-child:before, .folio-btn:hover .folio-btn-dot:nth-child(3):before, .folio-btn:hover .folio-btn-dot:nth-child(4):before, .folio-btn:hover .folio-btn-dot:nth-child(8):before { + transform: scale(1.8); + opacity: 0.5; +} + + +/***social***/ +.header-social { + position: absolute; + bottom: 80px; + width: 100%; + right: 0; + z-index: 20; + padding: 20px 0; + background: #383838; +} + +.header-social:before +{ + background: #F68338; +} + +.header-social:before { + content: ''; + position: absolute; + left: 50%; + top: -3px; + width: 36px; + margin-left: -18px; + height: 6px; +} + +.header-social li { + display: block; + margin-top: 6px; +} + +.header-social li a { + width: 36px; + height: 36px; + line-height: 36px; + display: inline-block; + font-size: 12px; + color: rgba(255, 255, 255, 0.41); + border: 1px solid rgba(255, 255, 255, 0.08); + transition: all 300ms linear; +} + +.header-social li a:hover +{ + color: #F68338; +} + +ul, li +{ + border: none; + outline: 0; + font-weight: inherit; + font-style: inherit; + font-size: 100%; + font-family: inherit; + vertical-align: baseline; + text-decoration: none; + margin: 0; + padding: 0; +} + +ol, ul { + list-style: none; +} + +.main-header:before { + content: ''; + position: absolute; + left: 10px; + width: 60px; + height: 1px; + bottom: 120px; + background: rgba(255,255,255,0.1); +} + +.nav-button { + width: 28px; + height: 50px; + display: inline-block; + cursor: pointer; + position: relative; + top: 120px; +} + +.nav-button span { + width: 100%; + float: left; + margin-bottom: 6px; + height: 2px; + background: #fff; + position: relative; + overflow: hidden; + transition: all 0.2s ease-in-out; +} + +.nav-button .ncs { + width: 70%; +} + +.nav-button .nbs, .nav-button.cmenu:hover .nbs { + width: 100%; +} + +.menu-button-text { + position: absolute; + left: 0; + width: 100%; + bottom: -1px; + color: rgba(255, 255, 255, 0.41); + font-size: 10px; + font-weight: 400; + text-transform: uppercase; + letter-spacing: 2px; +} + +.nav-button span +{ + background: #F68338; +} + +.nav-button:hover span:before { + width: 100%; +} + +.nav-button:hover .ncs, .nav-button:hover .nbs { + width: 100%; +} + +.nav-button span:before { + content: ''; + position: absolute; + left: 0; + top: 0; + width: 0; + height: 100%; + background: #fff; + transition: all 0.2s ease-in-out; +} + + + + +/*****end****/ + + + +#wrapper { + position: absolute; + top: 0; + left: 80px; + right: 0; + bottom: 0; + z-index: 3; +} + +.content-holder { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.hero-wrap, .fs-slider-wrap { + background: #292929; + z-index: 25; +} + +.full-height +{ + height: 100%; +} + +.fl-wrap { + float: left; + width: 100%; + position: relative; +} + + +.impulse-wrap { + background: #232323; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1; + -webkit-perspective: 1000; +} + +.impulse-wrap:before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + + +.mm-parallax { + position: absolute; + top: 100px; + left: 100px; + right: 100px; + bottom: 100px; + z-index: 20; + transform-style: preserve-3d; +} + + +.impulse-wrap .bg, .impulse-wrap .overlay { + box-shadow: 0 20px 25px 0 rgba(18,17,30,.35); +} + +.overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: black; + opacity: 0.4; + z-index: 3; +} + +.bg { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1; + background-size: cover; + background-attachment: scroll; + background-position: center; + background-repeat: repeat; + background-origin: content-box; +} + + + + +.hero-corner { + top: 50px; + right: 50px; + z-index: 21; + border-top: 1px solid; + border-right: 1px solid; +} + +.hero-corner2 { + top: 50px; + left: 50px; + border-top: 1px solid; + border-left: 1px solid; +} + +.hero-corner3 { + bottom: 50px; + right: 50px; + border-bottom: 1px solid; + border-right: 1px solid; +} + +.hero-corner4 { +bottom: 50px; + left: 50px; + z-index: 21; + border-left: 1px solid; + border-bottom: 1px solid; +} + + + +.hero-corner, .hero-corner2, .hero-corner3, .hero-corner4 { + position: absolute; + width: 70px; + height: 70px; + z-index: 21; + border-color: rgba(255,255,255,0.3); +} + + +.fl-wrap { + float: left; + width: 100%; + position: relative; + transform: translateZ(80px) +} + +.hero-wrap-item { + top: 45%; +} \ No newline at end of file diff --git a/web-snippets/canvas-clock/README.md b/web-snippets/canvas-clock/README.md new file mode 100644 index 0000000..d7cb2ae --- /dev/null +++ b/web-snippets/canvas-clock/README.md @@ -0,0 +1,3 @@ +# Canvas Clock + +A clock made whith canvas javascript. diff --git a/web-snippets/canvas-clock/index.html b/web-snippets/canvas-clock/index.html new file mode 100644 index 0000000..6924fd6 --- /dev/null +++ b/web-snippets/canvas-clock/index.html @@ -0,0 +1,15 @@ + + + + + Canvas Clock + + + + + + cccc + + + + diff --git a/web-snippets/canvas-clock/script.js b/web-snippets/canvas-clock/script.js new file mode 100644 index 0000000..469674a --- /dev/null +++ b/web-snippets/canvas-clock/script.js @@ -0,0 +1,54 @@ +var canvas = document.getElementById("canvas"); + var ctx = canvas.getContext("2d"); + + ctx.strokeStyle = '#00ffff'; + ctx.lineWidth = 17; + ctx.shadowBlur= 15; + ctx.shadowColor = '#00ffff' + + function degToRad(degree){ + var factor = Math.PI/180; + return degree*factor; + } + + function renderTime(){ + var now = new Date(); + var today = now.toDateString(); + var time = now.toLocaleTimeString(); + var hrs = now.getHours(); + var min = now.getMinutes(); + var sec = now.getSeconds(); + var mil = now.getMilliseconds(); + var smoothsec = sec+(mil/1000); + var smoothmin = min+(smoothsec/60); + + //Background + gradient = ctx.createRadialGradient(250, 250, 5, 250, 250, 300); + gradient.addColorStop(0, "#03303a"); + gradient.addColorStop(1, "black"); + ctx.fillStyle = gradient; + //ctx.fillStyle = 'rgba(00 ,00 , 00, 1)'; + ctx.fillRect(0, 0, 500, 500); + //Hours + ctx.beginPath(); + ctx.arc(250,250,200, degToRad(270), degToRad((hrs*30)-90)); + ctx.stroke(); + //Minutes + ctx.beginPath(); + ctx.arc(250,250,170, degToRad(270), degToRad((smoothmin*6)-90)); + ctx.stroke(); + //Seconds + ctx.beginPath(); + ctx.arc(250,250,140, degToRad(270), degToRad((smoothsec*6)-90)); + ctx.stroke(); + //Date + ctx.font = "25px Helvetica"; + ctx.fillStyle = 'rgba(00, 255, 255, 1)' + ctx.fillText(today, 175, 250); + //Time + ctx.font = "25px Helvetica Bold"; + ctx.fillStyle = 'rgba(00, 255, 255, 1)'; + ctx.fillText(time+":"+mil, 175, 280); + + } + setInterval(renderTime, 40); \ No newline at end of file diff --git a/web-snippets/canvas-clock/style.css b/web-snippets/canvas-clock/style.css new file mode 100644 index 0000000..395e9a0 --- /dev/null +++ b/web-snippets/canvas-clock/style.css @@ -0,0 +1,6 @@ +body { + background-color: black; +} +#canvas{ + background-color: black; +} \ No newline at end of file diff --git a/web-techniques/background-fade-demo/README.md b/web-techniques/background-fade-demo/README.md new file mode 100644 index 0000000..10cb5d2 --- /dev/null +++ b/web-techniques/background-fade-demo/README.md @@ -0,0 +1,3 @@ +# Background fade demo + +Simple background fade effect using opacity and transition. \ No newline at end of file diff --git a/web-techniques/background-fade-demo/index.html b/web-techniques/background-fade-demo/index.html new file mode 100644 index 0000000..e530284 --- /dev/null +++ b/web-techniques/background-fade-demo/index.html @@ -0,0 +1,19 @@ + + + + + Background fade demo + + + + + + +
+
+ + + + + + diff --git a/web-techniques/background-fade-demo/script.js b/web-techniques/background-fade-demo/script.js new file mode 100644 index 0000000..35f10d1 --- /dev/null +++ b/web-techniques/background-fade-demo/script.js @@ -0,0 +1,6 @@ +var toggle = document.getElementById("toggle"); +var present = document.getElementById("present"); + +toggle.addEventListener("click", function( event ) { + present.classList.toggle("fade"); +}); \ No newline at end of file diff --git a/web-techniques/background-fade-demo/style.css b/web-techniques/background-fade-demo/style.css new file mode 100644 index 0000000..17f1424 --- /dev/null +++ b/web-techniques/background-fade-demo/style.css @@ -0,0 +1,42 @@ +body { + height: 100vh; + width: 100vw; +} + +.past { + background: url("https://raw.githubusercontent.com/huijing/filerepo/gh-pages/bg-home-1965.jpg") 50%; + background-size: cover; + width: 100%; + height: 100%; + position: fixed; +} + +.present { + background: url("https://raw.githubusercontent.com/huijing/filerepo/gh-pages/bg-home-2015.jpg") 50%; + background-size: cover; + width: 100%; + height: 100%; + position: absolute; + z-index: 2; + opacity: 1; + -webkit-transition: opacity 1.5s ease-out; + transition: opacity 1.5s ease-out; +} + +.fade { + opacity: 0; +} + +button { + position: absolute; + z-index: 3; + background: rgba(0, 0, 0, 0.3); + border: 2px solid rgba(255, 255, 255, 0.7); + color: white; + top: 1rem; + padding: 0.5rem; + left: 50%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + cursor: pointer; +} \ No newline at end of file diff --git a/web-techniques/table-simple-filtering/README.md b/web-techniques/table-simple-filtering/README.md new file mode 100644 index 0000000..2deeac5 --- /dev/null +++ b/web-techniques/table-simple-filtering/README.md @@ -0,0 +1,3 @@ +# Table: Simple filtering + + diff --git a/web-techniques/table-simple-filtering/index.html b/web-techniques/table-simple-filtering/index.html new file mode 100644 index 0000000..f7f4892 --- /dev/null +++ b/web-techniques/table-simple-filtering/index.html @@ -0,0 +1,1101 @@ + + + + + Table: Simple filtering + + + + + + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
namecodeemojicategorycldr short namealt namesemoji versionunicode version
grapesU+1F347🍇fruitgrapesgrape1.06.0
melonU+1F348🍈fruitmeloncantaloupe, honeydew, muskmelon1.06.0
watermelonU+1F349🍉fruitwatermelon 1.06.0
tangerineU+1F34A🍊fruittangerinemandarin, orange1.06.0
lemonU+1F34B🍋fruitlemonlemonade1.06.0
bananaU+1F34C🍌fruitbananaplantain1.06.0
pineappleU+1F34D🍍fruitpineapple 1.06.0
mangoU+1F96D🥭fruit⊛ mango 11.011.0
red appleU+1F34E🍎fruitred applered delicious apple1.06.0
green appleU+1F34F🍏fruitgreen applegolden delicious apple, granny smith apple1.06.0
pearU+1F350🍐fruitpear 1.06.0
peachU+1F351🍑fruitpeachbottom, butt1.06.0
cherriesU+1F352🍒fruitcherriescherry, wild cherry1.06.0
strawberryU+1F353🍓fruitstrawberry 1.06.0
kiwifruitU+1F95D🥝fruitkiwi fruitchinese gooseberry, kiwi3.09.0
tomatoU+1F345🍅fruittomato 1.06.0
coconutU+1F965🥥fruitcoconutcocoanut5.010.0
avocadoU+1F951🥑vegetableavocado 3.09.0
eggplantU+1F346🍆vegetableeggplanteggplant, phallic, purple vegetable1.06.0
potatoU+1F954🥔vegetablepotatobaked potato, idaho potato3.09.0
carrotU+1F955🥕vegetablecarrot 3.09.0
cornU+1F33D🌽vegetableear of corncorn, corn on the cob1.06.0
hot pepperU+1F336🌶vegetablehot pepperchili pepper, spicy1.07.0
cucumberU+1F952🥒vegetablecucumbergherkin, pickle3.09.0
leafy greenU+1F96C🥬vegetable⊛ leafy green 11.011.0
broccoliU+1F966🥦vegetablebroccoli 5.010.0
mushroomU+1F344🍄vegetablemushroomshroom, toadstool1.06.0
peanutsU+1F95C🥜vegetablepeanuts 3.09.0
chestnutU+1F330🌰vegetablechestnutacorn, nut1.06.0
breadU+1F35E🍞preparedbreadloaf of bread1.06.0
croissantU+1F950🥐preparedcroissant 3.09.0
french breadU+1F956🥖preparedbaguette bread 3.09.0
pretzelU+1F968🥨preparedpretzel 5.010.0
bagelU+1F96F🥯prepared⊛ bagel 11.011.0
pancakesU+1F95E🥞preparedpancakescrêpes3.09.0
cheeseU+1F9C0🧀preparedcheese wedgecheese1.08.0
beefU+1F356🍖preparedmeat on boneano niku, barbecue, bbq, manga meat1.06.0
chickenU+1F357🍗preparedpoultry legchicken drumstick, turkey leg1.06.0
steakU+1F969🥩preparedcut of meatsteak5.010.0
baconU+1F953🥓preparedbacon 3.09.0
hamburgerU+1F354🍔preparedhamburgerburger, cheeseburger1.06.0
french friesU+1F35F🍟preparedfrench friesfries, mcdonalds fries1.06.0
pizzaU+1F355🍕preparedpizzapepperoni pizza, pizza1.06.0
hotdogU+1F32D🌭preparedhot doghotdog, sausage1.08.0
sandwichU+1F96A🥪preparedsandwich 5.010.0
tacoU+1F32E🌮preparedtaco 1.08.0
burritoU+1F32F🌯preparedburritowrap1.08.0
pita pocketU+1F959🥙preparedstuffed flatbreaddoner kebab, shawarma, souvlaki3.09.0
eggU+1F95A🥚preparedegg 3.09.0
fried eggU+1F373🍳preparedcookingbreakfast, fried egg, frying pan1.06.0
casseroleU+1F958🥘preparedshallow pan of foodpaella3.09.0
stewU+1F372🍲preparedpot of foodbowl of food1.06.0
soupU+1F963🥣preparedbowl with spooncereal bowl5.010.0
saladU+1F957🥗preparedgreen salad 3.09.0
popcornU+1F37F🍿preparedpopcornpopping corn1.08.0
saltU+1F9C2🧂prepared⊛ salt 11.011.0
canned soupU+1F96B🥫preparedcanned food 5.010.0
bento boxU+1F371🍱asianbento boxlunch box1.06.0
rice crackersU+1F358🍘asianrice cracker 1.06.0
onigiriU+1F359🍙asianrice ballnori, triangle rice1.06.0
riceU+1F35A🍚asiancooked riceboiled rice, bowl of rice, rice, steamed rice1.06.0
curry riceU+1F35B🍛asiancurry ricecurry, indian food1.06.0
noodlesU+1F35C🍜asiansteaming bowlnoodles, noodles with chopsticks, ramen1.06.0
spaghettiU+1F35D🍝asianspaghettipasta, spaghetti bolognese1.06.0
sweet potatoU+1F360🍠asianroasted sweet potatopotato, sweet potato, yam1.06.0
odenU+1F362🍢asianodenkebab, skewer1.06.0
sushiU+1F363🍣asiansushisashimi, seafood1.06.0
fried shrimpU+1F364🍤asianfried shrimpebi furai, fried prawn, tempura1.06.0
fish cakeU+1F365🍥asianfish cake with swirlfishcake, narutomaki, pink swirl1.06.0
moon cakeU+1F96E🥮asian⊛ moon cake 11.011.0
dangoU+1F361🍡asiandangodessert stick, pink white green balls1.06.0
dumplingU+1F95F🥟asiandumplingempanada, gyōza, pierogi5.010.0
fortune cookieU+1F960🥠asianfortune cookie 5.010.0
chinese takeoutU+1F961🥡asiantakeout boxchinese food box, oyster pail5.010.0
crabU+1F980🦀marinecrabcrab cancer, red crab1.08.0
lobsterU+1F99E🦞marine⊛ lobster 11.011.0
shrimpU+1F990🦐marineshrimp 3.09.0
squidU+1F991🦑marinesquid 3.09.0
soft-serveU+1F366🍦sweetsoft ice creammr whippy, soft serve1.06.0
shaved iceU+1F367🍧sweetshaved icesnow cone1.06.0
ice creamU+1F368🍨sweetice creambowl of ice cream, dessert1.06.0
doughnutU+1F369🍩sweetdoughnutdonut1.06.0
cookieU+1F36A🍪sweetcookiebiscuit, chocolate cookie1.06.0
birthday cakeU+1F382🎂sweetbirthday cakebirthday, cake, cake with candles1.06.0
shortcakeU+1F370🍰sweetshortcakecake, piece of cake, strawberry shortcake1.06.0
cupcakeU+1F9C1🧁sweet⊛ cupcake 11.011.0
pieU+1F967🥧sweetpie 5.010.0
chocolate barU+1F36B🍫sweetchocolate barblock of chocolate1.06.0
candyU+1F36C🍬sweetcandylolly, sweet1.06.0
lollipopU+1F36D🍭sweetlollipopandroid lollipop, lollypop1.06.0
custard flanU+1F36E🍮sweetcustardcreme caramel, dessert, flan, pudding1.06.0
honeyU+1F36F🍯sweethoney pothoney, pot1.06.0
baby formulaU+1F37C🍼drinkbaby bottlebottle feeding1.06.0
milkU+1F95B🥛drinkglass of milk 3.09.0
coffeeU+2615drinkhot beveragecoffee, hot chocolate, tea1.04.0
green teaU+1F375🍵drinkteacup without handlegreen tea, matcha, matcha green tea1.06.0
sakeU+1F376🍶drinksakebottle, rice wine1.06.0
champagneU+1F37E🍾drinkbottle with popping corkcelebration, champagne, sparking wine1.08.0
red wineU+1F377🍷drinkwine glassalcohol, red wine, wine1.06.0
martiniU+1F378🍸drinkcocktail glassmartini1.06.0
tropical drinkU+1F379🍹drinktropical drinkfruit punch, tiki cocktail, tiki drink1.06.0
beerU+1F37A🍺drinkbeer mugbeer stein, lager1.06.0
2 beersU+1F37B🍻drinkclinking beer mugsbeers, cheers1.06.0
2 glasses of champagneU+1F942🥂drinkclinking glassescelebration, champagne glasses, cheers3.09.0
whiskeyU+1F943🥃drinktumbler glassbourbon, rum, whiskey, whisky3.09.0
soft drinkU+1F964🥤drinkcup with strawmilkshake, soda, soft drink5.010.0
+
+
+ + + + + diff --git a/web-techniques/table-simple-filtering/script.js b/web-techniques/table-simple-filtering/script.js new file mode 100644 index 0000000..f245509 --- /dev/null +++ b/web-techniques/table-simple-filtering/script.js @@ -0,0 +1,18 @@ +const searchInput = document.getElementById('searchInput'); +const table = document.getElementById('filterTable'); +const trArray = Array.prototype.slice.call(table.querySelectorAll('tbody tr')); + +const filterTable = event => { + const searchTerm = event.target.value.toLowerCase(); + trArray.forEach(row => { + row.classList.add('hidden'); + const tdArray = Array.prototype.slice.call(row.getElementsByTagName('td')); + tdArray.forEach(cell => { + if (cell.innerText.toLowerCase().indexOf(searchTerm) > -1) { + row.classList.remove('hidden'); + } + }); + }); +}; + +searchInput.addEventListener('keyup', filterTable, false); \ No newline at end of file diff --git a/web-techniques/table-simple-filtering/style.css b/web-techniques/table-simple-filtering/style.css new file mode 100644 index 0000000..3d96e54 --- /dev/null +++ b/web-techniques/table-simple-filtering/style.css @@ -0,0 +1,50 @@ +main { + display: -webkit-box; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + flex-direction: column; + padding: 1em; + -webkit-box-align: center; + align-items: center; +} + +.table-wrapper { + overflow: auto; + max-width: 100%; + background: -webkit-gradient(linear, left top, right top, color-stop(30%, white), to(rgba(255, 255, 255, 0))), -webkit-gradient(linear, left top, right top, from(rgba(255, 255, 255, 0)), color-stop(70%, white)) 0 100%, radial-gradient(farthest-side at 0% 50%, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0)), radial-gradient(farthest-side at 100% 50%, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0)) 0 100%; + background: linear-gradient(to right, white 30%, rgba(255, 255, 255, 0)), linear-gradient(to right, rgba(255, 255, 255, 0), white 70%) 0 100%, radial-gradient(farthest-side at 0% 50%, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0)), radial-gradient(farthest-side at 100% 50%, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0)) 0 100%; + background-repeat: no-repeat; + background-color: white; + background-size: 40px 100%, 40px 100%, 14px 100%, 14px 100%; + background-position: 0 0, 100%, 0 0, 100%; + background-attachment: local, local, scroll, scroll; +} + +tr { + border-bottom: 1px solid; +} + +th { + background-color: #555; + color: #fff; + white-space: nowrap; + cursor: pointer; +} + +th, +td { + text-align: left; + padding: 0.5em 1em; +} + +input[type=search] { + border: 1px solid; + font-size: initial; + margin-bottom: 1em; + padding: 0.25em; +} + +.hidden { + display: none; +} \ No newline at end of file diff --git a/web-techniques/table-simple-pagination/README.md b/web-techniques/table-simple-pagination/README.md new file mode 100644 index 0000000..82382b6 --- /dev/null +++ b/web-techniques/table-simple-pagination/README.md @@ -0,0 +1,2 @@ +# Table: Simple pagination + diff --git a/web-techniques/table-simple-pagination/index.html b/web-techniques/table-simple-pagination/index.html new file mode 100644 index 0000000..0710cb7 --- /dev/null +++ b/web-techniques/table-simple-pagination/index.html @@ -0,0 +1,1103 @@ + + + + + Table: Simple pagination + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
namecodeemojicategorycldr short namealt namesemoji versionunicode version
grapesU+1F347🍇fruitgrapesgrape1.06.0
melonU+1F348🍈fruitmeloncantaloupe, honeydew, muskmelon1.06.0
watermelonU+1F349🍉fruitwatermelon 1.06.0
tangerineU+1F34A🍊fruittangerinemandarin, orange1.06.0
lemonU+1F34B🍋fruitlemonlemonade1.06.0
bananaU+1F34C🍌fruitbananaplantain1.06.0
pineappleU+1F34D🍍fruitpineapple 1.06.0
mangoU+1F96D🥭fruit⊛ mango 11.011.0
red appleU+1F34E🍎fruitred applered delicious apple1.06.0
green appleU+1F34F🍏fruitgreen applegolden delicious apple, granny smith apple1.06.0
+
+
+ + + + + diff --git a/web-techniques/table-simple-pagination/script.js b/web-techniques/table-simple-pagination/script.js new file mode 100644 index 0000000..ba63990 --- /dev/null +++ b/web-techniques/table-simple-pagination/script.js @@ -0,0 +1,104 @@ +let pageList = new Array(); +let currentPage = 1; +const numberPerPage = 12; +const rows = Array.prototype.slice.call(document.querySelectorAll('tbody tr')); +const firstBtn = document.getElementById('first'); +const lastBtn = document.getElementById('last'); +const prevBtn = document.getElementById('prev'); +const nextBtn = document.getElementById('next'); +const numberOfPages = getNumberOfPages(); +const pageNumbers = document.getElementById('pageNumbers'); + +firstBtn.addEventListener('click', firstPage, false); +lastBtn.addEventListener('click', lastPage, false); +prevBtn.addEventListener('click', prevPage, false); +nextBtn.addEventListener('click', nextPage, false); + +window.onload = load(numberOfPages); + +function getNumberOfPages() { + return Math.ceil(rows.length / numberPerPage); +} + +function generatePageNumbers(pageCount) { + for (let j = 1; j <= pageCount; j++) { + const pageNumber = document.createElement('span'); + pageNumber.innerHTML = j; + pageNumber.classList.add('page-number'); + pageNumbers.appendChild(pageNumber); + if (j === currentPage) { + pageNumber.classList.add('active'); + } + pageNumber.addEventListener('click', jumpToPage, false); + } +} + +function jumpToPage(event) { + currentPage = event.target.innerHTML; + loadRows(); + activePageNum(currentPage); +} + +function activePageNum(activePage) { + const pageNumbers = Array.prototype.slice.call(document.querySelectorAll('.page-number')); + pageNumbers.forEach(function (pageNumber) { + if (parseInt(pageNumber.innerHTML) === parseInt(activePage)) { + pageNumber.classList.add('active'); + } else { + pageNumber.classList.remove('active'); + } + }); +} + +function nextPage() { + currentPage = +currentPage + 1; + loadRows(); + activePageNum(currentPage); +} + +function prevPage() { + currentPage -= 1; + loadRows(); + activePageNum(currentPage); +} + +function firstPage() { + currentPage = 1; + loadRows(); + activePageNum(currentPage); +} + +function lastPage() { + currentPage = numberOfPages; + loadRows(); + activePageNum(currentPage); +} + +function loadRows() { + const start = (currentPage - 1) * numberPerPage; + const end = start + numberPerPage; + for (let i = 0; i < pageList.length; i++) { + pageList[i].classList.add('hidden'); + } + pageList = rows.slice(start, end); + drawRows(); + buttonStates(); +} + +function drawRows() { + for (let i = 0; i < pageList.length; i++) { + pageList[i].classList.remove('hidden'); + } +} + +function buttonStates() { + document.getElementById('next').disabled = currentPage == numberOfPages ? true : false; + document.getElementById('prev').disabled = currentPage == 1 ? true : false; + document.getElementById('first').disabled = currentPage == 1 ? true : false; + document.getElementById('last').disabled = currentPage == numberOfPages ? true : false; +} + +function load(pageCount) { + generatePageNumbers(numberOfPages); + loadRows(); +} \ No newline at end of file diff --git a/web-techniques/table-simple-pagination/style.css b/web-techniques/table-simple-pagination/style.css new file mode 100644 index 0000000..04a426c --- /dev/null +++ b/web-techniques/table-simple-pagination/style.css @@ -0,0 +1,100 @@ +main { + display: -webkit-box; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + flex-direction: column; + padding: 1em; + -webkit-box-align: center; + align-items: center; +} + +.table-wrapper { + overflow: auto; + max-width: 100%; + background: -webkit-gradient(linear, left top, right top, color-stop(30%, white), to(rgba(255, 255, 255, 0))), -webkit-gradient(linear, left top, right top, from(rgba(255, 255, 255, 0)), color-stop(70%, white)) 0 100%, radial-gradient(farthest-side at 0% 50%, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0)), radial-gradient(farthest-side at 100% 50%, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0)) 0 100%; + background: linear-gradient(to right, white 30%, rgba(255, 255, 255, 0)), linear-gradient(to right, rgba(255, 255, 255, 0), white 70%) 0 100%, radial-gradient(farthest-side at 0% 50%, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0)), radial-gradient(farthest-side at 100% 50%, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0)) 0 100%; + background-repeat: no-repeat; + background-color: white; + background-size: 40px 100%, 40px 100%, 14px 100%, 14px 100%; + background-position: 0 0, 100%, 0 0, 100%; + background-attachment: local, local, scroll, scroll; +} + +tr { + border-bottom: 1px solid; +} + +th { + background-color: #555; + color: #fff; +} + +th, +td { + text-align: left; + padding: 0.5em 1em; + white-space: nowrap; +} + +.hidden { + display: none; +} + +button { + font-size: inherit; + margin: 0 0.25em; + padding: 0.25em 0.5em; + background-color: #555; + color: #fff; + border: 0; + -webkit-transition: background-color 0.4s, color 0.4s; + transition: background-color 0.4s, color 0.4s; +} +button:hover { + background-color: #bbb; + color: #000; +} + +.pagination { + display: -webkit-box; + display: flex; + -webkit-box-pack: center; + justify-content: center; + -webkit-box-align: center; + align-items: center; + margin-bottom: 1em; + flex-wrap: wrap; +} + +.page-numbers { + margin: 1em 1em 0; +} + +.page-number { + padding: 0.5em; + opacity: 0.5; + cursor: pointer; +} + +.active { + opacity: 1; +} + +@media screen and (min-width: 540px) { + .backward { + -webkit-box-ordinal-group: 2; + order: 1; + } + + .page-numbers { + -webkit-box-ordinal-group: 3; + order: 2; + margin-top: 0; + } + + .forward { + -webkit-box-ordinal-group: 4; + order: 3; + } +} \ No newline at end of file diff --git a/web-techniques/table-simple-sorting/README.md b/web-techniques/table-simple-sorting/README.md new file mode 100644 index 0000000..2d6101d --- /dev/null +++ b/web-techniques/table-simple-sorting/README.md @@ -0,0 +1,3 @@ +# #Table: Simple sorting + + diff --git a/web-techniques/table-simple-sorting/index.html b/web-techniques/table-simple-sorting/index.html new file mode 100644 index 0000000..e19e9dc --- /dev/null +++ b/web-techniques/table-simple-sorting/index.html @@ -0,0 +1,1096 @@ + + + + + Table: Simple sorting + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
namecodeemojicategorycldr short namealt namesemoji versionunicode version
grapesU+1F347🍇fruitgrapesgrape1.06.0
melonU+1F348🍈fruitmeloncantaloupe, honeydew, muskmelon1.06.0
watermelonU+1F349🍉fruitwatermelon 1.06.0
tangerineU+1F34A🍊fruittangerinemandarin, orange1.06.0
lemonU+1F34B🍋fruitlemonlemonade1.06.0
bananaU+1F34C🍌fruitbananaplantain1.06.0
pineappleU+1F34D🍍fruitpineapple 1.06.0
mangoU+1F96D🥭fruit⊛ mango 11.011.0
red appleU+1F34E🍎fruitred applered delicious apple1.06.0
green appleU+1F34F🍏fruitgreen applegolden delicious apple, granny smith apple1.06.0
pearU+1F350🍐fruitpear 1.06.0
peachU+1F351🍑fruitpeachbottom, butt1.06.0
cherriesU+1F352🍒fruitcherriescherry, wild cherry1.06.0
strawberryU+1F353🍓fruitstrawberry 1.06.0
kiwifruitU+1F95D🥝fruitkiwi fruitchinese gooseberry, kiwi3.09.0
tomatoU+1F345🍅fruittomato 1.06.0
coconutU+1F965🥥fruitcoconutcocoanut5.010.0
avocadoU+1F951🥑vegetableavocado 3.09.0
eggplantU+1F346🍆vegetableeggplanteggplant, phallic, purple vegetable1.06.0
potatoU+1F954🥔vegetablepotatobaked potato, idaho potato3.09.0
carrotU+1F955🥕vegetablecarrot 3.09.0
cornU+1F33D🌽vegetableear of corncorn, corn on the cob1.06.0
hot pepperU+1F336🌶vegetablehot pepperchili pepper, spicy1.07.0
cucumberU+1F952🥒vegetablecucumbergherkin, pickle3.09.0
leafy greenU+1F96C🥬vegetable⊛ leafy green 11.011.0
broccoliU+1F966🥦vegetablebroccoli 5.010.0
mushroomU+1F344🍄vegetablemushroomshroom, toadstool1.06.0
peanutsU+1F95C🥜vegetablepeanuts 3.09.0
chestnutU+1F330🌰vegetablechestnutacorn, nut1.06.0
breadU+1F35E🍞preparedbreadloaf of bread1.06.0
croissantU+1F950🥐preparedcroissant 3.09.0
french breadU+1F956🥖preparedbaguette bread 3.09.0
pretzelU+1F968🥨preparedpretzel 5.010.0
bagelU+1F96F🥯prepared⊛ bagel 11.011.0
pancakesU+1F95E🥞preparedpancakescrêpes3.09.0
cheeseU+1F9C0🧀preparedcheese wedgecheese1.08.0
beefU+1F356🍖preparedmeat on boneano niku, barbecue, bbq, manga meat1.06.0
chickenU+1F357🍗preparedpoultry legchicken drumstick, turkey leg1.06.0
steakU+1F969🥩preparedcut of meatsteak5.010.0
baconU+1F953🥓preparedbacon 3.09.0
hamburgerU+1F354🍔preparedhamburgerburger, cheeseburger1.06.0
french friesU+1F35F🍟preparedfrench friesfries, mcdonalds fries1.06.0
pizzaU+1F355🍕preparedpizzapepperoni pizza, pizza1.06.0
hotdogU+1F32D🌭preparedhot doghotdog, sausage1.08.0
sandwichU+1F96A🥪preparedsandwich 5.010.0
tacoU+1F32E🌮preparedtaco 1.08.0
burritoU+1F32F🌯preparedburritowrap1.08.0
pita pocketU+1F959🥙preparedstuffed flatbreaddoner kebab, shawarma, souvlaki3.09.0
eggU+1F95A🥚preparedegg 3.09.0
fried eggU+1F373🍳preparedcookingbreakfast, fried egg, frying pan1.06.0
casseroleU+1F958🥘preparedshallow pan of foodpaella3.09.0
stewU+1F372🍲preparedpot of foodbowl of food1.06.0
soupU+1F963🥣preparedbowl with spooncereal bowl5.010.0
saladU+1F957🥗preparedgreen salad 3.09.0
popcornU+1F37F🍿preparedpopcornpopping corn1.08.0
saltU+1F9C2🧂prepared⊛ salt 11.011.0
canned soupU+1F96B🥫preparedcanned food 5.010.0
bento boxU+1F371🍱asianbento boxlunch box1.06.0
rice crackersU+1F358🍘asianrice cracker 1.06.0
onigiriU+1F359🍙asianrice ballnori, triangle rice1.06.0
riceU+1F35A🍚asiancooked riceboiled rice, bowl of rice, rice, steamed rice1.06.0
curry riceU+1F35B🍛asiancurry ricecurry, indian food1.06.0
noodlesU+1F35C🍜asiansteaming bowlnoodles, noodles with chopsticks, ramen1.06.0
spaghettiU+1F35D🍝asianspaghettipasta, spaghetti bolognese1.06.0
sweet potatoU+1F360🍠asianroasted sweet potatopotato, sweet potato, yam1.06.0
odenU+1F362🍢asianodenkebab, skewer1.06.0
sushiU+1F363🍣asiansushisashimi, seafood1.06.0
fried shrimpU+1F364🍤asianfried shrimpebi furai, fried prawn, tempura1.06.0
fish cakeU+1F365🍥asianfish cake with swirlfishcake, narutomaki, pink swirl1.06.0
moon cakeU+1F96E🥮asian⊛ moon cake 11.011.0
dangoU+1F361🍡asiandangodessert stick, pink white green balls1.06.0
dumplingU+1F95F🥟asiandumplingempanada, gyōza, pierogi5.010.0
fortune cookieU+1F960🥠asianfortune cookie 5.010.0
chinese takeoutU+1F961🥡asiantakeout boxchinese food box, oyster pail5.010.0
crabU+1F980🦀marinecrabcrab cancer, red crab1.08.0
lobsterU+1F99E🦞marine⊛ lobster 11.011.0
shrimpU+1F990🦐marineshrimp 3.09.0
squidU+1F991🦑marinesquid 3.09.0
soft-serveU+1F366🍦sweetsoft ice creammr whippy, soft serve1.06.0
shaved iceU+1F367🍧sweetshaved icesnow cone1.06.0
ice creamU+1F368🍨sweetice creambowl of ice cream, dessert1.06.0
doughnutU+1F369🍩sweetdoughnutdonut1.06.0
cookieU+1F36A🍪sweetcookiebiscuit, chocolate cookie1.06.0
birthday cakeU+1F382🎂sweetbirthday cakebirthday, cake, cake with candles1.06.0
shortcakeU+1F370🍰sweetshortcakecake, piece of cake, strawberry shortcake1.06.0
cupcakeU+1F9C1🧁sweet⊛ cupcake 11.011.0
pieU+1F967🥧sweetpie 5.010.0
chocolate barU+1F36B🍫sweetchocolate barblock of chocolate1.06.0
candyU+1F36C🍬sweetcandylolly, sweet1.06.0
lollipopU+1F36D🍭sweetlollipopandroid lollipop, lollypop1.06.0
custard flanU+1F36E🍮sweetcustardcreme caramel, dessert, flan, pudding1.06.0
honeyU+1F36F🍯sweethoney pothoney, pot1.06.0
baby formulaU+1F37C🍼drinkbaby bottlebottle feeding1.06.0
milkU+1F95B🥛drinkglass of milk 3.09.0
coffeeU+2615drinkhot beveragecoffee, hot chocolate, tea1.04.0
green teaU+1F375🍵drinkteacup without handlegreen tea, matcha, matcha green tea1.06.0
sakeU+1F376🍶drinksakebottle, rice wine1.06.0
champagneU+1F37E🍾drinkbottle with popping corkcelebration, champagne, sparking wine1.08.0
red wineU+1F377🍷drinkwine glassalcohol, red wine, wine1.06.0
martiniU+1F378🍸drinkcocktail glassmartini1.06.0
tropical drinkU+1F379🍹drinktropical drinkfruit punch, tiki cocktail, tiki drink1.06.0
beerU+1F37A🍺drinkbeer mugbeer stein, lager1.06.0
2 beersU+1F37B🍻drinkclinking beer mugsbeers, cheers1.06.0
2 glasses of champagneU+1F942🥂drinkclinking glassescelebration, champagne glasses, cheers3.09.0
whiskeyU+1F943🥃drinktumbler glassbourbon, rum, whiskey, whisky3.09.0
soft drinkU+1F964🥤drinkcup with strawmilkshake, soda, soft drink5.010.0
+
+
+ + + + + diff --git a/web-techniques/table-simple-sorting/script.js b/web-techniques/table-simple-sorting/script.js new file mode 100644 index 0000000..78bbc4e --- /dev/null +++ b/web-techniques/table-simple-sorting/script.js @@ -0,0 +1,58 @@ +const tableData = document.getElementById('tableData'); +const thead = tableData.previousElementSibling; +const rows = [...tableData.rows]; +const orders = [1, 1, 1, 1, 1, 1, 1, 1]; + +const sort = (header, col, type) => { + let rowCount = rows.length; + rows.sort((a, b) => { + if (type === 'text') { + let i = a.children[col].firstChild.nodeValue, + j = b.children[col].firstChild.nodeValue; + return i === j ? 0 : i > j ? orders[col] : -orders[col]; + } else if (type === 'number') { + let i = parseInt(a.children[col].firstChild.nodeValue), + j = parseInt(b.children[col].firstChild.nodeValue); + return i === j ? 0 : i > j ? orders[col] : -orders[col]; + } + }); + orders[col] *= -1; + activeHeader(header); + sortIndicator(header, orders[col]); + while (tableData.lastChild) tableData.lastChild.remove(); + while (rowCount--) tableData.prepend(rows[rowCount]); +}; + +const activeHeader = header => { + const thArray = Array.prototype.slice.call(thead.querySelectorAll('th')); + thArray.forEach(th => { + th.className = ''; + th.removeAttribute('aria-label'); + if (th === header) { + th.classList.add('active'); + } + }); +}; + +const sortIndicator = (header, ordering) => { + if (ordering === 1) { + header.classList.remove('asc'); + header.classList.add('desc'); + header.setAttribute('aria-label', 'sort by ' + header.innerHTML + ' in descending order'); + } else if (ordering === -1) { + header.classList.remove('desc'); + header.classList.add('asc'); + header.setAttribute('aria-label', 'sort by ' + header.innerHTML + ' in ascending order'); + } +}; + +thead.addEventListener( +'click', +event => { + let target = event.target; + let type = target.dataset.type; + if (target.nodeName.toLowerCase() === 'th') { + sort(target, target.cellIndex, type); + } +}, +0); \ No newline at end of file diff --git a/web-techniques/table-simple-sorting/style.css b/web-techniques/table-simple-sorting/style.css new file mode 100644 index 0000000..7ccb535 --- /dev/null +++ b/web-techniques/table-simple-sorting/style.css @@ -0,0 +1,55 @@ +main { + display: -webkit-box; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + flex-direction: column; + padding: 1em; + -webkit-box-align: center; + align-items: center; +} + +.table-wrapper { + overflow: auto; + max-width: 100%; + background: -webkit-gradient(linear, left top, right top, color-stop(30%, white), to(rgba(255, 255, 255, 0))), -webkit-gradient(linear, left top, right top, from(rgba(255, 255, 255, 0)), color-stop(70%, white)) 0 100%, radial-gradient(farthest-side at 0% 50%, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0)), radial-gradient(farthest-side at 100% 50%, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0)) 0 100%; + background: linear-gradient(to right, white 30%, rgba(255, 255, 255, 0)), linear-gradient(to right, rgba(255, 255, 255, 0), white 70%) 0 100%, radial-gradient(farthest-side at 0% 50%, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0)), radial-gradient(farthest-side at 100% 50%, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0)) 0 100%; + background-repeat: no-repeat; + background-color: white; + background-size: 40px 100%, 40px 100%, 14px 100%, 14px 100%; + background-position: 0 0, 100%, 0 0, 100%; + background-attachment: local, local, scroll, scroll; +} + +tr { + border-bottom: 1px solid; +} + +th { + background-color: #555; + color: #fff; + white-space: nowrap; + cursor: pointer; +} + +th, +td { + text-align: left; + padding: 0.5em 1em; +} + +.active { + font-style: italic; +} + +.asc::after { + font-style: normal; + content: "\25B4"; + margin-left: 0.5em; +} + +.desc::after { + font-style: normal; + content: "\25BE"; + margin-left: 0.5em; +} \ No newline at end of file