🌅 New week, new JavaScript!
I continue following the free SuperSimpleDev course. Today I combine JavaScript with CSS. How great is that! So many possibilities to manipulate the design of a website 🎨
My Code
In my first code I have some CSS styled buttons. The way a click can change the styling of a button here is by just removing or adding a class tag. How brilliant is that!
<!DOCTYPE html>
<html>
<head>
<title>DOM Projects</title>
<style>
body {
font-family: Arial;
}
.subscribe-button {
border: none;
background-color: black;
color: white;
padding: 10px 15px;
font-weight: bold;
border-radius: 50px;
cursor: pointer;
margin-bottom: 50px;
}
.is-subscribed {
background-color: rgb(240, 240, 240);
color: black;
}
.cost-input {
font-size: 15px;
padding: 10px;
}
.calculate-button {
background-color: green;
color: white;
border: none;
font-size: 15px;
padding: 12px 15px;
cursor: pointer;
}
</style>
</head>
<body>
<h1>YouTube Subscribe Button</h1>
<button onclick="
subscribe();
" class="js-subscribe-button subscribe-button">Subscribe</button>
<h1>Amazon Shipping Calculator</h1>
<input placeholder="Cost of order" type="text" class="js-cost-input cost-input" onkeydown="
handleCostKeydown(event)">
<button onclick="
calculateTotal();
" class="calculate-button">Calculate</button>
<p class="js-total-cost"></p>
<script>
String(25)
console.log('25')
function handleCostKeydown(event) {
if (event.key === 'Enter') {
calculateTotal();
}
}
function calculateTotal() {
const inputElement = document.querySelector('.js-cost-input');
let cost = Number(inputElement.value);
if (cost < 40) {
cost = cost + 10;
}
document.querySelector('.js-total-cost').innerHTML = `$${cost}`
}
function subscribe() {
const buttonElement = document.querySelector('.js-subscribe-button');
if (buttonElement.innerText === 'Subscribe') {
buttonElement.innerHTML = 'Subscribed'
buttonElement.classList.add('is-subscribed');
} else {
buttonElement.innerHTML = 'Subscribe'
buttonElement.classList.remove('is-subscribed');
}
}
</script>
</body>
</html>
Next I added some styling to the 🪨 Rock 📄 Paper ✂️ Scissors from my previous daily posts. It looks great now! - you can’t run this code without the images, but you can check out how it looks here (and also download the images there if you really want haha)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Rock Paper Scissors</title>
<style>
body {
background-color: rgb(25, 25, 25);
color: white;
font-family: Arial;
.title {
font-size: 30px;
font-weight: bold;
}
}
.move-icon {
height: 50px;
}
.move-button {
background-color: transparent;
border: 3px solid white;
width: 120px;
height: 120px;
border-radius: 60px;
margin-right: 10px;
cursor: pointer;
}
.result {
font-size: 25px;
font-weight: bold;
margin-top: 50px;
}
.score {
margin-top: 100px;
}
.reset-score-button {
background-color: white;
border: none;
font-size: 15px;
padding: 8px 15px;
cursor: pointer;
}
</style>
</head>
<body>
<p class="title">Rock Paper Scissors</p>
<button onclick="playGame('rock')" class="move-button">
<img src="images/rock-emoji.png" class="move-icon">
</button>
<button onclick="playGame('paper');" class="move-button">
<img src="images/paper-emoji.png" class="move-icon">
</button>
<button onclick="playGame('scissors');" class="move-button">
<img src="images/scissors-emoji.png" class="move-icon">
</button>
<p class="js-result result"></p>
<p class="js-moves">
You
<img src="images/rock-emoji.png" class="move-icon">
<img src="images/scissors-emoji.png" class="move-icon">
Computer
</p>
<p class="js-score score"></p>
<button onclick="
score.wins = 0;
score.losses = 0;
score.ties = 0;
localStorage.removeItem('score');
document.querySelector('.js-result').innerHTML = '_'
document.querySelector('.js-moves').innerHTML = '_'
updateScoreElement();
" class="reset-score-button">Reset Score</button>
<script>
let score = JSON.parse(localStorage.getItem('score')) || {
wins: 0,
losses: 0,
ties: 0
};
updateScoreElement();
function playGame(playerMove) {
const computerMove = pickComputerMove();
let result = '';
if (playerMove === 'scissors') {
if (computerMove === 'rock') {
result = 'You lose.';
} else if (computerMove === 'paper') {
result = 'You win.';
} else if (computerMove === 'scissors') {
result = 'Tie.';
}
} else if (playerMove === 'paper') {
if (computerMove === 'rock') {
result = 'You win.';
} else if (computerMove === 'paper') {
result = 'Tie.';
} else if (computerMove === 'scissors') {
result = 'You lose.';
}
} else if (playerMove === 'rock') {
if (computerMove === 'rock') {
result = 'Tie.';
} else if (computerMove === 'paper') {
result = 'You lose.';
} else if (computerMove === 'scissors') {
result = 'You win.';
}
}
if (result === 'You win.') {
score.wins++;
} else if (result === 'You lose.') {
score.losses++;
} else if (result === 'Tie.') {
score.ties++;
}
localStorage.setItem('score', JSON.stringify(score));
updateResultElement(result);
updateMovesElement(playerMove, computerMove);
updateScoreElement();
}
function updateResultElement(result) {
document.querySelector('.js-result')
.innerHTML = `${result}`;
}
function updateMovesElement(playerMove, computerMove) {
document.querySelector('.js-moves')
.innerHTML = `You
<img src="images/${playerMove}-emoji.png" class="move-icon">
<img src="images/${computerMove}-emoji.png" class="move-icon">
Computer`;
}
function updateScoreElement() {
document.querySelector('.js-score')
.innerHTML = `Wins: ${score.wins}, Losses: ${score.losses}, Ties: ${score.ties}`;
}
function pickComputerMove() {
let computerMove = '';
const randomNumber = Math.random();
if (randomNumber >= 0 && randomNumber < 1 / 3) {
computerMove = 'rock';
} else if (randomNumber >= 1 / 3 && randomNumber < 2 / 3) {
computerMove = 'paper';
} else {
computerMove = 'scissors';
};
return computerMove;
}
</script>
</body>
</html>
That’s it. See you tomorrow 🙋♂️