Heim > Web-Frontend > CSS-Tutorial > So erzielen Sie einen Fortschrittsbalkeneffekt in CSS3

So erzielen Sie einen Fortschrittsbalkeneffekt in CSS3

Guanhui
Freigeben: 2020-06-24 13:43:38
nach vorne
3180 Leute haben es durchsucht

So erzielen Sie einen Fortschrittsbalkeneffekt in CSS3

Während des Projektprozesses begann ich, die requestAnimationFrame-Methode von js zu verwenden, um den Fortschrittsbalken zu implementieren. Bei vielen Daten wirkte sich dies jedoch stark auf die Leistung aus, sodass ich zu wechselte CSS, um es zu implementieren und zu optimieren.

Veröffentlichen Sie zuerst den Code:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style type="text/css">
        *{margin: 0;padding: 0}
 
        .box{width: 100px;height: 10px;border-radius: 10px;background: #999;margin: 100px auto;border: 1px solid #ff6780;}
        .child{position: relative;height:100%;border-radius:inherit;}
 
        .process-animate{background: #ff6780;position: absolute;left: 0;top: 0;bottom: 0;border-radius:inherit;
            animation: process 1s linear forwards ;
        }
        @keyframes process
        {
            0%{
                left:0;right:100%;
            }
            20%{
                right:80%
            }
            40%{
                right:60%;
            }
            60%{right:40%;}
            80%{right:20%;}
            100%{right:0;}
        }
	
    </style>
</head>
<body>
    <p class="box">
        <p class="child" style="width:50%"> // child的百分比就是进度条的占比效果
            <p class="process-animate"></p>
        </p>
    </p>
</body>
</html>
Nach dem Login kopieren

Rendering (kopieren Sie den Code, um den dynamischen Effekt zu sehen):

Unter normalen Umständen ist die Der Prozentsatz muss auf der Grundlage von Hintergrunddaten berechnet werden, sodass er dynamisch übergeben wird. Der Vue-Code wird unten veröffentlicht.

Fortschrittsbalken-Unterkomponente (progress.vue):

<template>
  <p class="process-wrapper" :class="{&#39;addGray&#39;:addGray}">
    <p class="process-child" ref="processChild">
      <p class="process-animate" :class="{&#39;addGray&#39;:addGray}"></p>
    </p>
  </p>
</template>
 
<script>
export default {
  props: {
    addGray: {
      //置灰
      type: Boolean,
      default: false
    },
    progressWidth: {
      //进度条百分比
      type: Number,
      default: 0
    }
  },
  mounted() {
    this.$nextTick(() => {
      console.log(this.addGray, "addGray---");
      this.$refs.processChild.style.width = this.progressWidth + "%";  //动态改变进度条
      // this.$refs.processChild.style.width = 90 + "%"; 测试效果
    });
  }
};
</script>
 
<style lang="scss" scoped>
.process-wrapper {
  width: 1.98rem;
  height: 0.13rem;
  margin: 0.12rem 0 0.1rem 0;
  border-radius: 0.1rem;
  background: #fff;
  border: 0.01rem solid #ff6780;
  &.addGray {
    background: #999;
    border: 0.01rem solid #999;
  }
  .process-child {
    position: relative;
    height: 100%;
    // width: 100%;  //这个width就是动态变化。通过js改变
    border-radius: inherit;
    .process-animate {
      background: #ff6780;
      position: absolute;
      left: 0;
      top: 0;
      bottom: 0;
      border-radius: inherit;
      animation: process 1s linear forwards;
      &.addGray {
        background: #999 !important;
        // border: 0.01rem solid #999;
      }
    }
  }
}
 
@keyframes process {
  0% {
    left: 0;
    right: 100%;
  }
  20% {
    right: 80%;
  }
  40% {
    right: 60%;
  }
  60% {
    right: 40%;
  }
  80% {
    right: 20%;
  }
  100% {
    right: 0;
  }
}
</style>
Nach dem Login kopieren

Übergeordnete Komponente Aufruf:

<!-- 进度条 -->
 <Progress :addGray="inactive" :progressWidth="progressWidth"></Progress>
Nach dem Login kopieren

Sehen Sie sich den tatsächlichen Effekt an:

Empfohlenes Tutorial: „CSS Tutorial

Das obige ist der detaillierte Inhalt vonSo erzielen Sie einen Fortschrittsbalkeneffekt in CSS3. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:jb51.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage