滚动到该部分时,Jquery技能栏效果开始

时间:2016-01-08 04:01:04

标签: javascript jquery

我只是希望我的技能栏效果在我滚动到该部分时开始,例如我在我的介绍部分,当我向下滚动到技能部分时会触发效果:)非常感谢你!

HTML:

<div class="col-md-5 col-centered">
           <div class="skillbar clearfix " data-percent="95%">
  <div class="skillbar-title" style="background: #131313;"><span>Photography</span></div>
  <div class="skillbar-bar" style="background: #131313;"></div>
  <div class="skill-bar-percent">95%</div>
</div>

 <div class="skillbar clearfix " data-percent="85%">
  <div class="skillbar-title" style="background: #131313;"><span>Videography</span></div>
  <div class="skillbar-bar" style="background: #131313;"></div>
  <div class="skill-bar-percent">85%</div>
</div>

 <div class="skillbar clearfix" data-percent="75%">
  <div class="skillbar-title" style="background: #131313;"><span>Illustrator</span></div>
  <div class="skillbar-bar" style="background: #131313;"></div>
  <div class="skill-bar-percent">75%</div>
</div>

<script> 
jQuery('.skillbar').each(function(){
  jQuery(this).find('.skillbar-bar').animate({
    width:jQuery(this).attr('data-percent')
  },6000);
});

</script>

CSS:

.skillbar {
    position:relative;
    display:block;
    margin-bottom:15px;
    width:100%;
    background:#eee;
    height:35px;
    border-radius:3px;
    -moz-border-radius:3px;
    -webkit-border-radius:3px;
    -webkit-transition:0.4s linear;
    -moz-transition:0.4s linear;
    -ms-transition:0.4s linear;
    -o-transition:0.4s linear;
    transition:0.4s linear;
    -webkit-transition-property:width, background-color;
    -moz-transition-property:width, background-color;
    -ms-transition-property:width, background-color;
    -o-transition-property:width, background-color;
    transition-property:width, background-color;
}

.skillbar-title {
    position:absolute;
    top:0;
    left:0;
    font-weight:bold;
    font-size:13px;
    color:#fff;
    background:#6adcfa;
    -webkit-border-top-left-radius:3px;
    -webkit-border-bottom-left-radius:4px;
    -moz-border-radius-topleft:3px;
    -moz-border-radius-bottomleft:3px;
    border-top-left-radius:3px;
    border-bottom-left-radius:3px;
}

.skillbar-title span {
    display:block;
    background:rgba(0, 0, 0, 0.1);
    padding:0 20px;
    height:35px;
    line-height:35px;
    -webkit-border-top-left-radius:3px;
    -webkit-border-bottom-left-radius:3px;
    -moz-border-radius-topleft:3px;
    -moz-border-radius-bottomleft:3px;
    border-top-left-radius:3px;
    border-bottom-left-radius:3px;
}

.skillbar-bar {
height:35px;
width:0px;
background:#6adcfa;
border-radius:3px;
-moz-border-radius:3px;
-webkit-border-radius:3px;
float: left;
}

.containers {
    min-height: 100%;
      height: 100vh;


}
.skill-bar-percent {
    position:absolute;
    right:10px;
    top:0;
    font-size:11px;
    height:35px;
    line-height:35px;
    color:#444;
    color:rgba(0, 0, 0, 0.4);
}

谢谢!

1 个答案:

答案 0 :(得分:2)

您需要将窗口.scrollTop()值与.offset().top的容器div的垂直位置.skillbar进行比较。当窗口滚动位置添加到窗口高度的值刚刚触发大于容器div的顶部偏移量时,或者换句话说,当:

时,后一个div将进入视图
jQuery(window).scrollTop() + jQuery(window).height() > jQuery('#skills').offset().top

然后将触发.animate()功能。

** 注意我已将skills ID分配给<div class="col-md-5 col-centered">

检查一下:

JS Fiddle

var skillsDiv = jQuery('#skills');

jQuery(window).on('scroll', function() {
  var winT = jQuery(window).scrollTop(),
    winH = jQuery(window).height(),
    skillsT = skillsDiv.offset().top;
  if (winT + winH > skillsT) {
    jQuery('.skillbar').each(function() {
      jQuery(this).find('.skillbar-bar').animate({
        width: jQuery(this).attr('data-percent')
      }, 6000);
    });
  }
});
body{
  margin:0;
  padding:0;
  height:1200px;
}
#test{
  height:800px;
}
.skillbar {
    position:relative;
    display:block;
    margin-bottom:15px;
    width:100%;
    background:#eee;
    height:35px;
    border-radius:3px;
    -moz-border-radius:3px;
    -webkit-border-radius:3px;
    -webkit-transition:0.4s linear;
    -moz-transition:0.4s linear;
    -ms-transition:0.4s linear;
    -o-transition:0.4s linear;
    transition:0.4s linear;
    -webkit-transition-property:width, background-color;
    -moz-transition-property:width, background-color;
    -ms-transition-property:width, background-color;
    -o-transition-property:width, background-color;
    transition-property:width, background-color;
}

.skillbar-title {
    position:absolute;
    top:0;
    left:0;
    font-weight:bold;
    font-size:13px;
    color:#fff;
    background:#6adcfa;
    -webkit-border-top-left-radius:3px;
    -webkit-border-bottom-left-radius:4px;
    -moz-border-radius-topleft:3px;
    -moz-border-radius-bottomleft:3px;
    border-top-left-radius:3px;
    border-bottom-left-radius:3px;
}

.skillbar-title span {
    display:block;
    background:rgba(0, 0, 0, 0.1);
    padding:0 20px;
    height:35px;
    line-height:35px;
    -webkit-border-top-left-radius:3px;
    -webkit-border-bottom-left-radius:3px;
    -moz-border-radius-topleft:3px;
    -moz-border-radius-bottomleft:3px;
    border-top-left-radius:3px;
    border-bottom-left-radius:3px;
}

.skillbar-bar {
height:35px;
width:0px;
background:#6adcfa;
border-radius:3px;
-moz-border-radius:3px;
-webkit-border-radius:3px;
float: left;
}

.containers {
    min-height: 100%;
      height: 100vh;


}
.skill-bar-percent {
    position:absolute;
    right:10px;
    top:0;
    font-size:11px;
    height:35px;
    line-height:35px;
    color:#444;
    color:rgba(0, 0, 0, 0.4);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div id="test">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Velit illum dolores fugit ut ratione quidem rem eveniet id, sapiente facilis maxime suscipit nostrum. Alias, voluptatum ipsa unde nemo magni atque!</div>
<div id="skills" class="col-md-5 col-centered">
           <div class="skillbar clearfix " data-percent="95%">
  <div class="skillbar-title" style="background: #131313;"><span>Photography</span></div>
  <div class="skillbar-bar" style="background: #131313;"></div>
  <div class="skill-bar-percent">95%</div>
</div>

 <div class="skillbar clearfix " data-percent="85%">
  <div class="skillbar-title" style="background: #131313;"><span>Videography</span></div>
  <div class="skillbar-bar" style="background: #131313;"></div>
  <div class="skill-bar-percent">85%</div>
</div>

 <div class="skillbar clearfix" data-percent="75%">
  <div class="skillbar-title" style="background: #131313;"><span>Illustrator</span></div>
  <div class="skillbar-bar" style="background: #131313;"></div>
  <div class="skill-bar-percent">75%</div>
</div>