<div id="page-wrap">
  <h1>Progress Bars</h1>
  <p>They should stretch fine to whatever the width of the container element is,
    or just set it. Also they should stretch fine to whatever height you give .meter. </p>
  <div class="meter">
    <span style="width: 25%"></span>
  </div>
  <pre><code>&lt;div class=&quot;meter&quot;&gt;
	&lt;span style=&quot;width: 25%&quot;&gt;&lt;/span&gt;
&lt;/div&gt;</code></pre>
  <div class="meter orange nostripes">
    <span style="width: 33.3%"></span>
  </div>
  <pre><code>&lt;div class=&quot;meter orange nostripes&quot;&gt;
	&lt;span style=&quot;width: 33.3%&quot;&gt;&lt;/span&gt;
&lt;/div&gt;</code></pre>
  <div class="meter red">
    <span style="width: 80%"></span>
  </div>
  <pre><code>&lt;div class=&quot;meter red&quot;&gt;
	&lt;span style=&quot;width: 80%&quot;&gt;&lt;/span&gt;
&lt;/div&gt;</code></pre>
  <div class="meter animate">
    <span style="width: 50%"><span></span></span>
  </div>
  <pre><code>&lt;div class=&quot;meter animate&quot;&gt;
	&lt;span style=&quot;width: 50%&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;</code></pre>
</div>
.meter {
  box-sizing: content-box;
  height: 20px; /* Can be anything */
  position: relative;
  margin: 60px 0 20px 0; /* Just for demo spacing */
  background: #555;
  border-radius: 25px;
  padding: 10px;
  box-shadow: inset 0 -1px 1px rgba(255, 255, 255, 0.3);
}
.meter > span {
  display: block;
  height: 100%;
  border-top-right-radius: 8px;
  border-bottom-right-radius: 8px;
  border-top-left-radius: 20px;
  border-bottom-left-radius: 20px;
  background-color: rgb(43, 194, 83);
  background-image: linear-gradient(
    center bottom,
    rgb(43, 194, 83) 37%,
    rgb(84, 240, 84) 69%
  );
  box-shadow: inset 0 2px 9px rgba(255, 255, 255, 0.3),
    inset 0 -2px 6px rgba(0, 0, 0, 0.4);
  position: relative;
  overflow: hidden;
}
.meter > span:after,
.animate > span > span {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  background-image: linear-gradient(
    -45deg,
    rgba(255, 255, 255, 0.2) 25%,
    transparent 25%,
    transparent 50%,
    rgba(255, 255, 255, 0.2) 50%,
    rgba(255, 255, 255, 0.2) 75%,
    transparent 75%,
    transparent
  );
  z-index: 1;
  background-size: 50px 50px;
  animation: move 2s linear infinite;
  border-top-right-radius: 8px;
  border-bottom-right-radius: 8px;
  border-top-left-radius: 20px;
  border-bottom-left-radius: 20px;
  overflow: hidden;
}

.animate > span:after {
  display: none;
}

@keyframes move {
  0% {
    background-position: 0 0;
  }
  100% {
    background-position: 50px 50px;
  }
}

.orange > span {
  background-image: linear-gradient(#f1a165, #f36d0a);
}

.red > span {
  background-image: linear-gradient(#f0a3a3, #f42323);
}

.nostripes > span > span,
.nostripes > span::after {
  background-image: none;
}

#page-wrap {
  width: 490px;
  margin: 80px auto;
}
body {
  background: #333;
  text-align: center;
  color: #eee;
  font-family: system-ui, sans-serif;
}
h1 {
  font-size: 42px;
  font-weight: 600;
  margin: 0 0 30px;
}
pre {
  background: #000;
  text-align: left;
  padding: 20px;
  margin: 0 auto 30px;
}
* {
  box-sizing: border-box;
}
$(".meter > span").each(function () {
  $(this)
    .data("origWidth", $(this).width())
    .width(0)
    .animate(
      {
        width: $(this).data("origWidth")
      },
      1200
    );
});

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js