Created
July 9, 2018 10:42
-
-
Save bishoplee/c01898874153ace470afd04462a2221f to your computer and use it in GitHub Desktop.
ZOkLwE
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
svg(version='1.1', xmlns='http://www.w3.org/2000/svg', xmlns:xlink='http://www.w3.org/1999/xlink', x="0px", y="0px", style="display: none;") | |
symbol#wave | |
path(d='M420,20c21.5-0.4,38.8-2.5,51.1-4.5c13.4-2.2,26.5-5.2,27.3-5.4C514,6.5,518,4.7,528.5,2.7\c7.1-1.3,17.9-2.8,31.5-2.7c0,0,0,0,0,0v20H420z') | |
path(d='M420,20c-21.5-0.4-38.8-2.5-51.1-4.5c-13.4-2.2-26.5-5.2-27.3-5.4C326,6.5,322,4.7,311.5,2.7\C304.3,1.4,293.6-0.1,280,0c0,0,0,0,0,0v20H420z') | |
path(d='M140,20c21.5-0.4,38.8-2.5,51.1-4.5c13.4-2.2,26.5-5.2,27.3-5.4C234,6.5,238,4.7,248.5,2.7\c7.1-1.3,17.9-2.8,31.5-2.7c0,0,0,0,0,0v20H140z') | |
path(d='M140,20c-21.5-0.4-38.8-2.5-51.1-4.5c-13.4-2.2-26.5-5.2-27.3-5.4C46,6.5,42,4.7,31.5,2.7\C24.3,1.4,13.6-0.1,0,0c0,0,0,0,0,0l0,20H140z') | |
.page#page | |
.tracker | |
.tracker_inner#tracker | |
.tracker_item 12:08 | |
.tracker_item 15:10 | |
.tracker_item.tracker_item_active 16:58 | |
.percent | |
.percent_inner | |
.percent_num#count 50 | |
.percent_sign % | |
button.button#button | |
| Drink | |
.water#water | |
svg.water_wave.water_wave_back(viewBox="0 0 560 20") | |
use(xlink:href="#wave") | |
svg.water_wave.water_wave_front(viewBox="0 0 560 20") | |
use(xlink:href="#wave") | |
.water_inner | |
.bubble.bubble_1 | |
.bubble.bubble_2 | |
.bubble.bubble_3 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var btn = document.getElementById('button'), | |
tracker = document.getElementById('tracker'), | |
trackerOffset = 0, | |
page = document.getElementById('page'), | |
water = document.getElementById('water'), | |
cnt = document.getElementById('count'), | |
percent = parseInt(cnt.innerHTML), | |
endValue, diff, interval, isInProgress; | |
btn.addEventListener('click', update); | |
function update() { | |
if (isInProgress) return; | |
btn.removeEventListener('click', update); | |
isInProgress = true; | |
page.classList.add('page_animated'); | |
setTimeout(function(){ | |
page.classList.remove('page_animated'); | |
}, 1000); | |
rotateTracker(); | |
endValue = (percent + 20) % 100; | |
console.log(percent + ' ' + endValue); | |
interval = setInterval(function(){ | |
if ( percent === endValue) { | |
btn.addEventListener('click', update); | |
clearInterval(interval); | |
isInProgress = false; | |
return; | |
} | |
if(endValue - percent > 0) { | |
percent++; | |
} else { | |
percent--; | |
} | |
cnt.innerHTML = percent; | |
water.style.transform = 'translate(0, ' + (100 - percent) + '%)'; | |
water.querySelector('.water_inner').style.height = percent + '%'; | |
isInProgress = false; | |
}, 16); | |
} | |
function getTime() { | |
var time = new Date(Math.random() * 1000000000000), | |
hours = time.getHours(), | |
minutes = time.getMinutes(); | |
if (hours < 10) hours = '0' + hours | |
if (minutes < 10) minutes = '0' + minutes | |
time = hours + ':' + minutes; | |
return time; | |
} | |
function rotateTracker() { | |
var time = getTime(), | |
firstElem = tracker.firstElementChild, | |
computedStyle = getComputedStyle(firstElem), | |
step = computedStyle.height, | |
node = document.createElement('div'); | |
node.className = 'tracker_item tracker_item_active'; | |
node.innerHTML = time; | |
tracker.querySelector('.tracker_item_active').className = 'tracker_item'; | |
trackerOffset = trackerOffset - parseInt(step); | |
console.log(trackerOffset); | |
tracker.style.transform = 'translate( 0, ' + trackerOffset + 'px)'; | |
tracker.appendChild(node); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@use postcss-simple-vars; | |
@use postcss-nested; | |
*, *:before, *:after { | |
box-sizing: border-box; | |
outline: none; | |
} | |
body { | |
background: #f0f6fc; | |
font: 14px/1 'Open Sans', helvetica, sans-serif; | |
-webkit-font-smoothing: antialiased; | |
} | |
.page { | |
height: 480px; | |
width: 280px; | |
position: absolute; | |
top: 50%; | |
left: 50%; | |
transform: translate(-50%, -50%); | |
background: #1e384c; | |
border-radius: 6px; | |
overflow: hidden; | |
&_animated { | |
.button { | |
&:before { | |
animation: button-shadow .25s; | |
} | |
} | |
.bubble { | |
&_1 { | |
animation: bubble-1 .75s linear -.3s; | |
} | |
&_2 { | |
animation: bubble-2 .75s linear; | |
} | |
&_3 { | |
animation: bubble-3 .75s linear; | |
} | |
} | |
} | |
} | |
.button { | |
z-index: 15; | |
position: absolute; | |
width: 50%; | |
bottom: 8%; | |
left: 25%; | |
color: #fff; | |
border: 2px solid #fff; | |
border-radius: 1.5rem; | |
text-align: center; | |
text-transform: uppercase; | |
font-size: 1.2rem; | |
padding: .7rem 0; | |
background: none; | |
font-weight: 600; | |
cursor: pointer; | |
&:before { | |
content: ''; | |
position: absolute; | |
width: 100%; | |
height: 100%; | |
top: 0; | |
left: 0; | |
opacity: 0; | |
border: inherit; | |
border-radius: inherit; | |
} | |
} | |
.percent { | |
color: #fff; | |
position: absolute; | |
top: 0; | |
left: 0; | |
width: 100%; | |
height: 100%; | |
text-align: center; | |
font-weight: lighter; | |
z-index: 10; | |
display: flex; | |
align-items: center; | |
justify-content: center; | |
&_inner { | |
display: inline-block; | |
} | |
&_num { | |
display: inline-block; | |
font-size: 6rem; | |
} | |
&_sign { | |
display: inline-block; | |
font-size: 4rem; | |
} | |
} | |
.water { | |
position: absolute; | |
height: 100%; | |
width: 100%; | |
z-index: 5; | |
bottom: 0; | |
left: 0; | |
background: #32bafa; | |
transform: translate(0, 50%); | |
&__inner { | |
position: absolute; | |
width: 100%; | |
height: 50%; | |
top: 0; | |
left: 0; | |
overflow: hidden; | |
} | |
&_wave { | |
width: 200%; | |
position: absolute; | |
bottom: 100%; | |
&_back { | |
right: 0; | |
fill: #2c7fbe; | |
animation: wave-back 1.4s infinite linear; | |
} | |
&_front { | |
left: 0; | |
fill: #32bafa; | |
margin-bottom: -1px; | |
animation: wave-front .7s infinite linear; | |
} | |
} | |
} | |
.bubble { | |
position: absolute; | |
bottom: 80px; | |
left: 50%; | |
width: 20px; | |
height: 20px; | |
margin-left: -10px; | |
background: #fff; | |
border-radius: 50%; | |
transform: scale(0) translate(0, 0); | |
opacity: 0; | |
&_2 { | |
margin-left: -20px; | |
} | |
} | |
@keyframes wave-front { | |
100% { | |
transform: translate(-50%, 0); | |
} | |
} | |
@keyframes wave-back { | |
100% { | |
transform: translate(50%, 0); | |
} | |
} | |
@keyframes button-shadow { | |
0% { | |
opacity: 1; | |
transform: scale(1); | |
} | |
100% { | |
opacity: 0; | |
transform: scale(1.6); | |
} | |
} | |
@keyframes bubble-1 { | |
0% { | |
opacity: 1; | |
transform: scale(0) translate(0, 0); | |
} | |
25% { | |
transform: scale(.25) translate(20px, -25px); | |
} | |
50% { | |
transform: scale(.5) translate(40px, -50px); | |
} | |
75% { | |
transform: scale(.75) translate(20px, -75px); | |
} | |
100% { | |
transform: scale(1) translate(10px, -100px); | |
} | |
} | |
.tracker { | |
position: absolute; | |
top: 10%; | |
left: 0; | |
width: 100%; | |
color: #fff; | |
text-align: center; | |
height: 74px; | |
overflow: hidden; | |
z-index: 20; | |
&_inner { | |
transition: transform .2s ease-in-out; | |
} | |
&_item { | |
transition: opacity .2s ease-in-out; | |
font-size: 1.1rem; | |
padding-bottom: 10px; | |
opacity: .7; | |
&_active { | |
opacity: 1; | |
} | |
} | |
} | |
@keyframes bubble-2 { | |
0% { | |
opacity: 1; | |
transform: scale(0) translate(-20px, -10px); | |
} | |
25% { | |
transform: scale(.25) translate(-40px, -45px); | |
} | |
50% { | |
transform: scale(.5) translate(-60px, -70px); | |
} | |
75% { | |
transform: scale(.75) translate(-40px, -95px); | |
} | |
100% { | |
transform: scale(1) translate(-30px, -100px); | |
} | |
} | |
@keyframes bubble-3 { | |
0% { | |
opacity: 1; | |
transform: scale(0) translate(0, 0); | |
} | |
25% { | |
transform: scale(.25) translate(0, -20px); | |
} | |
50% { | |
transform: scale(.5) translate(-10px, -40px); | |
} | |
75% { | |
transform: scale(.75) translate(10px, -60px); | |
} | |
100% { | |
transform: scale(1) translate(0, -100px); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment