A Pen by ZaynahGiti on CodePen.
Created
June 16, 2017 04:20
-
-
Save ZaynahGiti/fda0112eaf4dd16b3c6b0d411b9b8012 to your computer and use it in GitHub Desktop.
#DailyCSSImages2: Pomodoro timer ( HTML , CSS , JS )
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
| <div class='wrapper'> | |
| <div class='align-wrap'> | |
| <div class='align'> | |
| <div class='group'> | |
| <div class='left'> | |
| <h3 class='break'>break</h3> | |
| <h2><a id='breakMinus' href="#">-</a><span id='breakMinutes'></span><a id='breakPlus' href="#">+</a></h2> | |
| </div> | |
| <div class='right'> | |
| <h3 class='session'>SESSION</h3> | |
| <h2><a id='sessionMinus' href="#">-</a><span id='sessionMinutes'></span><a id='sessionPlus' href="#">+</a></h2> | |
| </div> | |
| </div> | |
| <div class='clock'> | |
| <h1 class='timer' id='timer'></h1> | |
| <button class='button' id='start'>start</button> | |
| <button class='button left' id='pause'>pause</button> | |
| <button class='button right' id='reset'>reset</button> | |
| <button class='button' id='startBreak'>start</button> | |
| <button class='button left' id='pauseBreak'>pause</button> | |
| <button class='button right' id='resetBreak'>reset</button> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="title"> | |
| <h6>P<span class="yellow-letter">o</span>m<span class="yellow-letter">o</span>d<span class="yellow-letter">o</span>r<span class="yellow-letter">o</span> Timer</h6> | |
| </div> |
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 strict'; | |
| var countdown; | |
| var delay = 1000; | |
| var session = 25; | |
| var rest = 5; | |
| var sessionSeconds = session * 60; | |
| var restSeconds = rest * 60; | |
| var audioSession = new Audio('http://www.oringz.com/oringz-uploads/sounds-948-just-like-magic.mp3'); | |
| var audioBreak = new Audio('http://www.oringz.com/oringz-uploads/sounds-882-solemn.mp3'); | |
| var sessionMinutes = document.getElementById('sessionMinutes'), | |
| sessionMinus = document.getElementById('sessionMinus'), | |
| sessionPlus = document.getElementById('sessionPlus'), | |
| breakMinutes = document.getElementById('breakMinutes'), | |
| breakMinus = document.getElementById('breakMinus'), | |
| breakPlus = document.getElementById('breakPlus'), | |
| timer = document.getElementById('timer'), | |
| startSessionButton = document.getElementById('start'), | |
| pauseSessionButton = document.getElementById('pause'), | |
| resetSessionButton = document.getElementById('reset'), | |
| startBreakButton = document.getElementById('startBreak'), | |
| pauseBreakButton = document.getElementById('pauseBreak'), | |
| resetBreakButton = document.getElementById('resetBreak'); | |
| sessionMinutes.innerHTML = ' ' + session + ' '; | |
| breakMinutes.innerHTML = ' ' + rest + ' '; | |
| timer.innerHTML = session + ':00'; | |
| displaySession('', 'none', 'none'); | |
| displayBreak('none', 'none', 'none'); | |
| function startCountdown(seconds) { | |
| var minutes = parseInt(seconds / 60); | |
| var remainingSeconds = seconds % 60; | |
| if (remainingSeconds < 10) remainingSeconds = '0' + remainingSeconds; | |
| timer.innerHTML = minutes + ':' + remainingSeconds; | |
| } | |
| function startSession() { | |
| audioSession.play(); | |
| timer.innerHTML = 'session'; | |
| clearInterval(countdown); | |
| countdown = setInterval(function() { | |
| startCountdown(sessionSeconds); | |
| if (sessionSeconds === 0) { | |
| clearInterval(countdown); | |
| restSeconds = rest * 60; | |
| displaySession('none', 'none', 'none'); | |
| startBreak(); | |
| } else sessionSeconds--; | |
| }, delay); | |
| displaySession('none', '', ''); | |
| } | |
| function startBreak() { | |
| audioBreak.play(); | |
| timer.innerHTML = 'break'; | |
| clearInterval(countdown); | |
| countdown = setInterval(function() { | |
| startCountdown(restSeconds); | |
| if (restSeconds === 0) { | |
| clearInterval(countdown); | |
| sessionSeconds = session * 60; | |
| displayBreak('none', 'none', 'none'); | |
| startSession(); | |
| } else restSeconds--; | |
| }, delay); | |
| displayBreak('none', '', ''); | |
| } | |
| function pauseSession() { | |
| clearInterval(countdown); | |
| displaySession('', 'none', 'none'); | |
| startSessionButton.innerHTML = 'resume'; | |
| } | |
| function pauseBreak() { | |
| clearInterval(countdown); | |
| displayBreak('', 'none', 'none'); | |
| startBreakButton.innerHTML = 'resume'; | |
| } | |
| function resetSession() { | |
| pauseSession(); | |
| sessionSeconds = session * 60; | |
| timer.innerHTML = session + ':00'; | |
| startSessionButton.innerHTML = 'start'; | |
| } | |
| function resetBreak() { | |
| pauseBreak(); | |
| restSeconds = rest * 60; | |
| timer.innerHTML = rest + ':00'; | |
| startBreakButton.innerHTML = 'start'; | |
| } | |
| function subtractSession() { | |
| session--; | |
| if (session < 0) session = 0; | |
| sessionSeconds = session * 60; | |
| sessionMinutes.innerHTML = ' ' + session + ' '; | |
| } | |
| function subtractBreak() { | |
| rest--; | |
| if (rest < 0) rest = 0; | |
| restSeconds = rest * 60; | |
| breakMinutes.innerHTML = ' ' + rest + ' '; | |
| } | |
| function addSession() { | |
| session++; | |
| sessionSeconds = session * 60; | |
| sessionMinutes.innerHTML = ' ' + session + ' '; | |
| } | |
| function addBreak() { | |
| rest++; | |
| restSeconds = rest * 60; | |
| breakMinutes.innerHTML = ' ' + rest + ' '; | |
| } | |
| function displaySession(start, pause, reset) { | |
| startSessionButton.style.display = start; | |
| pauseSessionButton.style.display = pause; | |
| resetSessionButton.style.display = reset; | |
| } | |
| function displayBreak(start, pause, reset) { | |
| startBreakButton.style.display = start; | |
| pauseBreakButton.style.display = pause; | |
| resetBreakButton.style.display = reset; | |
| } | |
| sessionMinus.addEventListener('click', subtractSession); | |
| sessionPlus.addEventListener('click', addSession); | |
| breakMinus.addEventListener('click', subtractBreak); | |
| breakPlus.addEventListener('click', addBreak); | |
| startSessionButton.addEventListener('click', startSession); | |
| pauseSessionButton.addEventListener('click', pauseSession); | |
| resetSessionButton.addEventListener('click', resetSession); | |
| startBreakButton.addEventListener('click', startBreak); | |
| pauseBreakButton.addEventListener('click', pauseBreak); | |
| resetBreakButton.addEventListener('click', resetBreak); |
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
| body { | |
| background: linear-gradient(to top, #000 0%, #5565fd 50%); | |
| padding: 0; | |
| margin: 0; | |
| font-family: Helvetica, sans-serif; | |
| } | |
| h1, | |
| h2, | |
| h3 { | |
| color: white; | |
| font-family: 'Lato'; | |
| font-weight: 300; | |
| line-height: 1.1; | |
| letter-spacing: 0.025em; | |
| text-transform: uppercase; | |
| padding: 10px 10px; | |
| margin: 0px; | |
| } | |
| a { | |
| color: white; | |
| text-decoration: none; | |
| opacity: 0.9; | |
| } | |
| a:hover { | |
| opacity: 1; | |
| } | |
| .wrapper { | |
| margin: 0 auto; | |
| width: 300px; | |
| height: 100vh; | |
| } | |
| .align-wrap { | |
| width: 100%; | |
| height: 100%; | |
| display: table; | |
| } | |
| .align { | |
| display: table-cell; | |
| vertical-align: middle; | |
| text-align: center; | |
| } | |
| .group { | |
| height: 55px; | |
| } | |
| .left { | |
| float: left; | |
| } | |
| .right { | |
| float: right; | |
| } | |
| .clock { | |
| width: 300px; | |
| height: 300px; | |
| vertical-align: middle; | |
| display: table-cell; | |
| } | |
| .timer { | |
| padding: 110px 0; | |
| font-weight: 400; | |
| font-size: 4em; | |
| } | |
| .button { | |
| width: 70px; | |
| height: 70px; | |
| border: solid thin white; | |
| border-radius:50%; | |
| text-transform: uppercase; | |
| background: #F2B50F; | |
| color: white; | |
| } | |
| .button:hover { | |
| background: #F2B50F; | |
| color: white; | |
| } | |
| .button:focus { | |
| outline: none; | |
| } | |
| .title{ | |
| position:absolute; | |
| height:100px; | |
| left:35%; | |
| color:white; | |
| width: 100%; | |
| bottom:750px; | |
| h6{ | |
| position:absolute; | |
| text-align: center; | |
| font-family: Futura, monospace, sans-serif; | |
| font-size: 4em; | |
| text-shadow: 4px 2px | |
| rgba(0,0,0, .5); | |
| } | |
| } | |
| .yellow-letter { | |
| color: #F2B50F; | |
| text-shadow: none; | |
| } | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment