2017-08-28 1 views
0

So erreichen Sie Fertigkeitsbalkenanimation auf dem spezifischen Abschnitt des Seitenblatts. Ich habe versucht, eine gleitende Skillbar-Animation zu machen, aber nicht den Effekt, den ich möchte. Es beginnt mit der Animation auf der Startseite, aber ich möchte, dass die Animation bei einem bestimmten Seitenabschnitt gestartet wird.Fertigkeitsbalkenanimation auf der Seite scrollen

In meinem unten Code möchte ich die Animation auf Seite Bildlauf von dritten-sek gestartet werden. Aber es passiert nicht. Bitte korrigieren Sie den Code mit dem angehängten Code-Schnipsel.

HTML

<section id="first-sec"></section> 
<section id="second-sec"></section> 
<section id="third-sec"> 

    <div class="container"> 
    <!-- First bar --> 
    <div class="progress-bar" data-percentage="95%"> 
     <h4 class="progress-title-holder"> 
     <span class="progress-title">HTML5</span> 
     <span class="progress-number-wrapper"> 
     <span class="progress-number-mark"> 
     <span class="percent"></span> 
     <span class="down-arrow"></span> 
     </span> 
     </span> 
     </h4> 
     <div class="progress-content-outter"> 
     <div class="progress-content"></div> 
     </div> 
    </div> 
    <!-- Second bar --> 
    <div class="progress-bar" data-percentage="90%"> 
     <h4 class="progress-title-holder clearfix"> 
      <span class="progress-title">CSS3</span> 
       <span class="progress-number-wrapper"> 
     <span class="progress-number-mark"> 
     <span class="percent"></span> 
      <span class="down-arrow"></span> 
       </span> 
       </span> 
       </h4> 
     <div class="progress-content-outter"> 
     <div class="progress-content"></div> 
     </div> 
    </div> 

CSS

body{ 
    margin:0; 
} 

#first-sec { 
    height:100vh; 
    background-color:#283c86; 
} 

#second-sec { 
    height:100vh; 
    background-color:#45a247;} 

#third-sec { 

} 

/*====Skill Bar=====*/ 

.container { 
    height: 300px; 
    max-width: 100%; 
    width:70%; 
    margin: 10% auto; 
} 

.progress-bar { 
    margin: 20px 0 10px; 
    overflow: hidden; 
    /*padding-left:20px; 
    padding-right: 25px; /* Separate bars from container */ 
} 

.progress-title-holder { 
    padding-bottom: 7px; 
    position: relative; 
    margin: 5px 0; 
    font-family: Montserrat, sans-serif; 
    font-size: 2e; 
    line-height: 15px; 
    font-weight: 400; 
    color: #2e2e2e; 
} 

.progress-title { 
    z-index: 100; 
    font-weight: bold; 
} 

.progress-number-wrapper { 
    width: 100%; 
    z-index: 10; 
} 

.progress-number-mark { 
    margin-bottom: 4px; 
    border-radius: 3px; 
    background-color: #00d2ff; 
    padding: 0 8px; 
    position: absolute; 
    bottom: 0; 
    -moz-transform: translateX(-50%); 
    -o-transform: translateX(-50%); 
    transform: translateX(-50%); 
    -ms-transform: translateX(-50%); 
    -webkit-transform: translateX(-50%); 
} 

.progress-number-wrapper, 
.progress-number-mark { 
    font-family: Open Sans, sans-serif; 
    font-size: 11px; 
    line-height: 24px; 
    height: 24px; 
    letter-spacing: 0px; 
    font-weight: 600; 
    font-style: normal; 
    text-transform: none; 
    color: #ffffff; 
} 

.down-arrow { 
    border-left: 3px solid transparent; 
    border-right: 3px solid transparent; 
    border-top: 3px solid #00d2ff; 
    position: absolute; 
    left: 50%; 
    top: 100%; 
    -moz-transform: translateX(-50%); 
    -o-transform: translateX(-50%); 
    transform: translateX(-50%); 
    -ms-transform: translateX(-50%); 
    -webkit-transform: translateX(-50%); 
} 

.progress-content-outter { 
    height: 12px; 
    background-color: #E1E1E0; 
} 

.progress-content { 
    height: 21px; 
    background-color: #00d2ff; 
    width: 0%; 
} 

JQUERY

// Skill Bar Animation 

jQuery(document).ready(function() { 
    jQuery(".progress-bar").each(function() { 
    jQuery(this).find(".progress-content").animate(
     { 
     width: jQuery(this).attr("data-percentage") 
     }, 
     2000 
    ); 

    jQuery(this).find(".progress-number-mark").animate(
     { 
     left: jQuery(this).attr("data-percentage") 
     }, 
     { 
     duration: 2000, 
     step: function(now, fx) { 
      var data = Math.round(now); 
      jQuery(this).find(".percent").html(data + "%"); 
     } 
     } 
    ); 
    }); 
}); 

Antwort

0

Hat das Layout so bleiben? Der schnellste Ansatz wäre, den Wert scrollTop() beim Scrollen zu vergleichen und die Animation auszulösen, wenn der dritte Abschnitt sichtbar wird.

EDIT: Sie können natürlich auch eine offset zum if Zustand die Anzahl der Pixel zu erhöhen, um die Animation zu feuern gescrollt werden müssen. Hier

ist eine Arbeits Geige:

jQuery(document).ready(function() { 
 
/*MODIFICATION START*/ 
 
    jQuery(document).on('scroll', function(){ 
 
    if(jQuery('html,body').scrollTop() > jQuery('#first-sec').height()){ 
 
/*MODIFICATION END*/ 
 
     jQuery(".progress-bar").each(function() { 
 
     jQuery(this).find(".progress-content").animate({ 
 
      width: jQuery(this).attr("data-percentage") 
 
     },2000); 
 

 
     jQuery(this).find(".progress-number-mark").animate({ 
 
      left: jQuery(this).attr("data-percentage") 
 
     },{ 
 
      duration: 2000, 
 
      step: function(now, fx) { 
 
      var data = Math.round(now); 
 
      jQuery(this).find(".percent").html(data + "%"); 
 
      } 
 
     }); 
 
     }); 
 
/*MODIFICATION START*/ 
 
    } 
 
    }); 
 
/*MODIFICATION END*/ 
 
});
body{ 
 
    margin:0; 
 
} 
 

 
#first-sec { 
 
    height:100vh; 
 
    background-color:#283c86; 
 
} 
 

 
#second-sec { 
 
    height:100vh; 
 
    background-color:#45a247;} 
 

 
#third-sec { 
 

 
} 
 

 
/*====Skill Bar=====*/ 
 

 
.container { 
 
    height: 300px; 
 
    max-width: 100%; 
 
    width:70%; 
 
    margin: 10% auto; 
 
} 
 

 
.progress-bar { 
 
    margin: 20px 0 10px; 
 
    overflow: hidden; 
 
    /*padding-left:20px; 
 
    padding-right: 25px; /* Separate bars from container */ 
 
} 
 

 
.progress-title-holder { 
 
    padding-bottom: 7px; 
 
    position: relative; 
 
    margin: 5px 0; 
 
    font-family: Montserrat, sans-serif; 
 
    font-size: 2e; 
 
    line-height: 15px; 
 
    font-weight: 400; 
 
    color: #2e2e2e; 
 
} 
 

 
.progress-title { 
 
    z-index: 100; 
 
    font-weight: bold; 
 
} 
 

 
.progress-number-wrapper { 
 
    width: 100%; 
 
    z-index: 10; 
 
} 
 

 
.progress-number-mark { 
 
    margin-bottom: 4px; 
 
    border-radius: 3px; 
 
    background-color: #00d2ff; 
 
    padding: 0 8px; 
 
    position: absolute; 
 
    bottom: 0; 
 
    -moz-transform: translateX(-50%); 
 
    -o-transform: translateX(-50%); 
 
    transform: translateX(-50%); 
 
    -ms-transform: translateX(-50%); 
 
    -webkit-transform: translateX(-50%); 
 
} 
 

 
.progress-number-wrapper, 
 
.progress-number-mark { 
 
    font-family: Open Sans, sans-serif; 
 
    font-size: 11px; 
 
    line-height: 24px; 
 
    height: 24px; 
 
    letter-spacing: 0px; 
 
    font-weight: 600; 
 
    font-style: normal; 
 
    text-transform: none; 
 
    color: #ffffff; 
 
} 
 

 
.down-arrow { 
 
    border-left: 3px solid transparent; 
 
    border-right: 3px solid transparent; 
 
    border-top: 3px solid #00d2ff; 
 
    position: absolute; 
 
    left: 50%; 
 
    top: 100%; 
 
    -moz-transform: translateX(-50%); 
 
    -o-transform: translateX(-50%); 
 
    transform: translateX(-50%); 
 
    -ms-transform: translateX(-50%); 
 
    -webkit-transform: translateX(-50%); 
 
} 
 

 
.progress-content-outter { 
 
    height: 12px; 
 
    background-color: #E1E1E0; 
 
} 
 

 
.progress-content { 
 
    height: 21px; 
 
    background-color: #00d2ff; 
 
    width: 0%; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<section id="first-sec"></section> 
 
<section id="second-sec"></section> 
 
<section id="third-sec"> 
 

 
    <div class="container"> 
 
    <!-- First bar --> 
 
    <div class="progress-bar" data-percentage="95%"> 
 
     <h4 class="progress-title-holder"> 
 
     <span class="progress-title">HTML5</span> 
 
     <span class="progress-number-wrapper"> 
 
     <span class="progress-number-mark"> 
 
     <span class="percent"></span> 
 
     <span class="down-arrow"></span> 
 
     </span> 
 
     </span> 
 
     </h4> 
 
     <div class="progress-content-outter"> 
 
     <div class="progress-content"></div> 
 
     </div> 
 
    </div> 
 
    <!-- Second bar --> 
 
    <div class="progress-bar" data-percentage="90%"> 
 
     <h4 class="progress-title-holder clearfix"> 
 
      <span class="progress-title">CSS3</span> 
 
       <span class="progress-number-wrapper"> 
 
     <span class="progress-number-mark"> 
 
     <span class="percent"></span> 
 
      <span class="down-arrow"></span> 
 
       </span> 
 
       </span> 
 
       </h4> 
 
     <div class="progress-content-outter"> 
 
     <div class="progress-content"></div> 
 
     </div> 
 
    </div>

Verwandte Themen