Wednesday, July 3, 2024
HomeLanguagesJavascriptPercentage calculator using HTML CSS and JavaScript

Percentage calculator using HTML CSS and JavaScript

Do you want to calculate the percentage? If yes, then you can make a simple Percentage calculator using HTML, CSS, and JavaScript. In this article, you have to enter the marks obtained in the first input field and total marks in the second input field for calculating the percentage. After entering values and clicking on the Calculate button, a percentage can be obtained. This very useful project for calculating marks, discounts, etc. The percentage calculator is useful for students, shopkeepers, and for solving basic mathematical problems related to percentages.

File structure

  • index.html
  • style.css
  • script.js

Prerequisites: Basic knowledge of HTML, CSS, and JavaScript needed. The project contains HTML, CSS, and JavaScript files. The HTML file adds structure, followed by styling using CSS and JavaScript adds functionality to it and for making validations to certain parts of the project.

HTML layout is created using the div tags, id attributes, classes, forms, and buttons for submission of the form. It defines the structure of the web page. 

By using CSS properties, we will decorate the web page using color, width, height, and position properties that are given as per the requirement in the project. CSS designs the interface of the calculator.

To add functionality to a web page, JavaScript code is used. In this case, two functions, percentage 1() and percentage 2(), are declared and passed to the button via the onclick event. As a result, when the Calculate button is pressed, the result is displayed. We used the method document.getElementById(). It returns the element with the specified ID attribute and returns null if no elements with the specified ID exist.

Formula used:

  • What is X percent of Y is given by the formula: X percent of Y =(X/100)* Y
  • X is what percent of Y is given by the formula: X is what percent of Y= (X/Y)×100%, where X, Y > 0

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>Percentage Calculator</title>
    <link rel="stylesheet" href="style.css" type="text/css" />
</head>
  
<body>
    <h1>Percentage Calculator</h1>
  
    <div>
  
        <!-- Defines a field for entering a number-->
        <h2> What is <input type="number" id="percent" />% of
            <input type="number" id="num" />?
        </h2>
  
        <!-- onclick event is to call the function when
            user click on the button-->
        <button onclick="percentage_1()">Calculate</button><br>
  
            <!-- Read-only input field to display
            output and cannot be modified -->
        <input type="text" id="value1" readonly />
    </div>
  
    <div>
        <!-- Defines a field for entering a number -->
        <h2><input type="number" id="num1" />
            is what Percent of
            <input type="number" id="num2" />?
        </h2>
          
        <!-- onclick event is to call the function
            when user click on the button -->
        <button onclick="percentage_2()">Calculate</button>
          <br>
          
        <!-- Read-only input field to display
            output and cannot be modified -->
        <input type="text" id="value2" readonly />
    </div>
      
    <script type="text/javascript" src="script.js"></script>
</body>
  
</html>


CSS




/* A margin and padding are provided 0 
box-sizing border box is used to include 
padding and border in the total width 
and height of the element, and font-family 
can be specified by the user */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: 'Courier New', Courier, monospace;
}
 
/* The user display allows you to specify the
background colour and height. The 
display:flex property, which is aligned at the
centre, is used to fill available free space 
or to shrink them to prevent overflow. */
body {
    background-color: #f7f7f7;
    min-height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
}
 
/* font-weight Specifies weight of glyphs 
in the font, their degree of blackness or 
stroke */
h1 {
    font-weight: 900;
    margin-bottom: 12px;
}
 
div {
    width: 480px;
    background-color: #fff;
    margin: 12px 0;
    padding: 24px;
    text-align: center;
    box-shadow: 2px 2px 8px 2px #aaa;
}
 
input[type=number] {
    width: 84px;
    font-size: 18px;
    padding: 8px;
    margin: 0px 8px 8px 8px;
}
 
/* The text-transform:uppercase property 
causes characters to be raised to uppercase. 
The button's font-weight, font-size, and 
cursor type can be customised by the user. */
button {
    text-transform: uppercase;
    font-weight: 900;
    font-size: 20px;
    margin: 12px 0;
    padding: 8px;
    cursor: pointer;
    letter-spacing: 1px;
}
 
/* The font-weight, font-size, background-color, 
and border can all be customized by the user. 
The border-radius property allows you to give 
an element rounded corners.*/
input[type=text] {
    font-size: 22px;
    padding: 8px 0;
    font-weight: 900;
    text-align: center;
    background-color: #f7f7f7;
    border: 2px solid #ccc;
    border-radius: 6px;
}


Javascript




function percentage_1() {
  
    // Method returns the element of percent id
    var percent = document.getElementById("percent").value;
      
    // Method returns the element of num id
    var num = document.getElementById("num").value;
    document.getElementById("value1")
        .value = (num / 100) * percent;
}
  
function percentage_2() {
  
    // Method returns the element of num1 id
    var num1 = document.getElementById("num1").value;
      
    // Method returns the elements of num2 id
    var num2 = document.getElementById("num2").value;
    document.getElementById("value2")
            .value = (num1 * 100) / num2 + "%";
}


Output:Click here to see live code output

 

Shaida Kate Naidoo
am passionate about learning the latest technologies available to developers in either a Front End or Back End capacity. I enjoy creating applications that are well designed and responsive, in addition to being user friendly. I thrive in fast paced environments. With a diverse educational and work experience background, I excel at collaborating with teams both local and international. A versatile developer with interests in Software Development and Software Engineering. I consider myself to be adaptable and a self motivated learner. I am interested in new programming technologies, and continuous self improvement.
RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments