<h1>Animated Skills Bar</h1>
<div class="skill-bars">
<div class="bar">
<div class="info"> <span>HTML</span> </div>
<div class="progress-line html"> <span></span> </div>
</div>
<div class="bar">
<div class="info"> <span>CSS</span> </div>
<div class="progress-line css"> <span></span> </div>
</div>
<div class="bar">
<div class="info"> <span>Java Script</span> </div>
<div class="progress-line JavaScript"> <span></span> </div>
</div>
<div class="bar">
<div class="info"> <span>React</span> </div>
<div class="progress-line react"> <span></span> </div>
</div>
</div>
@import url('https://fonts.googleapis.com/css2?family=Poppins:[email protected];300;400;500;600;700&display=swap');
*{
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Poppins', sans-serif;
}
html,body{
display: grid; height: 100%;
place-items: center;
background-color: lightgray;
}
h1{
font-size: 4rem;
text-align: center;
color: #fff;
text-shadow: 5px 5px black;
margin-top: 50px;
margin-bottom :50px;
}
.skill-bars{
padding: 25px 30px;
width: 900px;
background: #fff;
box-shadow: 5px 5px 20px rgba(0,0,0,0.2);
border-radius: 10px;
margin-bottom: 100px;
box-shadow: 4px 4px black;
}
.bar{
margin: 20px 0;
}
.bar:first-child{
margin-top: 0px;
}
.info{
margin-bottom: 5px;
}
.info span{
font-weight: 500;
font-size: 17px; opacity: 0;
animation: showText 0.5s 1s linear forwards;
}
@keyframes showText {
100%{
opacity: 1;
}
}
.progress-line{
height: 10px; width: 100%;
background: #f0f0f0; position: relative;
transform: scaleX(0); transform-origin: left;
border-radius: 10px;
box-shadow: inset 0 1px 1px rgba(0,0,0,0.05),
0 1px rgba(255,255,255,0.8);
animation: animate 1s cubic-bezier(1,0,0.5,1) forwards;
}
.progress-line span{
height: 100%; position: absolute;
border-radius: 10px;
transform: scaleX(0);
transform-origin: left;
background: #ff4d4f;
animation: animate 1s 1s cubic-bezier(1,0,0.5,1) forwards;
}
.progress-line span::before{
position: absolute; content: "";
top: -10px; right: 0;
height: 0; width: 0; opacity: 0;
border: 7px solid transparent;
border-bottom-width: 0px;
border-right-width: 0px;
border-top-color: #000;
animation: showText2 0.5s 1.5s linear forwards;
}
.progress-line span::after{
position: absolute; top: -28px;
right: 0; font-weight: 500;
background: #000;
color: #fff; opacity: 0;
padding: 1px 8px;
font-size: 12px;
border-radius: 3px;
animation: showText2 0.5s 1.5s linear forwards;
}
@keyframes animate {
100%{
transform: scaleX(1);
}
}
.html span{
width: 84%;
}
.css span{
width: 92%;
}
.JavaScript span{
width: 60%;
}
.react span{
width: 80%;
}
@keyframes showText2 {
100%{
opacity: 1;
}
}
.html span::after{
content: "84%";
}
.css span::after{
content: "92%";
}
.JavaScript span::after{
content: "60%";
}
.react span::after{
content: "80%";
}
/* Media Query */
/* For tablet */
@media screen and (max-width:900px){
h1{
font-size: 3rem;
text-align: center;
color: #fff;
text-shadow: 3px 4px black;
}
.skill-bars{
padding: 15px 20px;
width: 600px;
background: #fff;
box-shadow: 5px 5px 20px rgba(0,0,0,0.2);
border-radius: 10px;
}
}
/* For mobile */
@media screen and (max-width :600px) {
h1{
font-size: 2rem;
text-align: center;
color: #fff;
text-shadow: 3px 4px black;
}
.skill-bars{
padding: 10px 10px;
width: 400px;
background: #fff;
box-shadow: 5px 5px 20px rgba(0,0,0,0.2);
border-radius: 8px;
}
}
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.