Maison  >  Article  >  interface Web  >  Introduction à deux méthodes d'implémentation de la barre de progression à l'aide de CSS3

Introduction à deux méthodes d'implémentation de la barre de progression à l'aide de CSS3

高洛峰
高洛峰original
2017-03-22 14:51:101251parcourir

Cet article vous présente principalement les deux postures d'utilisation de CSS3 pour implémenter la barre de progression. L'article donne un exemple de code détaillé et une introduction graphique, qui a une certaine valeur de référence pour tout le monde. jetez un oeil ensemble.

Le rendu est le suivant :

Introduction à deux méthodes dimplémentation de la barre de progression à laide de CSS3

Introduction à deux méthodes dimplémentation de la barre de progression à laide de CSS3

La première posture est la suivante

Entrez d'abord le code

<p id="progress">
      <span></span>
</p>
/*对应CSS*/
    #progress{
           width: 300px;
           height: 30px;
           border:1px solid #ccc;
           border-radius: 15px;
           overflow: hidden;  /*注意这里*/
           box-shadow: 0 0 5px 0px #ddd inset;
    }          
    #progress span {
           display: inline-block;
           width: 70%;
           height: 100%;       
           background: linear-gradient(45deg, #2989d8 30%,#7db9e8 31%,#7db9e8 58%,#2989d8 59%);    
           background-size: 60px 30px;
           text-align: center;
           color:#fff;
           animation:load 3s ease-in;
     }
     @keyframes load{
           0%{
               width: 0%;
           }
           100%{
               width:70%;
           }
       }

La couleur du dégradé ci-dessus utilise le dégradé linéaire en CSS3

syntaxe du dégradé linéaire

<linear-gradient> = linear-gradient([ [ <angle> | to <side-or-corner> ] ,]? <color-stop>[, <color-stop>]+)
<side-or-corner> = [left | right] || [top | bottom]
<color-stop> = <color> [ <length> | <percentage> ]?
  • angle : utiliser la valeur d'angle Spécifie la direction (ou l'angle) du dégradé.

  • à gauche : définissez le dégradé de droite à gauche. Equivalent à : 270deg

  • à droite : Définissez le dégradé de gauche à droite. Équivalent à : 90deg

  • to top : Définissez le dégradé de bas en haut. Équivalent à : 0deg

  • to bottom : Définit le dégradé de haut en bas. Équivalent à : 180°. Il s'agit de la valeur par défaut, ce qui équivaut à la laisser vide.

  • color-stop : Utilisé pour spécifier les couleurs de début et de fin du dégradé :

  • color : Spécifiez la couleur.

  • longueur : utilisez la valeur de longueur pour spécifier les positions de couleur de début et de fin. Les valeurs négatives ne sont pas autorisées

  • pourcentage : utilisez le pourcentage pour spécifier les positions de couleur de début et de fin.

Châtaigne :

.test1{
    background: linear-gradient(#EA2000, #E5A399);
}
.test2 {
    background: linear-gradient(45deg,#EA2000 20%,#E5632D 50%, #E5B12D 80%);
}
.test3 {
    background: linear-gradient(to top right, #000, #416796 50%, #B5CAE4);
}
.test4{
    background: linear-gradient(45deg, #2989d8 30%,#7db9e8 31%,#7db9e8 58%,#2989d8 59%);   
}

Rendu :

Introduction à deux méthodes dimplémentation de la barre de progression à laide de CSS3

L'animation est implémentée via des images clés, et l'effet de progression est obtenu en modifiant la largeur de l'envergure n'est-ce pas simple ? !

L'effet actuel de la barre de progression n'est efficace qu'à 70 %. Changez simplement la valeur de la largeur, tout comme l'image ci-dessous, changez-la à une certaine valeur.

Introduction à deux méthodes dimplémentation de la barre de progression à laide de CSS3

Deuxième posture

Tout d'abord, la structure c'est bien Un carré p, divisez symétriquement le carré en deux morceaux gauche et droit, comme suit

Ce qui est construit ici est un carré de 200px 200px, divisé en deux rectangles de 100px200px.

<p class="progress2">
        <p class="rect right">
        </p>                               
        <p class="rect left">
        </p>
 </p>
.progress2{
        width: 200px;
        height: 200px;
        margin: 100px auto;
        position: relative;
        border:1px solid #ddd;
    }
   
    .rect{
        width: 100px;
        height: 200px;
        position: absolute;
        top:0;
        overflow: hidden; /*注意这里*/
    }
    .right{
        right:0;
    }
    .left{
        left:0;
    }

L'effet suivant

Introduction à deux méthodes dimplémentation de la barre de progression à laide de CSS3

Ensuite, construisez un cercle creux dans chaque rectangle, en construisant d'abord la moitié droite, comme suit

<p class="progress2">
        <p class="rect right">
            <p class="circle rightcircle"></p>
        </p>                               
        <p class="rect left">
            
        </p>
 </p>
.circle{
        width: 160px;
        height: 160px;
        border:20px solid #ccc;
        border-radius: 50%;
        position: absolute;
        top:0;
    }
    .rightcircle{
        border-top:20px solid rgb(41,137,216);
        border-right:20px solid rgb(41,137,216);
        right:0;
    }

vous verrez l'effet suivant

Introduction à deux méthodes dimplémentation de la barre de progression à laide de CSS3

dû à la classe : Dans rect, le débordement est défini sur caché, de sorte que la partie débordante soit couverte. L'implémentation de l'effet ultérieur est également étroitement liée à cet attribut .

Si cet attribut n'est pas défini, l'effet sera comme ceci.

Introduction à deux méthodes dimplémentation de la barre de progression à laide de CSS3

Ensuite, vous constaterez qu'une partie est couverte, on peut la faire pivoter de 45 degrés pour obtenir l'effet

.circle{
        width: 160px;
        height: 160px;
        border:20px solid #ccc;
        border-radius: 50%;
        position: absolute;
        top:0;
        transform: rotate(45deg); /*注意这里*/
    }

Comme suit

Introduction à deux méthodes dimplémentation de la barre de progression à laide de CSS3

La façon dont nous obtenons l'effet d'animation est de faire pivoter la moitié droite de 180 degrés, puis de faire pivoter la moitié gauche de 180 degrés pour terminer l'effet.

先给这右半边设置动画效果,即一开始让其旋转45度,然后旋转180度,由于这只是右半边,所以在50%的时候就应该旋转完毕,之后一直保持不变。

.rightcircle{
        border-top:20px solid rgb(41,137,216);
        border-right:20px solid rgb(41,137,216);
        right:0;
        animation: load_right 5s linear infinite;
    }
    @keyframes load_right{
        0%{

            transform: rotate(45deg);
        }
        50%{

            transform: rotate(225deg);
        }
        100%{

            transform: rotate(225deg);
        }
    }

这是没有在class rect中设置overflow:hidden的效果
 

Introduction à deux méthodes dimplémentation de la barre de progression à laide de CSS3
 

这是在class rect中设置了overflow:hidden的效果
 

Introduction à deux méthodes dimplémentation de la barre de progression à laide de CSS3
 

现在,我们就可以把左半边也凑上了,同理,动画效果一开始先旋转45度,调正,然后一直保持不变,到50%之后,再开始旋转180度。这样就与右半边衔接上了。

<p class="progress2">
        <p class="rect right">
            <p class="circle rightcircle"></p>
        </p>                               
        <p class="rect left">
            <p class="circle leftcircle"></p>
        </p>
 </p>
.leftcircle{
        border-bottom:20px solid rgb(41,137,216);
        border-left:20px solid rgb(41,137,216);
        left:0;
        animation: load_left 5s linear infinite;
    }
    @keyframes load_left{
        0%{

            transform: rotate(45deg);
        }
        50%{

            transform: rotate(45deg);
        }
        100%{
            transform: rotate(225deg);
        }
    }

这是整体的效果
 

Introduction à deux méthodes dimplémentation de la barre de progression à laide de CSS3
 

可以调整角度或者调整颜色即可实现反向的效果。 

我是调整了颜色就可以得到最开始的动画效果啦,下面是完整的代码

<p class="progress2">
        <p class="rect right">
            <p class="circle rightcircle"></p>
        </p>                               
        <p class="rect left">
            <p class="circle leftcircle"></p>
        </p>
 </p>
.progress2{
        width: 200px;
        height: 200px;
        margin: 100px auto;
        position: relative;
    }
   
    .rect{
        width: 100px;
        height: 200px;
        position: absolute;
        top:0;
        overflow: hidden;
    }
    .right{
        right:0;
    }
    .left{
        left:0;
    }
    .circle{
        width: 160px;
        height: 160px;
        border:20px solid rgb(41,137,216);
        border-radius: 50%;
        position: absolute;
        top:0;
        transform: rotate(45deg);
    }
    .rightcircle{
        border-top:20px solid #ccc;
        border-right:20px solid #ccc;
        right:0;
        animation: load_right 5s linear infinite;
    }
    .leftcircle{
        border-bottom:20px solid #ccc;
        border-left:20px solid #ccc;
        left:0;
        animation: load_left 5s linear infinite;
    }
    @keyframes load_right{
        0%{

            transform: rotate(45deg);
        }
        50%{

            transform: rotate(225deg);
        }
        100%{

            transform: rotate(225deg);
        }
    }
    @keyframes load_left{
        0%{

            transform: rotate(45deg);
        }
        50%{

            transform: rotate(45deg);
        }
        100%{
            transform: rotate(225deg);
        }
    }

Introduction à deux méthodes dimplémentation de la barre de progression à laide de CSS3

 

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn