parent
9409685c9a
commit
d44baf023d
@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>03 - Colour Flipper</title>
|
||||
<link rel="stylesheet" href="styles.css">
|
||||
<script src="script.js" defer></script>
|
||||
</head>
|
||||
<body>
|
||||
<section id="colour-display">
|
||||
<h1>
|
||||
Background: <span id="current-colour">#fffff</span>
|
||||
</h1>
|
||||
<button id="new-colour-button">New Colour!</button>
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,40 @@
|
||||
const newColourBtnElement = document.getElementById(
|
||||
'new-colour-button'
|
||||
);
|
||||
|
||||
const currentColourElement = document.getElementById(
|
||||
'current-colour'
|
||||
);
|
||||
// 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
|
||||
const hexValues = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F',
|
||||
];
|
||||
|
||||
function getRandomHexValue() {
|
||||
const randomIndexPosition = Math.floor(
|
||||
Math.random() * hexValues.length
|
||||
);
|
||||
|
||||
const randomHexValue = hexValues[randomIndexPosition];
|
||||
|
||||
return randomHexValue;
|
||||
}
|
||||
|
||||
function getRandomHexString(stringLength) {
|
||||
let hexString = '';
|
||||
for (let i = 0; i < stringLength; i++) {
|
||||
hexString += getRandomHexValue();
|
||||
}
|
||||
|
||||
return hexString;
|
||||
}
|
||||
|
||||
newColourBtnElement.addEventListener('click', function () {
|
||||
const randomHexString = '#' + getRandomHexString(6);
|
||||
|
||||
document.body.style.setProperty(
|
||||
'background-color',
|
||||
randomHexString
|
||||
);
|
||||
|
||||
currentColourElement.textContent = randomHexString;
|
||||
});
|
@ -0,0 +1,32 @@
|
||||
body {
|
||||
transition: background-color 0.5s;
|
||||
}
|
||||
|
||||
section#colour-display {
|
||||
font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif;
|
||||
margin: 100px auto;
|
||||
width: 50%;
|
||||
background-color: white;
|
||||
box-shadow: 0 0 30px rgba(0,0,0, 0.5);
|
||||
padding: 4rem;
|
||||
border-radius: .5rem;
|
||||
}
|
||||
|
||||
section#colour-display h1 {
|
||||
font-weight: 900;
|
||||
}
|
||||
|
||||
section#colour-display #new-colour-button {
|
||||
width: 100%;
|
||||
background-color: black;
|
||||
color: white;
|
||||
font-weight: 900;
|
||||
padding: 1rem;
|
||||
border: none;
|
||||
font-size: 1rem;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
section#colour-display #new-colour-button:hover {
|
||||
background-color: #454444;
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>09 - Countdown Timer</title>
|
||||
<link rel="stylesheet" href="styles.css">
|
||||
<script src="script.js" defer></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>CountDown Timer</h1>
|
||||
<div class="container">
|
||||
|
||||
<div class="inputs">
|
||||
<label for="hoursInput">Hours:</label>
|
||||
<input id="hoursInput" type="number" min="0" value="0">
|
||||
|
||||
<label for="minutesInput">Minutes:</label>
|
||||
<input id="minutesInput" type="number" min="0" value="0">
|
||||
|
||||
<label for="secondsInput">Seconds:</label>
|
||||
<input id="secondsInput" type="number" min="0" value="0">
|
||||
|
||||
<button id="startTimer">Start</button>
|
||||
</div>
|
||||
|
||||
<div class="timer">
|
||||
<h2>
|
||||
<div id="hoursOutput"></div>
|
||||
<div id="minutesOutput"></div>
|
||||
<div id="secondsOutput"></span>
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
@ -0,0 +1,59 @@
|
||||
const startTimerButtonElement = document.getElementById('startTimer');
|
||||
const hoursInputElement = document.getElementById('hoursInput');
|
||||
const minutesInputElement = document.getElementById('minutesInput');
|
||||
const secondsInputElement = document.getElementById('secondsInput');
|
||||
|
||||
const hoursOutputElement = document.getElementById('hoursOutput');
|
||||
const minutesOutputElement = document.getElementById('minutesOutput');
|
||||
const secondsOutputElement = document.getElementById('secondsOutput');
|
||||
|
||||
let targetTime;
|
||||
let timerInterval;
|
||||
|
||||
|
||||
const updateTimer = () => {
|
||||
if (targetTime) {
|
||||
const differenceInSeconds = Math.floor(targetTime - Date.now()) / 1000;
|
||||
if (differenceInSeconds < 1) {
|
||||
clearInterval(timerInterval);
|
||||
}
|
||||
|
||||
const hours = Math.floor(differenceInSeconds / 3600);
|
||||
const minutes = Math.floor(differenceInSeconds / 60) % 60;
|
||||
const seconds = Math.floor(differenceInSeconds % 60);
|
||||
|
||||
hoursOutputElement.textContent = `${hours} hours`;
|
||||
minutesOutputElement.textContent = `${minutes} minutes`;
|
||||
secondsOutputElement.textContent = `${seconds} seconds`;
|
||||
}
|
||||
}
|
||||
|
||||
startTimerButtonElement.addEventListener('click', () => {
|
||||
clearInterval(timerInterval);
|
||||
const futureHours = parseInt(hoursInputElement.value);
|
||||
const futureMinutes = parseInt(minutesInputElement.value);
|
||||
const futureSeconds = parseInt(secondsInputElement.value);
|
||||
|
||||
const date = new Date();
|
||||
const currentHours = date.getHours();
|
||||
const currentMinutes = date.getMinutes();
|
||||
const currentSeconds = date.getSeconds();
|
||||
|
||||
date.setHours(currentHours + futureHours);
|
||||
date.setMinutes(futureMinutes + currentMinutes);
|
||||
date.setSeconds(currentSeconds + futureSeconds);
|
||||
|
||||
targetTime = date.getTime();
|
||||
localStorage.setItem('targetTime', targetTime);
|
||||
updateTimer();
|
||||
timerInterval = setInterval(updateTimer, 500);
|
||||
});
|
||||
|
||||
|
||||
const storedTargetTime = localStorage.getItem('targetTime');
|
||||
|
||||
if (storedTargetTime) {
|
||||
targetTime = storedTargetTime;
|
||||
updateTimer();
|
||||
timerInterval = setInterval(updateTimer, 500);
|
||||
}
|
@ -0,0 +1,44 @@
|
||||
html, body{
|
||||
height: 100%;
|
||||
}
|
||||
body{
|
||||
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
||||
margin: 2rem;
|
||||
background-image: url(timer-bg.jpg)
|
||||
}
|
||||
h1{
|
||||
color: whitesmoke;
|
||||
}
|
||||
.container{
|
||||
display: flex;
|
||||
gap: 2rem;
|
||||
box-shadow:0 0 24px 8px rgba(0,0,0,0.2);
|
||||
padding: 1rem;
|
||||
border-radius:.5rem;
|
||||
background-color: whitesmoke;
|
||||
}
|
||||
.inputs{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: .5rem;
|
||||
width: 100px;
|
||||
}
|
||||
.inputs input{
|
||||
padding: .5rem;
|
||||
}
|
||||
.inputs button{
|
||||
border: 0;
|
||||
padding: .5rem 1rem;
|
||||
background-color:lightgray ;
|
||||
cursor: pointer;
|
||||
}
|
||||
.inputs button:hover{
|
||||
background-color: white;
|
||||
}
|
||||
.timer{
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 2rem;
|
||||
}
|
After Width: | Height: | Size: 81 KiB |
@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="styles.css">
|
||||
<script src="script.js" defer ></script>
|
||||
<title>Document</title>
|
||||
</head>
|
||||
<h1>Hello <span>World</span></h1>
|
||||
<body>
|
||||
<button class="btn" >Say hi</button>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,7 @@
|
||||
const btnelement = document.querySelector('button')
|
||||
const spanElement = document.querySelector('span')
|
||||
|
||||
btnelement.addEventListener('click', ()=>{
|
||||
const result = prompt('Enter your name')
|
||||
spanElement.textContent = result
|
||||
})
|
@ -0,0 +1,28 @@
|
||||
h1{
|
||||
font-size: 100px;
|
||||
padding: 10px 10px;
|
||||
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
||||
}
|
||||
span{
|
||||
color: blue;
|
||||
}
|
||||
.btn{
|
||||
width: 200px;
|
||||
height: 50px;
|
||||
font-weight: bold;
|
||||
font-size: 25px;
|
||||
background-color: aquamarine;
|
||||
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
||||
margin-left: 15px;
|
||||
cursor: pointer;
|
||||
border-radius: 3px;
|
||||
box-shadow: 0px 0px 20px 0px rgb(154, 149, 149);
|
||||
}
|
||||
body{
|
||||
margin-left:500px;
|
||||
|
||||
}
|
||||
.btn:hover{
|
||||
background-color: rgb(79, 245, 189);
|
||||
transition: 0.2s ease;
|
||||
}
|
Loading…
Reference in new issue