DEV Community

Cover image for Javascript counter | HTML, CSS, JS
Mohammed Mouzzam
Mohammed Mouzzam

Posted on

Javascript counter | HTML, CSS, JS

A simple javascript counter using HTML, CSS and Javascript
Stay tuned for more tutorials like this.

Video Tutorial and source code is given below

index.html


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Simple counter using HTML, CSS, JS</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css">
    <link rel="stylesheet" href="style.css">
</head>
<body>


    <div class="whole">
        <div class="main">
            <div class="counter">9</div>
            <div class="plus count"><i class="fa-solid fa-plus"></i></div>
            <div class="minus count"><i class="fa-solid fa-minus"></i></div>
        </div>
        <div class="reset">
            <button class="reset-btn">Reset</button>
        </div>
    </div>



<script src="app.js"></script>

</body>
</html>
Enter fullscreen mode Exit fullscreen mode

Create a file in same directory and name it style.css
paste the code given below

@import url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,700&display=swap');

*{
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}


body{
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100vh;
    font-family: 'Roboto', sans-serif;

}

.whole{
    margin: auto;
}


.main{
    width: 300px;
    position: relative;
}

.main .counter{
    width: 200px;
    height: 200px;
    margin: auto;
    display: flex;
    text-align: center;
    justify-content: center;
    align-items: center;
    background-color: #FF5757;
    border-radius: 5px;
    font-size: 5rem;
    font-weight: 700;
    color: #fff;
}


.count{
    position: absolute;
    width: 80px;
    height: 80px;
    background-color: #fff;
    border: 5px solid #FF5757;
    display: flex;
    align-items: center;
    justify-content: center;
    bottom: -30px;
    border-radius: 5px;
}


.count i{
    color: #FF5757;
    font-size: 2rem;
}


.count:hover{
    box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;

}

.plus{
    right: 10px;
}
.minus{
    left: 10px;
}

.reset{
    align-items: center;
    text-align: center;
    margin-top: 80px;


}

.reset .reset-btn{
    margin: auto;
    outline: none;
    padding: 10px 18px;
    background-color: #fff;
    border-radius: 5px;
    border: 5px solid #FF5757;
    color: #FF5757;
    font-size: 1.2rem;
    font-weight: 700;

}

.reset .reset-btn:hover{
    background-color: #FF5757;
    color: #fff;

}
Enter fullscreen mode Exit fullscreen mode

And finally a Javascript file name it as app.js

const counter = document.querySelector('.counter');
const add = document.querySelector('.plus')
const sub = document.querySelector('.minus')
const resetNum = document.querySelector('.reset-btn')

let number = counter.innerHTML;

add.addEventListener('click', function(){
    number++;  
    addToHtml(number);
})

sub.addEventListener('click', function(){
    number--;  
    addToHtml(number);
})

resetNum.addEventListener('click', function(){ 
    addToHtml(0);
})


function addToHtml(value){
    number = value;
    counter.innerHTML = value;
}

addToHtml(0)
Enter fullscreen mode Exit fullscreen mode

Thanks for reading

If any suggestions please let me know
I am happy to talk with you

Top comments (0)