Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save ZaynahGiti/fda0112eaf4dd16b3c6b0d411b9b8012 to your computer and use it in GitHub Desktop.

Select an option

Save ZaynahGiti/fda0112eaf4dd16b3c6b0d411b9b8012 to your computer and use it in GitHub Desktop.
#DailyCSSImages2: Pomodoro timer ( HTML , CSS , JS )
<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>
'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);
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